AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Self-improving multi-agent software factory on Claude Code: plan, build in parallel worktrees, judge, repair, merge, learn, evolve.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A self-improving multi-agent software factory built on Claude Code.
You give Orchestra a goal. It plans a task graph, builds tasks in parallel git worktrees, verifies each one with tests plus an independent judge working from hidden scenarios, repairs what fails, merges through a serialized queue, records what it learned, and periodically evolves its own prompts and config. A new harness version is promoted only when a measured eval shows a gain.
╭─ ♫ ORCHESTRA r20261021-2022-77o1 harness v1 ──────────────────────────────── 00:01 ─╮
│ Goal Build a tiny CLI with config loading and docs │
│ ✓ PLAN ─ · BUILD ─ ▶ VERIFY ─ · MERGE ─ · LEARN │
│ ███████░░░░░░░░░░░░░░░░░░░ 1/4 ✓1 ●2 ⟳0 ✗0 $1.04 RUNNING │
├─ Tasks ────────────────────────────────────────────────────────────────────────────────┤
│ ✓ T1 merged ███████░ 0.89 try 1 $0.26 Core module │
│ ⠸ T2 running ███░░░░░ 0.40 try 2 $0.46 Config loader │
│ ⠸ T3 judging ░░░░░░░░ ---- try 1 $0.20 CLI wiring ⇠ T1 │
╰────────────────────────────────────────────────────────────────────────────────────────╯
verification.*, see docs/configuration.md).orchestra/<run>/integration, with tests after each merge.orchestra stats reports health per harness version.orchestra promote <vN>.git push, and edits to the harness and evals. It is not the isolation boundary (see Isolation). Each run has a budget.Requirements: Node 23.6 or newer (runs TypeScript directly, no build step), git, and Claude Code with headless auth working (orchestra doctor checks it).
1. Try the demo (no tokens spent). It runs the full pipeline with a simulated runner in a temporary repo:
node <path-to-orchestra>/bin/orchestra.ts demo
2. Install. As a Claude Code plugin:
claude plugin marketplace add <path-to-orchestra>
claude plugin install orchestra@orchestra-local
Or as a CLI in any terminal:
cd <path-to-orchestra> && npm link
3. Initialise a repo. From inside a git repo:
orchestra init
4. First run:
orchestra run "Add a --json flag to the export command"
Results land on orchestra/<run>/integration. Review with git log main..orchestra/<run>/integration, then git merge that branch to land it.
Set ORCHESTRA_RUNNER=fake to use the simulator instead of real Claude sessions in any command.
| Command | What it does |
|---|---|
orchestra init | Set up .orchestra/ in the current git repo |
orchestra run "<goal>" | Plan, build, verify, merge, learn (live dashboard on a TTY) |
--detach | Run in the background; follow with orchestra watch |
--no-evolve | Skip the automatic evolution check after the run |
--serve | Also serve the web dashboard while the run is live |
--sandbox auto|srt|claude|off | OS-sandbox workers: writes only to the worktree and temp, no credential reads, network limited to the model API plus sandbox.allowedHosts. Default off |
--sandbox docker | Opt-in container backend (docker run --rm --network=none by default, --sandbox-image <image>, --sandbox-network <net>, --gvisor) for untrusted repos. See docs/isolation.md |
--unattended | Refuse to start without a sandbox backend (srt, bwrap + socat, or sandbox-exec); strips credentials from agent env |
orchestra serve [--port N] | Web dashboard on localhost (default 4317), read-only |
orchestra serve --tui [runId] | Interactive terminal dashboard, no browser and no port (alias: orchestra tui) |
orchestra watch [runId] | Full-screen live dashboard (q to quit) |
orchestra status [runId] | One-shot board of the current or given run |
orchestra bench | Run the fixed benchmark suite (arms x goals x repeats, hidden checks); --verify-oracles validates the suite, --ablations runs the ablation arms and a matched-cost single-session baseline. See docs/bench.md |
orchestra approve <runId> <taskId> --by <name> | Land a high-risk task held as (opt-in ); the approver must be a human other than the requester (advisory: names are free text, not authenticated identities; with no recorded requester it warns) |
Inside Claude Code, the plugin adds /orchestra:setup, /orchestra:run, /orchestra:serve, /orchestra:status, /orchestra:stats, /orchestra:bench, and /orchestra:evolve.
The boundary is the OS, not the hook. Opt in with --sandbox auto|srt|claude (OS sandbox: srt, or Claude Code sandbox settings via bwrap + socat or sandbox-exec) or --sandbox docker (container, optional gVisor). The sandbox allows writes only to the worktree and temp, denies reads of credential directories, .env* and the holdout, and limits network to the model API plus sandbox.allowedHosts. A pre-flight self-test aborts the run if a blocked host or denied path is reachable. Credentials are stripped from worker env, .git/hooks and .git/config are read-only, and only the orchestrator commits, pushes and opens PRs. --unattended refuses to start without a backend. Missing tools are detected and the run degrades to unsandboxed (attended only).
The src/guard.ts hook stays on as defence in depth. It is a deny-list that python, node, git remotes or DNS can bypass. srt is a research preview and sandbox setup varies by OS (Linux needs unprivileged user namespaces). Details: docs/architecture.md and docs/isolation.md.
site/).orchestra/config.json and harness configThe current version is in package.json. The test suite runs against the simulator (npm test). Workers share one machine unless you opt in to --sandbox; the default is unsandboxed. Evolution reruns past goals, so it costs roughly sample × 2 runs; tune evolve.sample, evolve.every and evolve.candidates in the config.
awaiting_approvaloversight.riskTiersorchestra resume <runId> | Finish a run that approval left with deferred work (blocked tasks, mutation, learning) on the same run and integration branch. Workers inherit the run's recorded isolation; weaker flags need --override-isolation |
orchestra stats | Factory health per harness version, plus outcome metrics (merge acceptance, edits before landing, revert rate, cost per accepted merge, success by task length), merged-but-wrong rate, judge agreement split by M4 verification mode, and oversight and throughput metrics (interruptions, review minutes, edits before landing, conflict rate, merge wait, cache-read share; --json for scripts) |
orchestra evolve | Propose, evaluate, and maybe promote a better harness |
orchestra learnings [--domain <slug>] | Show what the factory has learned in this repo (--domain filters to one domain, global for cross-domain lessons) |
orchestra atlas find|neighbors|impact|tests <symbol-or-path> | L2 code graph queries as a capped tree (80 lines). Need context.atlas.enabled and a built atlas, else a hint and a non-zero exit. Files modified in the current worktree are marked (stale: read the file). context.atlas.query adds the command to worker and judge prompts. Advisory only |
orchestra atlas build / orchestra atlas stats | Build or refresh the Repo Atlas code graph for HEAD (.orchestra/atlas/<sha>.json), or show its file, symbol and edge counts. Work even when context.atlas.enabled is false; .orchestra/, .env* and secret files are never indexed |
orchestra evals | List Factory Eval cases (--regression, --tag <t>) |
orchestra evals add | Add a case for a goal you choose, or harvest a failed run with --from-run <id> --fix <commit> |
orchestra evals audit | Check cases and lessons for solution leakage (exit 1 on findings) |
orchestra evals ablation | Replay the holdout with and without learnings |
orchestra promote <vN> | Promote a harness version (also used for rollback) |
orchestra doctor | Check Claude CLI and headless auth |
orchestra demo | Simulated run in a temp repo (no tokens spent) |
orchestra statusline | Statusline command for Claude Code (reads JSON on stdin) |