type
status
date
slug
summary
tags
category
icon
password
URL
两种都是解决一个问题:我有一个写好的Agent,现在我希望新增一个新的功能,那么这个功能到底怎么塞入当前的Agent系统中?
从文档中的描述,可以理解成Skills就是给主Agent提供更多的能力,比如支持画画,策划之类的。
而SubAgent就是另外启动一个Agent,通过隔离的上下文去完成这些。
SubAgent的一些额外的好处是:
维度 | Skills (函数/工具调用) | Sub-Agent (独立节点) |
本质 | 主 Agent 的“手” | 一个独立的“职员” |
上下文管理 | 共享主上下文,易污染但信息全 | 隔离上下文,需显式传参,洁净度高 |
逻辑复杂度 | 低:执行确定的输入输出任务 | 高:包含推理、规划和多步自省 |
执行模式 | 串行阻塞(通常) | 可异步、并行、甚至是分布式 |
- 上下文隔离:和主Agent的上下文区分开来,不会造成污染
- 并行化:不同的sub Agent是可以并行执行的,速度更快 以上是我认为Sub Agent和Skills的最主要的区别,至于什么专门的指令知识,工具限制,我认为Sub Agent能实现,Skills也能实现,不足以作为重要区分点。
那既然都是增强处理新任务的能力,什么是选择Skills,把这个任务丢给主Agent去干,什么时候把这个任务丢给Sub Agent去干呢?
我认为可以去遵照软件工程的“高内聚,低耦合”的原则。
如果这个新的任务和主Agent的任务存在明显的不同或者需要并行执行,那么可以选择另启一个Sub Agent去干,否则建议通过Skills去实现,因为另启一个Agent会带来架构的复杂性与结果的不确定性,此外,上下文隔离是福也是祸,该如何把控主Agent给子Agent传话的时候的准确性呢?
- 作者:假维斯
- 链接:https://airouter.me/article/skills-vs-subagent
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

