一句话定义
Skill 是把一段可复用的能力——流程说明、领域知识、脚本、模板——封装成一个独立单元,包含一个简短的描述和一份详细的说明。Agent 平时只看到描述,需要时才加载完整内容。
它的核心思想是渐进式披露(progressive disclosure):不把所有细节一次性塞进上下文,而是按需展开。
为什么重要
它解决了 Agent 工程里一个非常具体的矛盾:
- 要让 Agent 会做某件事,你得把做法告诉它。
- 但把几十种做法全写进系统提示,会撑爆上下文并稀释注意力。
Skill 让这两件事解耦:描述常驻,内容按需加载。 这是上下文工程在能力层面的应用。
另一个价值是可组合。工具调用是一次动作,Skill 是一整套做法。前者像函数,后者像操作手册。
与相邻概念的区别
| 是什么 | 何时用 | |
|---|---|---|
| Tool | 一次可调用的动作 | 需要访问外部系统 |
| MCP | 工具的分发协议 | 工具需要跨应用复用 |
| Skill | 一套做法的封装 | 需要复用流程与知识 |
| RAG | 事实检索 | 需要查资料 |
一个实用的判断:需要「执行」用 Tool,需要「照做」用 Skill。
一个好的 Skill 包含什么
- 名称与触发条件:写清「什么时候应该用我」。这段描述的质量决定了它会不会被正确调用。
- 前置条件:需要哪些输入、哪些环境、哪些权限。
- 步骤:足够具体,可以直接照做,包含常见分支。
- 示例:一个完整的输入输出样例,胜过三段抽象描述。
- 边界:明确写出不该做什么,以及失败时怎么处理。
设计要点
- 描述要短且区分度高。多个 Skill 描述相似时,选择会变得不可靠。
- 内容可以长,因为它只在被选中时加载。
- 可组合优于可配置。宁可两个小 Skill,也不要一个参数众多的巨型 Skill。
- 保持可测试:给定的输入应该产生大致可预期的行为。
常见误解
- 「Skill 就是提示词模板」:模板只提供文本,Skill 还封装了流程、脚本与边界条件。
- 「Skill 越多能力越强」:过多的 Skill 会互相干扰,选择准确率下降。
- 「写了 Skill 就一定会被用」:触发描述写得不好,等于没写。
延伸阅读
- Context Engineering:渐进式披露的理论基础
- Agent Harness:负责加载与执行 Skill 的运行时