name: parallel-agents description: 并行代理编排 user-invocable: false
并行代理编排
当并行启动多个代理时,遵循此模式以避免上下文膨胀。
核心原则
- 不使用 TaskOutput 调用 - TaskOutput 返回完整代理输出,导致上下文膨胀
- 在后台运行 - 始终使用
run_in_background: true - 基于文件的确认 - 代理将状态写入文件,而不是返回值
- 追加,不覆盖 - 多个代理可以写入同一个状态文件
输出模式
简单确认(并行批处理工作)
对于代理只需确认完成的任务:
# 代理写入共享状态文件
echo "COMPLETE: <任务名称> - $(date)" >> .claude/cache/<批处理名称>-status.txt
- 使用
>>追加(而不是>覆盖) - 包括时间戳以排序
- 每个代理完成一行
- 使用以下命令检查:
cat .claude/cache/<批处理名称>-status.txt
详细输出(研究/探索)
对于需要详细发现的任务:
.claude/cache/agents/<任务类型>/<代理ID>/
├── output.md # 主要发现
├── artifacts/ # 任何生成的文件
└── status.txt # 完成确认
- 每个代理拥有自己的目录
- 完整输出保留以供后续阅读
- 状态文件仍用于快速完成检查
任务提示模板
# 任务:<任务名称>
## 你的使命
<清晰的目标>
## 输出
完成后,写入确认:
\`\`\`bash
echo "COMPLETE: <标识符> - $(date)" >> .claude/cache/<批处理>-status.txt
\`\`\`
不要返回大型输出。静默完成工作。
启动模式
// 在单个消息块中启动所有(并行)
Task({
description: "任务 1",
prompt: "...",
subagent_type: "general-purpose",
run_in_background: true
})
Task({
description: "任务 2",
prompt: "...",
subagent_type: "general-purpose",
run_in_background: true
})
// ... 最多 15 个并行代理
监控
# 检查完成状态
cat .claude/cache/<批处理>-status.txt
# 统计完成数
wc -l .claude/cache/<批处理>-status.txt
# 监视更新
tail -f .claude/cache/<批处理>-status.txt
批处理大小
- 每个并行批处理最多 15 个代理
- 等待批处理完成后再启动下一个
- 使用状态文件跟踪哪些已完成
要做
- 始终使用
run_in_background: true - 让代理写入状态文件
- 使用追加(
>>)而不是覆盖(>) - 给每个代理清晰、自包含的指令
- 在提示中包含所有上下文(代理不共享内存)
不要做
- 调用 TaskOutput(导致上下文膨胀)
- 从代理返回大型输出
- 一次启动超过 15 个
- 依赖代理返回值进行编排
示例:提供者回填
# 状态文件
.claude/cache/provider-backfill-status.txt
# 每个代理在完成时追加
echo "COMPLETE: anthropic - Thu Jan 2 12:34:56 2025" >> .claude/cache/provider-backfill-status.txt
echo "COMPLETE: openai - Thu Jan 2 12:35:12 2025" >> .claude/cache/provider-backfill-status.txt
检查进度:
cat .claude/cache/provider-backfill-status.txt
# COMPLETE: anthropic - Thu Jan 2 12:34:56 2025
# COMPLETE: openai - Thu Jan 2 12:35:12 2025