Skills / Agent Skills:可复用技能与编排
📅 主题:Agent Skills — 技能定义、编排与扩展
一、什么是 Agent Skills
Agent Skills(或简称 Skills) 指的是:把 AI Agent 的某一类能力封装成可复用、可组合的「技能单元」,让 Agent 在需要时按描述或触发条件调用,而不是每次都在对话里临时写一大段说明。
可以类比:
- 函数:把一段逻辑封装成「输入 → 输出」,多处调用。
- 技能:把「在什么情况下、按什么步骤、用什么规范做事」封装成一份说明(常以 Markdown 或结构化配置存在),Agent 在匹配到场景时加载并遵循。
因此,Skills 解决的是:
- 可复用:一次写好,多轮对话、多个任务都能用。
- 可发现:通过名称、描述、触发条件让系统或用户知道「有哪些技能、何时该用」。
- 可编排:多个技能可以组合成更复杂的工作流(先查库再生成、先审查再提交等)。
在不同产品里,Skills 的形态略有差异(例如 Cursor 的 .cursor/skills/ 下的 SKILL.md,或其他平台的「技能卡片」「Action」等),但核心思想一致:把能力模块化、描述清楚、便于发现与组合。
二、Skills 与 Prompt、工具、RAG 的关系
| 概念 | 作用 | 与 Skills 的关系 |
|---|---|---|
| Prompt | 单次请求里「说什么、怎么说」 | 技能里往往包含固定说明与模板,相当于可复用的 Prompt 片段;调用技能时会把技能内容注入上下文 |
| 工具 (Tools) | 调用外部 API、执行代码、查库等 | 技能可以规定何时、如何调用哪些工具;一份技能 = 使用某类工具的「说明书」 |
| RAG | 从知识库检索再生成 | 技能可以约定「先检索哪类文档、再按什么格式回答」,即检索+生成的流程被封装成技能 |
| MCP | 工具与资源的标准化协议 | MCP 提供「有哪些工具/资源」;Skills 提供「在什么场景下、按什么步骤使用它们」 |
因此:Skills 是「用法的封装」,Prompt 管单次表述,工具/MCP 管能力接口,RAG 管检索与生成流程,Skills 管「什么时候、按什么规范去用它们」。
三、技能如何被描述与发现
3.1 技能描述(Description)
一份技能通常需要简短、明确的描述,用于:
- 发现:系统或用户根据关键词、场景判断「是否该用这个技能」。
- 注入:被选中的技能内容会加入 Agent 的上下文(系统提示或当前轮),指导本次行为。
描述最好同时说明:
- 做什么(WHAT):例如「按团队规范做代码审查」「根据 git diff 生成提交信息」。
- 何时用(WHEN):例如「在用户请求代码审查、提到 PR、或要求写 commit message 时使用」。
这样 Agent 或路由逻辑才能在高相关性场景下自动选用该技能。
3.2 技能内容结构
技能内容通常包含:
- 元信息:名称、描述、可选标签或分类。
- 使用说明:步骤、检查项、注意事项。
- 模板与格式:输出结构、示例(如 commit 格式、报告模板)。
- 可选:引用外部文档(如详细规范、示例库)、可执行脚本的调用方式。
保持「核心说明精简、细节外挂」有利于控制上下文长度,需要时再读取详细文档或执行脚本。
3.3 触发方式
- 显式:用户说「用代码审查技能」「按 RAG 流程回答」。
- 隐式:系统根据用户意图、当前任务类型自动匹配技能描述中的 WHEN,选择加载哪些技能。
技能描述里的 WHEN 写得好,隐式触发才可靠。
四、技能设计原则(通用)
4.1 高内聚、可复用
一个技能只负责一类任务或一种流程,避免「大杂烩」。这样:
- 更容易被正确触发(描述清晰)。
- 可以在不同场景下复用、组合。
4.2 描述具体、含触发词
- 描述里写出具体能力和典型触发词/场景(如「PR」「commit message」「PDF 提取」),便于匹配。
- 避免空泛的「帮助用户」「处理文档」等表述。
4.3 适度自由与约束
- 高自由度:多解并存、依赖上下文的(如代码风格建议),用自然语言说明原则即可。
- 高约束:流程固定、格式严格、易出错的(如发布流程、数据库脚本),用步骤、检查项、模板甚至固定脚本约束。
根据任务「易错程度」决定写多细。
4.4 渐进式展开
- 主文件里放「何时用 + 核心步骤 + 模板/示例」。
- 详细规范、长示例放到单独文档,技能里只给链接或文件名,需要时再读,避免一次性塞满上下文。
五、技能编排与组合
编排指:把多个技能或步骤组合成一条完整流程。
- 顺序:先执行技能 A(如检索文档),再执行技能 B(如按模板生成报告)。
- 条件:若用户要求「带引用」,则启用「引用标注」技能;否则只生成摘要。
- 并行:某些场景下可并行调用多个技能(如同时查多个知识库),再合并结果。
实现方式可以是:
- 在编排层(工作流引擎、Agent 调度)配置「步骤 → 技能/工具」的映射;
- 或在某一份「总控技能」里用自然语言写出「先做什么、再做什么、遇到什么情况用哪个技能」,由 Agent 按说明执行。
技能设计得越模块化,编排时就越灵活。
六、与 MCP、RAG 的配合
- MCP 定义了「有哪些工具、资源可用」(例如数据库、文件、API)。Skills 定义「在什么任务下、按什么规范使用这些工具」——例如「查询数据库时先看 schema、再拼 SQL、再校验结果」可以写成一个技能,内部引用 MCP 暴露的数据库工具。
- RAG 提供「检索 → 注入 → 生成」的能力。可以有一个「RAG 问答」技能:规定检索哪些集合、Top-K 与重排序策略、Prompt 模板和引用格式,这样每次做 RAG 时都一致、可复现。
Skills 不替代 MCP 或 RAG,而是在它们之上加一层用法与策略,便于统一维护和复用。
七、小结
- Agent Skills = 把一类能力封装成可复用、可发现的「技能单元」,通过描述(WHAT + WHEN)被选中并注入上下文,指导 Agent 行为。
- 与 Prompt / 工具 / RAG / MCP:Skills 是「用法的封装」;Prompt 管表述,工具/MCP 管接口,RAG 管检索与生成,Skills 管何时、按何规范使用它们。
- 描述与发现:描述要具体、含触发词;内容结构清晰,核心精简、细节可外挂;支持显式/隐式触发。
- 设计原则:高内聚、可复用;描述具体;按任务易错程度决定约束程度;渐进式展开。
- 编排:通过顺序、条件、并行组合多个技能,形成完整工作流;与 MCP、RAG 配合可形成「工具 + 用法 + 检索策略」的统一层。