我最近在造一个 coding agent,https://github.com/pulseaiclub/phi 定位是 Pi 的兄弟,在给他加 subagent 能力的时候我考虑了好久,纠结到底该不该加,
目前有2 大主流,阵营一方面就是 主流的 agent 工具,另外一个就是 PI
主流工具
主流的 agent 编程工具,比如 Cursor,Claude code,还有 Codex 其实都是支持 多 agent 编排的,
比如做代码一对一翻译的时候 Cursor 会单独开一个 Exporte agent 去探索代码实现细节,然后返回给主 Agent 一个markdown。这样做的一个好处就是避免在主 Agent 的对话窗口塞非常多消息。
PI
但是事情总是有 例外, Pi 就不支持 SubAgent 能力,作者给出的理由如下:
- 你完全无法了解该子代理的具体操作。它就像一个黑盒中的黑盒。代理之间的上下文传递也很差。
- 编排代理决定将哪些初始上下文传递给子代理,而你通常对此几乎没有控制权。
- 如果子代理出错,调试起来会非常痛苦,因为你无法查看完整的对话过程
但之后作者又说:
人们会在一个会话中中途使用子代理,以为这样能节省上下文空间——这确实没错。但这是对子代理的错误理解。
在会话中途调用子代理来收集上下文,说明你事先没有做好规划。
如果你需要收集上下文,应该先在单独的会话中完成这一步。生成一份工件(artifact),之后在一个全新的会话中使用它,把你的代理需要的所有上下文都喂给它,而不用把工具输出塞进上下文窗口造成污染。
这份工件对下一个功能也同样有用,而且你能获得完整的可观测性和可操控性——这在上下文收集阶段尤为重要。
从上面看,其实我觉得,subagent 能力其实还是非常有必要的, 兄弟们觉得呢?