skills基础介绍

一文读懂 AI Agent 的 Skills(技能)

适用范围:Claude Skills / opencode skills 等基于 SKILL.md 的技能体系,概念通用。
读完你将掌握:skill 是什么、怎么发展来的、如何自己动手做一个并用起来。


一、基本概念:skill 到底是什么?

1. 一句话定义

Skill = 一段高度结构化的"专家操作手册",被打包成一个文件夹,让 agent 在碰到对应任务时加载,从而稳定地产出高质量、符合特定风格/规范的成果。

它本质上是给 agent 的角色 + 流程 + 规则库的封装。没有 skill 时,你要靠每次打字把要求说清楚;有了 skill,一次 description 匹配,整本手册就自动注入。

2. Skill 的核心组成

一个典型的 skill 是一个目录,通常长这样:

my-skill/
├── SKILL.md            # ★ 入口/说明书(必建)
└── references/         # 可选:参考资料(规则、反例、经验库)
    ├── rules.md        #   详细规则
    ├── anti-patterns.md #   反例/禁忌
    └── LESSONS.md      #   实战经验库(自举式 skill 用)

SKILL.md 是最重要的一份文件,分两部分

① Frontmatter(YAML 头部)——给"发现系统"看的元数据

---
name: my-skill              # 技能名
description: "在 XXX 场景下使用 ... 产出 ..."   # 一句话说明用途/触发条件
version: 1.0.0              # 版本号(自举/演化时递增)
---

description 是灵魂——agent 判断"这个任务要不要加载我"就靠它。写得越贴合你的使用场景,匹配越准。

② 正文 Markdown——给"执行 agent"看的具体操作:使用方式、步骤流程、硬性规则、禁忌、样板输出等。

3. skill 与 agent / prompt / mcp 的区别(容易混淆)

东西 是什么 和 skill 的区别
Prompt / 提示词 一次性说的话 skill 是可复用、可共享、有结构的提示词包,还带文件
命令 / slash command(/xxx) 你手动触发的一段指令 靠"人主动敲命令"触发;skill 靠"description 自动匹配",更被动但更省心
Agent 一个独立角色/子代理 agent 是"人",skill 是"人用的手册";agent 可以加载多个 skill
MCP 让 agent 调用外部工具/数据的协议 skill 管"怎么干活",MCP 管"能连接什么";二者常配合

一句话:skill 补的是"专业能力 + 风格一致性",不补"工具连接"。


二、发展脉络:skill 是怎么来的?

第 1 阶段:Prompt 的野蛮生长

早期靠把一大堆要求写进系统提示词。问题很快暴露:提示词越攒越长、越混越乱,agent 读完没重点,还互相冲突。

第 2 阶段:Skill 出现(把"手册"打包)

生态开始把"特定领域的操作手册"独立成文件包,按需加载:碰到设计任务→加载设计 skill;碰到写 Go→加载 Go skill。核心思想:把大而全的系统提示词,拆成小而专、按场景注入的技能包。(Claude Skills 2025 年推出,opencode 等工具也采纳了 SKILL.md 约定。)

第 3 阶段:进阶形态

skill 越用越讲究,出现几个高级话题:

  • 引用目录 references/ —— 主 SKILL.md 保持精简(只放流程和硬规则),反例拆到 references,按需条件加载,避免一次读爆 token、关键信息被淹没。
  • 自举式 / 自改进 skill —— 让 skill 用完自己反思、越用越准。典型机制:
    • REFLECT(反思):执行后想"这次有什么新经验/坑"
    • WRITE(沉淀):写进 references/LESSONS.md 经验库
    • PROMOTE(转正):同类问题出现 ≥3 次 → 升级为硬规则、写进 CHANGELOG.md、递增 version:

发展主线总结

从"一次性的长提示词" → "可复用、按需加载的技能包" → "带资料库、能自我演化的自举技能"。
驱动逻辑始终是:少给模型"噪音",多给"对场景有用的专业知识"。


三、怎么使用:发现、创建、维护

1. 使用:加载一个已安装的 skill

  1. 发现/加载:skill 装好后(放进对应配置目录),agent 拿到任务 → 用 description 和各 skill 描述做匹配 → 命中就加载对应 SKILL.md。
  2. 你可以主动点名叫它(如 /skill名、或让 agent "用 XX skill 来做"),也可以让它自动匹配。
  3. 多个 skill 可以叠加(如前端 skill + 风格 skill 一起用)。

2. 创建:自己动手做一个(最小上手)

建议从"你反复要做、且想稳定风格"的事开始,别一开始就搞复杂。最小步骤:

① 建目录 + SKILL.md
   ├── my-skill/SKILL.md
② 写 frontmatter(name / description / version)
③ 写正文:使用方式 + 步骤 + 硬规则 + 禁忌 + 样板
④ 放好目录 + 让它能被 agent 发现(按你所用工具的约定目录)
⑤ 试用:让 agent 跑一次,验证 description 匹配、输出是否达标

什么时候不要做 skill(YAGNI):

  • 只做一次的临时任务 → 直接说要求即可
  • 要求会频繁变、没有稳定风格 → 固化反而成负担
  • 判断标准:"经常做 + 要稳定 + 有专业门槛" 才值得做成 skill。

3. 维护:让它越用越准

  • 用完检查:规则有没有写错、漏的场景?
  • 用「自举协议」沉淀经验(REFLECT → WRITE → PROMOTE),让 skill 自我进化;
  • 定期清理:删掉从没触发过的规则,防止技能包膨胀(克制比堆料重要);
  • 一旦某条规则让输出变差,用 CHANGELOG 回滚版本。

四、经典 SKILL.md 模板(带反射自举 loop)

下面提供一个带反射自举 loop 的经典 SKILL.md 模板:

---
name: my-skill
description: "在 XXX 场景下,按本技能流程产出 YYY,风格/规范遵循 ZZZ"
version: 1.0.0
---

# My Skill

## 使用场景(description 命中后何时加载)
- 适合:...
- 不适合:...

## 工作流程(执行 agent 按顺序做)

执行前先查询 `CHANGELOG.md` 中的内容,再决定后续是否执行
1. 第 1 步:...
2. 第 2 步:...
3. 第 3 步:产出样板结果 ...

## 硬性规则(违反即不合格)
- 规则 1:...
- 规则 2:...

## 禁忌(禁止做)
- 不要 ...
- 不要 ...

## Self-improvement loop(自举协议 / 反射循环)

每次执行完本 skill 后,无触发信号则跳过 loop;有触发信号时,按顺序做三件事(总计 <2 分钟):

1. **REFLECT(反思)**:这次执行有哪些"参考资料没覆盖"的通用经验?
   - 遇到了新的场景类型?
   - 踩了什么坑(环境、依赖、用户习惯)?
   - 有哪些"当时犹豫、事后证明该/不该做"的决策?
2. **WRITE(沉淀)**:把经验追加进 `references/LESSONS.md`(日期、场景、问题、解法、结论),只写有复用价值的,避免噪音。
3. **PROMOTE(转正)**:同一问题出现 ≥3 次 → 提炼成硬规则,升级 `version:` 字段并记入 `references/CHANGELOG.md`,写入的条目要带计算规则,否则无法评定问题出现计数;未达阈值则留在 LESSONS 累积观察。

### 触发信号(遇到这些 MUST 学习,不是可选)
- 用户的纠正 / 否定 / "这里不对"
- 运行时报错或输出明显失败
- 参考资料未覆盖的全新场景
- 临时绕开资料、最终证明正确的决策

> 禁止在未执行任务时凭想象补经验。学习只发生在真实执行之后。

配套目录结构:

my-skill/
├── SKILL.md            # ← 上面的模板本体
└── references/
    ├── LESSONS.md      # ★ 必建:经验库(每次执行后追加一条)
    ├── CHANGELOG.md    # 可选:规则演化史(转正时记录,可回滚)
    └── lessons/        # 可选:按场景拆片,SKILL.md 按关键词条件加载
        └── xxx.md

反射 loop 写进 SKILL.md 只是闭环的一半——references/LESSONS.md 里第一条真实记录,请从"用户第一次纠正你"开始写,那是最有价值的反例数据。

提示:自举 loop 不必无脑加。仅当你的 skill 需要持续吸收经验时才引入;一次性固定的 skill 加了反而拖慢执行。


五、设计原则速查(写 skill 时的清单)

原则 做法
description 是灵魂 写清"什么场景用、产出什么",决定匹配准不准
正文给 agent 读 具体、可执行、有阈值和样板,别写空话
精简主文件 重认知进 references/,按需条件加载,防 token 爆炸
学习有钩子 用 REFLECT + 触发信号,不靠"用完顺便记"
用户纠正是最高优先级 被纠正时必须沉淀为反例经验
阈值式转正 同类 ≥3 次才升级硬规则,防单次偏好污染
版本化可回滚 CHANGELOG 记录每次规则变更
克制 YAGNI 不是常用场景就别建,建了定期删冗余

附:快速上手的一页小结

  1. 是什么 → 给 agent 的"专家操作手册"文件夹,SKILL.md 是入口。
  2. 给谁读 → 规则正文给 agent 执行;人类是作者/维护者。
  3. 核心文件 → SKILL.md(frontmatter + 正文)+ references/(资料/经验库)。
  4. 怎么发展来的 → 长提示词 → 按需技能包 → 自举演化。
  5. 怎么用 → 装好 → description 自动匹配 / 手动点名 → agent 按手册干活。
  6. 怎么做 → 常见且要稳定风格的事才建;先最小化,再靠自举养熟。
posted @ 2026-08-29 00:56  LemHou  阅读(42)  评论(0)    收藏  举报