Agent Skill、MCP 和 Prompt 的区别是什么?
· 7 分钟阅读
在 AI Agent 开发中,我们经常听到三个概念:Prompt、MCP、Agent Skill。它们看起来有点像,但定位完全不同。今天用一篇文章说清楚它们的区别和联系。
什么是 Prompt?
Prompt 是最基础的人机交互单元,就是你发给 AI 的那段文字。
# 这就是一个 Prompt
prompt = """
请帮我写一个 Python 函数,实现快速排序算法。
要求:
1. 代码有注释
2. 时间复杂度最优
3. 包含测试用例
"""
Prompt 的特点:
- 单次交互,输入-输出模式
- 不具备状态记忆(除非手动传入历史上下文)
- 无法直接调用外部工具或 API
- 依赖模型的理解和生成能力
你可以把 Prompt 理解为”对 AI 说的一句话”,它可能很短(“翻译成英文”),也可能很长(详细的需求文档)。但无论如何,它只是信息传递的载体,不包含任何”能力”。
什么是 MCP?
MCP(Model Context Protocol)是一个通信协议标准,由 Anthropic 提出,用于解决 AI 如何与外部世界交互的问题。
简单理解:Prompt 是”说什么”,MCP 是”怎么说”。
// MCP 的核心思想是用 JSON 描述工具
{
"tool": "search_code",
"name": "搜索代码库",
"description": "在代码库中搜索特定文件或函数",
"input_schema": {
"type": "object",
"properties": {
"pattern": {
"type": "string",
"description": "搜索模式"
},
"file_type": {
"type": "string",
"description": "文件类型过滤"
}
},
"required": ["pattern"]
}
}
MCP 解决的问题:
- 标准化 AI 与外部工具的交互方式
- 让不同的 AI 应用能够复用同一套工具定义
- 支持上下文传递(不仅仅是单次调用)
- 实现工具发现和能力描述
MCP 和 Prompt 的关系:
- Prompt 告诉 AI”做什么任务”
- MCP 告诉 AI”有哪些工具可用”以及”如何调用它们”
你可以把 MCP 想象成 AI 的”工具箱说明书”——它不提供工具本身,而是描述工具的接口和使用方式。
什么是 Agent Skill?
Agent Skill 是一个完整的能力封装,它包含:
- 一个或多个 Prompt(定义能力的行为)
- 可能的工具调用(MCP 定义的工具)
- 逻辑流程(如何组合 Prompt 和工具)
- 元数据(名称、描述、版本等)
# 一个 Agent Skill 的示例
skill:
name: "代码审查"
description: "深度分析代码库,识别潜在问题和优化点"
version: "1.0.0"
prompts:
- name: "system_prompt"
content: "你是一个资深代码审查专家..."
- name: "review_request"
template: "请审查以下代码:\n{{code_content}}"
tools:
- mcp: "git_diff"
action: "获取代码变更"
- mcp: "search_codebase"
action: "查找相关依赖"
workflow:
1. 获取代码变更 (git_diff)
2. 查找相关上下文 (search_codebase)
3. 生成审查报告 (review_request + system_prompt)
Skill 的核心价值:
- 可复用:一个 Skill 可以在多个 Agent 中使用
- 可组合:多个 Skill 可以组合成复杂的 Agent
- 可分享:可以像 NPM 包一样分享和分发
- 可版本管理:支持版本控制和升级
三者的关系
用一个比喻来说明:
| 概念 | 比喻 | 作用 |
|---|---|---|
| Prompt | 说话的内容 | 告诉 AI 具体要做什么 |
| MCP | 说话的语法规则 | 标准化 AI 与外部工具的交互方式 |
| Skill | 一个完整的能力模块 | 封装了 Prompt、MCP 工具和工作流 |
从包含关系来看:
- Skill > MCP > Prompt
- 一个 Skill 可能包含多个 MCP 工具定义
- 每个 MCP 工具可能被一个或多个 Prompt 调用
从交互流程来看:
用户 → Prompt → AI Agent → MCP 工具 → 外部服务
↑
Skill(组织和管理上述流程)
实际例子对比
假设我们要实现一个”搜索 GitHub 仓库”的功能:
如果只用 Prompt:
"在 GitHub 上搜索包含 'react' 关键词的仓库,按 stars 排序,取前 10 个"
如果用 MCP:
{
"name": "github_search",
"description": "搜索 GitHub 仓库",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string"},
"sort": {"type": "string", "enum": ["stars", "updated", "best-match"]},
"limit": {"type": "number"}
}
}
}
如果用 Skill:
skill:
name: "github_repo_searcher"
description: "搜索和发现 GitHub 仓库"
prompts:
- name: "search_system"
content: "你是一个 GitHub 专家,擅长发现高质量仓库..."
- name: "format_result"
template: "请将搜索结果格式化为:\n## {{name}}\n- ⭐ {{stars}}\n- {{description}}"
mcp_tools:
- name: "github_search"
server: "github-mcp"
workflow:
1. 使用 github_search 工具搜索
2. 调用 format_result 生成格式化输出
为什么需要区分这三个概念?
1. 职责分离
Prompt 专注于”说什么”,MCP 专注于”怎么调用工具”,Skill 专注于”如何组织能力”。每个概念解决不同层次的问题。
2. 复用性
- Prompt 可以在多个地方复用
- MCP 工具可以在多个 Skill 中复用
- Skill 可以被多个 Agent 复用
3. 生态系统
- MCP 允许不同厂商的工具互通
- Skill 允许开发者分享和分发能力
- 两者结合形成 Agent 能力的”应用商店”
4. 演进空间
- Prompt 可以变得更精准、更有效
- MCP 可以扩展更多的工具和协议
- Skill 可以积累更丰富的模板和最佳实践
我的理解
这三者的关系让我想起了软件工程中的分层:
- Prompt 就像”代码语句”——最基础的构建块
- MCP 就像”API 规范”——定义了组件间的交互方式
- Skill 就像”软件包”——封装了完整的功能模块
理解这三者的区别,有助于我们更好地设计 AI Agent 系统:知道什么场景用什么工具,避免把简单问题复杂化,也避免把复杂问题简单化。