Skill 是什么?Auto-coder Skill 的工作流程是怎样的?

一、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 = 需求理解 → 方案规划 → 上下文收集 → 代码生成 → 自检复审 → 交付结果,形成完整的编码闭环。

核心价值在于:将"会写代码"这个模糊能力,固化为可重复、可预期的标准化流程。