AI 系列
AI Skill:把经验变成可复用的工作能力
Prompt 解决一次提问,Skill 解决一类重复工作。读完你会知道一个 Skill 该由什么组成、它和 Prompt/Agent/MCP 各管哪一段,以及为什么"写得太笼统"是最常见的反模式。
Skill 的本质:固化"一类工作的方法"
Prompt 是一段指令,告诉模型"这一次怎么回答"——它活在单次对话里,用完即弃。Skill 则把"这一类重复工作"的完整方法固化下来:目标是什么、按什么步骤走、参考什么规范、用什么工具、做到什么程度算合格。它更像一份给 AI 用的操作手册,而不只是一句话要求。
区别在于"可复用性"与"一致性"。同一个周报任务,十个人用十种 Prompt 会写出十个样;但一个周报 Skill 让任何人触发都走同一套方法,产出稳定、可被审阅。这正是 AI 从"会回答"走向"会按方法做事"的关键一步。
Skill 的结构:frontmatter + 指令体
一个典型 Skill 由两部分构成:
- frontmatter(元数据):用 YAML 描述触发条件(什么时候该用、什么时候不该用)与参数(需要用户提供什么输入)。触发写得准,模型才不会乱用 Skill。
- 指令体:真正的方法说明——步骤、约束、参考资料、验收标准。它会被在触发时注入给模型。
---
name: weekly-report
description: 当用户要"写周报/周总结/本周进展"时使用;不要用于日报或月报
args:
- name: scope
required: true
desc: 本周工作范围,如"后端组"
---
# 周报 Skill
1. 收集本周 git 提交、需求状态与事故记录(调用工具)
2. 按"完成 / 进行中 / 风险"三段归类,不编造未确认进展
3. 每条带可验证出处(链接/编号)
4. 输出前自检:是否含未授权信息?是否空话?核心思路:不要把 Skill 写成"请认真完成任务"。要把你脑子里隐含的经验拆成模型可以逐项检查的步骤——能检查的约束,才不会被省略。
与 Prompt / Agent / MCP 的关系与边界
四者常被混为一谈,其实各管一段、可组合:
| 概念 | 管的层次 | 生命周期 | 和 Skill 的关系 |
|---|---|---|---|
| Prompt | 单次指令 | 一次性 | Skill 的指令体本质是一段被固化、可复用的 Prompt |
| Skill | 一类工作的方法 | 可长期沉淀 | —— |
| Agent | 多步自主执行 | 运行时 | Skill 可被 Agent 在步骤中调用,作为"标准动作" |
| MCP | 外部能力的接入 | 服务级 | Skill 内部调用的工具,常由 MCP Server 提供 |
一句话串起来:Skill 是"怎么做"的方法,Agent 是"跑起来"的引擎,MCP 是"能调用什么"的接口,Prompt 是它们最底层的表达单元。一个成熟的周报 Agent,可能装载了"周报 Skill""数据核对 Skill",这些 Skill 再通过 MCP 去读 git 和数据库。
可复用工作流:输入→步骤→验证→输出
好的 Skill 把工作流显式拆成四段,每段都可被检查:
- 输入:需要哪些信息?缺失时该反问还是用默认?要在 frontmatter 的 args 里声明。
- 步骤:按顺序做什么、调哪些工具、产出什么中间结果。步骤之间最好有依赖说明。
- 验证:每条产出如何自检?比如"周报不得含未确认进展""代码改动需带测试"。验证是 Skill 质量的分水岭。
- 输出:最终交付的格式与必含字段,让结果可被人或下游系统直接使用。
踩坑提醒:跳过"验证"段是最常见的失误。没有自检标准的 Skill,跑十次可能九次漏关键信息——因为它根本不知道什么叫"做完了"。
版本与组合:越用越好
Skill 不是写完就定稿,它应当随使用演进:
- 版本化:每次改方法就升版本,出问题时能回滚,也方便对比"新写法是否更准"。
- 互相调用:一个 Skill 的步骤里可以触发另一个 Skill,像函数调用一样组合。例如"发版 Skill"在最后一步调用"通知 Skill"。
- 从反馈变好:把每次跑偏的案例回写成约束,Skill 的边界会越来越准,这正是"固化经验"的复利效应。
设计原则与反模式
判断一个 Skill 写得好不好,看它是否避开这些反模式:
| 反模式 | 后果 | 正解 |
|---|---|---|
| 过于笼统 | "请帮我做好"——模型自由发挥,结果不可控 | 拆成可检查的具体步骤与验收 |
| 触发过宽 | 啥都触发,污染其他流程 | 在 description 写明"用/不用"的边界 |
| 无验证标准 | 跑完也不知道对不对 | 每条产出配自检条件 |
| 硬编码假设 | 换场景就崩 | 用 args 接收输入,保持可配置 |
Skill 的价值,在于把一次灵光乍现的提问,沉淀成团队随时能调用的标准动作。当你把目标、步骤与验收都拆清楚,即便底层模型换了一代,这套"方法"依然能直接复用——它固化的是经验,不是某次对话。