omnilane 0.34.0 → 0.42.1

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.
Files changed (42) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/CHANGELOG.md +71 -1
  4. package/README.ja.md +63 -33
  5. package/README.ko.md +63 -32
  6. package/README.md +147 -86
  7. package/README.zh-CN.md +61 -30
  8. package/README.zh-TW.md +124 -75
  9. package/VERSION +1 -1
  10. package/config/aa-model-policy.json +3046 -0
  11. package/docs/aa-model-coverage-2026-09-05.json +29204 -0
  12. package/docs/completion-wakeup.md +126 -0
  13. package/docs/model-capabilities-2026-09.md +380 -0
  14. package/docs/native-executor.md +264 -0
  15. package/docs/release-notes-0.42.1.md +32 -0
  16. package/hooks/routing-instruction.md +101 -40
  17. package/package.json +8 -2
  18. package/plugin.json +2 -2
  19. package/routing.local.yaml.example +8 -3
  20. package/routing.yaml +16 -16
  21. package/scripts/completion-wakeup.py +390 -0
  22. package/scripts/configure.sh +4 -4
  23. package/scripts/dispatch.sh +323 -32
  24. package/scripts/doctor.sh +55 -1
  25. package/scripts/jobs.sh +64 -17
  26. package/scripts/lib/aa_policy.py +473 -0
  27. package/scripts/lib/aa_retry.py +77 -0
  28. package/scripts/lib/common.sh +106 -1
  29. package/scripts/lib/job-worker.sh +314 -20
  30. package/scripts/lib/live-protocol.sh +147 -2
  31. package/scripts/lib/native.py +507 -0
  32. package/scripts/lib/normalize-claude-stream.py +72 -0
  33. package/scripts/lib/prepare-agy-mode.py +374 -0
  34. package/scripts/release-audit.sh +103 -0
  35. package/scripts/runners/run-claude.sh +81 -47
  36. package/scripts/runners/run-codex-live.py +462 -0
  37. package/scripts/runners/run-codex.sh +62 -3
  38. package/scripts/runners/run-gemini.sh +85 -10
  39. package/scripts/runners/run-grok-live.py +426 -0
  40. package/scripts/runners/run-grok.sh +117 -6
  41. package/scripts/runners/run-vote.sh +6 -3
  42. package/skills/omnilane/SKILL.md +217 -81
package/README.zh-TW.md CHANGED
@@ -30,7 +30,7 @@ Gemini CLI** 之類。每一個都只接一個模型家族,所以你交代的每
30
30
 
31
31
  **omnilane 做什麼。** 它給你的助手一張路由表。工作被分進**通道**——最難的實作、
32
32
  機械粗活、初篩、硬判斷、文字終審——每條通道指名對那件事最強(也最省)的模型。
33
- 助手保留自己本來就擅長的通道,其餘用你既有的登入,在背景丟給別家廠商的 CLI。
33
+ 助手依通道解析目標模型,再委派給能力相符的原生子代理或既有 CLI;同模型也仍須派工。
34
34
 
35
35
  **它不是什麼。** 不是 proxy、不是另一筆訂閱、不是又一個要顧的服務。它就是一張表
36
36
  加一支派工腳本,躲在你現有工具背後跑。`./install.sh --uninstall` 可完全清除。
@@ -86,7 +86,7 @@ flowchart LR
86
86
  - **`scripts/dispatch.sh [--vendor V] <通道> "<任務>"`** — 查表後以無頭方式
87
87
  呼叫對應廠商的 CLI。`--vendor` 會鎖定點名廠商,不做降級。
88
88
  - **`skills/omnilane/SKILL.md`** — 一份技能四個框架都能載入:
89
- 先認出自己是哪個模型,自己通道的活自己做,其餘派出去。
89
+ 先解析通道的目標模型,再透過相符的原生子代理或 CLI 派工。
90
90
  - **`omnilane mcp`** — 同一套路由改以 MCP stdio server 提供,
91
91
  給走 MCP 而非 skill 整合的宿主。
92
92
 
@@ -103,23 +103,23 @@ flowchart LR
103
103
 
104
104
  | 通道 | 首選模型 | 備選模型 | 用途 |
105
105
  |---|---|---|---|
106
- | 🔥 hardest-coding | Claude Fable 5.1 (xhigh) | GPT-5.6 Sol (xhigh) → Grok 4.6 → Gemini 3.7 Flash (High) | 最難的實作、深度除錯、正確性攸關的修改 |
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 Opus 5 (xhigh) | GPT-5.6 Sol (max) → Grok 4.6 | 架構裁決、深度推理、第二意見 |
110
- | ✒️ taste-final | Claude Fable 5.1 (high) | GPT-5.6 Sol (max) → Grok 4.6 → Gemini 3.7 Flash (High) | 對外文字、提示詞/文件潤飾、風格裁決 |
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) → Gemini 3.7 Flash (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) → Claude Haiku 4.5 | 高速多步驟工具迴圈、多模態檢查 |
115
- | 📡 live-search | Grok 4.6 | Gemini 3.7 Flash (High) → Claude Sonnet 5 (high) | 即時 X/網頁搜尋與社群脈絡 |
116
- | 🚰 coding-overflow | Grok 4.6 | Gemini 3.7 Flash (High) → Kimi K3 → Qwen3 Coder Plus → OpenCode | Codex 額度用完時的中量級編碼安全閥 |
106
+ | 🔥 hardest-coding | Claude Fable 5.1(max) | GPT-6 Astra(xhigh)→ Grok 4.6 → Gemini 3.8 Flash(High) | 最難的實作、深度除錯、正確性攸關的修改 |
107
+ | 🏗️ bulk-mechanical | GPT-5.6 Sol(high) | Gemini 3.8 Flash(High)→ Claude Sonnet 5(high) | 重構、搬遷、測試、大面積掃描等耐力工作 |
108
+ | 🧹 triage | GPT-5.6 Luna(high) | Gemini 3.8 Flash(Low)→ Claude Haiku 4.5 | 大量掃描、第一輪篩選 |
109
+ | ⚖️ hard-judgment | Claude Fable 5.1(xhigh) | GPT-6 Astra(xhigh)→ Grok 4.6 | 架構裁決、深度推理、第二意見 |
110
+ | ✒️ taste-final | Claude Fable 5.1(xhigh) | GPT-6 Astra(xhigh)→ Grok 4.6 → Gemini 3.8 Flash(High) | 對外文字與風格裁決;評測不等於審美證明 |
111
+ | 💬 consult | GPT-6 Astra(xhigh) | Claude Fable 5.1(xhigh)→ Grok 4.6 → Gemini 3.8 Flash(Medium) | 直接點名模型諮詢;保留 `--vendor` 避免降級 |
112
+ | 🎨 ui-draft | GPT-5.6 Sol(high) | Claude Fable 5.1(xhigh)→ Gemini 3.8 Flash(High) | 只有附設計系統/參考圖時做 UI 草稿;不把評測誇大成審美證明 |
113
+ | 📚 long-context | Gemini 3.8 Flash(Medium) | GPT-5.6 Terra(max)→ Claude Opus 5(medium) | 長文件整合;上下文容量本身不證明任務品質 |
114
+ | ⚡ fast-agentic | Gemini 3.8 Flash(Low) | GPT-5.6 Luna(high)→ Claude Haiku 4.5 | 高速多步驟工具迴圈、多模態檢查 |
115
+ | 📡 live-search | Grok 4.6 | Gemini 3.8 Flash(High)→ Claude Sonnet 5(high) | 即時 X/網頁搜尋;備援只有一般網搜,不等同 X 脈絡 |
116
+ | 🚰 coding-overflow | Grok 4.6 | Gemini 3.8 Flash(High)→ Kimi K3 → Qwen3 Coder Plus → OpenCode | 顯式 Codex 額度卸載;供應商失敗後不自動跨家重試 |
117
117
  | 🗳️ arbitrate | `off`(選配模型評審團) | — | 重大決定的內建意見評審團;預設停用,在 `routing.local.yaml` 啟用,每位評審每輪一次呼叫 |
118
118
 
119
119
  **備選模型**是候選鏈的下一位——首選那家的廠商 CLI 沒裝時,派工就降到它。每條
120
120
  通道都是這樣一條鏈;整條都沒裝時,通道自動降為 `off`。
121
121
 
122
- > **Fable 5.1 已進入預設——以及 Opus 5 仍適合放在哪裡。** 三方數據與 Opus override 寫在[常見問題](#-常見問題)。
122
+ > **Fable 5.1 與 Astra 現在領頭困難工作。** 同條件證據見[常見問題](#-常見問題)。
123
123
 
124
124
  ### 自然語言諮詢
125
125
 
@@ -131,21 +131,55 @@ flowchart LR
131
131
  - 點標準模型別名(例如 Opus)時,會鎖定技能表裡的確切模型家族。明確目標
132
132
  不存在或 CLI 不可用時會清楚失敗,不會暗中換廠商或模型家族。
133
133
 
134
+ ## 原生優先派工,保留終端相容性
135
+
136
+ 模型路由與執行器(executor)分開判定。`--executor auto` 是預設:只有呼叫端明示的
137
+ 結構化能力全部相符,才選原生子代理(native agent);一般終端沒有能力脈絡,
138
+ 就保留既有 CLI。`--executor cli` 強制原流程;`--executor native` 遇到能力缺漏或不符就報錯。
139
+ 同廠商不代表同模型;明確指定的廠商、模型及推理強度都保留。原生不符時,
140
+ 自動模式會說明 CLI 原因,只使用同一個已解析目標,不換廠商或模型。
141
+
142
+ ```sh
143
+ # 一般終端的預覽:不建立工作,也不呼叫供應商。
144
+ omnilane route --executor auto --dry-run hardest-coding "檢查這次變更"
145
+
146
+ # 呼叫端依工具契約準備共享繼承能力 JSON;完整格式見下方文件。
147
+ omnilane route --executor native --native-context /absolute/capability.json --workdir /absolute/repo hardest-coding "檢查這次變更"
148
+ # 接著由呼叫端啟動原生代理、等待結果,再登錄真實證據。
149
+ omnilane jobs --json complete-native JOB_ID /absolute/completion.json
150
+ omnilane jobs --json status JOB_ID
151
+ omnilane jobs --json result JOB_ID
152
+ omnilane jobs --json list --status pending
153
+ ```
154
+
155
+ 原生路由輸出的是「等待執行」交接 JSON,不會從 shell 啟動原生代理,也不代表任務成功。
156
+ Codex `collaboration.spawn_agent` 沒有沙箱、工具或工作目錄限制參數,會繼承父代理的工具與檔案系統權限。要求與同一能力列都必須明示 `shared-inherited`,工具陣列留空;`advise`/`work` 與工作目錄只是任務意圖,不是作業系統隔離。要求硬隔離時,自動模式保留同模型 CLI,強制原生則失敗。
157
+
158
+ 呼叫端以精確模型與推理強度啟動工作,最後登錄實際代理 ID、模型/推理強度/廠商/框架/後端、成敗、公開結果與證據。明示模型覆寫時使用 `fork_turns: "none"` 或有限的正整數歷史,不得搭配 `fork_turns: "all"`。路由已明示選中能力列中的精確模型時,可省略未知的呼叫端目前模型。重複登錄會被擋下;原生取消只改工作狀態,不發程序訊號,已啟動的代理由呼叫端另外停止。
159
+
160
+ 背景、持久、即時、具名 CLI 工作階段、sysops、不支援的隔離、投票/仲裁及多輪路徑
161
+ 仍走 CLI。原生只整合清單、狀態、結果、取消與完成登錄,未接 CLI 等待、重試、
162
+ 信箱或目標迴圈。原生協定需要 Python 3.9+;一般終端 CLI 保留相容。
163
+ 測試替身不等於真實原生驗收;主機 AGENTS 管理區塊只由父代理審查後同步。
164
+ 詳見[能力與完成格式、完整範例及限制](docs/native-executor.md)。
165
+
134
166
  <details>
135
- <summary><b>👉 哪些通道你自己跑?選你的主控模型</b></summary>
167
+ <summary><b>模型角色指引:仍須派工</b></summary>
136
168
 
137
169
  <br/>
138
170
 
139
- 上面那張表跟廠商無關——一條通道的*最佳*模型不會因為誰在主控而改變。會變的是
140
- 你哪些通道**自己做**(你本來就是那個模型,省一次呼叫)、哪些**派出去**。你 CLI 裡
141
- 的 `omnilane` 技能會自動套對的那一列,這裡是給人看的版本。
171
+ 通道的最佳模型不因主控是誰而改變。以下是角色指引,不是親自執行的豁免:
172
+ 即使模型相同,也要委派給子代理。呼叫端明示模型、推理強度、任務模式與工作目錄,
173
+ 並以空工具陣列及 `shared-inherited` 隔離和生命週期能力同列相符時,才採原生代理;否則走 CLI。
174
+ 主控負責編排與驗收,工作代理執行任務且不得再派工。
142
175
 
143
- - **Claude Code · Fable 5.1**——自己做:taste-final、hardest-coding。派出去:hard-judgment → Opus 5;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,並兼任 hardest-coding、hard-judgment、taste-final 的備援。首選人手在的話,最難的編碼/判斷/文字交給 Codex、Claude、Gemini;仍要驗證 API 簽章與引用事實。
148
- - **Antigravity · Gemini 3.7 Flash**——自己做:Medium 的 long-context/高速迴圈、High 的 bulk/overflow、Low 的 triage,並以 High 兼任 hardest-coding、taste-final、ui-draft、live-search 的備援。首選人手在的話,最難編碼/判斷/文字交給 Codex、Claude。
176
+ - **Claude Code · Fable 5.1**——品質敏感工作建議的提示詞層主控;這是角色,不是新通道或自動選模器。最難編碼用 max,判斷/文字用 xhigh;獨立 Codex 複核用 Astra,bulk 用 Sol,長文/高速工作用 Gemini 3.8 Flash,即時搜尋用 Grok。
177
+ - **Claude Code · Opus 5**——顯式點名時可做均衡型提示詞層主控與獨立複核(一般用 `high`,更深複核可選 `xhigh`),也保留為 long-context 備援;這是選配角色,不是新通道或 hard-judgment 預設。
178
+ - **Codex · Sol**——bulk-mechanical 與有參考限制的 ui-draft 委派並使用 high;最難編碼/判斷升級 Fable 或 Astra,長文/高速工作交 Gemini 3.8 Flash,即時搜尋交 Grok。
179
+ - **Codex · Astra**——提示詞層主控備位與獨立複核者;最難編碼/判斷與 consult/taste 預設用 xhigh,需要時可明確指定 `--vendor codex --effort max`;顯式 model/effort 永遠優先。
180
+ - **Codex · Terra**——用 max 接 Codex 的 long-context 備援;bulk 留給 Sol high,困難工作升級 Fable/Astra。
181
+ - **Grok Build · Grok 4.6**——委派 live-search、coding-overflow,並兼任 hardest-coding、hard-judgment、taste-final 的備援。首選人手在的話,最難的編碼/判斷/文字交給 Codex、Claude、Gemini;仍要驗證 API 簽章與引用事實。
182
+ - **Antigravity · Gemini 3.8 Flash**——long-context 用 Medium,fast-agentic/triage 用 Low,bulk/overflow/網搜備援用 High。不要把代理/編碼評測推論成審美或主控權。
149
183
 
150
184
  </details>
151
185
 
@@ -323,17 +357,13 @@ codex/claude/grok/gemini 自選 1-4 個評審。開了之後,同一個問題丟
323
357
 
324
358
  ## 🎭 模式
325
359
 
326
- - **advise(預設)** — 唯讀工作端。Codex 跑唯讀沙箱;Claude 只給
327
- Read/Glob/Grep;Grok 跑 plan 模式;Kimi 與 OpenCode 鎖各自的唯讀
328
- plan 模式;OpenRouter 天生只做 advise(純推論)。適合審查、提問、第二意見。
329
- - **work** — 允許改檔案,僅限你指定的 `--workdir`。Codex 給
330
- workspace-write 沙箱;Claude 自動接受編輯;Gemini 跑 accept-edits 模式。
331
- `openrouter` vendor 會明確拒絕 work 模式——改檔請走代理式 CLI vendor。
332
- - **sysops** — 等於 `work` 拿掉 vendor 沙箱,用於沙箱會擋掉的服務操作
333
- (`launchctl` 之類)。Codex 以 `-s danger-full-access` 執行;其他 vendor
334
- 一律當成一般 `work`。這等於把整台機器的存取權交給工作端,因此只能逐次
335
- 明確指定,永遠不能設成 lane 預設。只有在你親眼看到 `work` 因沙箱拒絕而
336
- 失敗時才動用它。
360
+ - **advise(預設)**:本機唯讀分析;供應商支援時可用原生網頁/搜尋工具。模型連線保留,修改工具受限;不同供應商的 X/網搜能力不視為等同。
361
+ - **work**:檔案與命令操作限制在明示的 `--workdir`,關閉代理工具對外連線,但保留模型連線。尚未支援的強制邊界會在呼叫模型前停止,不偷偷變成 sysops。
362
+ - **sysops**:每次派工明示選用,開放代理工具、檔案與網路存取;永遠不是通道預設值,任務須列明可執行操作。
363
+
364
+ CLI 省略 `--workdir` 時預設為呼叫端目前目錄;任務書仍應明示工作目錄。MCP `route`/`dry_run` 的 work 介面則另行要求明示 `workdir`。
365
+
366
+ Codex 與 Claude 的三種模式使用不同政策。Agy advise/sysops 使用獨立的每工作階段原生設定,不替換訂閱認證;Agy 1.1.27 work 已以四個經驗證工具及原生終端沙箱完成限定的新建/續接驗收:工作目錄內讀寫、修改、編譯及越界寫入拒絕通過。外部暫存/快取讀取也受限;每次啟動重寫明示設定,不宣稱設定全程不可變。另一次正式 work 即時/FIFO 兩輪驗收已通過前輪讀回、越界寫入拒絕及正常關閉,來源保持不變。Grok advise 使用原生工具允許/拒絕規則;Grok 1.0.13 的完整一次性 `plain` 路徑已驗證原生關鍵字搜尋、抓頁及寫入拒絕,使用內部網頁工具 ID 與每筆工作的 MCP 就緒狀態隔離,不關閉掛鉤。若 `CONTEXT_MODE_MCP_SENTINEL_DIR` 已設為非空值,會在呼叫模型前明確回報衝突,不覆寫原設定。原生子程序網路隔離僅支援 Linux,因此 macOS Grok work 仍保留閘門;Grok 即時模式仍須明示 sysops,此次 advise 結果不擴張到其他路徑。OpenRouter 維持僅 advise;其餘供應商不自動納入這份四供應商契約。證據範圍見[日期化執行驗收表](docs/model-capabilities-2026-09.md#f-mode-runtime-gate-2026-09-06)。
337
367
 
338
368
  ## 🔒 內建安全機制
339
369
 
@@ -366,7 +396,7 @@ codex/claude/grok/gemini 自選 1-4 個評審。開了之後,同一個問題丟
366
396
 
367
397
  ## 📬 即時信箱
368
398
 
369
- 即時信箱是 Claude 與 Gemini 可用的常駐背景派工,不是一次性派工。派工者以 `--background` 開啟後,執行中仍能補傳指示,並負責用 `jobs.sh close ID` 收尾。即使沒人處理,也不會永久存在:閒置上限或設定的整體工作逾時(`--job-timeout`)一到就會結束。
399
+ 即時信箱是常駐背景派工,不是一次性派工。Claude 與 Gemini 保留 `--background` 自動使用即時信箱的既有行為;Codex 與 Grok 預設維持一次性派工,只有明示 `--background --live` 才啟用,Grok 另須指定 `--mode sysops --workdir DIR`。派工者能補傳指示,並負責用 `jobs.sh close ID` 收尾;閒置上限或設定的整體工作逾時(`--job-timeout`)仍會使工作結束。
370
400
 
371
401
  ```bash
372
402
  scripts/dispatch.sh --background --vendor claude hard-judgment "檢查逾時測試失敗的原因"
@@ -378,7 +408,7 @@ scripts/jobs.sh close "$ID"
378
408
  scripts/jobs.sh retry "$ID" --background
379
409
  ```
380
410
 
381
- `watch` 追隨 `$JOB_DIR/events.jsonl`;`tail` 讀取公開的 `out.txt`。目前 Claude 與 Gemini 支援即時信箱;其他供應商會執行一般的一次性派工,stderr 與 `$JOB_DIR/mode-notice.txt` 都會留下提示。`--live` 會明確要求常駐工作階段,解析出的供應商不支援時立即失敗。`--single-shot` 即使遇到 Claude 或 Gemini 也會強制一次性派工。`--idle-timeout SECONDS` 設定閒置上限,預設 900 秒,設為 `0` 則停用。
411
+ `watch` 追隨 `$JOB_DIR/events.jsonl`;`tail` 讀取公開的 `out.txt`。Claude、Gemini、Codex 與 Grok 都支援即時信箱,但 Codex/Grok 自動選擇時仍是一次性派工,必須明示 `--live`。Grok 的 advise/work 即時請求會在啟動前停止,因為 ACP 未強制這些受限模式的邊界;一般 advise 採用一次性原生工具允許/拒絕規則。供應商不支援 `--live` 時立即失敗。`--single-shot` 對所有供應商強制一次性派工。`--idle-timeout SECONDS` 設定閒置上限,預設 900 秒,設為 `0` 則停用。
382
412
 
383
413
  閒置時不會發出 API 呼叫,也不會增加 API 費用。預設若 900 秒內沒有新信箱訊息或新結果事件,工作程序會自動收尾;整體工作逾時仍是外層上限。處理完成可提早執行 `close`。對已結束或不是即時信箱的工作使用 `jobs.sh send`,會明確報錯並失敗。送出後不需追蹤的工作、沒有即時支援的供應商,或必須從乾淨狀態重跑的情況都不適用;請使用新的派工,或在工作完成後使用 `retry`。
384
414
 
@@ -426,49 +456,32 @@ omnilane goal close "$GOAL_ID" --summary "結帳整合已穩定"
426
456
  </details>
427
457
 
428
458
  <details>
429
- <summary><b>Fable 5.1 已進入預設——以及 Opus 5 仍適合放在哪裡</b></summary>
459
+ <summary><b>為什麼困難工作現在由 Fable 5.1 與 Astra 領頭?</b></summary>
430
460
 
431
461
  <br/>
432
462
 
433
- Fable 5.1 現在領頭 `hardest-coding`、`taste-final`。同為 xhigh 時,它在智慧、
434
- 代理式工作與編碼都領先 Opus 5;Sol max 則保留為便宜許多的跨廠商判斷備援。
435
- `hard-judgment` 本身現在改以 Opus 5 xhigh 為預設:它能拿到 Fable 代理式分數
436
- 的 97.7%,成本卻只要 68%,幻覺率也更低——依這條車道自己的每成本準則,較
437
- 便宜的組態勝出。
438
-
439
- | 評測(AA,擷取於 2026-09-02) | Claude Fable 5.1 (xhigh) | Claude Opus 5 (xhigh) | GPT-5.6 Sol (max) |
440
- |---|---:|---:|---:|
441
- | 智慧 | 64.8 | 62.5 | 60.9 |
442
- | 代理式 | 59.8 | 58.4 | 57.8 |
443
- | 編碼 | 80.7 | 77.0 | 77.4 |
444
- | 幻覺率(越低越好) | .71 | **.60** | .92 |
445
- | AA 每任務成本 | $2.65 | $1.80 | **$0.95** |
446
-
447
- Fable 5.1 沒進 bulk 或 triage:每 token 價格是 Opus 5 的兩倍,而且每回合
448
- 消耗最多 Claude Code 訂閱額度。Opus 5 現在預設領頭 `hard-judgment`,並以
449
- medium 留在 `long-context`;也能透過 `~/.omnilane/routing.local.yaml`
450
- 放回任何通道——例如把 Fable 換回來:
451
-
452
- ```yaml
453
- hard-judgment: claude claude-fable-5-1 xhigh
454
- ```
463
+ 2026-09-05 更新用 AA v4.2 同檔位比較兩者:Fable/Astra 在 max 為
464
+ 57/55、xhigh 為 54/54;AA Briefcase 在 max 為 1666/1566、xhigh
465
+ 為 1657/1540。原生編碼代理比較中,Fable max 完成 70、每題 $9.18、
466
+ 耗時 24 分鐘;Astra max 完成 67、每題 $4.72、耗時 26.8 分鐘。因此
467
+ `hardest-coding` 用 Fable max,`hard-judgment`/`taste-final` 用 Fable
468
+ xhigh,Astra 則是 Codex 家族備援與獨立複核者。
469
+
470
+ 品質優先的提示詞層主控首選是 Fable max;Opus high/xhigh 是均衡型主控與
471
+ 獨立複核選項;Astra 則是沿用 Codex 額度的備位與複核者。這些都是角色建議,
472
+ 不是新增通道或自動主控選模器。Opus 也保留為 Claude 的 `long-context` 備援。
455
473
 
456
474
  </details>
457
475
 
458
476
  <details>
459
- <summary><b>Claude 那幾條通道為什麼用 <code>xhigh</code> 而不是 <code>max</code>?</b></summary>
477
+ <summary><b>為什麼最難編碼用 <code>max</code>,其他 Claude 通道用 <code>xhigh</code>?</b></summary>
460
478
 
461
479
  <br/>
462
480
 
463
- 因為推理檔位不是越高越好。Anthropic 官方把 `xhigh` 定為編碼與 agentic 工作的
464
- 起手檔位,`high` 是其他吃智力任務的下限,`max` 保留給「正確性重於成本」的場合。
465
- 第三方實測也一致:Vals.ai 的 Vibe Code Bench 上,Opus 5 在 `high` 拿 89.8%,
466
- `xhigh` 只有 88.3%、`max` 88.4%——最高檔傾向產出更繁複的解,反而更常出錯。
467
- 你的工作型態如果不同意,單條通道自己拉高:
468
-
469
- ```bash
470
- omnilane configure set hard-judgment "claude claude-opus-5 max"
471
- ```
481
+ 推理檔位依任務選,不預設越高一定越好。目前同條件比較與原生編碼證據支持
482
+ 正確性優先的 `hardest-coding` 用 max;`hard-judgment`、`taste-final`
483
+ 及具名 Fable 諮詢則以 xhigh 平衡品質與成本。顯式 `--model`/`--effort`
484
+ 永遠覆蓋這些通道路由預設。
472
485
 
473
486
  </details>
474
487
 
@@ -492,11 +505,11 @@ scripts/dispatch.sh --dry-run hardest-coding "…" # 完整解析後的計畫,
492
505
 
493
506
  <br/>
494
507
 
495
- 除非你明講要它改。派工預設是 `advise` 唯讀模式,而且是逐廠商實作的(唯讀沙箱、
496
- plan 模式,或只給唯讀工具集)。要改檔必須同時給 `--mode work` 和明確的
497
- `--workdir`。第三種模式 `--mode sysops` 等於 `work` 拿掉 vendor 沙箱,用於沙箱會
498
- 擋掉的服務操作(例如 `launchctl`);codex 以 `-s danger-full-access` 執行,其他
499
- vendor 一律當成 `work`,而且它只能逐次明確指定,永遠不是 lane 預設。
508
+ 除非你明講要它改。派工預設是 `advise`,以各廠商的唯讀沙箱或原生工具權限
509
+ 維持唯讀,並保留支援的網搜。一般修改使用 `--mode work` 與明確的 `--workdir`,
510
+ 關閉代理工具網路,但保留模型連線。`--mode sysops` 是 Codex、Claude、Grok、Agy
511
+ 各自獨立的完整權限政策,不是 work 的別名;只有任務明示允許超出 work 邊界的
512
+ 操作,例如服務管理,才逐次選用,永遠不是通道預設值。
500
513
  工作端也不能再往外派——深度守衛會用退出碼 86 拒絕巢狀派工,一道
501
514
  指令不可能失控變成一整串 AI 燒你的額度。
502
515
 
@@ -521,6 +534,40 @@ vendor 一律當成 `work`,而且它只能逐次明確指定,永遠不是 lane
521
534
 
522
535
  ## 📜 版本歷程
523
536
 
537
+ ## v0.42.1 新功能
538
+
539
+ - **修復 CI 測試資料。** 完整 Python discovery 現在會讓舊 routing 與 Grok readiness 測試明示 synthetic-human caller;production 的缺少身分拒絕、核准 registry SHA、向下分數閘、重試 lineage 與 skip 斷言都維持不變。
540
+ - **可攜式 lineage 證據。** encoded-effort Gemini spy 改用可攜式 Python 解譯器選擇,並驗證精確的 `--model gemini-3.8-flash-high` 參數組。AA 涵蓋仍是 78 個 scored target、1 個 scored reference-only 項目與 10 個 unknown configuration。
541
+ - **修補版升級。** npm 上架後可執行 `npm i -g omnilane@0.42.1`。既有 repo-symlink 安裝只要更新 checkout 並執行 `omnilane --version`;除非刻意重新接線,否則不要重跑 `./install.sh`。GitHub release 與 npm 上架仍是兩件事。
542
+
543
+ ## v0.42.0 新功能
544
+
545
+ - **原生優先執行。** 路由與執行已拆開:`--executor auto` 只在主機提供精確且相容的能力內容時使用呼叫端擁有的原生代理,否則維持同一組供應商/模型/努力程度走 CLI。原生 handoff 只是待辦工作,不代表任務完成;呼叫端仍須實際執行並另行寫入已驗證結果。
546
+ - **凍結的 exact-AA 向下派工。** 內附的 AA v4.2 政策會在每次供應商嘗試前,以目前 caller 與繼承上限進行閘控,產生精確子 caller 內容,並在重試時重新驗證,不繼承模型先前取得的人類豁免。78 個評分配置是政策輸入,不代表 78 個配置都能實際執行。
547
+ - **明示原生重用。** 重用既有 Codex 代理需要呼叫端已觀察到閒置、同意保留內容,且 runtime 身分完全相符;新代理容量耗盡時不會偷偷改成重用。完成紀錄是 caller attestation,不是上游模型身分認證,也不保證 cold start 一定有容量。
548
+ - **Codex 完成續驗。** `scripts/completion-wakeup.py` 將 run 綁定主控 thread 與 job 白名單,記錄排程器登錄、輪詢終態事件,並把送達與驗收分開後再關閉。這是定期 heartbeat 輪詢,不是即時 push;沒有支援的 callback 時,主控會直接持續等待。
549
+ - **封裝與升級。** npm 套件現在包含 AA 政策、原生/AA/喚醒輔助程式及兩份公開協定文件。npm 發布後可執行 `npm i -g omnilane@0.42.0`;既有程式庫連結式安裝只需更新至已發布版本並核對 `omnilane --version`,首次安裝或需要重新接線時才審核及執行 `./install.sh`。只有 GitHub 發布不代表 npm 已可下載。
550
+
551
+ ## v0.41.1 新功能
552
+
553
+ - **Astra 預設 xhigh。** `hardest-coding` 與 `hard-judgment` 的 Astra 預設改用 `xhigh`;需要時可明確指定 `--vendor codex --effort max`。供應商順序與其他模型的努力程度維持原樣;這不代表已實測節省 CLI 訂閱額度。
554
+
555
+ - **Python 3.9 相容性。** Agy 工作目錄政策的建立與清理改用 `Path.lstat()`,保留符號連結、inode 與並行替換保護。
556
+ - **隔離 CI 測試資料。** 嚴格 doctor 驗收補齊明示啟用外掛與目錄來源設定;設定缺少、停用或路徑不符仍會失敗。
557
+ - **可攜式離線 CI 測試資料。** 測試移除對操作者 HOME 的依賴,採用跨平台權限模式檢查,並依實際平台驗證 Linux/macOS 的即時工作限制。
558
+ - **Bash 3.2 的 Gemini 任務。** 保護空任務參數展開,同時保留 `set -u`、有值時的續接參數,以及既有模式與權限政策。
559
+ - **有時間上限的 Codex 即時關閉。** FIFO 背壓與部分寫入會保留位元組順序及未送出尾段,供限時關閉排空處理;若執行器提前退出,已接受但尚未轉送的排隊輸入仍會保留並回報失敗,不會靜默丟棄。其他供應商沿用原有轉送路徑。
560
+ - **npm 上架後升級。** 執行 `npm i -g omnilane@0.41.1`,或更新 checkout 後再跑 `./install.sh`。npm 另行發布,GitHub 發布不代表 npm 已上架。
561
+
562
+ ## v0.40.0 新功能
563
+
564
+ - **明確區分模式並修復 Grok 網頁工具。** advise 唯讀且保留支援的原生搜尋;work 限定明示 `--workdir` 並關閉代理工具網路;sysops 每次明示完整權限。Grok 完整一次性 `plain` advise 已取得真實搜尋、抓頁及寫入拒絕證據;macOS work 與受限即時模式仍保留閘門。
565
+ - **Codex 與 Grok 明示即時工作階段。** Codex work 與 Grok sysops 工作可用 `--background --live` 接續補傳與明確關閉;Codex/Grok 自動派工仍維持一次性,Claude/Gemini 則保留既有自動即時行為。Grok advise 因 ACP 沒有強制唯讀邊界,所以拒絕 `--live`。
566
+ - **有界且可觀察的關閉流程。** 能辨識 EOF 的能力探測、每筆工作的不可變 worker 快照、直譯器/SHA 來源、關閉期限與程序群組清理,能約束卡住或被終止的即時工作,但不宣稱是作業系統沙箱隔離。
567
+ - **完成通知與閒置判定修正。** 完成通知可處理截斷的 UTF-8 尾端;終態以持久 exit 紀錄為準;閒置時間只在完整結果事件後推進,不受任意串流流量干擾。
568
+ - **AA 驅動的模型覆蓋。** 12 條通道預設已納入 Fable 5.1、GPT-6 Astra 與 Gemini 3.8 Flash,同時保留既有供應商與明示模型覆寫。日期化 AA v4.2 覆蓋快照記錄 643 個榜單設定;模型出現在目錄不等於執行環境已驗證支援。
569
+ - **升級。** 執行 `npm i -g omnilane@0.40.0`,或更新 checkout 後再跑 `./install.sh`。
570
+
524
571
  ## v0.33.0
525
572
 
526
573
  - **四供應商續談派工。** `--thread NAME` 可讓固定供應商、模型、effort 與
@@ -608,6 +655,8 @@ vendor 一律當成 `work`,而且它只能逐次明確指定,永遠不是 lane
608
655
 
609
656
  ## v0.12.0 新功能
610
657
 
658
+ 以下保留當時版本的歷史說明。目前三種模式的契約以[模式](#-模式)為準,包含 0.40.0 獨立的完整權限 sysops 政策。
659
+
611
660
  - **`hardest-coding` 的 Sol 從 `max` 降到 `xhigh`**——在 AA 分檔位的 Coding Index
612
661
  上,Sol 的 xhigh 不但勝過自己的 max,也勝過所有 Claude 檔位,成本還少約三分之一。
613
662
  這種工作超過 xhigh 之後,多加的 effort 買到的是過度思考,不是正確率。
package/VERSION CHANGED
@@ -1 +1 @@
1
- 0.34.0
1
+ 0.42.1