Agent开发系列(四):Skill篇

Agent开发系列 · 第 4/4 篇

框架篇 · 记忆篇 · 评测篇 · Skill篇

当 Agent 开始承担真实任务时,只依靠 Prompt 很难保证稳定性。Skill 的作用,是把任务知识、操作步骤、工具和验收标准封装为一个可复用的能力单元。

一、Tool、Skill、Agent 与 Workflow

概念 主要职责
Tool 提供原子能力,例如搜索、查询和写文件
Skill 封装完成某类任务所需的知识、步骤、工具和校验
Agent 根据目标选择并组合 Skill,处理动态情况
Workflow 用确定性规则控制必须固定的步骤

一个查询天气的 API 是 Tool;根据用户场景选择数据源、生成查询、格式化结果并检查异常的流程,更适合封装为 Skill。

二、Skill 应该包含什么

1. 明确的元数据

至少应该包含名称、用途、适用条件、版本和不适用场景。描述越清晰,Agent 越容易正确选择。

2. 执行说明

说明不是把知识堆得越多越好,而是提供完成任务所需的判断依据、步骤和边界。

3. 确定性脚本

计算、格式转换、文件操作等不需要模型决策的部分,应尽量交给确定性代码。

4. 资源与模板

示例、报告模板、检查清单和参考文件可以成为 Skill 的一部分,避免每次临时重建。

5. 验证规则

Skill 需要定义怎样才算完成,例如输出格式、必填字段、测试命令和人工确认条件。

三、一个目录示例

1
2
3
4
5
6
7
8
blog-publisher/
├── SKILL.md
├── scripts/
│ └── publish.py
├── templates/
│ └── post-template.md
└── references/
└── publishing-checklist.md

SKILL.md 负责说明何时使用、如何执行和何时停止;脚本负责确定性操作;资源文件提供稳定上下文。

四、Skill 的调用过程

1. 发现

Agent 根据名称、描述和当前任务判断是否需要加载 Skill。

2. 选择

如果多个 Skill 相似,需要有明确边界,避免 Agent 选择错误。

3. 执行

执行时只加载完成任务需要的说明和资源,减少上下文占用。

4. 验证

运行完成后检查输出、文件状态或测试结果,而不是只相信 Agent 自述。

5. 回退

工具失败、权限不足或验证不通过时,应停止、报告或交给人工处理。

五、安全与治理

Skill 越接近真实工具,越需要最小权限:

  • 文件操作限制在明确目录
  • 网络访问与命令执行单独授权
  • 删除、发布和支付等操作要求人工确认
  • 不在 Skill 中硬编码密钥
  • 对输入、输出和外部内容做边界检查

Skill 描述本身也可能被恶意内容污染,因此加载来源和版本必须可信。

六、测试一个 Skill

测试至少应覆盖:

  1. 正常输入能否完成目标。
  2. 缺少字段时是否拒绝执行。
  3. 工具失败时是否能正确报告。
  4. 是否出现越权文件或网络访问。
  5. 输出是否满足格式和验收标准。
  6. 重复执行是否具有幂等性。

七、系列收束

四个部分分别解决不同问题:

  • 框架提供运行结构和控制点
  • 记忆提供跨步骤与跨会话连续性
  • 评测提供可度量性和回归能力
  • Skill 提供可复用、可测试和可治理的任务能力

一个成熟的 Agent 系统,不是这四个模块的简单堆叠,而是让它们形成闭环:框架执行任务,记忆保留状态,评测发现问题,Skill 沉淀稳定能力。