青雲的博客

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 系统:知道什么场景用什么工具,避免把简单问题复杂化,也避免把复杂问题简单化。

相关文章

评论