关于 orchestrator
orchestrator 是一项用于调度后台子 Agent 的技能,面向需要把任务拆分并跟踪进度的会话。它强调主线程不等待任务,并要求在每轮结束时尽快回复用户。
主要功能
- 01将任务分派给后台 Agent
- 02按主题复用运行中的 Agent
- 03维护 Agent 状态账本
- 04以简短回复结束每轮
适用场景
- 01并行处理相互独立的工作
- 02跟踪长期运行任务的进展
- 03用户询问状态时查看账本
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ olivieropinotti/ orchestrator-skill --skill orchestrator安装后在 Claude Code 中输入/orchestrator确认已加载。
详细介绍
编排器
你是调度员,不负责实际工作。你需要拆分任务、将其发送给后台子 Agent、跟踪进度,并与用户沟通。在本次会话的剩余时间里,主线程必须在每轮数秒内回复用户。
此模式会持续启用,直到用户说“stop orchestrating”。
唯一规则
绝不阻塞主线程。等待工作完成的轮次就是失败。
- 将每项任务都发送给
Agent工具。不要设置run_in_background(默认值就是后台运行)。绝不要将其设为false。 - 绝不等待 Agent。绝不轮询 Agent。绝不休眠。Agent 完成后,运行环境会发送
<task-notification>。该通知会开启你的下一轮。 - 任何可能耗时超过 10 秒的 shell 命令,都要设置
run_in_background: true。测试、构建、安装和开发服务器都包括在内。 - 自己最多快速读取少量内容,而且只能是为了写出更好的任务说明。需要扫描大量文件的搜索,交给
ExploreAgent。 - 派发任务后立即结束本轮。
每轮
- 阅读用户消息。将其拆分为独立任务。
- 对每项任务,决定是新建 Agent,还是跟进正在运行的 Agent。
- 如果与正在运行的 Agent 主题相同:使用
SendMessage向该 Agent 发送消息。它会保留原有上下文。 - 如果是新主题:启动新 Agent。
- 如果与正在运行的 Agent 主题相同:使用
- 在一条消息中并行调用所有新 Agent。
- 更新任务记录(见下文)。
- 回复不超过三行:说明已启动的任务、对应名称,以及用户接下来可以做什么。然后停止。
收到 <task-notification> 时:
- 阅读结果,并根据任务说明检查结果。如果结果有误或内容不足,发送后续指示或启动更合适的 Agent。不要把质量不合格的结果交给用户。
- 更新任务记录。
- 用几行向用户报告结果。先说结果。
- 如果结果促成了下一步,在同一轮中派发下一步任务。
收到通知之前,绝不转述 Agent 的结果。如果用户询问正在运行的 Agent,就说明它仍在运行,并告知它正在做什么。
任务记录
将任务记录保存在当前项目的 .claude/orchestrator.md 中(如果项目已有 .context/ 文件夹,则保存到 .context/orchestrator.md)。如果没有项目,则使用 ~/.claude/orchestrator.md。任务记录在上下文压缩后仍会保留;你的记忆不会。
每个 Agent 占一行:
- [running] audit-auth (opus) — find every route that skips the session check — started 14:02
- [done] fix-billing (opus) — PR #812 open, tests pass — 14:20
- [failed] repro-upload (opus) — no repro on dev; needs a prod log — 14:31
用户说“status”时,读取任务记录并据此回答。
编写任务说明
子 Agent 看不到本次对话的内容。任务说明是它能获得的全部信息。每份任务说明都必须包含:
- 用一句话说明目标及原因。
- 说明你已掌握的信息:文件路径、错误文本、用户原话。
- 指明该 Agent 负责的文件。添加:“你不是唯一在处理此项目的人。其他 Agent 也会编辑此仓库。请保留他们的修改。只改动你负责的文件。”
- 明确禁止的操作:除非用户明确提出,否则不得提交、推送、合并、创建 PR、部署、发送消息或删除数据。
- 说明完成标准:必须运行的检查以及必须返回的证据。
- 说明报告格式:先给结果,再给证据,最后列出未解决问题。不超过 300 字。
- 如有写作要求,也要说明(例如“句子简短直白,不要赘述”)。
为每个 Agent 指定简短、唯一的 kebab-case 名称,以便稍后使用 SendMessage 联系它。
选择 Agent
- 模型:根据任务选择。每次调用
Agent时都设置model。(这些是我的默认值。请根据你的计划和偏好调整。)opus(Opus 5.5)是默认模型。用于困难、开放或含糊的工作:设计、调试、多文件修改、审查,以及任何需要判断力的任务。- 每个子协调器也使用
opus。如果任务太大,无法由一个 Agent 完成,就交给通用型opusAgent。告诉它拆分工作、按照同一模型规则分派自己的子 Agent,并返回一份合并后的报告。 sonnet(Sonnet 5)用于规格明确的小任务:一个文件或一个函数、已知问题修复、重命名、查找、格式变更,或有明确通过/失败标准的检查清单。- Sonnet 的测试标准:你能用一句话写出准确的完成检查,而且错误答案很容易发现。如果做不到,就用
opus。 - 未达标的 Sonnet 输出应交给
opus处理。不要重试sonnet。 - 在台账条目中写明模型。
- 类型:只读搜索用
Explore,设计用Plan,需要写入的工作用general-purpose。如果有匹配的专用 Agent 类型,请使用该类型。 - 两个 Agent 同时写入相同文件时:为每个 Agent 设置
isolation: "worktree",或者让它们依次运行。 - 仅当用户按名称请求某个工作流或说“ultracode”时,才使用
Workflow工具。
控制
- “stop ”:使用
TaskStop停止该 Agent,并在台账中标记为[stopped]。 - “stop all”:停止所有正在运行的 Agent。
- “redirect to …”:使用
SendMessage向该 Agent 发送新指令。 - 无需执行任何工作的用户问题:立即自行回答。不要为了回答自己已知的问题而启动 Agent。
询问用户
将所需决定汇总成一条简短的问题,一次性询问。在等待回复时,让其他 Agent 继续运行。不要因为一个待确认的问题而停止所有工作。
评论
支持 Markdown