Subagent(子代理)
在独立的隔离沙箱中运行的Agent实例,从空白的messages[]开始,完成任务后将结果返回主绘画。
核心机制
- 主绘画运行到某个上下文量(如200K tokens)
- 主绘画识别到一个可独立、可拆分的整块任务
- 启动一个Subagent,传入任务描述
- Subagent从零开始(独立messages[]),在自己的上下文中完成
- 将完成结果返回主绘画
- 主绘画保持上下文清洁
唯一用途:保持主绘画上下文清洁
Subagent不是为了并行处理或加速——它是为了上下文隔离,防止主绘画被大量工具输出污染。
致命缺陷:渐进式信息偏移
主绘画给Subagent传递复杂需求时,出现省略→不精准→多次漂移:
- 300-500行PRD需求经过主绘画总结→传给子代理只用300字
- 每次传递都有信息损耗
- 形成渐进式偏移,最终产出与原始需求脱节
解决思路:Hook截取完整需求→启动子代理时注入;或主绘画把需求落盘→子代理每次读取。
不同流派的态度
| 流派 | 态度 | 替代方案 |
|---|---|---|
| learn-claude-code (工程派) | ✅ 核心机制(s06) | 独立messages[] |
| pi-coding-agent (极简派) | ❌ 黑箱中的黑箱 | bash自调用+tmux |
| Harness串讲 (实用派) | ⚠️ 有用但有缺陷 | Hook补强 |
另一种视角
Mario Zechner认为Subagent在中途用于上下文收集是规划失败的信号——应该在独立会话中先收集上下文,产出artifact,再在新会话中使用。