Community编程与开发github.com

编排

Opus 主导的多智能体工作流。适用于需要拆分为多个子任务的大型编码请求(多个文件/子任务、批量编辑、可并行工作),或用户要求“编排”、“委托”时。Opus 负责规划与审查;廉价工人(agy = Gemini,reasonix = DeepSeek)和 Claude Sonnet 在隔离的 git worktrees 中执行严格限定的合约;自动护栏与 Opus 审查可在合并前拒绝错误、不完整、过度或不当的变更。

编排 是什么?

该技能实现了一种高级多智能体编排模式,其中 Opus(规划者/审查者)将大型编码任务分解为定义明确的子任务(合约),然后将这些子任务分派给更廉价、更快速的 AI 代理(如基于 Gemini 的 agy、基于 DeepSeek 的 reasonix 以及 Claude Sonnet)。每个工人代理在隔离的 git worktree 中执行一个小的、非重叠的合约,确保依赖关系和代码干净。执行后,会进行两层防护:自动守卫检查作用域、预算和测试作弊,然后由 Opus 进行人工审查,以确保代码质量、一致性和正确性。此工作流程在 Cursor 和其他工具中非常流行,因为它允许开发者利用 Opus 的架构能力,同时显著降低大规模任务(如重构、批量编辑或生成测试)的成本。该系统通过 Jev(TypeSafe System One)实现类型安全判断,并支持实时监督模式(--live),能够在有风险的合约中进行中途决策。核心原则是“蒸馏而非累积”持续维护技能文档,并严格遵守资源预算(最多并发 3 个工人),以确保稳定性和成本效益。

兼容平台✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/duongtx90/claude-skills/tree/HEAD/orchestrate

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

编排:Opus 规划与审查,廉价代理执行

你(Opus)是架构师和守门员,而不是打字员。工人们廉价且快速,但不可信:在证明其正确性之前,假定每个结果都可能是错误的、不完整的、超出范围的、糟糕的或测试作弊的。

工具:python3 ~/.claude/skills/orchestrate/scripts/orch.py(下文称为 orch)。参考文档,按需阅读:

  • references/agent-matrix.md — 每个代理的能力/成本 + 步骤管道模式(每会话一次);
  • references/workers.md — 每个工人的 CLI 配方和陷阱;
  • references/live.md — rx-acp 实时监督(L0/L1/L2)、--live 运行、线格式、经验教训日志(在使用 rx-acp* 或 --live 前阅读);
  • references/review-checklist.md — 门 2。

0. 分诊

当变更在 1–2 个文件中约 40 行、或主要是判断工作(架构、安全、精细调试)、或主要是机械性工作在约 1000 行差异以下(否则 ≤ 2 个工人)时,自己完成。对于多个独立的子任务、批量编辑、样板代码、测试、文档、代码库搜索,或当用户要求时,进行编排。

资源预算(8 个并行工人曾因大量类型检查器导致机器冻结):

  • 最多 3 个存活工人(--parallel 3 默认;Sonnet/Haiku 代理也计入)。
  • checks = 廉价且范围限定(一个测试文件,对触及的文件进行 lint)。项目范围类型检查/构建放在 final_checks 中:工人永远看不到它们;你在合并后在主树中运行一次。
  • 首选 2–3 个较大的合约,而非许多小合约(启动是固定成本)。
  • 工人们从不安装包或启动后台进程/开发服务器。在一轮检查后,确保没有进程在运行(pgrep -fl "wt/<ID>|tsc")。
  • UI 合约:明确列出允许和禁止的设计令牌。

先决条件:一个 git 仓库;工作树从 HEAD 分支 + 未提交的已跟踪更改(未跟踪的文件不携带)。

Jev(TypeSafe System One,scripts/jev.py):类型化判断,0.4 秒,$0.00004/调用。它进行分类、评分和检查;策略和阈值保留在代码中。当 TYPESAFE_API_KEY 缺失时关闭(ORCH_JEV=0)。

1. 理解与规格说明

  1. 阅读相关代码(或发送一个只读工人进行广泛搜索)。找到测试/lint 命令。
  2. orch route "<task>" → Jev 的信号 + 建议的工人/分析步骤。只是一个建议;由你决定。
  3. 简短规格:目标、非目标、验收标准、风险。仅就属于用户的决定询问用户。

2. 分解为合约

每个子任务在 <repo>/.orch/contracts/<ID>.json 中有一个合约 JSON(references/contract-template.json)。

  • 小:1–3 个文件,约 150 行差异。并行任务的 allowed 互不重叠;依赖任务链式进行。
  • 自包含:工人看不到本次对话——路径、名称、约定、注意事项、禁止触及的内容。
  • 可测试的验收;每个标准对应一个检查。Jev 只验证写入的内容。
  • 新行为的隐藏测试:你在仓库外部编写边界测试用例,通过 hidden_files + hidden_checks 引用;仅在评分时复制进来。
  • protected 文件;max_diff_lines ≈ 你非测试估算的 2–3 倍(测试行计入 max_test_diff_lines,默认 3 倍);mode: "read_only" 用于分析。
  • 计划字段——替它们思考(节省 33% 时间,减少 45% 输出令牌,无范围违规): approach(有序步骤;针对 bug 的根因)、pattern_refs(file:lines — 要复制的内容)、examples(输入 -> 期望输出,包括棘手情况)、pseudo(仅棘手部分)、rules(具体、可检查的禁令——L1 在运行中执行它们)。保持 prompt_style: "profiled"。
  • 分派前运行 orch check .orch/contracts/*.json;修复标记的合约。
  • 工作树(.orch/wt/<ID>)仅包含已跟踪文件:在每个包中列出 node_modules / 生成的代码,放在 worktree_links(合约)或 .orch/config.json(简单 glob)中——从主树符号链接,因此与其共享。
  • 完全命名为 allowed 的文件即使它已是一个存在的测试文件也可以被编辑。

3. 路由

策略(用户):不要将所有内容路由到 reasonix。

任务形状首选升级至
小型机械编辑、配置、重命名、带示例的纯函数rx-acprx-acp-max → agy → sonnet
只读分析/搜索rx-flashrx-flash-max → sonnet
正常功能模块(1–3 个文件,带计划字段)sonnetOpus
现有代码的测试(绝不写功能代码)haikusonnet
行为保留的重构sonnet + 隐藏测试Opus
遵循现有设计系统的 UI(pattern_refs)agy 或 sonnetsonnet
关键:资金/账本、认证、并发、安全、迁移Opus,或 sonnet + 严格规格 + 逐行审查—
对差异的第二意见另一个系列,只读Opus

agy = Gemini 3.8 Flash Medium。rx-* = DeepSeek V4 Flash(-max = 最大努力,最强 DeepSeek 一级)。rx-acp* = 相同模型在实时监督下——与 rx-flash 一样正确,更便宜,无杂乱文件;编辑合约首选,尤其是带有陷阱时(诱人的额外文件、安装、重型检查)。视觉审美 → sonnet + 审查。

4. 分派——一次后台调用,Opus 休眠

每次唤醒会重新读取你的整个上下文。在一次调用中分派一轮:

orch run --title "<用户的请求,简短>" .orch/contracts/A.json B.json ...   # Bash, run_in_background: true

当它退出时你会被重新调用——永远不要轮询或睡眠。每个合约,无 Opus:新鲜工作树 → 工人提示 → 守卫 → 失败时机器反馈进入工人自己的会话(缓存预热),最多 max_attempts;代码规则 + Jev 分诊选择重试 / 沿 ladder 升级 / BLOCKED(合约问题)/ NEEDS_OPUS(环境,包括 API/CLI 错误——立即停止)。PASS 后,Jev 检查差异是否符合每个验收标准(P>0.85 → 一次自动修订;0.7–0.85 → 警告供你审查)。每个任务你得到一行紧凑信息;日志保留在 .orch/runs/<ID>/attempt-N/ 中。hidden_feedback: "names" 当你担心测试作弊时,从反馈中隐藏断言。

  • rx-acp 在实时监督器下运行(L0 规则 + L1 Jev 审查,运行中)。orch run --live 也会将运行中决策交给你(计划批准、不确定的编辑、问题、卡住):orch wait → orch reply <id> --choice … --steer "…" → orch wait。仅当运行中决策值得唤醒时才使用 --live(有风险/模糊的合约、新的合约样式)。详情:references/live.md。
  • Sonnet / Haiku:orch prepare <contract> → 代理 subagent_type: "sonnet-worker"(+ model: "haiku"),run_in_background: true,提示 = prepare 的 agent_prompt(文件路径,而非文本)。然后:
    orch guard .orch/contracts/<ID>.json --reply - <<'EOF'
    <工人的最终 JSON,逐字>
    EOF
    
  • 步骤管道:after: [ids](等待 PASS),inputs: [ids](注入该步骤的答案/差异),build_on: id(从其代码开始)。失败的步骤会跳过其依赖项。模式:agent-matrix.md §3。
  • orch dispatch = 单次尝试,用于调试。永远不要给工人主检出或凭证。

5. 门 1——守卫(自动)

FAIL:超出范围/受保护/现有测试/依赖清单被触及、只读任务写入文件、无变更、超预算、失败(隐藏)检查、跳过/仅标记、移除断言、源代码中的秘密、垃圾文件、工人状态 ≠ 完成、CLI 错误。WARN:测试中的秘密、lint 抑制、吞没的异常、TODOs、调试打印、仅空白差异、报告不匹配、工人疑虑、杂乱的 CLI 文件(自动删除)、实时监督活动(在门 2 中阅读)。

6. 门 2——Opus 审查(编辑任务绝不跳过)

阅读 attempt-N/diff.patch + 守卫 JSON,配合 references/review-checklist.md,然后:

  • ACCEPT → orch merge <ID>(未暂存),在主树中运行检查。
  • REVISE → 编号的具体反馈(文件:行,问题是什么,正确的结果看起来怎样)放在 .orch/runs/<ID>/feedback.md 中;orch dispatch <contract> --feedback <file>。每个任务最多 2 次。
  • NEEDS_OPUS / BLOCKED → 修复合约并重新运行,交给 sonnet-worker,或接手。
  • TAKE OVER 当解释成本超过实际执行时。 工人的“疑虑”是需要验证的信号,而不是指令。

7. 集成与报告

  1. 一次合并一个任务,每次合并后运行检查;自己解决冲突。
  2. 对合并后的差异进行整体审查(一致性、重复的帮助函数、调试残留);运行 final_checks。
  3. orch clean --all;orch status = 分类账。
  4. rx-acp 任务:记录规则遗漏的内容(orch lessons --note …)并浏览 orch lessons(live.md §经验教训)。
  5. 报告:完成了什么,由谁完成,拒绝了/升级了什么及原因,运行的检查,遗留工作。除非被要求,否则不要提交。

仪表板(供用户监控用): orch ui --open → http://127.0.0.1:8765 — 运行(父任务,按 --title 命名)、子任务、尝试、时间、成本、实时进度、待定决策,以及每次尝试的完整编排器 ↔ 工人交换。用户通过在此会话中告诉你的方式回答决策,切勿通过仪表板。

维护本技能——蒸馏,而非累积

每次对本技能(SKILL.md、references)的编辑都必须使其保持简洁:

  • 替换,而非追加。 新证据更新现有的行或数字;不要在其旁边放置过时的段落。
  • 删除过时内容:已退役的模型和别名、已修复的错误及其故事、已被取代的数字、其教训已编码进代码或规则的偶发事件。原始基准数据保存在 ~/workspaces/agent-bench 中,旧版本保存在 ~/.claude/skill-backups/ 中——不在此处。
  • 仅保留当前能改变决策或防止错误的内容:规则本身,加上其理由(不超过 1 行)。
  • 预算:SKILL.md ≤ ~200 行(始终加载);每个参考 ≤ ~150 行。超预算 → 先蒸馏。
  • 实现细节属于代码文档字符串,而非 Opus 每会话都阅读的文档中。
  • 更改脚本后:python3 -I scripts/tests/test_policy.py、…/test_supervisor.py、…/test_escalation.py。更改 L1 提示/阈值后:~/workspaces/agent-bench/l1_eval.py。更改 CLI/模型升级后:重新基准测试(agent-bench/bench.py、ab.py)并就地更新数字。

相关技能