何时该委派
不是所有任务都适合委派给 Subagent。学会识别好的委派场景和糟糕的委派场景,是高效使用 Subagent 的关键。
适合委派的任务特征
最适合委派的任务具备三个特征:任务之间依赖少(可以并行)、输出相互独立(不会互相干扰)、没有共享的可变状态(不会同时修改同一个文件)。
- 好的委派:并行分析 5 个独立的日志文件
- 好的委派:同时为 3 个不同模块生成测试用例
- 好的委派:并发翻译 10 篇独立文章
糟糕的委派场景
当两个 Subagent 需要修改同一个文件时,就会产生冲突。这是最常见的委派错误。此外,强依赖前一步结果的任务(非流水线场景)也不适合并行委派。
- 坏的委派:两个 Subagent 都写入同一个 output.md
- 坏的委派:Subagent B 必须等 Subagent A 分析完才能开始
- 坏的委派:任务需要跨 Subagent 维护一个计数器
分解任务的实用方法
将大任务分解时,先画出任务之间的依赖图。没有依赖箭头连接的任务可以并行;有单向依赖的任务适合流水线;有双向依赖的任务不应委派给不同 Subagent。
🧠 自测:以下哪个任务最适合并行委派给多个 Subagent?
- 多个 Subagent 协作编辑同一份 README
- 并行分析 5 个独立仓库的代码质量 ✓
- 一个 Subagent 依赖另一个 Subagent 的实时输出
- 多个 Subagent 共同维护一个全局计数
分析 5 个独立仓库是典型的无依赖并行任务,每个 Subagent 的输入输出互不影响。
常见误区
Subagent 出错往往有规律可循。了解最常见的失败模式,能帮你提前设计防护措施。
误区一:Subagent 幻觉文件路径
Subagent 可能会"发明"一个并不存在的文件路径,然后自信地说它已经读取并分析了该文件。解决方法:在 Prompt 中明确提供完整的绝对路径,并要求 Subagent 在读取文件前先验证文件存在。
误区二:多个 Subagent 冲突写文件
当两个 Subagent 同时写入同一个文件时,后写入的内容会覆盖前一个,导致数据丢失。解决方法:为每个 Subagent 分配唯一的输出文件名,例如 output-agent-1.md、output-agent-2.md,由编排者负责合并。
误区三:编排者误解 Subagent 的输出
编排者读取 Subagent 输出时,可能因格式不统一而解析错误。解决方法:在每个 Subagent 的 Prompt 中明确规定输出格式(如 JSON 或固定 Markdown 结构),并要求 Subagent 严格遵守。
- 每个 Subagent 用唯一输出文件,避免冲突
- 明确规定输出格式,方便编排者解析
- 在编排者中记录每个 Subagent 的原始输出,便于调试
- 对关键操作增加验证步骤,而不是假设 Subagent 成功
🧠 自测:如何最有效地防止两个 Subagent 冲突写入同一文件?
- 让两个 Subagent 轮流写入
- 为每个 Subagent 分配唯一的输出文件名 ✓
- 使用文件锁机制
- 只让一个 Subagent 有写入权限
最简单可靠的方案是为每个 Subagent 预先分配不同的输出文件名,从设计上消除冲突的可能。