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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +50 -1
- package/README.ja.md +78 -65
- package/README.ko.md +78 -64
- package/README.md +81 -66
- package/README.zh-CN.md +77 -61
- package/README.zh-TW.md +78 -62
- package/VERSION +1 -1
- package/bin/omnilane +8 -3
- package/hooks/routing-instruction.md +16 -7
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/routing.local.yaml.example +4 -4
- package/routing.yaml +22 -24
- package/scripts/configure.sh +3 -3
- package/scripts/doctor.sh +26 -0
- package/scripts/lib/goal-loop.sh +572 -678
- package/scripts/runners/run-vote.sh +3 -3
- package/skills/omnilane/SKILL.md +46 -38
package/README.zh-TW.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["
|
|
76
|
-
T -->|bulk-mechanical| C2["Codex — GPT-5.6
|
|
77
|
-
|
|
78
|
-
T -->|long-context| C4["Gemini — 3.
|
|
79
|
-
T -->|live-search| C5["Grok — 4.
|
|
75
|
+
T -->|hardest-coding| C1["Claude — Fable 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 |
|
|
107
|
-
| 🏗️ bulk-mechanical | GPT-5.6
|
|
108
|
-
| 🧹 triage | GPT-5.6 Luna (
|
|
109
|
-
| ⚖️ hard-judgment | Claude
|
|
110
|
-
| ✒️ taste-final | Claude
|
|
111
|
-
| 💬 consult |
|
|
112
|
-
| 🎨 ui-draft | GPT-5.6 Sol (xhigh) | Claude
|
|
113
|
-
| 📚 long-context | Gemini 3.
|
|
114
|
-
| ⚡ fast-agentic |
|
|
115
|
-
| 📡 live-search | Grok 4.
|
|
116
|
-
| 🚰 coding-overflow | Grok 4.
|
|
117
|
-
| 🗳️ arbitrate | off
|
|
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
|
-
> **
|
|
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
|
|
145
|
-
- **Claude Code · Opus 5
|
|
146
|
-
- **Codex · Sol
|
|
147
|
-
- **Codex · Terra
|
|
148
|
-
- **Grok Build · Grok 4.
|
|
149
|
-
- **Antigravity · Gemini
|
|
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。最難的編碼/判斷/文字交給 Codex、Claude、Gemini;仍要驗證 API 簽章與引用事實。
|
|
148
|
+
- **Antigravity · Gemini 3.7 Flash**——自己做:Medium 的 long-context/高速迴圈、High 的 bulk/overflow、Low 的 triage。最難編碼/判斷/文字交給 Codex、Claude;即時搜尋 → Grok。
|
|
150
149
|
|
|
151
150
|
</details>
|
|
152
151
|
|
|
@@ -378,6 +377,22 @@ scripts/jobs.sh retry "$ID" --background
|
|
|
378
377
|
|
|
379
378
|
閒置時不會發出 API 呼叫,也不會增加 API 費用。預設若 900 秒內沒有新信箱訊息或新結果事件,工作程序會自動收尾;整體工作逾時仍是外層上限。處理完成可提早執行 `close`。對已結束或不是即時信箱的工作使用 `jobs.sh send`,會明確報錯並失敗。送出後不需追蹤的工作、沒有即時支援的供應商,或必須從乾淨狀態重跑的情況都不適用;請使用新的派工,或在工作完成後使用 `retry`。
|
|
380
379
|
|
|
380
|
+
## 🎯 目標編排
|
|
381
|
+
|
|
382
|
+
`omnilane goal` 是工頭式工作台帳。迴圈由呼叫端負責,也就是開啟目標的代理工作階段或終端機前的人:派出一份工作,從完成信箱或 `omnilane jobs wait` 收回結果,判斷下一份工作,再重複執行。工作數與秒數預算預設都不設上限;只有傳入 `--budget-jobs N` 或 `--budget-seconds S` 時,才會啟用對應的硬上限。omnilane 只負責記帳;每次 goal dispatch 前會檢查呼叫端設定的上限與預設啟用的重複失敗熔斷器,工頭關閉目標時才彙整報告。
|
|
383
|
+
|
|
384
|
+
```bash
|
|
385
|
+
GOAL_ID="$(omnilane goal open "修好不穩定的結帳整合" \
|
|
386
|
+
--budget-jobs 4 --budget-seconds 900 --workdir /path/to/repo)"
|
|
387
|
+
JOB_ID="$(omnilane goal dispatch "$GOAL_ID" --mode work hardest-coding \
|
|
388
|
+
"重現結帳失敗,完成最小修正並驗證")"
|
|
389
|
+
omnilane jobs wait "$JOB_ID" --timeout 900
|
|
390
|
+
omnilane goal note "$GOAL_ID" "結帳整合測試已通過"
|
|
391
|
+
omnilane goal close "$GOAL_ID" --summary "結帳整合已穩定"
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
目標狀態存放在 `$OMNILANE_HOME/goals/<goal-id>/`。用 `goal status` 可查看預算用量、熔斷次數,以及每份工作陸續寫入的中繼資料與結束狀態。`goal close` 會寫入 `report.md` 並印出路徑。單一而且作法明確的工作直接派工即可;有傳入預算旗標時,該上限是硬限制,不代表保證完成。
|
|
395
|
+
|
|
381
396
|
## ❓ 常見問題
|
|
382
397
|
|
|
383
398
|
<details>
|
|
@@ -406,45 +421,29 @@ scripts/jobs.sh retry "$ID" --background
|
|
|
406
421
|
</details>
|
|
407
422
|
|
|
408
423
|
<details>
|
|
409
|
-
<summary><b>
|
|
424
|
+
<summary><b>Fable 5.1 已進入預設——以及 Opus 5 仍適合放在哪裡</b></summary>
|
|
410
425
|
|
|
411
426
|
<br/>
|
|
412
427
|
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
模型」清單裡,Fable 5 有自己獨立的一列,身分是**主控**:自己做 hard-judgment、
|
|
417
|
-
taste-final、最吃正確性的硬修。
|
|
418
|
-
|
|
419
|
-
**量測數據也不支持把它當工人。** Artificial Analysis 智慧指數(2026-07-24)
|
|
420
|
-
Opus 5(max)61 分、Fable 5(max)60 分——AA 自己的用詞是「實質打平」,而 Epoch AI
|
|
421
|
-
的能力指數排序還是反過來的(Fable 5 161、Opus 5 159)。綜合智力就當它平手。真正
|
|
422
|
-
拉開差距的是 agentic 專業產出,而且差很多:
|
|
423
|
-
|
|
424
|
-
| 評測 | Claude Opus 5 (max) | Claude Fable 5 | |
|
|
425
|
-
|---|---:|---:|---|
|
|
426
|
-
| AA-Briefcase(agentic 知識工作,Elo) | 1720 | 1574 | **+146** |
|
|
427
|
-
| GDPval-AA v2(Elo) | 1861 | 1747 | **+114** |
|
|
428
|
-
| AA-Briefcase 每任務成本 | $17.79 | $22.30 | **-20%** |
|
|
429
|
-
| API 單價,輸入/輸出 每 1M | $5 / $25 | $10 / $50 | **一半** |
|
|
430
|
-
|
|
431
|
-
Opus 5 的 max、xhigh、high 三個檔位包辦 AA-Briefcase 前三名,連 `high` 檔都在
|
|
432
|
-
不到一半的每任務成本下贏過 Fable 5。也就是說,Fable 5 貴一倍,卻換不到任何一條
|
|
433
|
-
通道所在意的優勢。
|
|
428
|
+
Fable 5.1 現在領頭 `hardest-coding`、`hard-judgment`、`taste-final`。
|
|
429
|
+
同為 xhigh 時,它在智慧、代理式工作與編碼都領先 Opus 5;Sol max 則保留為
|
|
430
|
+
便宜許多的跨廠商判斷備援。
|
|
434
431
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
432
|
+
| 評測(AA,擷取於 2026-09-02) | Claude Fable 5.1 (xhigh) | Claude Opus 5 (xhigh) | GPT-5.6 Sol (max) |
|
|
433
|
+
|---|---:|---:|---:|
|
|
434
|
+
| 智慧 | 64.8 | 62.5 | 60.9 |
|
|
435
|
+
| 代理式 | 59.8 | 58.4 | 57.8 |
|
|
436
|
+
| 編碼 | 80.7 | 77.0 | 77.4 |
|
|
437
|
+
| 幻覺率(越低越好) | .71 | **.60** | .92 |
|
|
438
|
+
| AA 每任務成本 | $2.65 | $1.80 | **$0.95** |
|
|
438
439
|
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
**這是成本與主迴圈策略的選擇,不是能力判決。** 設定選單的模型清單有列 Fable 5,
|
|
444
|
-
在 `routing.local.yaml` 寫一行就能覆寫預設:
|
|
440
|
+
Fable 5.1 沒進 bulk 或 triage:每 token 價格是 Opus 5 的兩倍,而且每回合
|
|
441
|
+
消耗最多 Claude Code 訂閱額度。Opus 5 仍是較低幻覺率、較低價格的 Claude
|
|
442
|
+
選項,並以 medium 留在 `long-context`;也能透過
|
|
443
|
+
`~/.omnilane/routing.local.yaml` 放回任何通道:
|
|
445
444
|
|
|
446
445
|
```yaml
|
|
447
|
-
|
|
446
|
+
hard-judgment: claude claude-opus-5 xhigh
|
|
448
447
|
```
|
|
449
448
|
|
|
450
449
|
</details>
|
|
@@ -501,7 +500,7 @@ vendor 一律當成 `work`,而且它只能逐次明確指定,永遠不是 lane
|
|
|
501
500
|
預設通道配置依據 Artificial Analysis 2026-07 快照(已對 AA 站上原始紀錄與
|
|
502
501
|
各廠官方定價頁交叉核對)加上公開對比評測;這些是意見不是定律——
|
|
503
502
|
設定選單和 `routing.local.yaml` 就是讓你不同意用的。完整工作筆記(含各評測的
|
|
504
|
-
但書)見 [`docs/model-capabilities-2026-
|
|
503
|
+
但書)見 [`docs/model-capabilities-2026-09.md`](docs/model-capabilities-2026-09.md)。
|
|
505
504
|
|
|
506
505
|
## ⚠️ 已知限制
|
|
507
506
|
|
|
@@ -515,6 +514,23 @@ vendor 一律當成 `work`,而且它只能逐次明確指定,永遠不是 lane
|
|
|
515
514
|
|
|
516
515
|
## 📜 版本歷程
|
|
517
516
|
|
|
517
|
+
## v0.32.0
|
|
518
|
+
|
|
519
|
+
- **依 AA 2026-09 快照全面重評路由。** Fable 5.1 與 Gemini 3.7 Flash 進入預設,數據集中在新的日期化文件。
|
|
520
|
+
- **模型目錄同步實際 CLI 軟體介面。** 加入 Fable 5.1,移除 agy 已下架的 Gemini 3.5 Flash 項目,並同步投票程式。
|
|
521
|
+
- **Opus 5 仍可使用。** 它留在 `long-context`,也能透過 `routing.local.yaml` 覆寫任何通道。
|
|
522
|
+
|
|
523
|
+
## v0.31.0 新功能
|
|
524
|
+
|
|
525
|
+
- **目標預算預設無上限。** `budget_jobs` 與 `budget_seconds` 現在會以 JSON `null` 儲存並顯示為 `unlimited`;原先隱含的 8 個工作與 900 秒上限已移除。使用 `--budget-jobs N` 或 `--budget-seconds S` 才會啟用硬性上限;重複失敗保險絲不是預算,預設仍會啟用。
|
|
526
|
+
- **管線中的目標狀態不再誤判失敗。** `omnilane goal status` 的消費端提早關閉管線時,現在會以狀態碼 0 結束,不再引發 `BrokenPipeError`,因此 `| head` 與 `| grep -q` 可在 `pipefail` 下正常運作。
|
|
527
|
+
|
|
528
|
+
## v0.30.0 新功能
|
|
529
|
+
|
|
530
|
+
- **目標台帳。** `omnilane goal open` 建立預設不限制工作數與秒數的目標台帳;`goal dispatch` 會在每份工作執行前檢查呼叫端設定的工作數或總經過時間上限,以及預設啟用的重複失敗熔斷器。`goal note` 保留呼叫端敘事,`goal status` 顯示預算與各工作紀錄,`goal close` 會寫入 `goals/<id>/report.md`。
|
|
531
|
+
- **迴圈由呼叫端掌握。** 開啟目標的工作階段或使用者負責選擇、派工、檢視與收尾;omnilane 不會執行內建的規劃模型。
|
|
532
|
+
- **doctor 檢查。** `omnilane doctor` 現在會檢查目標編排功能。
|
|
533
|
+
|
|
518
534
|
## v0.21.0 新功能
|
|
519
535
|
|
|
520
536
|
- **明確選擇工作階段模式。** 可用 `dispatch --live` 要求常駐工作階段,或以 `--single-shot` 強制單次派工;對不支援即時工作階段的供應商,`--live` 會立即失敗並列出可用供應商。
|
|
@@ -584,7 +600,7 @@ vendor 一律當成 `work`,而且它只能逐次明確指定,永遠不是 lane
|
|
|
584
600
|
的 Agentic Index 上大幅領先 Flash,而且 2026-07-30 砍價後每任務成本只剩零頭。
|
|
585
601
|
Flash 只剩吞吐量優勢——若你的迴圈受延遲限制,可在本機覆寫把它調回第一。
|
|
586
602
|
- **lane 註解不再放數字。**`routing.yaml` 只說明每條排序「為什麼」成立;所有分數、
|
|
587
|
-
價格與吞吐量連同取數日期,一律住在 `docs/model-capabilities-2026-
|
|
603
|
+
價格與吞吐量連同取數日期,一律住在 `docs/model-capabilities-2026-09.md`。數字過期
|
|
588
604
|
不再需要動路由表。
|
|
589
605
|
- **新增 value profile**(在 `routing.local.yaml.example`):用約一個 Intelligence
|
|
590
606
|
Index 分數,換每任務成本降三到四成。
|
|
@@ -630,7 +646,7 @@ vendor 一律當成 `work`,而且它只能逐次明確指定,永遠不是 lane
|
|
|
630
646
|
- **修正:`routing.local.yaml.example` 還指著已退場的模型**——起手設定檔裡的
|
|
631
647
|
`claude-opus-4-8` 全數改為 `claude-opus-5`(並依通道給對應檔位),Gemini 3.5
|
|
632
648
|
Flash 候選改為 3.6 Flash,與 0.10.0 以來的預設值一致。
|
|
633
|
-
- **對照原始資料修正智慧指數數字**(`docs/model-capabilities-2026-
|
|
649
|
+
- **對照原始資料修正智慧指數數字**(`docs/model-capabilities-2026-09.md`):
|
|
634
650
|
那是指數點數不是百分比;補上 AA-Briefcase / GDPval-AA v2 對照,並記下兩項與
|
|
635
651
|
預設值相反的結果:Fable 5 在事實知識領先、GPT-5.6 Sol 在呈現品質領先。
|
|
636
652
|
|
|
@@ -670,7 +686,7 @@ vendor 一律當成 `work`,而且它只能逐次明確指定,永遠不是 lane
|
|
|
670
686
|
- **五個 OpenAI-compatible direct-API vendor** — `deepseek`、`zai`(GLM)、
|
|
671
687
|
`mistral`、`groq`、`cerebras`,與 `openrouter` 同為免 CLI 通道(curl 加一把
|
|
672
688
|
`<VENDOR>_API_KEY`);`lib/common.sh` registry 一行即加一個。詳見
|
|
673
|
-
[`docs/model-capabilities-2026-
|
|
689
|
+
[`docs/model-capabilities-2026-09.md`](docs/model-capabilities-2026-09.md)。
|
|
674
690
|
- **fish shell 補全** — `omnilane completion fish | source`。
|
|
675
691
|
|
|
676
692
|
## v0.8.3 新功能
|
|
@@ -692,7 +708,7 @@ vendor 一律當成 `work`,而且它只能逐次明確指定,永遠不是 lane
|
|
|
692
708
|
同一條免 CLI 直連 API 路徑,對應 OpenAI-compatible 供應商:DeepSeek、Z.ai GLM、
|
|
693
709
|
Mistral、Groq、Cerebras。各只要 `curl` 加自己那把 `<VENDOR>_API_KEY`;僅限
|
|
694
710
|
advise/consult。端點、金鑰、預設模型由 `lib/common.sh` 一行 registry 定義。
|
|
695
|
-
詳見 [`docs/model-capabilities-2026-
|
|
711
|
+
詳見 [`docs/model-capabilities-2026-09.md`](docs/model-capabilities-2026-09.md)。
|
|
696
712
|
- **`opencode` vendor** — 透過 OpenCode 多供應商聚合 CLI 無頭派工
|
|
697
713
|
(`opencode run`)。advise 模式鎖定內建唯讀 `plan` agent;work 模式
|
|
698
714
|
用 `--auto`。加入預設 `coding-overflow` 鏈作為最後備援。
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.32.0
|
package/bin/omnilane
CHANGED
|
@@ -76,9 +76,14 @@ omnilane — one routing table, every harness
|
|
|
76
76
|
omnilane list effective routing table
|
|
77
77
|
omnilane route [--vendor V] [flags] LANE "TASK"
|
|
78
78
|
dispatch or consult a model
|
|
79
|
-
omnilane goal "TEXT" [--budget-jobs N] [--budget-seconds S] [--workdir DIR]
|
|
80
|
-
|
|
81
|
-
omnilane goal
|
|
79
|
+
omnilane goal open "TEXT" [--budget-jobs N] [--budget-seconds S] [--workdir DIR]
|
|
80
|
+
open a goal; budgets default to unlimited
|
|
81
|
+
omnilane goal dispatch GOAL_ID [dispatch.sh args...]
|
|
82
|
+
budget-gate and start one background job
|
|
83
|
+
omnilane goal note GOAL_ID "TEXT" append a timestamped foreman note
|
|
84
|
+
omnilane goal status GOAL_ID inspect budgets, fuse trips, and recorded jobs
|
|
85
|
+
omnilane goal close GOAL_ID [--summary "TEXT"]
|
|
86
|
+
write the final goal report
|
|
82
87
|
omnilane jobs [--json] COMMAND [ARGS] list, status, result, stats, recommend, wait, or audit
|
|
83
88
|
omnilane mcp start the MCP stdio server
|
|
84
89
|
omnilane completion bash|zsh|fish print a shell completion script
|
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
<!-- omnilane-routing:start -->
|
|
2
2
|
## omnilane — model routing (persistent reminder)
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
Implementation work — code edits, new files, tests, builds, deploys — is
|
|
5
|
+
dispatched by default, even when the lane's first available model is the one
|
|
6
|
+
you are running as. Consult the routing table with `omnilane list` (or
|
|
7
|
+
`scripts/dispatch.sh --list` inside the omnilane repo), classify the subtask
|
|
8
|
+
into a lane, then dispatch it headlessly:
|
|
9
9
|
|
|
10
10
|
omnilane route [--vendor V] [--mode work] [--workdir DIR] <lane> "<task>"
|
|
11
11
|
|
|
12
|
+
Advise mode is the default; pass `--mode work` only with an explicit
|
|
13
|
+
`--workdir`. The commander self-executes only reserved items: planning and
|
|
14
|
+
decomposition, writing task briefs, reviewing reports, acceptance checks,
|
|
15
|
+
replies to the operator, git commit/push, read-only verification, and fixes
|
|
16
|
+
of one line or less. "This lane is mine, so I'll do it myself" is not a
|
|
17
|
+
valid reason to skip dispatch.
|
|
18
|
+
|
|
12
19
|
If the user explicitly names Claude, Codex, Grok, Gemini, or a canonical model
|
|
13
20
|
alias, use the omnilane skill's consult rules and keep `--vendor` in the
|
|
14
21
|
dispatch; an explicit target must not silently fall back.
|
|
15
22
|
|
|
16
|
-
Lane definitions, modes, and safety rules live in the
|
|
17
|
-
|
|
23
|
+
Lane definitions, modes, per-model rows, and safety rules live in the
|
|
24
|
+
`omnilane` skill — load it and apply the row for the model you are running
|
|
25
|
+
as; legacy model-routing skill variants are retired. Workers must never
|
|
26
|
+
dispatch again (nested dispatch is refused, exit 86).
|
|
18
27
|
<!-- omnilane-routing:end -->
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omnilane",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.0",
|
|
4
4
|
"description": "One routing table, every harness — classify subtasks into lanes and dispatch each lane to the best vendor's agentic CLI (Codex, Claude, Gemini, Grok) using your existing subscription logins.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"omnilane": "bin/omnilane"
|
package/plugin.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://antigravity.google/schemas/v1/plugin.json",
|
|
3
3
|
"name": "omnilane",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.32.0",
|
|
5
5
|
"description": "One routing table, every harness: classify subtasks into lanes and auto-dispatch each lane to the best vendor CLI (Codex, Claude Code, Grok Build, Antigravity) with background jobs, depth guard, and serialized codex dispatch."
|
|
6
6
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
# consult is a multi-vendor direct-target chain. configure.sh intentionally
|
|
9
9
|
# skips it because that menu writes one candidate per lane. If overriding it,
|
|
10
10
|
# retain every vendor you want to address by name:
|
|
11
|
-
# consult: codex gpt-5.6-sol max | claude claude-
|
|
11
|
+
# consult: codex gpt-5.6-sol max | claude claude-fable-5-1 high | grok grok-4.6 - | gemini "Gemini 3.7 Flash (High)" -
|
|
12
12
|
|
|
13
13
|
# ── Starter profiles ─────────────────────────────────────────────
|
|
14
14
|
# Uncomment ONE block that matches what you actually subscribe to.
|
|
@@ -26,10 +26,10 @@
|
|
|
26
26
|
# live-search: off - -
|
|
27
27
|
# coding-overflow: off - -
|
|
28
28
|
|
|
29
|
-
# Profile: Claude Code (Fable 5) as the main loop — let Fable keep judgment/taste,
|
|
29
|
+
# Profile: Claude Code (Fable 5.1) as the main loop — let Fable keep judgment/taste,
|
|
30
30
|
# push only coding volume out to Codex.
|
|
31
|
-
# hard-judgment: claude claude-fable-5 high
|
|
32
|
-
# taste-final: claude claude-fable-5 high
|
|
31
|
+
# hard-judgment: claude claude-fable-5-1 high
|
|
32
|
+
# taste-final: claude claude-fable-5-1 high
|
|
33
33
|
|
|
34
34
|
# Profile: Codex-heavy (Sol main) — keep the hard lanes on Codex, Claude for taste.
|
|
35
35
|
# taste-final: claude claude-opus-5 high
|
package/routing.yaml
CHANGED
|
@@ -8,39 +8,37 @@
|
|
|
8
8
|
# same table degrades gracefully when you only subscribe to one or two vendors.
|
|
9
9
|
# Override any line in ~/.omnilane/routing.local.yaml (same format; local wins).
|
|
10
10
|
# Every benchmark score, price and throughput figure behind these orderings lives in
|
|
11
|
-
# docs/model-capabilities-2026-
|
|
11
|
+
# docs/model-capabilities-2026-09.md, with the date it was retrieved. The comments below
|
|
12
12
|
# deliberately carry no numbers: they state WHY a lane is ordered the way it is, which
|
|
13
13
|
# stays true for months, while the numbers move every few weeks. Change an ordering and
|
|
14
14
|
# you update the doc; a figure going stale should never need a routing-table edit.
|
|
15
|
-
# (Audited 2026-07-12; re-audited 2026-07-25, 2026-08-02 and 2026-
|
|
16
|
-
# defaults follow Artificial Analysis data, 2026-
|
|
15
|
+
# (Audited 2026-07-12; re-audited 2026-07-25, 2026-08-02, 2026-08-03, and 2026-09-02.)
|
|
16
|
+
# defaults follow Artificial Analysis data, 2026-09
|
|
17
17
|
# snapshot. Verified against AA site records + vendor pricing pages: Intelligence &
|
|
18
18
|
# Coding indexes and 7:2:1 blended prices all match (AA field price1mBlended7To2To1);
|
|
19
19
|
# coding cost-per-task is chart-only (not independently reconstructed). Prices are
|
|
20
20
|
# standard short-context API tier — on subscription CLIs treat $ as relative ranking.
|
|
21
21
|
# Your own job outcomes (~/.omnilane/jobs/) outrank these priors; edit lanes to match.
|
|
22
22
|
|
|
23
|
-
hardest-coding:
|
|
24
|
-
bulk-mechanical: codex gpt-5.6-
|
|
25
|
-
triage:
|
|
26
|
-
hard-judgment:
|
|
27
|
-
taste-final:
|
|
28
|
-
consult:
|
|
29
|
-
ui-draft:
|
|
30
|
-
long-context:
|
|
31
|
-
fast-agentic:
|
|
32
|
-
live-search:
|
|
33
|
-
coding-overflow: grok grok-4.
|
|
34
|
-
arbitrate:
|
|
23
|
+
hardest-coding: claude claude-fable-5-1 xhigh | codex gpt-5.6-sol xhigh # ordered on coding capability: the leading Claude tier wins both coding components; Sol remains the established Codex-harness value fallback
|
|
24
|
+
bulk-mechanical: codex gpt-5.6-sol high | gemini "Gemini 3.7 Flash (High)" - | claude claude-sonnet-5 high # ordered on endurance per dollar: Sol dominates Terra within Codex; current Flash is the faster, cheaper middle fallback; Sonnet preserves subscription quota
|
|
25
|
+
triage: codex gpt-5.6-luna high | gemini "Gemini 3.7 Flash (Low)" - | claude claude-haiku-4-5 - # ordered on cost per task at usable intelligence: Luna high buys a meaningful quality lift cheaply; Flash and Haiku are low-cost cross-vendor fallbacks
|
|
26
|
+
hard-judgment: claude claude-fable-5-1 xhigh | codex gpt-5.6-sol max | grok grok-4.6 - # ordered on agentic knowledge work: Fable leads the Claude field; Sol stays ahead of Grok because Grok effort is ignored and its reproduced row is unknown
|
|
27
|
+
taste-final: claude claude-fable-5-1 high | codex gpt-5.6-sol max # ordered on prose and polish: Fable leads Opus on intelligence and factual breadth; Sol is the cross-vendor fallback
|
|
28
|
+
consult: codex gpt-5.6-sol max | claude claude-fable-5-1 high | grok grok-4.6 - | gemini "Gemini 3.7 Flash (High)" - # direct named-model chain uses the strongest current Claude and Flash slots; keep --vendor to prevent fallback
|
|
29
|
+
ui-draft: codex gpt-5.6-sol xhigh | claude claude-fable-5-1 high # ordered for drafts with a design system or reference images: Sol leads measured multimodal and coding evidence; Fable follows for polish
|
|
30
|
+
long-context: gemini "Gemini 3.7 Flash (Medium)" - | codex gpt-5.6-terra max | claude claude-opus-5 medium # ordered on long-context reasoning, then cost and throughput: Flash leads; Terra matches its long-context result; Opus is the cheaper Claude fallback
|
|
31
|
+
fast-agentic: gemini "Gemini 3.7 Flash (Medium)" - | codex gpt-5.6-luna high # ordered on interactive tool-loop latency: Flash gives up little agentic quality for far faster first output; Luna high is the low-latency Codex fallback
|
|
32
|
+
live-search: grok grok-4.6 - | off # native X and web search lane; no real substitute
|
|
33
|
+
coding-overflow: grok grok-4.6 - | gemini "Gemini 3.7 Flash (High)" - | kimi kimi-k3 - | qwen qwen3-coder-plus - | opencode - - | off # coding relief ordered by capability and value: Grok has the lowest frontier hallucination rate; Flash is the cheapest strong coder here; revisit the best-value Qwen tier when its CLI alias can be verified
|
|
34
|
+
arbitrate: off - - # opinion panel remains opt-in because each voter and round consumes quota
|
|
35
35
|
# Enable: `arbitrate: vote codex,claude,grok -` (any 1-4 of codex/claude/grok/gemini)
|
|
36
36
|
# Debate round (each voter rebuts the others): set the effort field to 2.
|
|
37
37
|
# Custom gate: `arbitrate: exec /path/to/script -`
|
|
38
|
-
# Claude Fable 5
|
|
39
|
-
#
|
|
40
|
-
#
|
|
41
|
-
#
|
|
42
|
-
#
|
|
43
|
-
#
|
|
44
|
-
#
|
|
45
|
-
# taste-final: claude claude-fable-5 high
|
|
46
|
-
# in ~/.omnilane/routing.local.yaml.
|
|
38
|
+
# Claude Fable 5.1 is in the judgment, taste, and hardest-coding defaults because
|
|
39
|
+
# it leads Opus 5 on every Artificial Analysis axis at the same effort.
|
|
40
|
+
# It is not in bulk or triage: it prices at twice Opus 5 per token and consumes
|
|
41
|
+
# the most subscription quota per turn. Opus 5 remains the lower-hallucination,
|
|
42
|
+
# lower-price Claude choice and can return to any lane via
|
|
43
|
+
# ~/.omnilane/routing.local.yaml, for example:
|
|
44
|
+
# hard-judgment: claude claude-opus-5 xhigh
|
package/scripts/configure.sh
CHANGED
|
@@ -151,10 +151,10 @@ esac
|
|
|
151
151
|
# Dynamic/API catalogs stay curated — "c" always accepts an exact model ID.
|
|
152
152
|
CODEX_MODELS=("gpt-5.6" "gpt-5.6-sol" "gpt-5.6-terra" "gpt-5.6-luna" "gpt-5.5" "gpt-5.4" "gpt-5.4-mini" "gpt-5.3-codex-spark")
|
|
153
153
|
CODEX_EFFORTS=("xhigh" "max" "ultra" "high" "medium" "low" "minimal" "none")
|
|
154
|
-
CLAUDE_MODELS=("default" "best" "fable" "opus" "sonnet" "haiku" "opus[1m]" "sonnet[1m]" "opusplan" "claude-fable-5" "claude-opus-5" "claude-sonnet-5" "claude-opus-4-8" "claude-opus-4-7" "claude-opus-4-6" "claude-opus-4-5-20251101" "claude-sonnet-4-6" "claude-sonnet-4-5-20250929" "claude-haiku-4-5" "claude-haiku-4-5-20251001")
|
|
154
|
+
CLAUDE_MODELS=("default" "best" "fable" "opus" "sonnet" "haiku" "opus[1m]" "sonnet[1m]" "opusplan" "claude-fable-5" "claude-fable-5-1" "claude-opus-5" "claude-sonnet-5" "claude-opus-4-8" "claude-opus-4-7" "claude-opus-4-6" "claude-opus-4-5-20251101" "claude-sonnet-4-6" "claude-sonnet-4-5-20250929" "claude-haiku-4-5" "claude-haiku-4-5-20251001")
|
|
155
155
|
CLAUDE_EFFORTS=("max" "xhigh" "high" "medium" "low" "-")
|
|
156
|
-
GEMINI_MODELS=("gemini-3.
|
|
157
|
-
GROK_MODELS=("grok-4.
|
|
156
|
+
GEMINI_MODELS=("gemini-3.7-flash-high" "gemini-3.7-flash-medium" "gemini-3.7-flash-low" "gemini-3.6-flash-high" "gemini-3.6-flash-medium" "gemini-3.6-flash-low" "gemini-3.1-pro-high" "gemini-3.1-pro-low" "claude-sonnet-4-6" "claude-opus-4-6-thinking" "gpt-oss-120b-medium")
|
|
157
|
+
GROK_MODELS=("grok-4.6" "headroom-grok-build" "grok-4.3-official")
|
|
158
158
|
KIMI_MODELS=("kimi-k3" "kimi-k2.7-code" "kimi-k2.5")
|
|
159
159
|
QWEN_MODELS=("qwen3.7-max" "qwen3.7-plus" "qwen3.6-plus" "qwen3.5-plus" "qwen3-max-2026-01-23" "qwen3-coder-next" "qwen3-coder-plus" "qwen3-coder-flash")
|
|
160
160
|
# OpenCode models use provider/model form; OpenRouter models use catalog slugs.
|
package/scripts/doctor.sh
CHANGED
|
@@ -31,6 +31,7 @@ done
|
|
|
31
31
|
REPO="${OMNILANE_DOCTOR_REPO:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}"
|
|
32
32
|
OMNILANE_HOME="${OMNILANE_HOME:-$HOME/.omnilane}"
|
|
33
33
|
PROBE_SCRIPT="${OMNILANE_PROVIDER_PROBE_SCRIPT:-$REPO/scripts/provider-probe.sh}"
|
|
34
|
+
GOAL_LOOP="${OMNILANE_DOCTOR_GOAL_LOOP:-$REPO/scripts/lib/goal-loop.sh}"
|
|
34
35
|
PASS_COUNT=0
|
|
35
36
|
WARN_COUNT=0
|
|
36
37
|
FAIL_COUNT=0
|
|
@@ -123,6 +124,31 @@ else
|
|
|
123
124
|
report PASS state "$OMNILANE_HOME is accessible"
|
|
124
125
|
fi
|
|
125
126
|
|
|
127
|
+
goals_store="$OMNILANE_HOME/goals"
|
|
128
|
+
if [[ ! -f "$GOAL_LOOP" || -L "$GOAL_LOOP" ]]; then
|
|
129
|
+
report FAIL goal-orchestrator "$GOAL_LOOP must be a regular file"
|
|
130
|
+
elif ! /bin/bash -n "$GOAL_LOOP" 2>/dev/null; then
|
|
131
|
+
report FAIL goal-orchestrator "$GOAL_LOOP has invalid bash syntax"
|
|
132
|
+
elif [[ -L "$goals_store" || ( -e "$goals_store" && ! -d "$goals_store" ) ]]; then
|
|
133
|
+
report FAIL goal-orchestrator "$goals_store must be a real directory, not a symlink or file"
|
|
134
|
+
elif [[ -d "$goals_store" ]]; then
|
|
135
|
+
goals_mode="$(stat -f '%Lp' "$goals_store" 2>/dev/null || true)"
|
|
136
|
+
if [[ ! "$goals_mode" =~ ^[0-7]{3,4}$ ]]; then
|
|
137
|
+
goals_mode="$(stat -c '%a' "$goals_store" 2>/dev/null || true)"
|
|
138
|
+
fi
|
|
139
|
+
if [[ "$goals_mode" =~ ^0?700$ ]]; then
|
|
140
|
+
report PASS goal-orchestrator "goal-loop.sh parses; goals store mode is $goals_mode"
|
|
141
|
+
elif [[ -n "$goals_mode" ]]; then
|
|
142
|
+
report WARN goal-orchestrator \
|
|
143
|
+
"goal-loop.sh parses; goals store mode is $goals_mode, owner-only 700 is safer"
|
|
144
|
+
else
|
|
145
|
+
report WARN goal-orchestrator \
|
|
146
|
+
"goal-loop.sh parses; could not determine goals store permissions"
|
|
147
|
+
fi
|
|
148
|
+
else
|
|
149
|
+
report PASS goal-orchestrator "goal-loop.sh parses; goals store is not present yet"
|
|
150
|
+
fi
|
|
151
|
+
|
|
126
152
|
completion_plugin_state() {
|
|
127
153
|
local config_dir state
|
|
128
154
|
config_dir="${CLAUDE_CONFIG_DIR:-${HOME:-}/.claude}"
|