Agent Skill、MCP 与 Prompt:从 OOP 视角看 AI 交互抽象
Zhongjun Qiu 元婴开发者

用传统的 OOP 思想理解 Skill、MCP 和 Prompt 的关系与区别。

核心共识:一切皆 Prompt

从原理上,大模型的每次交互,本质上都只接收一个完整的 Prompt。

不管是 Skills、Tools 还是 MCP,最终都被打包成一段文本塞进模型的上下文里。所以严格来说:

Skills、Tools、MCP 都是”结构化的高级 Prompt”

它们不是模型原生的”新功能”,而是人类通过提示工程设计出来的模式,用来让模型的行为更可控、更高效。

Tool:Prompt 的”格式化分支”

Tool 调用(function calling / tool use)是 Prompt 的一个重要进化方向。

普通 Prompt 是”自由文本输出”,而 Tool 给模型加了严格的结构化约束:

  • 输入:工具描述(name + description + parameters schema,通常是 JSON Schema)
  • 输出:模型必须严格返回一个 JSON 对象(包含 tool name 和 parameters)

这本质上是通过 Prompt 工程”强迫”模型走结构化路径,避免幻觉、提高可靠性。

MCP:Tool 的”最小扩展”

MCP 可以看作 Tool 机制的直接子类,区别只在于执行方式:

类型 执行方式
普通 Tool 本地调用(模型输出 JSON → Agent 系统在本机执行函数 → 把结果塞回上下文)
MCP 网络请求(模型输出结构化指令 → Agent 通过 API 远程调用另一个模型或服务)

但对模型本身来说,输入输出完全一致:它只看到一个带工具描述的 Prompt,输出一个 JSON。

MCP 的”万能”之处在于,它把多个子任务/子模型调用抽象成工具链,本质仍是 Tool 的链式调用。

所以 MCP 不是革命性创新,而是 Tool 在 Agent 系统中的一种实现变体(解决单模型上下文限制、实现多轮协作)。

Skills:Tool 的”高级封装 + 渐进披露”

Skills 是对 Tool 机制的进一步抽象,核心解决两个痛点:

1. 工具描述过长问题

如果一次性把所有 Tools 的 description 全塞进 Prompt,上下文很快爆炸。

Skills 通过“渐进式披露”(progressive disclosure)机制,只在需要时动态注入相关工具描述。

2. 行为一致性问题

Tool 只约束输出格式,不约束思考过程。Skills 则额外提供: - 角色定义:模型以什么身份行事 - 思维框架:处理问题的思考模式 - 执行规范:调用 Tool 前后保持一致风格

从实现上看,Skills 通常包含: - 一个固定的”元框架 Prompt”(定义角色、输出规范) - 动态加载的 Tool 子集 - 可选的记忆/状态管理

层级总结(从底层到高层)

1
2
3
4
Prompt (基础)
└── Tool (结构化输出)
└── MCP (远程调用扩展)
└── Skill (高级封装 + 渐进披露)

所以 Skills > MCP > Tool 在复杂度上层层递进,但本质仍是 Prompt + Tool 的组合。

类图视角

如果用 OOP 的类图来表示这种关系:

层级关系图
  • Prompt 是基类,定义了基本的输入输出契约
  • Tool 继承 Prompt,增加了结构化约束
  • MCP 继承 Tool,重写了执行方式(本地→远程)
  • Skill 组合 Tool,增加了元框架和动态加载能力

总结

理解这些概念的层级关系,有助于我们在构建 AI 系统时做出正确的选择:

  • 简单场景直接用 Prompt
  • 需要结构化输出用 Tool
  • 需要调用外部服务用 MCP
  • 需要复杂行为管理和工具组织用 Skill

不要为复杂而复杂,选择合适的抽象层级才是关键。

 REWARD AUTHOR
 Comments
Comment plugin failed to load
Loading comment plugin