ARTICLE

Agent Skill:把人的可执行能力封装给 AI Agent

Skill 本质上是对一项可重复能力的封装。更理想的方式不是由人直接编写 skill,而是先教会 AI 做事,再由 AI 自己总结成 skill 并持续微调。

Article

Agent Skill:把人的可执行能力封装给 AI Agent

Skill 本质上是对一项可重复能力的封装。更理想的方式不是由人直接编写 skill,而是先教会 AI 做事,再由 AI 自己总结成 skill 并持续微调。

很多人第一次接触 agent skill 时,会把它理解成“给 AI 增加一个插件”。

这个理解不算错,但还不够准确。

我更愿意把 skill 看成一层能力封装:它不是单纯扩展了一个功能入口,而是把一件原本需要人手动完成的事情,整理成一套 AI agent 可以稳定复用的执行方法。

而且我越来越倾向于认为,skill 最好的来源并不是“人坐下来写一份说明书”,而是用户先把 agent 教会,再由 agent 自己把这项能力总结出来。

Skill 到底在封装什么

所谓 skill,封装的并不是“某个按钮”或者“某个命令”,而是一段相对完整的能力。

比如:

  • 如何检查一个仓库的构建是否正常
  • 如何把一批 Markdown 文档整理成博客文章
  • 如何为一个项目生成符合约定的发布说明
  • 如何在固定目录下扫描日志并提取异常信息

这些事情的共同点是:

  1. 有明确目标
  2. 有可重复步骤
  3. 有输入和输出
  4. 能通过计算机完成

一旦满足这四点,它就不再只是“某个人会做的一件事”,而是可以被工程化描述、被标准化复用、被 agent 调用的一项能力。

Skill 的本质是经验的结构化

一个人能做某件事,不代表 agent 立刻就能做。

中间差的那一步,就是把人的经验从“脑子里的模糊直觉”,变成“机器可执行的结构化说明”。

这一步通常包括:

  • 说明这项能力的目标是什么
  • 指定输入从哪里来
  • 规定执行时要遵循哪些步骤
  • 明确什么算成功,什么算失败
  • 约束边界条件和风险点

换句话说,skill 不是凭空制造能力,而是把已有能力整理成一种更稳定、更可组合的形式。

人会做,才有可能封装。

如果连人自己都说不清“这件事到底怎么做、做到什么程度算完成、出错时怎么判断”,那它通常还不具备被封装成 skill 的条件。

只要人能通过计算机完成,就有机会被封装

这是我觉得最重要的一点。

如果一个人能够借助计算机完成一件事情,那么原则上,这件事情就有机会被封装成 skill,再交给 AI agent 使用。

这里的关键不在于“这件事是否复杂”,而在于“它是否可以被描述清楚”。

例如:

  • 部署一个服务
  • 检查一份配置是否符合规范
  • 批量重命名文件
  • 从代码库里抽取变更点并整理成周报
  • 根据既有风格撰写一篇技术博客

这些事情里,有的偏工程,有的偏内容,有的偏运维,有的偏数据处理。

它们领域不同,但抽象结构非常相似:输入一组上下文,按照一套规则执行,输出一个结果。

而这正是 skill 最适合承载的东西。

这里的关键不是“先写一个 skill 文件”,而是先确认这项能力本身是否真的存在、是否能被重复执行、是否能被 agent 学会。

为什么不应该主要靠人直接写 Skill

很多人会自然地想到:既然 skill 是一套能力描述,那就让人来写不就行了。

但这件事的问题恰恰在这里。

人写出来的东西,往往会带着这些问题:

  • 表达模糊
  • 默认前提太多
  • 步骤跳跃
  • 边界条件写不清
  • 成功标准不稳定

一个熟练的人类工程师,在脑子里会自动补全很多上下文,所以他写下来的说明看起来已经“够用了”。但对于 agent 来说,这种说明经常是不够精确的。

最典型的情况是:

  • 人觉得“这里改一下配置就行”
  • agent 不知道到底要改哪个文件、改哪一行、改完之后怎么验证

也就是说,人类写 skill 的方式,天然容易把大量隐性经验藏在字缝里。

这会导致 skill 看起来像是有了,实际上执行起来依旧不稳定。

更合理的方式:先教会 Agent,再让 Agent 总结

我更认同的方式是:

  1. 用户先带着 agent 完成一件具体的事情
  2. 在过程中不断纠正 agent 的理解和动作
  3. 当任务完成后,让 agent 反过来总结“这件事情应该如何做”
  4. 再把这份总结沉淀成 skill

这样做有一个明显优势:

这份 skill 不是凭空写出来的,而是从一次真实执行中长出来的。

它记录的不是“人以为应该怎么做”,而是“agent 在真实环境里怎样才能做成”。

两者差别很大。

前者更像纸面流程,后者更像经过验证的工作流。

Skill 应该是可演化的,不是一次性文档

如果 skill 真的是能力封装,那么它就不应该是一次写完、永远不变的东西。

它应该随着执行不断被修正。

比如:

  • 某一步经常失败,那就应该补充前置检查
  • 某个命令在不同环境下不稳定,那就应该加入分支条件
  • 某类输入经常引起歧义,那就应该补充更明确的约束
  • 某个输出不符合预期,那就应该重写成功标准

从这个角度看,skill 更像是一份持续迭代的执行资产。

第一次只是初稿。

后面每次真实调用、每次失败、每次人工纠正,都会让这份 skill 更接近“一个真正可用的能力模块”。

所以更合理的链路不是:

人写 skill -> agent 使用

而应该是:

人教 agent 做事 -> agent 总结 skill -> 后续执行持续微调

这条链路更符合 agent 的成长方式,也更符合工程现实。

为什么 Skill 对 Agent 特别重要

没有 skill 的 agent,更多依赖临场推理。

它可以回答问题,也可以尝试做事,但执行质量会明显依赖上下文是否完整、提示词是否精确,以及这次推理是否刚好走到了正确路径。

有了 skill 之后,agent 的能力会出现一个很大的变化:从“每次重新想一遍”,变成“调用一套已经整理好的做法”。

这会带来几个直接收益:

  • 稳定性更高
  • 输出更一致
  • 更容易复用
  • 更容易组合成更长的工作流

本来需要一个熟练工程师反复做的事情,一旦被整理成 skill,就可能变成 agent 的基础能力模块。

而当基础能力模块足够多,agent 才真正开始接近“可用的协作者”,而不是“偶尔聪明的聊天机器人”。

Skill 不是魔法,仍然是工程

讲到这里,很容易把 skill 想得过于理想化,好像只要写一段说明,agent 就自动掌握了一项技能。

实际并不是这样。

好的 skill,依旧是一种工程产物。

它需要反复迭代,需要处理失败场景,需要考虑权限、依赖、环境差异、输入脏数据、输出质量、人工确认节点。

也就是说,封装 skill 的过程,本身就是在做一件非常标准的工程化工作:

  • 抽象问题
  • 固化流程
  • 降低不确定性
  • 把经验沉淀成资产

从这个角度看,skill 其实很像函数、脚本、CLI 工具、操作手册和 SOP 的结合体。

区别只是:它最终服务的对象,不再只是人,而是 AI agent。

对个人和团队来说,这意味着什么

如果你接受“skill 是能力封装”这个视角,那么很多事情都会变得更清楚。

对于个人来说,skill 的沉淀过程,其实是在逼自己回答一个问题:

我到底会什么?我会的这件事,能不能被我讲清楚、拆清楚、交给别人或者交给 agent 去执行?

对于团队来说,skill 的价值更大。

很多原本附着在少数人身上的经验,例如打包发布、故障排查、文档整理、合规检查、数据导出,这些都可以逐步沉淀为可复用能力,而不是一直停留在“只有某个人会”的状态。

这会让团队知识更容易继承,也会让 agent 真正开始接入生产流程。

最后

我越来越倾向于把 AI agent 看成一种新的执行接口。

skill,就是这个接口背后的能力描述层。

它的价值不在于“让 AI 看起来更强”,而在于把人的能力以一种可执行、可复用、可组合的方式重新组织起来。

所以我对 skill 的理解很简单:

如果一个人能通过计算机干成一件事情,那么这件事情就值得尝试被封装成 skill。

但这个封装动作,未必应该由人直接拿键盘去写。

更好的方式,是先让用户把 agent 教会,让它在真实任务中学会边界、步骤、验证方法和失败处理,再由它自己把这些经验总结成 skill,并在后续反复执行中持续微调。

这样形成的 skill,才更像真正的能力,而不是一份看上去完整、实际上充满歧义的说明书。