MCP 与 Skill 两种 Agent 工具机制的设计思路

MCP 与 Skill 两种 Agent 工具机制的设计思路 MCP 与 Skill 的区别两种 Agent 工具机制的设计对比在构建 Agent 系统时有两类工具机制Skill技能以 Claude Skills 为代表MCPModel Context Protocol以协议化工具调用为核心它们都用于扩展大模型的能力边界但在使用方式、系统假设、以及 token 成本上存在本质差异。一、Skill 是什么Skill 的本质Skill 本质上是一个“可复用的指令模板”。通常以SKILL.md存在使用自然语言描述任务目标操作步骤注意事项面向的是模型的行为引导Instruction它并不是一个“函数”也不是一个“严格的工具接口”而是一段在特定时机注入到上下文中的 PromptSkill 是如何被使用的Skill 的使用过程可以概括为两阶段模型认知阶段一只暴露“技能目录”在对话或 Agent 启动时模型看到的通常只是You have the following skills: - report-gen: Generate structured reports - db-migrate: Help migrate database schemas - code-review: Review code changes此时模型不知道技能的具体细节只知道技能名称简要用途阶段二按需加载 Skill 内容当模型判断需要某个 Skill 时skill(namedb-migrate)系统才会把db-migrate/SKILL.md的完整内容注入上下文Steps: 1. Read current schema 2. Identify breaking changes 3. Generate migration plan ...Skill 解决的是什么问题Skill 解决的是Prompt 过长、重复操作流程难以复用Agent 行为不可控它的核心思想是“让模型先做判断等它确认要用再告诉它细节。”二、MCP 是什么Model Context ProtocolMCP 的本质MCP 是一种协议级的工具描述机制。它不是 Prompt 技巧而是“模型如何理解外部能力”的统一接口规范在 MCP 中一个工具通常被描述为工具名称功能描述输入参数 schema类型、必填项输出结构 schema错误语义本质上它更接近函数签名 API 契约。MCP 是如何被使用的与 Skill 不同MCP 采用的是前置能力声明。在对话或 Agent 启动时模型会直接看到完整的工具定义例如示意{name:create_issue,description:Create a GitHub issue,inputSchema:{repo:string,title:string,body:string},required:[repo,title]}模型在推理开始之前就已经完全知道能不能用这个工具需要哪些参数返回什么结构MCP 解决的是什么问题MCP 解决的是工具调用不稳定参数 hallucination多模型 / 多 Agent 行为不一致无法进行自动校验与编排它的设计目标是“让模型在 reasoning 阶段就像调用函数一样理解工具。”三、Skill 与 MCP 的差异设计目标不同维度SkillMCP核心目标引导行为精确定义能力面向对象Prompt / 人类理解系统 / 协议工具语义软约束强约束上下文注入策略不同维度SkillMCP注入时机按需Lazy预先Eager初始上下文仅技能摘要完整工具定义细节暴露延迟即时四、为什么 MCP 更消耗 Token在理解前面的差异后token 成本的来源就非常清晰了。MCP 描述的是“能力边界”不是“操作提示”Schema类型结构错误条件这些内容天然比自然语言指令更长。MCP 必须在推理前完整可见模型如果不知道参数结构必填字段就无法在 reasoning 阶段判断是否可以调用工具。因此 MCP不能延迟加载。MCP 在为“系统稳定性”付出 token 成本MCP 用 token 换来了更高 tool-call 成功率更低 hallucination可自动验证可跨模型复用五、Skill 更省 token但代价是什么Skill 的低 token 原因来自延迟加载非结构化描述强 prompt 依赖相应的代价是工具触发不稳定参数不严谨无法静态分析六、结论不是谁更好而是谁更适合Skill 适合流程型任务写作 / 分析 / 思维模板Prompt 驱动 AgentMCP 适合数据库 / Git / Infra高风险操作需要确定性的系统集成真正成熟的 Agent 系统往往是 Skill MCP 的混合架构。