工具与协议:Skills & MCP

Agent 能力扩展的两条路径——协议标准化 vs 流程封装,从全量注入到渐进式披露

MCP 协议 (Model Context Protocol)

MCP 是 Anthropic 提出的开放标准,定义了 AI 模型与外部工具之间的交互协议。可以将其理解为 AI 世界的"USB 接口"——任何工具只要实现了 MCP Server,就能被任何支持 MCP 的 Agent 调用。

工作机制

MCP 的核心设计是全量注入:在对话开始前,所有已连接的 MCP Server 的工具定义(名称、描述、参数 Schema)全部注入到系统 prompt 中。Agent 在每轮对话中都能看到所有可用工具,自行决定调用哪个。

这个流程分三步:

阶段 动作 时机
1. 工具发现 Agent 启动时,扫描所有已配置的 MCP Server,收集工具定义 会话初始化
2. 全量注入 所有工具的 JSON Schema 描述注入到 system prompt 每轮对话前
3. 按需调用 Agent 根据用户请求,选择并调用合适的工具 对话过程中

MCP 的三个核心问题

1
Token 成本爆炸
30 个工具的定义大约消耗 20,000 tokens,这些 token 在每轮对话中都会被重复发送。对于高频交互场景(如 IDE 插件),工具定义本身的 API 成本可能超过实际业务对话。随着工具数量增长,成本线性甚至超线性增长。
2
注意力稀释 (Attention Dilution)
研究表明,当工具数量超过 300 个时,LLM 的工具选择准确率下降到 62%。大量工具描述占据了上下文窗口的核心空间,模型需要在海量选项中"大海捞针"。不相关的工具描述还会产生干扰,导致模型做出错误的工具选择。
3
编码门槛 (Coding Threshold)
创建一个 MCP Server 需要编写 TypeScript 或 Python 代码,实现 JSON-RPC 协议、定义 Schema、处理错误。这对非开发者用户构成了实质性障碍。大量有价值的领域知识(如运维经验、设计规范)无法被封装为 MCP 工具。
接口悖论:CLI 优于嵌套 JSON

MCP 的工具定义采用嵌套 JSON Schema,这对开发者友好但对 LLM 来说并非最优。研究表明,LLM 对扁平的命令行接口(CLI)风格指令的理解准确率高于深层嵌套的 JSON 结构。这意味着工具描述的设计应该优先考虑 LLM 的认知模式,而非开发者的习惯。

Agent Skills

Skills 是模块化的能力插件,基于文件系统组织,通过渐进式披露机制解决 MCP 的全量注入问题。Skills 不需要运行独立的服务进程,也不需要编写代码——一个 SKILL.md 文件就能定义一个完整的技能。

三层渐进式披露

Skills 的核心创新是按需加载,将能力信息分为三个层级,只在需要时才展开到下一层:

Layer 1: Metadata 元数据层
技能名称、描述、触发条件。在 Agent 启动时全部加载,用于判断是否需要激活某个技能。
Token 开销:每个技能约 100-300 tokens(标题 + 一行描述)
Layer 2: Instructions 指令层
详细的执行步骤、约束条件、输出格式要求。仅在技能被激活时加载到上下文中。
Token 开销:按需加载,每个技能约 500-2000 tokens
Layer 3: Runtime Resources 运行时资源层
脚本、模板、参考文档、数据文件。仅在技能实际执行时读取使用。
Token 开销:执行时按需读取,不预加载

对比 MCP 的全量注入:30 个 MCP 工具需要 20K tokens 常驻,而 30 个 Skills 的元数据层只需约 3K-9K tokens,实际指令仅在激活时加载。

Skill 文件结构

my-skill/
  SKILL.md ← 必须:元数据 + 指令 + 约束(核心文件)
  reference/ ← 可选:参考文档、API 文档、示例
    api-spec.md
    examples.md
  scripts/ ← 可选:自动化脚本
    deploy.sh
    validate.py
  assets/ ← 可选:模板、图片、配置
    report-template.md
    config.example.json

六大设计原则

1. 单一职责
每个 Skill 只做一件事,做到极致。避免"瑞士军刀"式的大而全技能,保持原子性和可组合性。
2. 声明式优先
SKILL.md 用自然语言描述"做什么"和"怎么做",而非用代码实现。Agent 理解指令后自行执行,降低创作门槛。
3. 渐进披露
元数据常驻、指令按需、资源惰性加载。控制上下文窗口的 token 消耗,让 Agent 能同时"知道"数百个技能。
4. 可组合性
Skills 可以相互引用和组合。一个复杂工作流可以由多个原子 Skill 串联完成,无需创建新的巨型 Skill。
5. 幂等安全
Skill 的执行应该是幂等的或有明确的副作用声明。重复执行不应产生意外的累积效果。
6. 自文档化
SKILL.md 既是代码也是文档。包含触发条件、使用说明、示例和约束,人和 Agent 都能读懂。

Skills vs MCP 对比

Skills 和 MCP 是 Agent 能力扩展的两条互补路径。理解它们的差异和适用场景是架构设计的关键。

维度 MCP (Model Context Protocol) Skills (Agent Skills)
本质 通信协议 — 定义工具调用的标准接口 能力插件 — 封装完整的执行流程
加载方式 全量注入 — 所有工具定义常驻 prompt 渐进披露 — 元数据常驻,指令按需加载
Token 效率 低 — 30 工具约 20K tokens 高 — 30 技能元数据约 3-9K tokens
创作门槛 高 — 需要编写代码实现 JSON-RPC Server 低 — 编写 Markdown 文件即可
运行模式 独立进程 — MCP Server 需要持续运行 惰性加载 — 无需常驻进程
适用场景 外部服务集成(数据库、API、SaaS) 流程封装(部署、审查、文档生成)
状态管理 Server 自管理 — 由 MCP Server 维护状态 Agent 管理 — 由 Agent 运行时管理
扩展性 中等 — 每增一工具增加固定 token 成本 高 — 数百技能仅增加元数据 token

未来生态格局

Agent Core + 少量 MCP Servers + 大量 Skills
MCP 负责连接外部服务(数据库、API、云平台),Skills 负责封装内部流程(部署、审查、分析)。
两者共存,各司其职。
选型建议

需要与外部系统交互(数据库查询、API 调用、第三方服务集成)时使用 MCP;需要封装复杂工作流程(代码审查、文档生成、部署流程)时使用 Skills。MCP 是"连接器",Skills 是"流程专家"。一个好的 Agent 系统两者兼备。

Anthropic Skills 实战体系

Anthropic 的实践表明,一个完整的 Skills 体系覆盖九大类别,贯穿从代码编写到运维部署的全工程链路。

1. 代码生成与重构
代码脚手架生成、重构建议、模式迁移。核心模式:输入约束条件,输出符合项目规范的代码结构。强调与现有代码库的风格一致性。
2. 测试与质量保障
单元测试生成、集成测试编写、覆盖率分析。核心模式:分析代码路径,生成边界条件和异常场景的测试用例。支持 TDD 工作流。
3. 文档与知识管理
API 文档生成、变更日志编写、知识库维护。核心模式:从代码变更自动提取文档更新点,保持文档与代码同步。
4. 代码审查与安全
PR 审查、安全扫描、合规检查。关键模式:adversarial-review — 以攻击者视角审查代码变更,识别潜在的安全漏洞和逻辑缺陷。
5. PR 管理与协作
PR 创建、Review 流程管理、冲突解决。关键模式:babysit-pr — 持续监控 PR 状态,自动处理 CI 失败、提醒 reviewer、合并就绪判断。
6. 部署与运维
服务部署、环境配置、监控设置。关键模式:deploy-service — 从代码变更到生产部署的全流程自动化,包含灰度发布和回滚策略。
7. 数据分析与报告
数据处理、可视化、报告生成。核心模式:输入原始数据和分析需求,输出结构化报告和可视化图表。支持多种输出格式。
8. 项目管理与协调
任务拆解、进度跟踪、依赖管理。核心模式:从需求描述自动拆解为可执行的子任务,关联代码变更和 PR 状态。
9. 学习与技能进化
从执行历史中提炼新模式,自动更新 Skill 指令。核心模式:定期分析技能的使用成功率,优化指令措辞和约束条件。

关键实战模式深度解析

模式 触发条件 核心行为 关键约束
babysit-pr PR 创建后自动激活 监控 CI 状态、追踪 review 进度、处理冲突、判断合并时机 不自动合并,仅提供合并建议
adversarial-review 安全敏感 PR 或用户显式请求 模拟攻击者视角审查代码,检查注入点、权限泄露、数据暴露 产出分级报告(Critical/High/Medium/Low)
deploy-service 代码合并到 main 分支 构建验证、环境检查、灰度发布、健康检查、全量 rollout 或回滚 每个阶段需人工确认,支持自动回滚
Skills 体系的进化方向

从静态的"工具库"到动态的"专家团队"。当前 Skills 是被动的——等待 Agent 激活。下一步是主动式 Skills:根据上下文自动推荐、根据历史自动优化、根据团队偏好自动适配。Skills 不再是"工具",而是"有经验的同事"——知道什么时候该出手,也知道什么时候该闭嘴。