搜索文章

输入关键词开始搜索

Skill和Agent的区别

AIAgent#Skill#Agent

给同事分配任务时踩了个坑。我说按构建 Agent 的方式去做,结果收上来的交付物全是 Skill。他们觉得做一个 skill 包就算交差了。

复盘的时候想了想,也不能全怪同事。这两个概念从外面看确实太像了:skill 里一样可以写满步骤,一样有流程,一样是为了让 AI 完成某件事。但它们根本不是一回事。这里把捋出来的结论记下来,以后分配任务也能把话说清楚。

区别在哪

Skill 是打包好的知识和流程:一份指令,可以带上脚本和参考资料,放在固定位置,agent 需要的时候自动加载。它是静态的、被动的,在被需要之前不占上下文,也不会自己做任何决定。更像新员工入职时发的那本操作手册。

Agent 是另一回事。它里面当然也有模型和指令,但多了一个执行循环和一个目标:接住任务之后,下一步做什么由它自己判断,出了问题它自己想办法补救,最后把结果交出来才算完。它对结果负责,skill 对方法负责。

最容易混的地方就在这:skill 里完全可以写很多步骤,看起来也是一套流程。所以别拿步骤多少来区分,要看的是这个东西出了问题谁来兜。

一个简单的测试:它会不会自己决定下一步做什么?出错会不会自己调整?不会的话,写再多步骤也只是 skill。

还有一个因果关系,我一开始就搞反了。我以为 skill 接上大模型就可以当成 agent 用。后来发现正好相反:是本来就已经在跑的 agent,加载了 skill 之后变得更专业。先有执行者,再有手册。

所以现在我用这个公式来记:

Agent     = 大模型 + 执行循环(自主多步 + 工具调用)+ 目标和责任
Skill     = 静态的知识与流程包
专业agent = 已经在跑的 agent 加载了 skill 之后的状态

两者是组合关系:agent 调用 skill,skill 让 agent 变专业。

怎么取舍

什么时候写 skill,什么时候搭 agent?我自己用五个问题按顺序过一遍:

  1. 对什么负责?想让 AI 以后遇到这类事都按同一套方法做,那是 skill;想让 AI 把整件事办完、对结果兜底,那是 agent。
  2. 过程写得死吗?能预先写成稳定 SOP 的,skill 就够了;步骤要看着中间结果边走边调的,才需要 agent。这次分配的任务就属于后一种,所以要的是 agent。
  3. 要不要独立干?需要不干扰主对话、并行跑几路任务的,上 agent;只是想省 token、按需加载点资料,skill 足够。
  4. 要不要复用?同一套能力要在不同项目、不同 agent 里用,做成 skill,以后换模型也不用改。
  5. 缺什么?拿真实任务让 AI 跑一遍:缺知识补 skill,缺自主性才造 agent。

另外有三个坑我觉得容易踩:

  1. 模型已经会的事情别写成 skill。skill 该喂的是它不知道的东西,比如团队的内部规范、项目的隐性约定。教它怎么写冒泡排序,纯粹浪费上下文。
  2. skill 不是越多越好。塞一大堆用不上的,匹配会变差,上下文也跟着变脏。
  3. 别为了”单开一路不干扰我”就造 agent。现在 skill 也能指定用 agent 跑,为隔离而隔离没有必要。

以后分配任务,我会先把交付物说清楚:这次要的是一份方法,还是一个能自己接活跑完的执行者。这次的错位就出在这。