Skill和Agent的区别
给同事分配任务时踩了个坑。我说按构建 Agent 的方式去做,结果收上来的交付物全是 Skill。他们觉得做一个 skill 包就算交差了。
复盘的时候想了想,也不能全怪同事。这两个概念从外面看确实太像了,skill 里一样可以写满步骤,一样有流程,一样是为了让 AI 完成某件事。这里把捋出来的结论记下来,后面分配任务也能把话说清楚。
区别在哪
Skill 是打包好的知识和流程:一段指令,可以带上脚本和参考资料,放在固定位置,agent 需要的时候自动加载。这个东西是静态的、被动的,在被需要之前不占上下文,也不会自己做任何决定,像新员工入职时发的那本操作手册。
Agent 里也有模型和指令,但是多了一个执行循环和一个目标:接了任务之后,下一步做什么由它自己判断,出了问题自己想办法补救,最后把结果交出来才算完。Agent 对结果负责,skill 对方法负责。
最容易混的地方就在这,skill 里可以写很多步骤,看起来也是一套流程。因此别拿步骤多少来区分,要看这个东西出了问题谁来兜。
一个简单的测试:这个东西会不会自己决定下一步做什么?出错会不会自己调整?不会的话,写再多步骤也只是 skill。
还有一个先后关系,我一开始搞反了。我以为 skill 接上大模型就可以当成 agent 用,后来发现正好相反,是本来就在跑的 agent,加载了 skill 之后变得更专业。先有执行者,再有手册。
现在我用这个公式来记:
Agent = 大模型 + 执行循环(自主多步 + 工具调用)+ 目标和责任
Skill = 静态的知识与流程包
专业agent = 已经在跑的 agent 加载了 skill 之后的状态
两者是组合关系:agent 调用 skill,skill 让 agent 变专业。
怎么取舍
什么时候写 skill,什么时候搭 agent?我自己按顺序问这五个问题:
- 对什么负责?想让 AI 之后遇到同样的事都按一个方法做,就是 skill;想让 AI 把整件事办完、对结果兜底,就是 agent。
- 过程写得死吗?能预先写成稳定 SOP 的,skill 就够了;步骤要看着中间结果边走边调的,才需要 agent。这次分配的任务就属于后一种,所以要的是 agent。
- 要不要独立干?需要不干扰主对话、并行跑几路任务的,上 agent;只是想省 token、按需加载点资料,skill 足够。
- 要不要复用?同一套能力要在不同项目、不同 agent 里用,做成 skill,之后换模型也不用改。
- 缺什么?拿真实任务让 AI 跑一遍:缺知识补 skill,缺自主性才造 agent。
另外有三个坑我感觉容易踩:
- 模型已经会的事情别写成 skill。skill 该喂的是它不知道的东西,比如团队的内部规范、项目的隐性约定。教它怎么写冒泡排序,纯粹浪费上下文。
- skill 不是越多越好。塞一大堆用不上的,匹配会变差,上下文也会变脏。
- 别为了单开一路不干扰我就造 agent。现在 skill 也能指定用 agent 跑,为隔离而隔离没有必要。
后面分配任务,我会先把交付物说清楚,这次要的是一个方法,还是一个能自己接活跑完的执行者。这次的错位就出在这。