omnilane 0.21.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -78,11 +78,11 @@ key with no extra CLI at all):
78
78
  ```mermaid
79
79
  flowchart LR
80
80
  M["main loop<br/><i>any CLI you drive</i>"] --> T{{"routing.yaml<br/>one shared table"}}
81
- T -->|hardest-coding| C1["CodexGPT-5.6 Sol"]
82
- T -->|bulk-mechanical| C2["Codex — GPT-5.6 Terra"]
83
- T -->|taste-final| C3["Claude — Opus 5"]
84
- T -->|long-context| C4["Gemini — 3.1 Pro"]
85
- T -->|live-search| C5["Grok — 4.5"]
81
+ T -->|hardest-coding| C1["ClaudeFable 5.1"]
82
+ T -->|bulk-mechanical| C2["Codex — GPT-5.6 Sol"]
83
+ T -->|taste-final| C3["Claude — Fable 5.1"]
84
+ T -->|long-context| C4["Gemini — 3.7 Flash"]
85
+ T -->|live-search| C5["Grok — 4.6"]
86
86
  T -->|"arbitrate (opt-in)"| C6["vote — 1-4 model panel"]
87
87
  ```
88
88
 
@@ -115,23 +115,25 @@ actually resolves.
115
115
 
116
116
  | Lane | First choice | Backup | When |
117
117
  |---|---|---|---|
118
- | 🔥 hardest-coding | GPT-5.6 Sol (xhigh) | Claude Opus 5 (xhigh) | Hardest implementation, deep root-cause debug, correctness-critical edits |
119
- | 🏗️ bulk-mechanical | GPT-5.6 Terra (max) | Claude Sonnet 5 (high) | Refactors, migrations, tests, review sweeps — mechanical endurance |
120
- | 🧹 triage | GPT-5.6 Luna (medium) | Gemini 3.6 Flash (Low) | High-volume scans, first-pass filtering |
121
- | ⚖️ hard-judgment | Claude Opus 5 (xhigh) | GPT-5.6 Sol (max) | Architecture arbitration, deep reasoning, second opinions |
122
- | ✒️ taste-final | Claude Opus 5 (high) | GPT-5.6 Sol (max) | User-facing prose, prompt/doc polish, style arbitration |
123
- | 💬 consult | Explicit named vendor/model | (no fallback) | Direct natural-language consultation; always keep `--vendor` |
124
- | 🎨 ui-draft | GPT-5.6 Sol (xhigh) | Claude Opus 5 (high) | UI drafts only WITH a design system / reference images |
125
- | 📚 long-context | Gemini 3.1 Pro (High) | GPT-5.6 Sol (high) | 1M-token sweeps, retrieval, and synthesis across long documents; Flash for fast repeated loops |
126
- | ⚡ fast-agentic | GPT-5.6 Luna (max) | Gemini 3.6 Flash (High) | Fast multi-step agentic loops, multimodal checks |
127
- | 📡 live-search | Grok 4.5 | — (off) | Realtime X/web search and social context |
128
- | 🚰 coding-overflow | Grok 4.5 | Kimi K3 → Qwen3 Coder Plus → OpenCode | Codex-quota relief valve for mid-tier coding |
118
+ | 🔥 hardest-coding | Claude Fable 5.1 (xhigh) | GPT-5.6 Sol (xhigh) | Hardest implementation, deep root-cause debug, correctness-critical edits |
119
+ | 🏗️ bulk-mechanical | GPT-5.6 Sol (high) | Gemini 3.7 Flash (High) → Claude Sonnet 5 (high) | Refactors, migrations, tests, review sweeps — mechanical endurance |
120
+ | 🧹 triage | GPT-5.6 Luna (high) | Gemini 3.7 Flash (Low) → Claude Haiku 4.5 | High-volume scans, first-pass filtering |
121
+ | ⚖️ hard-judgment | Claude Fable 5.1 (xhigh) | GPT-5.6 Sol (max) → Grok 4.6 | Architecture arbitration, deep reasoning, second opinions |
122
+ | ✒️ taste-final | Claude Fable 5.1 (high) | GPT-5.6 Sol (max) | User-facing prose, prompt/doc polish, style arbitration |
123
+ | 💬 consult | GPT-5.6 Sol (max) | Claude Fable 5.1 (high) → Grok 4.6 → Gemini 3.7 Flash (High) | Direct named-model consultation; keep `--vendor` to prevent fallback |
124
+ | 🎨 ui-draft | GPT-5.6 Sol (xhigh) | Claude Fable 5.1 (high) | UI drafts only WITH a design system / reference images |
125
+ | 📚 long-context | Gemini 3.7 Flash (Medium) | GPT-5.6 Terra (max) → Claude Opus 5 (medium) | Long-document retrieval and synthesis, ordered on AA-LCR, cost, and throughput |
126
+ | ⚡ fast-agentic | Gemini 3.7 Flash (Medium) | GPT-5.6 Luna (high) | Fast multi-step agentic loops, multimodal checks |
127
+ | 📡 live-search | Grok 4.6 | — (off) | Realtime X/web search and social context |
128
+ | 🚰 coding-overflow | Grok 4.6 | Gemini 3.7 Flash (High) → Kimi K3 → Qwen3 Coder Plus → OpenCode | Codex-quota relief valve for mid-tier coding |
129
129
  | 🗳️ arbitrate | off (opt-in vote panel) | — | Built-in opinion panel for big calls — disabled by default; enable it in `routing.local.yaml`, one call per voter per round |
130
130
 
131
131
  The **backup** is the next candidate in the lane's `routing.yaml` chain — what
132
132
  dispatch falls back to when the first-choice vendor CLI is not installed. Every
133
133
  lane is such a chain; when nothing in it is installed the lane degrades to `off`.
134
134
 
135
+ > **Fable 5.1 is in the defaults — and where Opus 5 still fits.** See the current three-way evidence and Opus override in the [FAQ](#-faq).
136
+
135
137
  ### Natural-language consultation
136
138
 
137
139
  With the `omnilane` skill or `/route`, you can ask normally:
@@ -155,12 +157,12 @@ with who is driving. What changes is which lanes you **self-execute** (you
155
157
  already are that model, so no second call) versus **dispatch**. Your harness's
156
158
  `omnilane` skill applies the right row automatically; this is the human view.
157
159
 
158
- - **Claude Code · Fable 5** — self-execute: hard-judgment, taste-final, the hardest correctness-critical fixes. Dispatch mechanical coding volume → Codex, long-context → Gemini, live-search → Grok.
159
- - **Claude Code · Opus 5** — self-execute: hard-judgment and taste-final. Dispatch bulk coding to Codex lanes, long-context → Gemini, live-search → Grok.
160
- - **Codex · Sol** — self-execute: hardest-coding, hard-judgment, ui-draft. Dispatch taste-final → Claude, long-context → Gemini, live-search → Grok, bulk → Codex Terra.
161
- - **Codex · Terra** — self-execute: bulk-mechanical. Escalate the genuinely hardest pieces to Sol; dispatch taste → Claude, long-context → Gemini, live-search → Grok.
162
- - **Grok Build · Grok 4.5** — self-execute: live-search, coding-overflow (mid-tier coding). Dispatch everything hard to Codex/Claude/Gemini — and verify every API signature and cited fact first.
163
- - **Antigravity · Gemini** — self-execute: long-context and context-heavy agentic work on 3.1 Pro, fast repeated loops on Flash. Dispatch hardest coding/judgment/taste to Codex/Claude; live-search → Grok.
160
+ - **Claude Code · Fable 5.1** — self-execute: hard-judgment, taste-final, hardest-coding. Dispatch bulk → Codex Sol high; long-context and fast loops → Gemini 3.7 Flash; live-search → Grok.
161
+ - **Claude Code · Opus 5** — self-execute: hard-judgment and taste-final when its lower hallucination rate or price is preferred. Dispatch hardest coding Fable 5.1 or Sol, bulk → Sol high, long-context and fast loops → Gemini 3.7 Flash, live-search → Grok.
162
+ - **Codex · Sol** — self-execute: hardest-coding, bulk-mechanical, hard-judgment, ui-draft. Dispatch taste-final → Claude, long-context and fast loops → Gemini 3.7 Flash, live-search → Grok.
163
+ - **Codex · Terra** — self-execute: long-context as the Codex fallback. Bulk-mechanical now defaults to Sol high; escalate hardest pieces to Sol xhigh, taste → Claude, fast loops → Gemini 3.7 Flash, live-search → Grok.
164
+ - **Grok Build · Grok 4.6** — self-execute: live-search and coding-overflow. Dispatch hard coding/judgment/taste to Codex/Claude/Gemini; verify API signatures and cited facts.
165
+ - **Antigravity · Gemini 3.7 Flash** — self-execute: long-context and fast loops at Medium, bulk/overflow at High, triage at Low. Dispatch hardest coding/judgment/taste to Codex/Claude; live-search → Grok.
164
166
 
165
167
  </details>
166
168
 
@@ -439,6 +441,24 @@ scripts/jobs.sh retry "$ID" --background
439
441
 
440
442
  An idle mailbox makes no API calls and incurs no API spend. By default it closes after 900 seconds without a new inbox message or result event, while the whole-job timeout remains the outer cap. Close it sooner when its exchange is finished. `jobs.sh send` to a finished job or a job that is not live fails with a clear error. Do not use this for fire-and-forget work, vendors without live support, or a clean-slate rerun; start a fresh dispatch (or retry a completed job) instead.
441
443
 
444
+ ## 🎯 Goal orchestration
445
+
446
+ `omnilane goal` is a foreman-driven ledger for exploratory work. The caller—an agent session or a human terminal—owns the loop: dispatch a job, receive its result through the completion inbox or `omnilane jobs wait`, decide the next job, and repeat. Job and elapsed-time budgets are unlimited by default; `--budget-jobs N` and `--budget-seconds S` opt in to each hard cap. omnilane supplies bookkeeping only, enforces any caller-supplied caps plus the always-on repeated-failure fuse before each goal dispatch, then assembles the report when the foreman closes the goal.
447
+
448
+ ```bash
449
+ GOAL_ID="$(omnilane goal open "Fix the flaky checkout integration" \
450
+ --budget-jobs 4 --budget-seconds 900 --workdir /path/to/repo)"
451
+ JOB_ID="$(omnilane goal dispatch "$GOAL_ID" --mode work hardest-coding \
452
+ "Reproduce the checkout failure and implement the smallest verified fix")"
453
+ omnilane jobs wait "$JOB_ID" --timeout 900
454
+ omnilane goal note "$GOAL_ID" "Fix verified by the checkout integration test"
455
+ omnilane goal close "$GOAL_ID" --summary "Checkout integration is stable"
456
+ ```
457
+
458
+ Goal state lives under `$OMNILANE_HOME/goals/<goal-id>/`. Use `goal status` to inspect budget usage, fuse trips, and each recorded job as its metadata and exit status land. `goal close` writes `report.md` and prints its path. For one obvious task, dispatch directly. When budget flags are supplied, those caps are hard bounds, not completion promises.
459
+
460
+ Do not use goal orchestration for a single obvious task; dispatch that task directly. The default unlimited budgets let the caller keep exploring without omnilane imposing a cap; pass either budget flag only when that limit is wanted.
461
+
442
462
  ## ❓ FAQ
443
463
 
444
464
  <details>
@@ -471,52 +491,30 @@ with the key you set — those are advise-only and never edit files.
471
491
  </details>
472
492
 
473
493
  <details>
474
- <summary><b>Where is Claude Fable 5? Why is it not in the default table?</b></summary>
494
+ <summary><b>Fable 5.1 is in the defaults and where Opus 5 still fits</b></summary>
475
495
 
476
496
  <br/>
477
497
 
478
- **Because the top Claude tier is usually the main loop itself, not a dispatched
479
- worker.** Lanes exist to send work to a model *other than* the one you are
480
- driving. If Fable 5 is your main loop, routing judgment and taste back to Fable 5
481
- just adds a second call for no gain — which is why the "pick your main model"
482
- list above gives Fable 5 its own row as a **driver**, self-executing
483
- hard-judgment, taste-final, and the hardest correctness-critical fixes.
484
-
485
- **The measurements do not argue for it as a worker either.** On the Artificial
486
- Analysis Intelligence Index (2026-07-24) Opus 5 (max) scores 61 and Fable 5 (max)
487
- scores 60 — Artificial Analysis calls them "effectively tied", and Epoch AI's
488
- Capability Index ranks them the other way (Fable 5 161, Opus 5 159). Call it a
489
- draw on general intelligence. Where they are not tied is agentic professional
490
- output, and Opus 5 leads by a wide margin:
491
-
492
- | Benchmark | Claude Opus 5 (max) | Claude Fable 5 | |
493
- |---|---:|---:|---|
494
- | AA-Briefcase (agentic knowledge work, Elo) | 1720 | 1574 | **+146** |
495
- | GDPval-AA v2 (Elo) | 1861 | 1747 | **+114** |
496
- | Cost per AA-Briefcase task | $17.79 | $22.30 | **-20%** |
497
- | API price, input / output per 1M | $5 / $25 | $10 / $50 | **half** |
498
-
499
- Opus 5's max, xhigh and high tiers sweep the top three AA-Briefcase places, and
500
- its `high` tier still beats Fable 5 at under half the cost per task. So Fable 5
501
- costs twice as much without buying an advantage on any axis a lane is defined
502
- around.
503
-
504
- **What Fable 5 is genuinely better at**: factual breadth. It stays ahead of
505
- Opus 5 on AA-Omniscience, as its size class suggests, and Opus 5 answers more
506
- readily when uncertain — its hallucination rate is 50%, up 14 points from
507
- Opus 4.8. If your task is recall-heavy rather than execution-heavy, name
508
- Fable 5 explicitly:
498
+ Fable 5.1 now leads `hardest-coding`, `hard-judgment`, and `taste-final`.
499
+ At matched xhigh effort it leads Opus 5 on intelligence, agentic work, and
500
+ coding. Sol max remains the far cheaper cross-vendor judgment fallback.
509
501
 
510
- ```bash
511
- dispatch.sh --vendor claude --model claude-fable-5 --effort high consult "…"
512
- ```
502
+ | Benchmark (AA, retrieved 2026-09-02) | Claude Fable 5.1 (xhigh) | Claude Opus 5 (xhigh) | GPT-5.6 Sol (max) |
503
+ |---|---:|---:|---:|
504
+ | Intelligence | 64.8 | 62.5 | 60.9 |
505
+ | Agentic | 59.8 | 58.4 | 57.8 |
506
+ | Coding | 80.7 | 77.0 | 77.4 |
507
+ | Hallucination rate (lower is better) | .71 | **.60** | .92 |
508
+ | AA $/task | $2.65 | $1.80 | **$0.95** |
513
509
 
514
- **This is a cost / main-loop policy choice, not a capability verdict.** Fable 5
515
- is in the configurator's model menu, and one line in `routing.local.yaml`
516
- overrides the default if you disagree:
510
+ Fable 5.1 is not a bulk or triage default: it costs twice Opus 5 per token and
511
+ consumes the most Claude Code subscription quota per turn. Opus 5 remains the
512
+ lower-hallucination, lower-price Claude option, stays in `long-context` at
513
+ medium, and remains selectable everywhere through
514
+ `~/.omnilane/routing.local.yaml`:
517
515
 
518
516
  ```yaml
519
- taste-final: claude claude-fable-5 high
517
+ hard-judgment: claude claude-opus-5 xhigh
520
518
  ```
521
519
 
522
520
  </details>
@@ -580,7 +578,7 @@ Default lane assignments follow Artificial Analysis coding/intelligence data
580
578
  pages) plus published head-to-head reviews; they are opinions, not laws — the
581
579
  configurator and `routing.local.yaml` exist so you can disagree. The full
582
580
  working notes, including per-benchmark caveats, live in
583
- [`docs/model-capabilities-2026-07.md`](docs/model-capabilities-2026-07.md).
581
+ [`docs/model-capabilities-2026-09.md`](docs/model-capabilities-2026-09.md).
584
582
 
585
583
  ## ⚠️ Known limitations
586
584
 
@@ -596,6 +594,23 @@ working notes, including per-benchmark caveats, live in
596
594
 
597
595
  ## 📜 Release history
598
596
 
597
+ ## What's new in v0.32.0
598
+
599
+ - **Full 2026-09 routing re-evaluation.** Fable 5.1 and Gemini 3.7 Flash enter the defaults, backed by the dated Artificial Analysis snapshot.
600
+ - **Catalogs match live CLI surfaces.** Fable 5.1 is added and retired Gemini 3.5 Flash rows are removed.
601
+ - **Opus 5 remains available.** It stays in `long-context` and can override any lane through `routing.local.yaml`.
602
+
603
+ ## What's new in v0.31.0
604
+
605
+ - **Unlimited goal budgets by default.** `budget_jobs` and `budget_seconds` now persist as JSON `null` and render as `unlimited`; the previous implicit 8-job and 900-second caps are gone. Use `--budget-jobs N` or `--budget-seconds S` to opt in to a hard cap. The repeat-failure fuse remains enabled by default.
606
+ - **Pipe-safe goal status.** `omnilane goal status` now exits 0 when its consumer closes the pipe early instead of raising `BrokenPipeError`, so `| head` and `| grep -q` work under `pipefail`.
607
+
608
+ ## What's new in v0.30.0
609
+
610
+ - **Goal ledger.** `omnilane goal open` creates a goal ledger with unlimited default budgets; `goal dispatch` gates each job on caller-supplied job or wall-clock caps and the always-on repeat-failure fuse. `goal note` preserves the caller's narrative, `goal status` shows budgets and per-job records, and `goal close` writes `goals/<id>/report.md`.
611
+ - **Caller owns the loop.** The session or person that opened the goal chooses, dispatches, reviews, and closes the work; omnilane does not run a built-in planning model.
612
+ - **Doctor coverage.** `omnilane doctor` now checks the goal-orchestrator surface.
613
+
599
614
  ## What's new in v0.21.0
600
615
 
601
616
  - **Explicit session mode.** Use `dispatch --live` to require a resident session or `--single-shot` to force a one-shot job. `--live` fails immediately for incompatible vendors and lists the live-capable choices.
@@ -686,7 +701,7 @@ working notes, including per-benchmark caveats, live in
686
701
  latency-bound.
687
702
  - **Lane comments no longer carry numbers.** `routing.yaml` now states why each
688
703
  ordering holds; every score, price and throughput figure lives in
689
- `docs/model-capabilities-2026-07.md` with its retrieval date, so a stale
704
+ `docs/model-capabilities-2026-09.md` with its retrieval date, so a stale
690
705
  figure never requires a routing-table edit.
691
706
  - **A value profile** in `routing.local.yaml.example` trades about one
692
707
  Intelligence Index point for 30-40% off the cost per task.
@@ -745,7 +760,7 @@ working notes, including per-benchmark caveats, live in
745
760
  profiles still pointed at `claude-opus-4-8` and Gemini 3.5 Flash; they now use
746
761
  Claude Opus 5 (with lane-appropriate effort) and Gemini 3.6 Flash.
747
762
  - **Corrected the Intelligence Index figures** in
748
- `docs/model-capabilities-2026-07.md` against the Artificial Analysis source
763
+ `docs/model-capabilities-2026-09.md` against the Artificial Analysis source
749
764
  (index points, not percentages), added the AA-Briefcase / GDPval-AA v2
750
765
  comparison, and recorded the two results that cut against the defaults:
751
766
  Fable 5's lead on factual knowledge and Sol's lead on presentation quality.
@@ -793,7 +808,7 @@ working notes, including per-benchmark caveats, live in
793
808
  - **Five OpenAI-compatible direct-API vendors** — `deepseek`, `zai` (GLM),
794
809
  `mistral`, `groq`, and `cerebras` join `openrouter` as CLI-free lanes (curl +
795
810
  a `<VENDOR>_API_KEY`). A one-line `lib/common.sh` registry entry adds each;
796
- see [`docs/model-capabilities-2026-07.md`](docs/model-capabilities-2026-07.md).
811
+ see [`docs/model-capabilities-2026-09.md`](docs/model-capabilities-2026-09.md).
797
812
  - **Fish shell completion** — `omnilane completion fish | source`.
798
813
 
799
814
  ## What's new in v0.8.3
@@ -817,7 +832,7 @@ working notes, including per-benchmark caveats, live in
817
832
  DeepSeek, Z.ai GLM, Mistral, Groq, and Cerebras. Each needs only `curl` and
818
833
  its `<VENDOR>_API_KEY`; advise/consult only. A one-line `lib/common.sh`
819
834
  registry entry defines each endpoint, key env, and default model. See
820
- [`docs/model-capabilities-2026-07.md`](docs/model-capabilities-2026-07.md).
835
+ [`docs/model-capabilities-2026-09.md`](docs/model-capabilities-2026-09.md).
821
836
  - **`opencode` vendor** — headless dispatch through the OpenCode
822
837
  multi-provider aggregator CLI (`opencode run`). Advise mode pins OpenCode's
823
838
  built-in read-only `plan` agent; work mode uses `--auto`. Joins the default
package/README.zh-CN.md CHANGED
@@ -72,11 +72,11 @@ omnilane 让**任何**一个 agentic CLI 的主循环把子任务分类到通道
72
72
  ```mermaid
73
73
  flowchart LR
74
74
  M["主循环<br/><i>你在用的任一 CLI</i>"] --> T{{"routing.yaml<br/>一张共用路由表"}}
75
- T -->|hardest-coding| C1["CodexGPT-5.6 Sol"]
76
- T -->|bulk-mechanical| C2["Codex — GPT-5.6 Terra"]
77
- T -->|taste-final| C3["Claude — Opus 5"]
78
- T -->|long-context| C4["Gemini — 3.1 Pro"]
79
- T -->|live-search| C5["Grok — 4.5"]
75
+ T -->|hardest-coding| C1["ClaudeFable 5.1"]
76
+ T -->|bulk-mechanical| C2["Codex — GPT-5.6 Sol"]
77
+ T -->|taste-final| C3["Claude — Fable 5.1"]
78
+ T -->|long-context| C4["Gemini — 3.7 Flash"]
79
+ T -->|live-search| C5["Grok — 4.6"]
80
80
  T -->|"arbitrate(可选)"| C6["vote — 1-4 模型评审团"]
81
81
  ```
82
82
 
@@ -103,24 +103,23 @@ flowchart LR
103
103
 
104
104
  | 通道 | 首选模型 | 备选模型 | 用途 |
105
105
  |---|---|---|---|
106
- | 🔥 hardest-coding | GPT-5.6 Sol (xhigh) | Claude Opus 5 (xhigh) | 最难的实现、深度调试、正确性攸关的修改 |
107
- | 🏗️ bulk-mechanical | GPT-5.6 Terra (max) | Claude Sonnet 5 (high) | 重构、迁移、测试、大面积扫描——机械耐力活 |
108
- | 🧹 triage | GPT-5.6 Luna (medium) | Gemini 3.6 Flash (Low) | 高量初筛、第一轮过滤 |
109
- | ⚖️ hard-judgment | Claude Opus 5 (xhigh) | GPT-5.6 Sol (max) | 架构仲裁、深度推理、第二意见 |
110
- | ✒️ taste-final | Claude Opus 5 (high) | GPT-5.6 Sol (max) | 对外文字、prompt 与文档打磨、风格终审 |
111
- | 💬 consult | 明确指定的厂商/模型 | (不降级) | 自然语言直接咨询;必须保留 `--vendor` |
112
- | 🎨 ui-draft | GPT-5.6 Sol (xhigh) | Claude Opus 5 (high) | 有设计规范/参考图时的 UI 出稿;开放式视觉品味交给 taste-final |
113
- | 📚 long-context | Gemini 3.1 Pro (High) | GPT-5.6 Sol (high) | 百万 token 扫读、检索与长文跨段整合;高速重复循环仍优先 Flash |
114
- | ⚡ fast-agentic | GPT-5.6 Luna (max) | Gemini 3.6 Flash (High) | 快速多步骤 agentic 循环、多模态检查 |
115
- | 📡 live-search | Grok 4.5 | —(off) | 实时 X/网络搜索与社群脉络 |
116
- | 🚰 coding-overflow | Grok 4.5 | Kimi K3 → Qwen3 Coder Plus → OpenCode | Codex 额度吃紧时的中量级编码溢流道;事实性声明须另行查证 |
117
- | 🗳️ arbitrate | off(可选评审团) | — | 内置意见评审团,重大决定用——默认关闭,要用在 `routing.local.yaml` 打开;每评审每轮烧一次额度 |
106
+ | 🔥 hardest-coding | Claude Fable 5.1 (xhigh) | GPT-5.6 Sol (xhigh) | 最难的实现、深度调试、正确性关键的修改 |
107
+ | 🏗️ bulk-mechanical | GPT-5.6 Sol (high) | Gemini 3.7 Flash (High) → Claude Sonnet 5 (high) | 重构、迁移、测试、大范围扫描——机械耐力活 |
108
+ | 🧹 triage | GPT-5.6 Luna (high) | Gemini 3.7 Flash (Low) → Claude Haiku 4.5 | 大量扫描、第一轮筛选 |
109
+ | ⚖️ hard-judgment | Claude Fable 5.1 (xhigh) | GPT-5.6 Sol (max) → Grok 4.6 | 架构裁决、深度推理、第二意见 |
110
+ | ✒️ taste-final | Claude Fable 5.1 (high) | GPT-5.6 Sol (max) | 对外文字、提示词/文档润色、风格裁决 |
111
+ | 💬 consult | GPT-5.6 Sol (max) | Claude Fable 5.1 (high) → Grok 4.6 → Gemini 3.7 Flash (High) | 直接指定模型咨询;保留 `--vendor` 避免降级 |
112
+ | 🎨 ui-draft | GPT-5.6 Sol (xhigh) | Claude Fable 5.1 (high) | 仅在提供设计系统/参考图时生成 UI 草稿 |
113
+ | 📚 long-context | Gemini 3.7 Flash (Medium) | GPT-5.6 Terra (max) Claude Opus 5 (medium) | 长文档提取与综合,按 AA-LCR、成本和吞吐排序 |
114
+ | ⚡ fast-agentic | Gemini 3.7 Flash (Medium) | GPT-5.6 Luna (high) | 高速多步骤工具循环、多模态检查 |
115
+ | 📡 live-search | Grok 4.6 | — (`off`) | 实时 X/网页搜索与社交上下文 |
116
+ | 🚰 coding-overflow | Grok 4.6 | Gemini 3.7 Flash (High) → Kimi K3 → Qwen3 Coder Plus → OpenCode | Codex 配额耗尽时的中量级编码安全阀 |
117
+ | 🗳️ arbitrate | `off`(可选模型评审团) | — | 重大决定的内置意见评审团;默认禁用,在 `routing.local.yaml` 启用,每位评审每轮调用一次 |
118
118
 
119
119
  **备选模型**是候选链的下一位——首选那家的厂商 CLI 没装时,派发就降到它。每条
120
120
  通道都是这样一条链;整条都没装时,通道自动降为 `off`。
121
121
 
122
- > **Claude Fable 5 去哪了?** 默认表刻意不放——理由与完整数据见
123
- > [常见问题](#-常见问题)。
122
+ > **Fable 5.1 已进入默认表——以及 Opus 5 仍适合放在哪里。** 三方数据与 Opus override 见[常见问题](#-常见问题)。
124
123
 
125
124
  ### 自然语言咨询
126
125
 
@@ -141,12 +140,12 @@ flowchart LR
141
140
  你哪些通道**自己做**(你本来就是那个模型,省一次调用)、哪些**派出去**。你 CLI 里
142
141
  的 `omnilane` 技能会自动套对的那一行,这里是给人看的版本。
143
142
 
144
- - **Claude Code · Fable 5** — 自己做:hard-judgment、taste-final、最吃正确性的硬修。派出去:机械编码量 → Codex、长文 → Gemini、实时搜索 → Grok。
145
- - **Claude Code · Opus 5** — 自己做:hard-judgment、taste-final。大量编码走 Codex 通道、长文 → Gemini、实时搜索 → Grok。
146
- - **Codex · Sol** — 自己做:hardest-coding、hard-judgment、ui-draft。派出去:taste-final → Claude、长文 → Gemini、实时搜索 Grok、粗活Codex Terra
147
- - **Codex · Terra** 自己做:bulk-mechanical。真正最硬的往上升给 Sol;taste → Claude、长文 → Gemini、实时搜索 → Grok。
148
- - **Grok Build · Grok 4.5** — 自己做:live-search、coding-overflow(中量级编码)。所有硬活派给 Codex/Claude/Gemini——先验每个 API 签名与引用事实。
149
- - **Antigravity · Gemini** — 自己做:3.1 Pro 的长文与重上下文 agentic 工作、Flash 的高速重复循环。最难的编码/判断/文字派给 Codex/Claude;实时搜索 → Grok。
143
+ - **Claude Code · Fable 5.1**——自己执行:hard-judgment、taste-final、hardest-coding。派发:bulk → Codex Sol high;long-context/高速循环 → Gemini 3.7 Flash;实时搜索 → Grok。
144
+ - **Claude Code · Opus 5**——需要更低幻觉率或价格时,自己执行 hard-judgment、taste-final。最难编码 Fable 5.1 或 Sol;bulk Sol high;long-context/高速循环 → Gemini 3.7 Flash;实时搜索 → Grok。
145
+ - **Codex · Sol**——自己执行:hardest-coding、bulk-mechanical、hard-judgment、ui-draft。派发:taste-final → Claude;long-context/高速循环 → Gemini 3.7 Flash;实时搜索Grok
146
+ - **Codex · Terra**——自己执行 long-context 的 Codex 备用任务;bulk-mechanical 现在默认由 Sol high 处理。最难部分升级到 Sol xhigh,taste → Claude,高速循环 → Gemini 3.7 Flash,实时搜索 → Grok。
147
+ - **Grok Build · Grok 4.6**——自己执行 live-search、coding-overflow。最难的编码/判断/文字交给 CodexClaudeGemini;仍需验证 API 签名和引用事实。
148
+ - **Antigravity · Gemini 3.7 Flash**——自己执行:Medium long-context/高速循环、High bulk/overflow、Low 的 triage。最难编码/判断/文字交给 CodexClaude;实时搜索 → Grok。
150
149
 
151
150
  </details>
152
151
 
@@ -351,6 +350,22 @@ scripts/jobs.sh retry "$ID" --background
351
350
 
352
351
  空闲时不会发出 API 调用,也不会产生 API 费用。默认若 900 秒内没有新邮箱消息或新结果事件,worker 会自动收尾;整个作业超时仍是外层上限。处理结束可提前执行 `close`。向已结束或不是实时邮箱的作业执行 `jobs.sh send` 会明确报错并失败。即发即忘的工作、没有实时支持的供应商,或需要从干净状态重新运行的情况都不适用;请新建一次派发,或在作业完成后使用 `retry`。
353
352
 
353
+ ## 🎯 目标编排
354
+
355
+ `omnilane goal` 是由领班驱动的工作台账。循环由调用方负责,也就是打开目标的代理会话或终端用户:派发一个作业,从完成收件箱或 `omnilane jobs wait` 取回结果,决定下一个作业,再重复执行。作业数量和秒数预算默认均不设上限;只有传入 `--budget-jobs N` 或 `--budget-seconds S` 时,才会启用对应的硬上限。omnilane 只负责记账;每次 goal dispatch 前都会检查调用方设置的上限和默认启用的重复失败熔断器,领班关闭目标时才汇总报告。
356
+
357
+ ```bash
358
+ GOAL_ID="$(omnilane goal open "修复不稳定的结账集成" \
359
+ --budget-jobs 4 --budget-seconds 900 --workdir /path/to/repo)"
360
+ JOB_ID="$(omnilane goal dispatch "$GOAL_ID" --mode work hardest-coding \
361
+ "重现结账失败,完成最小修复并验证")"
362
+ omnilane jobs wait "$JOB_ID" --timeout 900
363
+ omnilane goal note "$GOAL_ID" "结账集成测试已通过"
364
+ omnilane goal close "$GOAL_ID" --summary "结账集成已稳定"
365
+ ```
366
+
367
+ 目标状态保存在 `$OMNILANE_HOME/goals/<goal-id>/`。使用 `goal status` 可以查看预算用量、熔断次数,以及各作业陆续写入的元数据和退出状态。`goal close` 会写入 `report.md` 并打印路径。单个且做法明确的任务直接派发即可;传入预算参数后,对应的上限是硬限制,并不保证任务完成。
368
+
354
369
  ## ❓ 常见问题
355
370
 
356
371
  <details>
@@ -379,45 +394,29 @@ scripts/jobs.sh retry "$ID" --background
379
394
  </details>
380
395
 
381
396
  <details>
382
- <summary><b>Claude Fable 5 去哪了?为什么默认表不放它?</b></summary>
397
+ <summary><b>Fable 5.1 已进入默认表——以及 Opus 5 仍适合放在哪里</b></summary>
383
398
 
384
399
  <br/>
385
400
 
386
- **因为 Claude 顶级档通常就是主循环本人,不是被派发的工人。** 通道存在的意义,
387
- 是把工作送给「你正在开的那个模型以外」的模型。如果 Fable 5 就是你的主循环,把
388
- 判断和文字再路由回 Fable 5 只是多一次调用、毫无增益——所以上面那份「选你的主控
389
- 模型」清单里,Fable 5 有自己独立的一行,身份是**主控**:自己做 hard-judgment、
390
- taste-final、最吃正确性的硬修。
391
-
392
- **测量数据也不支持把它当工人。** Artificial Analysis 智能指数(2026-07-24)
393
- Opus 5(max)61 分、Fable 5(max)60 分——AA 自己的用词是「实质打平」,而 Epoch AI
394
- 的能力指数排序还是反过来的(Fable 5 161、Opus 5 159)。综合智力就当它平手。真正
395
- 拉开差距的是 agentic 专业产出,而且差很多:
396
-
397
- | 评测 | Claude Opus 5 (max) | Claude Fable 5 | |
398
- |---|---:|---:|---|
399
- | AA-Briefcase(agentic 知识工作,Elo) | 1720 | 1574 | **+146** |
400
- | GDPval-AA v2(Elo) | 1861 | 1747 | **+114** |
401
- | AA-Briefcase 每任务成本 | $17.79 | $22.30 | **-20%** |
402
- | API 单价,输入/输出 每 1M | $5 / $25 | $10 / $50 | **一半** |
403
-
404
- Opus 5 的 max、xhigh、high 三个档位包揽 AA-Briefcase 前三名,连 `high` 档都在
405
- 不到一半的每任务成本下赢过 Fable 5。也就是说,Fable 5 贵一倍,却换不到任何一条
406
- 通道所在意的优势。
401
+ Fable 5.1 现在领跑 `hardest-coding`、`hard-judgment`、`taste-final`。
402
+ 同为 xhigh 时,它在智能、代理式工作和编码上都领先 Opus 5;Sol max 则保留为
403
+ 便宜得多的跨厂商判断备用项。
407
404
 
408
- **Fable 5 真正更强的地方**:事实广度。它在 AA-Omniscience 上仍领先 Opus 5
409
- (符合两者的规模差),而 Opus 5 在没把握时更倾向直接作答——幻觉率 50%,比
410
- Opus 4.8 14 个百分点。任务偏「回想」而非「执行」时,直接点名它:
405
+ | 评测(AA,抓取于 2026-09-02) | Claude Fable 5.1 (xhigh) | Claude Opus 5 (xhigh) | GPT-5.6 Sol (max) |
406
+ |---|---:|---:|---:|
407
+ | 智能 | 64.8 | 62.5 | 60.9 |
408
+ | 代理式 | 59.8 | 58.4 | 57.8 |
409
+ | 编码 | 80.7 | 77.0 | 77.4 |
410
+ | 幻觉率(越低越好) | .71 | **.60** | .92 |
411
+ | AA 每任务成本 | $2.65 | $1.80 | **$0.95** |
411
412
 
412
- ```bash
413
- dispatch.sh --vendor claude --model claude-fable-5 --effort high consult "…"
414
- ```
415
-
416
- **这是成本与主循环策略的选择,不是能力判决。** 设置菜单的模型清单里有 Fable 5,
417
- 在 `routing.local.yaml` 写一行就能覆盖默认:
413
+ Fable 5.1 没进入 bulk 或 triage:每 token 价格是 Opus 5 的两倍,而且每轮
414
+ 消耗最多 Claude Code 订阅配额。Opus 5 仍是幻觉率更低、价格更低的 Claude
415
+ 选项,并以 medium 保留在 `long-context`;也能通过
416
+ `~/.omnilane/routing.local.yaml` 放回任意通道:
418
417
 
419
418
  ```yaml
420
- taste-final: claude claude-fable-5 high
419
+ hard-judgment: claude claude-opus-5 xhigh
421
420
  ```
422
421
 
423
422
  </details>
@@ -477,7 +476,7 @@ vendor 一律当成 `work`,而且它只能逐次明确指定,永远不是 lane
477
476
  默认关闭;要用就在 `routing.local.yaml` 写
478
477
  `arbitrate: vote codex,claude,grok -`(从四家里任选 1-4 个评审),
479
478
  或改用 `exec` 厂商指向你自己的多模型审查闸脚本。完整工作笔记(含各评测的
480
- 但书)见 [`docs/model-capabilities-2026-07.md`](docs/model-capabilities-2026-07.md)。
479
+ 但书)见 [`docs/model-capabilities-2026-09.md`](docs/model-capabilities-2026-09.md)。
481
480
 
482
481
  ## ⚠️ 已知限制
483
482
 
@@ -491,6 +490,23 @@ vendor 一律当成 `work`,而且它只能逐次明确指定,永远不是 lane
491
490
 
492
491
  ## 📜 版本历程
493
492
 
493
+ ## v0.32.0 新功能
494
+
495
+ - **基于 AA 2026-09 快照全面重评路由。** Fable 5.1 和 Gemini 3.7 Flash 进入默认表,数据集中在新的日期化文档。
496
+ - **模型目录同步当前 CLI 接口。** 加入 Fable 5.1,移除 agy 已下架的 Gemini 3.5 Flash 项,并同步投票器。
497
+ - **Opus 5 仍可使用。** 它保留在 `long-context`,也能通过 `routing.local.yaml` 覆盖任意通道。
498
+
499
+ ## v0.31.0 新功能
500
+
501
+ - **目标预算默认不设上限。** `budget_jobs` 和 `budget_seconds` 现在以 JSON `null` 保存并显示为 `unlimited`;此前隐含的 8 个任务和 900 秒上限已移除。只有使用 `--budget-jobs N` 或 `--budget-seconds S` 才会启用硬性上限;重复失败保险丝不是预算,默认仍然启用。
502
+ - **管道中的目标状态不再误报失败。** `omnilane goal status` 的消费端提前关闭管道时,现在会以状态码 0 退出,而不是触发 `BrokenPipeError`,因此 `| head` 和 `| grep -q` 可在 `pipefail` 下正常工作。
503
+
504
+ ## v0.30.0 新功能
505
+
506
+ - **目标台账。** `omnilane goal open` 创建默认不限制作业数量和秒数的目标台账;`goal dispatch` 会在每个作业运行前检查调用方设置的作业数量或总耗时上限,以及默认启用的重复失败熔断器。`goal note` 保留调用方叙事,`goal status` 显示预算和每个作业记录,`goal close` 会写入 `goals/<id>/report.md`。
507
+ - **循环由调用方负责。** 打开目标的会话或用户负责选择、派发、审阅和收尾;omnilane 不会运行内置的规划模型。
508
+ - **doctor 检查。** `omnilane doctor` 现在会检查目标编排功能。
509
+
494
510
  ## v0.21.0 新功能
495
511
 
496
512
  - **显式选择会话模式。** 可使用 `dispatch --live` 要求常驻会话,或用 `--single-shot` 强制单次派发;对不支持实时会话的供应商,`--live` 会立即失败并列出可用供应商。
@@ -555,7 +571,7 @@ vendor 一律当成 `work`,而且它只能逐次明确指定,永远不是 lane
555
571
  的 Agentic Index 上大幅领先 Flash,而且 2026-07-30 降价后每任务成本只剩零头。
556
572
  Flash 只剩吞吐量优势——若你的循环受延迟限制,可在本机覆写把它调回第一。
557
573
  - **lane 注释不再放数字。**`routing.yaml` 只说明每条排序「为什么」成立;所有分数、
558
- 价格与吞吐量连同取数日期,一律放在 `docs/model-capabilities-2026-07.md`。数字过期
574
+ 价格与吞吐量连同取数日期,一律放在 `docs/model-capabilities-2026-09.md`。数字过期
559
575
  不再需要动路由表。
560
576
  - **新增 value profile**(在 `routing.local.yaml.example`):用约一个 Intelligence
561
577
  Index 分数,换每任务成本降三到四成。
@@ -601,7 +617,7 @@ vendor 一律当成 `work`,而且它只能逐次明确指定,永远不是 lane
601
617
  - **修复:`routing.local.yaml.example` 还指着已退场的模型**——起手配置里的
602
618
  `claude-opus-4-8` 全数改为 `claude-opus-5`(并按通道给对应档位),Gemini 3.5
603
619
  Flash 候选改为 3.6 Flash,与 0.10.0 以来的默认值一致。
604
- - **对照原始资料修正智能指数数字**(`docs/model-capabilities-2026-07.md`):
620
+ - **对照原始资料修正智能指数数字**(`docs/model-capabilities-2026-09.md`):
605
621
  那是指数点数不是百分比;补上 AA-Briefcase / GDPval-AA v2 对照,并记下两项与
606
622
  默认值相反的结果:Fable 5 在事实知识领先、GPT-5.6 Sol 在呈现质量领先。
607
623
 
@@ -638,7 +654,7 @@ vendor 一律当成 `work`,而且它只能逐次明确指定,永远不是 lane
638
654
 
639
655
  ## v0.9.0 新功能
640
656
 
641
- - **新增 5 个 OpenAI-compatible direct-API vendor** — `deepseek`、`zai`(GLM)、`mistral`、`groq`、`cerebras`,与 `openrouter` 同为免 CLI 通道(curl 加一把 `<VENDOR>_API_KEY`);`lib/common.sh` registry 一行即加一个。详见 [`docs/model-capabilities-2026-07.md`](docs/model-capabilities-2026-07.md)。
657
+ - **新增 5 个 OpenAI-compatible direct-API vendor** — `deepseek`、`zai`(GLM)、`mistral`、`groq`、`cerebras`,与 `openrouter` 同为免 CLI 通道(curl 加一把 `<VENDOR>_API_KEY`);`lib/common.sh` registry 一行即加一个。详见 [`docs/model-capabilities-2026-09.md`](docs/model-capabilities-2026-09.md)。
642
658
  - **fish shell 补全** — `omnilane completion fish | source`。
643
659
 
644
660
  ## v0.8.3 新功能