用途
orchestrator-task-loop 是一个外层编排循环技能,是 loop-controller(循环控制器)的一种配置。它作用于 Agent Teams 的共享任务列表,负责把整块任务板上的全部任务驱动到“已完成且通过 TaskCompleted 校验门”的状态。循环只做任务分配与监督,不直接实现任务——它负责派发和调度,具体工作由队友在各自上下文窗口中完成。
主要能力
- 任务分配与喂养:当队友空闲(TeammateIdle)时,为它挑选优先级最高、blockedBy 依赖集合已全部完成的待处理任务并分配,避免循环因空闲工人和未完成任务而停滞。
- 完成校验门:队友把任务标记为 completed 时触发 TaskCompleted 校验。通过则计入完成;失败(exit 2)则将任务回滚为 pending/in_progress,并把失败作为反馈呈现。任务只有在校验通过后才算数。
- 全板完成证明(default-FAIL):完成不是“每个队友都说做完了”,而是对整块任务板做机械判定:每个任务状态为 completed 且最近一次校验判定为通过、其所有 blockedBy 依赖本身已完成且校验通过、没有残留 pending/in_progress 任务、没有空闲队友仍有可分配工作。每次任务状态变化后需重新扫描整块任务板来核对这一谓词。
- 检查点提交:每个任务通过校验后提交一次检查点并标注任务名,形成可回滚(git reset --hard 回最近绿色任务)与复盘依据。
- 按用途分段的安全护栏:继承 loop-controller 的完整护栏,包括硬迭代次数上限、强制 token/成本预算上限(终止而非仅告警)、3 次无进展/振荡熔断(板或单任务连续 3 次无变化,或任务在 completed→校验失败→pending 之间反复至少 3 次)、阻塞或歧义任务转人工(HITL)、无人值守运行的沙箱隔离,以及禁止通过修改校验门、任务列表或 qa-report.json 来“标记完成”。
使用方式
该技能用于处理一个有内容的 Agent Teams 共享任务列表:任务处于 pending/in_progress、团队已生成,且 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 已设置;也可显式执行 /orchestrator-task-loop。它通常由编排器在契约存在、任务板已按“每个契约约束的工作单元一个任务、并依据依赖图建立 blockedBy 边”播种后派发。启动前会检测 Agent Teams 运行时;若标志未设置则拒绝启动,提示用户设置该标志,或回退到编排器的子代理/顺序执行路径。上限(最大扫描次数、预算)、状态文件路径与种子来源会从 .claude/profile.yaml 或编排器计划中读取(若存在)。
适用场景
适用于需要把一整个任务列表(多个契约约束的工作单元)批量推进到完成、并希望以机械可验证方式确认“真的全部完成”的编排场景,尤其是配合 fix-until-green 内层循环(负责单个任务校验门由红转绿)与 qe-agent 的 qa-report.json 构建门决策时。外层循环消费内层校验判定,不直接介入单个任务的校验门。
限制
Agent Teams 为实验性功能,默认关闭,存在已知限制(进行中的队友不支持会话恢复、任务状态传播滞后、关闭较慢)。本技能是原型性质的、位于功能开关之后。无人值守或过夜运行仅当构建中的每个循环都具备全部五项条件(硬性外部验证器、强制 token 预算、无进展检测、检查点提交、沙箱)时才可提升,否则应以有人值守方式运行。校验门绝不能放宽;通过修改校验门、任务列表或 qa-report.json 把任务标为完成属于违规。
参考资料
- references/agent-teams.md:共享任务列表基座(状态、blockedBy 边、播种、同伴消息协调、完成谓词、功能标志与已知限制)。
- references/hooks.md:TaskCompleted 校验门、TeammateIdle 分配算法、Stop/SubagentStop 重触发(脚本、stop_hook_active 保护、自动转换)。