一、Skill 是什么?
Skill 是一种可复用的领域能力扩展包,它将特定任务的专业知识、标准化工作流(SOP)和工具调用封装在一起,注入给 LLM Agent 使用。
Skill 的核心组成
┌─────────────────────────────────┐
│ Skill │
├─────────────────────────────────┤
│ 1. 领域知识(Domain Knowledge) │ ← 该领域的概念、术语、最佳实践
│ 2. 工作流(SOP) │ ← 分步骤的标准化操作流程
│ 3. 工具绑定(Tool Bindings) │ ← 完成该任务所需的具体工具/API
│ 4. 约束规则(Constraints) │ ← 操作的边界和限制条件
│ 5. 示例/模板(Examples) │ ← 典型场景的参考范例
└─────────────────────────────────┘
Skill vs 普通 Prompt 的区别
| 维度 | 普通 Prompt | Skill |
|---|---|---|
| 粒度 | 一次性指令 | 可复用的能力包 |
| 结构 | 自由文本 | 结构化(领域知识 + SOP + 工具) |
| 组合性 | 无 | 多个 Skill 可组合调用 |
| 触发方式 | 每次手动输入 | 按需加载,和现有上下文融合 |
| 维护性 | 散落各处 | 集中管理,可版本迭代 |
为什么要用 Skill?
- 减少重复:不用每次都把同样的领域知识塞进 prompt
- 按需加载:只在需要时才展开,不占日常上下文
- 保证一致性:同一类任务用同一套 SOP,输出质量稳定
- 可组合:复杂任务可以由多个 Skill 协同完成
二、Auto-coder Skill 的工作流程
Auto-coder Skill 是一个典型的代码生成类 Skill,用于自动完成编码任务。其工作流程如下:
整体流程
用户提出编码需求
│
▼
┌──────────────┐
│ 1. 需求理解 │ 解析用户意图,明确输入/输出/约束
└──────┬───────┘
│
▼
┌──────────────┐
│ 2. 方案规划 │ 设计实现方案,拆分子任务
└──────┬───────┘
│
▼
┌──────────────┐
│ 3. 上下文收集 │ 读取相关文件,理解现有代码结构
└──────┬───────┘
│
▼
┌──────────────┐
│ 4. 代码生成 │ 按方案生成/修改代码
└──────┬───────┘
│
▼
┌──────────────┐
│ 5. 自检复审 │ 检查语法、lint、逻辑一致性
└──────┬───────┘
│ 有问题
├──────────→ 回到步骤 4
│ 无问题
▼
┌──────────────┐
│ 6. 交付结果 │ 输出最终代码,总结变更
└──────────────┘
各阶段详解
阶段 1:需求理解
输入:用户的自然语言描述
处理:
├─ 提取核心意图(要做什么?)
├─ 识别输入/输出格式
├─ 识别约束条件(语言、框架、行数限制等)
└─ 判断是否属于本 Skill 的能力范围
输出:结构化的需求描述
阶段 2:方案规划
输入:结构化需求
处理:
├─ 判断是新文件还是修改现有文件
├─ 拆解为可执行的子任务
├─ 确定任务执行顺序(是否有依赖)
└─ 评估风险和需要确认的假设
输出:执行计划(子任务列表 + 顺序)
规划时的关键决策:
- 单个文件改动 → 直接进入代码生成
- 多文件联动 → 确定修改顺序,先底层后上层
- 不确定 → 先读取相关文件再决定
阶段 3:上下文收集
输入:执行计划中涉及的文件路径
处理:
├─ 读取目标文件内容
├─ 搜索相关函数/类的定义和引用
├─ 理解现有代码风格和模式
└─ 收集依赖信息(import、类型定义等)
输出:完整的代码上下文
原则:先读后写,不凭空猜测。
阶段 4:代码生成
输入:需求 + 方案 + 上下文
处理:
├─ 优先使用 replace_in_file(精确修改)
├─ 需要新文件时使用 write_to_file
├─ 遵循项目现有的代码风格
├─ 确保导入完整、类型正确
└─ 控制方法行数 ≤ 80 行,类行数 ≤ 200 行
输出:实际代码变更
阶段 5:自检复审
输入:变更后的代码
处理:
├─ 运行 linter 检查
├─ 确认新增代码符合规范(行数、命名等)
├─ 检查是否有遗漏的边界情况
└─ 验证逻辑完整性
输出:通过 / 需要修正
阶段 6:交付结果
输入:通过的代码变更
处理:
├─ 用简洁语言总结做了什么
├─ 标注关键修改点和原因
└─ 如有关联影响,主动说明
输出:最终结果
三、Auto-coder Skill 的关键设计原则
| 原则 | 说明 |
|---|---|
| 先读后写 | 修改已有代码前必须先读取最新内容,不能凭记忆操作 |
| 最小改动 | 优先精确修改(replace),避免整体重写 |
| 外科手术式 | 只改需要改的地方,不动无关代码 |
| 假设显式化 | 不确定时说明假设,而不是默默猜测 |
| 自检闭环 | 生成后自动检查,形成"生成→检查→修正"的闭环 |
四、Skill 与 Agent 的关系
┌──────────────────────────────────────┐
│ Agent │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ Skill A│ │ Skill B│ │ Skill C│ │ ← 按需加载
│ └────────┘ └────────┘ └────────┘ │
│ ┌─────────────────────────────────┐ │
│ │ 工具集 (Tools) │ │ ← 持久挂载
│ └─────────────────────────────────┘ │
│ ┌─────────────────────────────────┐ │
│ │ 对话上下文 (Context) │ │
│ └─────────────────────────────────┘ │
└──────────────────────────────────────┘
- Agent 是运行时的主体,负责决策和调度
- Skill 是注入的能力包,扩展 Agent 在特定领域的表现
- Agent 根据任务类型按需加载 Skill,Skill 展开后与当前上下文融合
五、总结
Skill = 领域知识 + SOP + 工具绑定,是一套可复用的能力封装。
Auto-coder Skill = 需求理解 → 方案规划 → 上下文收集 → 代码生成 → 自检复审 → 交付结果,形成完整的编码闭环。
核心价值在于:将"会写代码"这个模糊能力,固化为可重复、可预期的标准化流程。
