MCP 解决了「Agent 能连接哪些系统」的问题。但能连接系统,不代表知道怎么把事情做好。比如 Agent 能读写 Excel,不代表它知道你们公司的报表格式;能调用数据库,不代表它知道排查问题的套路。Skills 解决的是「方法」的问题。
一、Skill 是什么
一个 Skill 就是一个文件夹,里面装着完成某类任务所需的说明、脚本和资料:
weekly-report/
├── SKILL.md # 核心:说明这个技能做什么、怎么做
├── template.md # 报告模板
├── scripts/
│ └── fetch_metrics.py # 拉取数据的脚本
└── reference/
└── metrics.md # 各项指标的定义和口径
SKILL.md 的开头是一段元信息,至少包含名称和描述:
---
name: weekly-report
description: 生成业务周报。当用户要求写周报、汇总本周数据或做周度复盘时使用。
---
# 生成业务周报
1. 运行 scripts/fetch_metrics.py 拉取本周和上周的核心指标。
2. 指标口径见 reference/metrics.md,计算环比时以此为准。
3. 按 template.md 的结构撰写,先写结论,再写数据和原因。
4. 环比波动超过 20% 的指标必须给出原因分析;原因不明的要明确标注。
可以把 Skill 理解为给 Agent 准备的一份岗位操作手册:遇到这类工作时,照着手册做。
二、核心机制:渐进式加载
如果把所有操作手册都放进 System Prompt,上下文很快就会被塞满(第 07 篇讲过的问题)。Skills 的关键设计是分层、按需加载:
| 层级 | 内容 | 什么时候加载 | 大小 |
|---|---|---|---|
| 第一层 | 名称 + 描述 | 始终在上下文中 | 每个技能几十个字 |
| 第二层 | SKILL.md 正文 | 模型判断当前任务需要这个技能时 | 通常几百到几千字 |
| 第三层 | 附带的文档、模板、脚本 | 执行过程中真正用到时 | 不限 |
这样一来,Agent 可以「装备」几十上百个技能,而平时只占用很少的上下文。就像一个人知道书架上有哪些手册,需要时才翻开对应的那本。
脚本还有一个额外的好处:Agent 运行脚本时,只有脚本的输出进入上下文,脚本本身的代码不需要被模型读取。确定性的工作(数据拉取、格式转换、计算)交给脚本,既省上下文,结果也更可靠。
三、description 决定技能会不会被用上
和工具一样,模型完全靠 description 判断什么时候该使用某个技能。一个好的描述要说清楚两件事:
- 这个技能做什么;
- 什么情况下应该使用,最好列出用户可能的说法。
| 差 | 好 |
|---|---|
| 周报工具 | 生成业务周报。当用户要求写周报、汇总本周数据或做周度复盘时使用。 |
技能写好了却从来不被触发,十有八九是描述的问题。
四、Skills、MCP、System Prompt 的分工
这三者经常让人困惑,它们回答的是不同的问题:
| 回答的问题 | 内容 | 加载方式 | |
|---|---|---|---|
| System Prompt | 你是谁、始终要遵守什么 | 身份、通用规则、输出风格 | 始终加载 |
| MCP / 工具 | 你能做什么 | 可调用的能力:查数据库、发消息 | 工具定义始终加载 |
| Skills | 某类事情该怎么做 | 流程、规范、模板、脚本 | 按需加载 |
一个形象的比喻:System Prompt 是员工守则,MCP 是工作账号和系统权限,Skills 是各项工作的操作手册。
它们可以配合使用:一个 Skill 的说明里可以写「用某某 MCP 工具查询数据,然后按这个模板整理」。
五、什么内容适合做成 Skill
- 反复出现的任务:周报、代码审查、故障复盘、合同初审。
- 有明确规范的任务:公司的文档格式、品牌规范、数据口径。
- 需要专业知识的任务:生成特定格式的文件、使用某个内部系统的方法。
- 你已经给 Agent 解释过多次的事情:每次都要重新交代一遍的流程,就是该写成 Skill 的信号。
不适合的:一次性任务、只需要一两句话就能说清的规则(直接放 System Prompt 更合适)。
六、编写 Skill 的建议
- SKILL.md 保持精简,只写核心流程。细节资料放到单独的文件里,在正文中说明什么时候去读。
- 写清楚判断标准,而不是只列步骤。「环比波动超过 20% 要分析原因」比「分析数据变化」有用得多。
- 规则附上理由,模型能据此处理没写到的情况。
- 能用脚本的就用脚本,尤其是计算、格式转换、调用接口这类确定性工作。
- 用真实任务测试:看技能有没有被正确触发、执行结果是否符合预期,再迭代修改。
七、Skills 的现状
Skills 最早由 Anthropic 在 Claude 的产品中推出,随后以开放规范的形式发布,目前已有多个 Agent 产品和开发框架支持同样的 SKILL.md 格式。这意味着写好的 Skill 可以在不同的 Agent 之间复用。各产品的安装位置和具体支持程度不尽相同,以各自文档为准。
需要注意的是,Skill 里可以包含脚本,安装来路不明的 Skill 和运行来路不明的程序一样有风险。只使用可信来源的 Skill,使用前看一遍内容。
本篇小结
- Skill 是一个文件夹:SKILL.md + 模板 + 资料 + 脚本,是给 Agent 的操作手册。
- 渐进式加载:平时只加载名称和描述,用到时再读正文和附带文件。
- description 决定技能会不会被触发。
- System Prompt 管规则,MCP 管能力,Skills 管方法。
- 反复出现、有规范、需要专业知识的任务适合做成 Skill。
思考与练习
- 把你常用的一套日志分析流程写成一个 Skill:SKILL.md 写什么、哪些内容放到附带文件、哪些步骤写成脚本?
- 为你的 Skill 写一段 description,并列出三种用户可能的说法,检查描述能否覆盖。
上一篇:AI Agent原理篇13:MCP 实战:写一个自己的 MCP Server
下一篇:AI Agent原理篇15:Agent 运行框架(Harness)
返回系列总目录