omnilane 0.7.0 → 0.8.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/CHANGELOG.md CHANGED
@@ -6,6 +6,39 @@ semantic version tags.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.8.0] - 2026-07-18
10
+
11
+ ### Added
12
+
13
+ - Two new dispatch vendors: `kimi` (Moonshot Kimi Code CLI, binary `kimi`,
14
+ override `KIMI_BIN`) and `qwen` (Alibaba Qwen Code CLI, binary `qwen`,
15
+ override `QWEN_BIN`). Both runners follow the uniform
16
+ `MODE WORKDIR MODEL EFFORT PROMPT_FILE OUTPUT_FILE` contract: advise stays
17
+ read-only (kimi `--plan`; qwen default approvals), work auto-approves
18
+ (kimi `-y`; qwen `--approval-mode yolo`), API-key env is stripped so the
19
+ CLIs use their own subscription logins, and empty output is a failure.
20
+ - `coding-overflow` now falls back grok → kimi → qwen before `off`, so the
21
+ quota relief valve works with any one of the three vendors installed.
22
+ - Configurator and bash completion know the new vendors; `--vendor kimi|qwen`
23
+ pins them directly. The `vote` panel still accepts the original four
24
+ vendors only.
25
+ - Both new runners are contract-tested (argv construction, exit codes,
26
+ empty-output failure) against fake binaries; real-model end-to-end runs
27
+ are pending community feedback — failures surface loudly, never as a
28
+ silent rc=0.
29
+
30
+ ## [0.7.1] - 2026-07-18
31
+
32
+ ### Changed
33
+
34
+ - Routing defaults refreshed against 2026-07 model data (Artificial Analysis
35
+ Coding Agent Index v1.1, vendor announcements): `hardest-coding` first
36
+ choice moves from GPT-5.6 Sol `xhigh` to `max` — Sol (max) scores 80, the
37
+ current state of the art, retiring the earlier xhigh-beats-max snapshot.
38
+ - Claude Opus 4.8 fallbacks on `hardest-coding` and `hard-judgment` move from
39
+ `high` to `xhigh` effort, following Anthropic's published guidance to use
40
+ extra effort for difficult tasks and long-running asynchronous work.
41
+
9
42
  ## [0.7.0] - 2026-07-17
10
43
 
11
44
  ### Added
@@ -196,8 +229,10 @@ semantic version tags.
196
229
  - Initial shared routing table, cross-vendor dispatcher, runners, installer,
197
230
  and baseline lint fixes.
198
231
 
199
- [Unreleased]: https://github.com/Seraphim0916/omnilane/compare/v0.7.0...HEAD
232
+ [Unreleased]: https://github.com/Seraphim0916/omnilane/compare/v0.8.0...HEAD
200
233
 
234
+ [0.8.0]: https://github.com/Seraphim0916/omnilane/compare/v0.7.1...v0.8.0
235
+ [0.7.1]: https://github.com/Seraphim0916/omnilane/compare/v0.7.0...v0.7.1
201
236
  [0.7.0]: https://github.com/Seraphim0916/omnilane/compare/v0.6.0...v0.7.0
202
237
  [0.6.0]: https://github.com/Seraphim0916/omnilane/compare/v0.5.1...v0.6.0
203
238
  [0.5.1]: https://github.com/Seraphim0916/omnilane/compare/v0.5.0...v0.5.1
package/README.ja.md CHANGED
@@ -20,6 +20,28 @@
20
20
 
21
21
  ---
22
22
 
23
+ ## v0.8.0 の新機能
24
+
25
+ - **2 つの新ディスパッチベンダー** — `kimi`(Moonshot Kimi Code CLI)と
26
+ `qwen`(Alibaba Qwen Code CLI)が統一 runner 契約で加わりました:
27
+ advise は読み取り専用、work は自動承認、API キー環境変数を除去して
28
+ CLI 自身のサブスクリプションログインを使用、空出力は明示的な失敗。
29
+ `--vendor kimi|qwen` で直接指名できます。
30
+ - **coding-overflow にフォールバックチェーン** — クォータ逃し弁が
31
+ grok → kimi → qwen → `off` の順にフォールバックし、3 ベンダーの
32
+ いずれか 1 つで動作します。runner はフェイクバイナリで契約テスト済み。
33
+ 実モデルでの報告を歓迎します。
34
+
35
+ ## v0.7.1 の新機能
36
+
37
+ - **ルーティング表を更新(2026-07 モデルデータ)** — hardest-coding の第一候補を
38
+ GPT-5.6 Sol **max** に変更。Artificial Analysis Coding Agent Index v1.1 で
39
+ Sol (max) が 80 点の現行最高を記録し、旧「xhigh が max を上回る」スナップ
40
+ ショットを置き換えました。
41
+ - **Claude バックアップを強化** — hardest-coding と hard-judgment の
42
+ Claude Opus 4.8 バックアップを **xhigh** に変更。難しいタスクと長時間作業には
43
+ extra effort を推奨する Anthropic 公式ガイダンスに従います。
44
+
23
45
  ## v0.7.0 の新機能
24
46
 
25
47
  - **ディスパッチを事前にプレビュー** — `--dry-run` は解決済みの実行計画
@@ -108,17 +130,17 @@ flowchart LR
108
130
 
109
131
  | レーン | 第一候補 | バックアップ | 用途 |
110
132
  |---|---|---|---|
111
- | 🔥 hardest-coding | GPT-5.6 Sol (xhigh) | Claude Opus 4.8 (high) | 最難関の実装、根本原因デバッグ、正確性が要の変更 |
133
+ | 🔥 hardest-coding | GPT-5.6 Sol (max) | Claude Opus 4.8 (xhigh) | 最難関の実装、根本原因デバッグ、正確性が要の変更 |
112
134
  | 🏗️ bulk-mechanical | GPT-5.6 Terra (max) | Claude Sonnet 5 (high) | リファクタ、移行、テスト、大規模スイープ |
113
135
  | 🧹 triage | GPT-5.6 Luna (medium) | Gemini 3.5 Flash (Low) | 大量の一次スクリーニング |
114
- | ⚖️ hard-judgment | GPT-5.6 Sol (max) | Claude Opus 4.8 (high) | アーキテクチャ裁定、深い推論、セカンドオピニオン |
136
+ | ⚖️ hard-judgment | GPT-5.6 Sol (max) | Claude Opus 4.8 (xhigh) | アーキテクチャ裁定、深い推論、セカンドオピニオン |
115
137
  | ✒️ taste-final | Claude Opus 4.8 (high) | GPT-5.6 Sol (max) | 対外文章、prompt/ドキュメント推敲、スタイル最終審 |
116
138
  | 💬 consult | 明示指定したベンダー/モデル | —(フォールバックなし) | 自然言語で直接相談。`--vendor` を必ず維持 |
117
139
  | 🎨 ui-draft | GPT-5.6 Sol (xhigh) | Claude Opus 4.8 (high) | デザインシステム/参考画像がある場合の UI ドラフト |
118
140
  | 📚 long-context | Gemini 3.1 Pro (High) | Claude Opus 4.8 (high) | 100 万トークン級の長文統合——分析専用、agentic ループ禁止 |
119
141
  | ⚡ fast-agentic | Gemini 3.5 Flash (High) | GPT-5.6 Luna (high) | 高速なマルチステップ agentic ループ、マルチモーダル確認 |
120
142
  | 📡 live-search | Grok 4.5 | —(off) | リアルタイム X/ウェブ検索とソーシャル文脈 |
121
- | 🚰 coding-overflow | Grok 4.5 | —(off) | Codex クォータ逼迫時の中級コーディング逃し弁 |
143
+ | 🚰 coding-overflow | Grok 4.5 | Kimi K3 → Qwen3 Coder Plus | Codex クォータ逼迫時の中級コーディング逃し弁 |
122
144
  | 🗳️ arbitrate | off(オプトイン) | — | 内蔵オピニオンパネル(重大な判断用)——デフォルト無効。`routing.local.yaml` で有効化;投票者×ラウンドごとに 1 コール消費 |
123
145
 
124
146
  **バックアップ**はチェーンの次の候補——第一候補のベンダー CLI が未インストールの
package/README.ko.md CHANGED
@@ -20,6 +20,28 @@
20
20
 
21
21
  ---
22
22
 
23
+ ## v0.8.0 새 기능
24
+
25
+ - **새 디스패치 벤더 2종** — `kimi`(Moonshot Kimi Code CLI)와
26
+ `qwen`(Alibaba Qwen Code CLI)이 통일 runner 계약으로 합류:
27
+ advise 는 읽기 전용, work 는 자동 승인, API 키 환경 변수를 제거해
28
+ CLI 자체 구독 로그인을 사용, 빈 출력은 명시적 실패.
29
+ `--vendor kimi|qwen` 으로 직접 지정할 수 있습니다.
30
+ - **coding-overflow 폴백 체인** — 쿼터 안전 밸브가 grok → kimi → qwen
31
+ → `off` 순으로 폴백해 세 벤더 중 하나만 설치돼 있어도 동작합니다.
32
+ runner 는 페이크 바이너리로 계약 테스트 완료. 실제 모델 사용 보고를
33
+ 환영합니다.
34
+
35
+ ## v0.7.1 새 기능
36
+
37
+ - **라우팅 테이블 갱신(2026-07 모델 데이터)** — hardest-coding 1순위를
38
+ GPT-5.6 Sol **max** 로 변경. Artificial Analysis Coding Agent Index v1.1 에서
39
+ Sol (max) 이 80점으로 현행 최고를 기록해, 기존 「xhigh 가 max 보다 낫다」
40
+ 스냅샷을 대체합니다.
41
+ - **Claude 백업 강화** — hardest-coding 과 hard-judgment 의 Claude Opus 4.8
42
+ 백업을 **xhigh** 로 변경. 어려운 작업과 장시간 작업에 extra effort 를
43
+ 권장하는 Anthropic 공식 가이드를 따릅니다.
44
+
23
45
  ## v0.7.0 새 기능
24
46
 
25
47
  - **디스패치를 먼저 미리보기** — `--dry-run` 은 완전히 해석된 실행 계획(vendor,
@@ -108,17 +130,17 @@ flowchart LR
108
130
 
109
131
  | 레인 | 1순위 모델 | 백업 | 용도 |
110
132
  |---|---|---|---|
111
- | 🔥 hardest-coding | GPT-5.6 Sol (xhigh) | Claude Opus 4.8 (high) | 가장 어려운 구현, 근본 원인 디버깅, 정확성이 핵심인 수정 |
133
+ | 🔥 hardest-coding | GPT-5.6 Sol (max) | Claude Opus 4.8 (xhigh) | 가장 어려운 구현, 근본 원인 디버깅, 정확성이 핵심인 수정 |
112
134
  | 🏗️ bulk-mechanical | GPT-5.6 Terra (max) | Claude Sonnet 5 (high) | 리팩터링, 마이그레이션, 테스트, 대량 스윕 |
113
135
  | 🧹 triage | GPT-5.6 Luna (medium) | Gemini 3.5 Flash (Low) | 대량 1차 선별 |
114
- | ⚖️ hard-judgment | GPT-5.6 Sol (max) | Claude Opus 4.8 (high) | 아키텍처 중재, 깊은 추론, 세컨드 오피니언 |
136
+ | ⚖️ hard-judgment | GPT-5.6 Sol (max) | Claude Opus 4.8 (xhigh) | 아키텍처 중재, 깊은 추론, 세컨드 오피니언 |
115
137
  | ✒️ taste-final | Claude Opus 4.8 (high) | GPT-5.6 Sol (max) | 대외 문장, prompt/문서 다듬기, 스타일 최종심 |
116
138
  | 💬 consult | 명시적으로 지정한 벤더/모델 | —(폴백 없음) | 자연어 직접 상담. `--vendor` 를 반드시 유지 |
117
139
  | 🎨 ui-draft | GPT-5.6 Sol (xhigh) | Claude Opus 4.8 (high) | 디자인 시스템/참고 이미지가 있을 때의 UI 초안 |
118
140
  | 📚 long-context | Gemini 3.1 Pro (High) | Claude Opus 4.8 (high) | 100만 토큰급 장문 통합——분석 전용, agentic 루프 금지 |
119
141
  | ⚡ fast-agentic | Gemini 3.5 Flash (High) | GPT-5.6 Luna (high) | 빠른 멀티스텝 agentic 루프, 멀티모달 확인 |
120
142
  | 📡 live-search | Grok 4.5 | —(off) | 실시간 X/웹 검색과 소셜 맥락 |
121
- | 🚰 coding-overflow | Grok 4.5 | —(off) | Codex 쿼터 소진 시 중급 코딩 안전 밸브 |
143
+ | 🚰 coding-overflow | Grok 4.5 | Kimi K3 → Qwen3 Coder Plus | Codex 쿼터 소진 시 중급 코딩 안전 밸브 |
122
144
  | 🗳️ arbitrate | off(옵트인) | — | 내장 의견 패널(중대한 결정용)——기본 비활성. `routing.local.yaml` 에서 활성화;투표자×라운드마다 1콜 소모 |
123
145
 
124
146
  **백업**은 체인의 다음 후보입니다——1순위 벤더 CLI 가 설치되지 않았을 때
package/README.md CHANGED
@@ -20,6 +20,29 @@ Every subtask goes to the model that is actually best at it — across<br/>
20
20
 
21
21
  ---
22
22
 
23
+ ## What's new in v0.8.0
24
+
25
+ - **Two new dispatch vendors** — `kimi` (Moonshot Kimi Code CLI) and `qwen`
26
+ (Alibaba Qwen Code CLI) join the vendor set with the uniform runner
27
+ contract: advise stays read-only, work auto-approves, API-key env is
28
+ stripped so the CLIs use their own subscription logins, and empty output
29
+ is a loud failure. Pin them with `--vendor kimi|qwen`.
30
+ - **coding-overflow grows a chain** — the quota relief valve now falls back
31
+ grok → kimi → qwen before `off`, so it works with any one of the three
32
+ vendors installed. Runners are contract-tested against fake binaries;
33
+ real-model reports welcome.
34
+
35
+ ## What's new in v0.7.1
36
+
37
+ - **Routing refresh (2026-07 model data)** — hardest-coding now dispatches
38
+ GPT-5.6 Sol at **max** effort: Artificial Analysis Coding Agent Index v1.1
39
+ scores Sol (max) at 80, the current state of the art, retiring the older
40
+ xhigh-beats-max snapshot.
41
+ - **Claude backups sharpened** — the Claude Opus 4.8 fallback on
42
+ hardest-coding and hard-judgment moves to **xhigh** effort, following
43
+ Anthropic's guidance to use extra effort for difficult tasks and
44
+ long-running work.
45
+
23
46
  ## What's new in v0.7.0
24
47
 
25
48
  - **Preview any dispatch first** — `--dry-run` prints the fully resolved plan
@@ -109,17 +132,17 @@ flowchart LR
109
132
 
110
133
  | Lane | First choice | Backup | When |
111
134
  |---|---|---|---|
112
- | 🔥 hardest-coding | GPT-5.6 Sol (xhigh) | Claude Opus 4.8 (high) | Hardest implementation, deep root-cause debug, correctness-critical edits |
135
+ | 🔥 hardest-coding | GPT-5.6 Sol (max) | Claude Opus 4.8 (xhigh) | Hardest implementation, deep root-cause debug, correctness-critical edits |
113
136
  | 🏗️ bulk-mechanical | GPT-5.6 Terra (max) | Claude Sonnet 5 (high) | Refactors, migrations, tests, review sweeps — mechanical endurance |
114
137
  | 🧹 triage | GPT-5.6 Luna (medium) | Gemini 3.5 Flash (Low) | High-volume scans, first-pass filtering |
115
- | ⚖️ hard-judgment | GPT-5.6 Sol (max) | Claude Opus 4.8 (high) | Architecture arbitration, deep reasoning, second opinions |
138
+ | ⚖️ hard-judgment | GPT-5.6 Sol (max) | Claude Opus 4.8 (xhigh) | Architecture arbitration, deep reasoning, second opinions |
116
139
  | ✒️ taste-final | Claude Opus 4.8 (high) | GPT-5.6 Sol (max) | User-facing prose, prompt/doc polish, style arbitration |
117
140
  | 💬 consult | Explicit named vendor/model | — (no fallback) | Direct natural-language consultation; always keep `--vendor` |
118
141
  | 🎨 ui-draft | GPT-5.6 Sol (xhigh) | Claude Opus 4.8 (high) | UI drafts only WITH a design system / reference images |
119
142
  | 📚 long-context | Gemini 3.1 Pro (High) | Claude Opus 4.8 (high) | 1M-token synthesis — analysis only, never agentic loops |
120
143
  | ⚡ fast-agentic | Gemini 3.5 Flash (High) | GPT-5.6 Luna (high) | Fast multi-step agentic loops, multimodal checks |
121
144
  | 📡 live-search | Grok 4.5 | — (off) | Realtime X/web search and social context |
122
- | 🚰 coding-overflow | Grok 4.5 | (off) | Codex-quota relief valve for mid-tier coding |
145
+ | 🚰 coding-overflow | Grok 4.5 | Kimi K3 → Qwen3 Coder Plus | Codex-quota relief valve for mid-tier coding |
123
146
  | 🗳️ 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 |
124
147
 
125
148
  The **backup** is the next candidate in the lane's `routing.yaml` chain — what
package/README.zh-CN.md CHANGED
@@ -20,6 +20,24 @@
20
20
 
21
21
  ---
22
22
 
23
+ ## v0.8.0 新功能
24
+
25
+ - **两个新派工 vendor** — `kimi`(Moonshot Kimi Code CLI)与 `qwen`
26
+ (Alibaba Qwen Code CLI)加入,沿用统一 runner 契约:advise 只读、
27
+ work 自动批准、剥除 API key 环境变量改用 CLI 自身订阅登录、空输出
28
+ 视为失败。可用 `--vendor kimi|qwen` 直接指定。
29
+ - **coding-overflow 新增备选链** — 额度溢流道改为 grok → kimi → qwen
30
+ 再到 `off`,三家装任一家即可用。runner 以假可执行文件完成契约测试;
31
+ 欢迎反馈真实模型实测结果。
32
+
33
+ ## v0.7.1 新功能
34
+
35
+ - **路由表更新(2026-07 模型数据)** — hardest-coding 首选改为 GPT-5.6 Sol
36
+ **max** 档位:Artificial Analysis Coding Agent Index v1.1 测得 Sol (max)
37
+ 80 分为当前最高,替换旧的「xhigh 胜 max」快照。
38
+ - **Claude 备选升档** — hardest-coding 与 hard-judgment 的 Claude Opus 4.8
39
+ 备选改为 **xhigh**,依 Anthropic 官方对困难任务与长时间工作的建议。
40
+
23
41
  ## v0.7.0 新功能
24
42
 
25
43
  - **先预览再派工** — `--dry-run` 打印完整解析后的派工计划(vendor、模型、
@@ -99,17 +117,17 @@ flowchart LR
99
117
 
100
118
  | 通道 | 首选模型 | 备选模型 | 用途 |
101
119
  |---|---|---|---|
102
- | 🔥 hardest-coding | GPT-5.6 Sol (xhigh) | Claude Opus 4.8 (high) | 最难的实现、深度调试、正确性攸关的修改 |
120
+ | 🔥 hardest-coding | GPT-5.6 Sol (max) | Claude Opus 4.8 (xhigh) | 最难的实现、深度调试、正确性攸关的修改 |
103
121
  | 🏗️ bulk-mechanical | GPT-5.6 Terra (max) | Claude Sonnet 5 (high) | 重构、迁移、测试、大面积扫描——机械耐力活 |
104
122
  | 🧹 triage | GPT-5.6 Luna (medium) | Gemini 3.5 Flash (Low) | 高量初筛、第一轮过滤 |
105
- | ⚖️ hard-judgment | GPT-5.6 Sol (max) | Claude Opus 4.8 (high) | 架构仲裁、深度推理、第二意见 |
123
+ | ⚖️ hard-judgment | GPT-5.6 Sol (max) | Claude Opus 4.8 (xhigh) | 架构仲裁、深度推理、第二意见 |
106
124
  | ✒️ taste-final | Claude Opus 4.8 (high) | GPT-5.6 Sol (max) | 对外文字、prompt 与文档打磨、风格终审 |
107
125
  | 💬 consult | 明确指定的厂商/模型 | —(不降级) | 自然语言直接咨询;必须保留 `--vendor` |
108
126
  | 🎨 ui-draft | GPT-5.6 Sol (xhigh) | Claude Opus 4.8 (high) | 有设计规范/参考图时的 UI 出稿;开放式视觉品味交给 taste-final |
109
127
  | 📚 long-context | Gemini 3.1 Pro (High) | Claude Opus 4.8 (high) | 百万 token 长文整合——仅限分析,不派 agentic 长链 |
110
128
  | ⚡ fast-agentic | Gemini 3.5 Flash (High) | GPT-5.6 Luna (high) | 快速多步骤 agentic 循环、多模态检查 |
111
129
  | 📡 live-search | Grok 4.5 | —(off) | 实时 X/网络搜索与社群脉络 |
112
- | 🚰 coding-overflow | Grok 4.5 | —(off) | Codex 额度吃紧时的中量级编码溢流道;事实性声明须另行查证 |
130
+ | 🚰 coding-overflow | Grok 4.5 | Kimi K3 → Qwen3 Coder Plus | Codex 额度吃紧时的中量级编码溢流道;事实性声明须另行查证 |
113
131
  | 🗳️ arbitrate | off(可选评审团) | — | 内置意见评审团,重大决定用——默认关闭,要用在 `routing.local.yaml` 打开;每评审每轮烧一次额度 |
114
132
 
115
133
  **备选模型**是候选链的下一位——首选那家的厂商 CLI 没装时,派发就降到它。
package/README.zh-TW.md CHANGED
@@ -20,6 +20,24 @@
20
20
 
21
21
  ---
22
22
 
23
+ ## v0.8.0 新功能
24
+
25
+ - **兩個新派工 vendor** — `kimi`(Moonshot Kimi Code CLI)與 `qwen`
26
+ (Alibaba Qwen Code CLI)加入,沿用統一 runner 契約:advise 唯讀、
27
+ work 自動核准、剝除 API key 環境變數改用 CLI 自身訂閱登入、空輸出
28
+ 視為失敗。可用 `--vendor kimi|qwen` 直接點名。
29
+ - **coding-overflow 長出備援鏈** — 額度溢流道改為 grok → kimi → qwen
30
+ 再到 `off`,三家裝任一家即可用。runner 以假執行檔完成契約測試;
31
+ 歡迎回報真實模型實測結果。
32
+
33
+ ## v0.7.1 新功能
34
+
35
+ - **路由表更新(2026-07 模型數據)** — hardest-coding 首選改為 GPT-5.6 Sol
36
+ **max** 檔位:Artificial Analysis Coding Agent Index v1.1 測得 Sol (max)
37
+ 80 分為現任最高,汰換舊的「xhigh 勝 max」快照。
38
+ - **Claude 備援升檔** — hardest-coding 與 hard-judgment 的 Claude Opus 4.8
39
+ 備援改為 **xhigh**,依 Anthropic 官方對困難任務與長時間工作的建議。
40
+
23
41
  ## v0.7.0 新功能
24
42
 
25
43
  - **先預覽再派工** — `--dry-run` 印出完整解析後的派工計畫(vendor、模型、
@@ -99,17 +117,17 @@ flowchart LR
99
117
 
100
118
  | 通道 | 首選模型 | 備選模型 | 用途 |
101
119
  |---|---|---|---|
102
- | 🔥 hardest-coding | GPT-5.6 Sol (xhigh) | Claude Opus 4.8 (high) | 最難的實作、深度除錯、正確性攸關的修改 |
120
+ | 🔥 hardest-coding | GPT-5.6 Sol (max) | Claude Opus 4.8 (xhigh) | 最難的實作、深度除錯、正確性攸關的修改 |
103
121
  | 🏗️ bulk-mechanical | GPT-5.6 Terra (max) | Claude Sonnet 5 (high) | 重構、搬遷、測試、大面積掃描——機械耐力活 |
104
122
  | 🧹 triage | GPT-5.6 Luna (medium) | Gemini 3.5 Flash (Low) | 高量初篩、第一輪過濾 |
105
- | ⚖️ hard-judgment | GPT-5.6 Sol (max) | Claude Opus 4.8 (high) | 架構仲裁、深度推理、第二意見 |
123
+ | ⚖️ hard-judgment | GPT-5.6 Sol (max) | Claude Opus 4.8 (xhigh) | 架構仲裁、深度推理、第二意見 |
106
124
  | ✒️ taste-final | Claude Opus 4.8 (high) | GPT-5.6 Sol (max) | 對外文字、prompt 與文件打磨、風格終審 |
107
125
  | 💬 consult | 明確點名的廠商/模型 | —(不降級) | 自然語言直接諮詢;必須保留 `--vendor` |
108
126
  | 🎨 ui-draft | GPT-5.6 Sol (xhigh) | Claude Opus 4.8 (high) | 有設計規範/參考圖時的 UI 出稿;開放式視覺品味交給 taste-final |
109
127
  | 📚 long-context | Gemini 3.1 Pro (High) | Claude Opus 4.8 (high) | 百萬 token 長文整合——僅限分析,不派 agentic 長鏈 |
110
128
  | ⚡ fast-agentic | Gemini 3.5 Flash (High) | GPT-5.6 Luna (high) | 快速多步驟 agentic 迴圈、多模態檢查 |
111
129
  | 📡 live-search | Grok 4.5 | —(off) | 即時 X/網路搜尋與社群脈絡 |
112
- | 🚰 coding-overflow | Grok 4.5 | —(off) | Codex 額度吃緊時的中量級編碼溢流道;事實性宣稱須另行查證 |
130
+ | 🚰 coding-overflow | Grok 4.5 | Kimi K3 → Qwen3 Coder Plus | Codex 額度吃緊時的中量級編碼溢流道;事實性宣稱須另行查證 |
113
131
  | 🗳️ arbitrate | off(選配評審團) | — | 內建意見評審團,重大決定用——預設關閉,要用在 `routing.local.yaml` 開;每評審每輪燒一次額度 |
114
132
 
115
133
  **備選模型**是候選鏈的下一位——首選那家的廠商 CLI 沒裝時,派工就降到它。
package/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.0
1
+ 0.8.0
@@ -64,7 +64,7 @@ _omnilane() {
64
64
  route|dispatch)
65
65
  case "$prev" in
66
66
  --mode) words="advise work" ;;
67
- --vendor) words="codex claude grok gemini exec vote" ;;
67
+ --vendor) words="codex claude grok gemini kimi qwen exec vote" ;;
68
68
  --effort) words="low medium high xhigh max" ;;
69
69
  --workdir)
70
70
  COMPREPLY=()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnilane",
3
- "version": "0.7.0",
3
+ "version": "0.8.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/routing.yaml CHANGED
@@ -12,17 +12,17 @@
12
12
  # standard short-context API tier — on subscription CLIs treat $ as relative ranking.
13
13
  # Your own job outcomes (~/.omnilane/jobs/) outrank these priors; edit lanes to match.
14
14
 
15
- hardest-coding: codex gpt-5.6-sol xhigh | claude claude-opus-4-8 high # AA coding 78.35; xhigh beats max (77.39) at lower cost verified
15
+ hardest-coding: codex gpt-5.6-sol max | claude claude-opus-4-8 xhigh # AA Coding Agent Index v1.1: Sol (max) 80 = SOTA (2026-07-09, Codex harness); Claude xhigh per Anthropic guidance for difficult tasks
16
16
  bulk-mechanical: codex gpt-5.6-terra max | claude claude-sonnet-5 high | gemini "Gemini 3.5 Flash (High)" - # Terra 76.66 ~= Fable-class at a fraction of the cost
17
17
  triage: codex gpt-5.6-luna medium | gemini "Gemini 3.5 Flash (Low)" - | claude claude-haiku-4-5 - # high-volume scans
18
- hard-judgment: codex gpt-5.6-sol max | claude claude-opus-4-8 high # Sol max Intelligence 58.9 — second only to Fable 5 (59.9, fallback composite)
18
+ hard-judgment: codex gpt-5.6-sol max | claude claude-opus-4-8 xhigh # Sol max Intelligence 59 — second only to Fable 5 (2026-07-09 AA); Claude xhigh per Anthropic guidance for difficult tasks
19
19
  taste-final: claude claude-opus-4-8 high | codex gpt-5.6-sol max # user-facing prose, prompt/doc polish, Chinese phrasing, style arbitration
20
20
  consult: codex gpt-5.6-sol max | claude claude-opus-4-8 high | grok grok-4.5 - | gemini "Gemini 3.1 Pro (High)" - # direct named-model consultation; use --vendor to prevent fallback
21
21
  ui-draft: codex gpt-5.6-sol xhigh | claude claude-opus-4-8 high # only with a design system / reference images; open-ended visual taste -> taste-final
22
22
  long-context: gemini "Gemini 3.1 Pro (High)" - | claude claude-opus-4-8 high | codex gpt-5.6-sol high # 1M-token synthesis ONLY — never agentic loops (AA agentic 21.4)
23
23
  fast-agentic: gemini "Gemini 3.5 Flash (High)" - | codex gpt-5.6-luna high # speed + agentic tool loops
24
24
  live-search: grok grok-4.5 - | off # native X/web search lane; no real substitute
25
- coding-overflow: grok grok-4.5 - | off # codex-quota relief valve: mid-tier coding (AA 72.45); verify factual claims (hallucination 0.54)
25
+ coding-overflow: grok grok-4.5 - | kimi kimi-k3 - | qwen qwen3-coder-plus - | off # codex-quota relief valve: mid-tier coding; verify factual claims (grok hallucination-prone). kimi/qwen model fields are CLI aliases — adjust to your login.
26
26
  arbitrate: off - - # opinion panel is OPT-IN: it costs one call per voter per round.
27
27
  # Enable: `arbitrate: vote codex,claude,grok -` (any 1-4 of codex/claude/grok/gemini)
28
28
  # Debate round (each voter rebuts the others): set the effort field to 2.
@@ -16,6 +16,8 @@ CLAUDE_MODELS=("claude-opus-4-8" "claude-fable-5" "claude-sonnet-5" "claude-haik
16
16
  CLAUDE_EFFORTS=("max" "xhigh" "high" "medium" "low" "-")
17
17
  GEMINI_MODELS=("Gemini 3.1 Pro (High)" "Gemini 3.1 Pro (Low)" "Gemini 3.5 Flash (High)" "Gemini 3.5 Flash (Medium)" "Gemini 3.5 Flash (Low)")
18
18
  GROK_MODELS=("grok-4.5" "grok-4.3")
19
+ KIMI_MODELS=("kimi-k3" "kimi-k2.7-code")
20
+ QWEN_MODELS=("qwen3-coder-plus" "qwen3-coder-flash")
19
21
 
20
22
  custom_value_is_safe() {
21
23
  case "$1" in
@@ -74,7 +76,7 @@ while true; do
74
76
  echo "$(msgf cfg_pick_range "${#LANES[@]}")"; continue
75
77
  fi
76
78
  lane="${LANES[$((n - 1))]}"
77
- vendor="$(pick "$(msgf cfg_vendor_for "$lane")" codex claude grok gemini "vote (multi-model panel)" "exec (your own script/gate)" off)"
79
+ vendor="$(pick "$(msgf cfg_vendor_for "$lane")" codex claude grok gemini kimi qwen "vote (multi-model panel)" "exec (your own script/gate)" off)"
78
80
  [[ "$vendor" == exec* ]] && vendor="exec"
79
81
  [[ "$vendor" == vote* ]] && vendor="vote"
80
82
  if [[ "$vendor" == "off" ]]; then
@@ -86,6 +88,8 @@ while true; do
86
88
  claude) model="$(pick "$(msg cfg_model)" "${CLAUDE_MODELS[@]}")"; effort="$(pick "$(msg cfg_effort)" "${CLAUDE_EFFORTS[@]}")" ;;
87
89
  gemini) model="$(pick "$(msg cfg_model)" "${GEMINI_MODELS[@]}")"; effort="-" ;;
88
90
  grok) model="$(pick "$(msg cfg_model)" "${GROK_MODELS[@]}")"; effort="-" ;;
91
+ kimi) model="$(pick "$(msg cfg_model)" "${KIMI_MODELS[@]}")"; effort="-" ;;
92
+ qwen) model="$(pick "$(msg cfg_model)" "${QWEN_MODELS[@]}")"; effort="-" ;;
89
93
  vote) while true; do
90
94
  count="$(pick "$(msg cfg_voters_count)" "1" "2" "3" "4")"
91
95
  [[ "$count" =~ ^[1-4]$ ]] && break
@@ -52,7 +52,7 @@ flags:
52
52
  before any provider call or job state
53
53
  --mode advise|work advise (read-only, default) or work (may edit files)
54
54
  --workdir DIR working directory handed to the vendor CLI
55
- --vendor V pin one configured vendor (codex|claude|grok|gemini)
55
+ --vendor V pin one configured vendor (codex|claude|grok|gemini|kimi|qwen)
56
56
  --model M override the routed model
57
57
  --effort E override the routed effort
58
58
  --timeout SECONDS cap each CLI call (default 600)
@@ -363,7 +363,7 @@ validate_routing() {
363
363
  lane_invalid=1
364
364
  break
365
365
  fi
366
- if ! [[ "$vendor" =~ ^(codex|claude|grok|gemini|exec|off)$ ]]; then
366
+ if ! [[ "$vendor" =~ ^(codex|claude|grok|gemini|kimi|qwen|exec|off)$ ]]; then
367
367
  printf 'FAIL %s unknown-vendor=%s\n' "$lane" "$vendor"
368
368
  lane_invalid=1
369
369
  break
@@ -489,8 +489,8 @@ TASK="$2"
489
489
  # A typo like --mode advice must not fall through to the write-enabled branch.
490
490
  [[ "$MODE" == "advise" || "$MODE" == "work" ]] || { echo "omnilane: invalid --mode (advise|work)" >&2; exit 2; }
491
491
  if [[ -n "$OVERRIDE_VENDOR" ]] &&
492
- ! [[ "$OVERRIDE_VENDOR" =~ ^(codex|claude|grok|gemini)$ ]]; then
493
- echo "omnilane: invalid vendor (codex|claude|grok|gemini)" >&2
492
+ ! [[ "$OVERRIDE_VENDOR" =~ ^(codex|claude|grok|gemini|kimi|qwen)$ ]]; then
493
+ echo "omnilane: invalid vendor (codex|claude|grok|gemini|kimi|qwen)" >&2
494
494
  exit 2
495
495
  fi
496
496
 
package/scripts/jobs.sh CHANGED
@@ -132,7 +132,7 @@ read_job_pid() {
132
132
 
133
133
  parse_stats_metadata() {
134
134
  local value="$1"
135
- local metadata_re='^\{"lane":"([a-z][a-z0-9-]*)","vendor":"(codex|claude|grok|gemini|exec)"(,|})'
135
+ local metadata_re='^\{"lane":"([a-z][a-z0-9-]*)","vendor":"(codex|claude|grok|gemini|kimi|qwen|exec)"(,|})'
136
136
  STATS_LANE=""
137
137
  STATS_VENDOR=""
138
138
  [[ "$value" =~ $metadata_re ]] || return 1
@@ -143,7 +143,7 @@ parse_stats_metadata() {
143
143
  parse_audit_metadata() {
144
144
  local value="$1" metadata_re
145
145
  local json_string='([^"\\]|\\["\\/bfnrt]|\\u[0-9a-fA-F]{4})*'
146
- metadata_re="^\\{\"lane\":\"[a-z][a-z0-9-]*\",\"vendor\":\"(codex|claude|grok|gemini|exec)\",\"model\":\"${json_string}\",\"effort\":\"${json_string}\",\"timeout\":(0|[1-9][0-9]*),\"job_timeout\":(null|0|[1-9][0-9]*),\"mode\":\"(advise|work)\",\"workdir\":\"${json_string}\",\"candidate\":\"[1-9][0-9]*/[1-9][0-9]*\",\"started\":\"[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z\"\\}$"
146
+ metadata_re="^\\{\"lane\":\"[a-z][a-z0-9-]*\",\"vendor\":\"(codex|claude|grok|gemini|kimi|qwen|exec)\",\"model\":\"${json_string}\",\"effort\":\"${json_string}\",\"timeout\":(0|[1-9][0-9]*),\"job_timeout\":(null|0|[1-9][0-9]*),\"mode\":\"(advise|work)\",\"workdir\":\"${json_string}\",\"candidate\":\"[1-9][0-9]*/[1-9][0-9]*\",\"started\":\"[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z\"\\}$"
147
147
  [[ "$value" =~ $metadata_re ]]
148
148
  }
149
149
 
@@ -252,7 +252,7 @@ case "${1:-}" in
252
252
  read_public_metadata "$JOB_DIR/meta.json" || {
253
253
  die 1 "cannot retry: unreadable job metadata"
254
254
  }
255
- retry_re='^\{"lane":"([a-z][a-z0-9-]*)","vendor":"(codex|claude|grok|gemini|exec)","model":"([^"\\]*)","effort":"([^"\\]*)","timeout":([1-9][0-9]*),"job_timeout":([1-9][0-9]*|null),"mode":"(advise|work)","workdir":"([^"\\]*)",'
255
+ retry_re='^\{"lane":"([a-z][a-z0-9-]*)","vendor":"(codex|claude|grok|gemini|kimi|qwen|exec)","model":"([^"\\]*)","effort":"([^"\\]*)","timeout":([1-9][0-9]*),"job_timeout":([1-9][0-9]*|null),"mode":"(advise|work)","workdir":"([^"\\]*)",'
256
256
  [[ "$PUBLIC_METADATA" =~ $retry_re ]] || {
257
257
  die 1 "cannot retry: job metadata is not safely parseable"
258
258
  }
@@ -70,6 +70,8 @@ vendor_bin() { # vendor -> binary (honors local.sh overrides)
70
70
  claude) echo "${CLAUDE_BIN:-claude}" ;;
71
71
  grok) echo "${GROK_BIN:-grok}" ;;
72
72
  gemini) echo "${AGY_BIN:-agy}" ;;
73
+ kimi) echo "${KIMI_BIN:-kimi}" ;;
74
+ qwen) echo "${QWEN_BIN:-qwen}" ;;
73
75
  *) echo "" ;;
74
76
  esac
75
77
  }
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # omnilane runner: Moonshot Kimi Code CLI
5
+ #
6
+ # Usage: run-kimi.sh MODE WORKDIR MODEL EFFORT PROMPT_FILE OUTPUT_FILE
7
+ # MODE = advise (read-only, plan mode) | work (may edit files in WORKDIR)
8
+ #
9
+ # MODEL is a Kimi Code model alias from the user's config.toml (e.g. kimi-k3);
10
+ # an unknown alias fails at the CLI, not here. Kimi has no reasoning-effort
11
+ # knob, so EFFORT is accepted for interface parity only.
12
+
13
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/common.sh"
14
+
15
+ MODE="$1"; WORKDIR="$2"; MODEL="$3"; EFFORT="$4"; PROMPT_FILE="$5"; OUTPUT_FILE="$6"
16
+ : "$EFFORT" # parity with the uniform runner interface
17
+
18
+ KIMI_BIN="${KIMI_BIN:-kimi}"
19
+ RUN_TIMEOUT="${OMNILANE_TIMEOUT:-600}"
20
+
21
+ truncate_payload "$PROMPT_FILE" 140000
22
+
23
+ # --plan starts plan mode (read-only); -y auto-approves actions for work mode.
24
+ ARGS=(-p "$(cat "$PROMPT_FILE")" --output-format text)
25
+ [[ -n "$MODEL" && "$MODEL" != "-" ]] && ARGS+=(-m "$MODEL")
26
+ if [[ "$MODE" == "advise" ]]; then
27
+ ARGS+=(--plan)
28
+ else
29
+ ARGS+=(-y)
30
+ fi
31
+
32
+ set +e
33
+ (
34
+ cd "$WORKDIR" || exit 127
35
+ # Subscription-login path: strip API-key env so the CLI uses its own auth.
36
+ run_with_timeout "$RUN_TIMEOUT" env \
37
+ -u MOONSHOT_API_KEY -u KIMI_API_KEY \
38
+ OMNILANE_DEPTH=1 \
39
+ "$KIMI_BIN" "${ARGS[@]}" \
40
+ > "${OUTPUT_FILE}.tmp" 2> "${OUTPUT_FILE}.stderr.log"
41
+ )
42
+ RC=$?
43
+ set -e
44
+
45
+ # Empty output is a failure, not a silent rc=0 success.
46
+ if ! grep -q '[^[:space:]]' "${OUTPUT_FILE}.tmp" 2>/dev/null; then
47
+ echo "omnilane: kimi produced no output" >> "${OUTPUT_FILE}.stderr.log"
48
+ [[ "$RC" -eq 0 ]] && RC=1
49
+ fi
50
+
51
+ [[ -f "${OUTPUT_FILE}.tmp" ]] && mv "${OUTPUT_FILE}.tmp" "$OUTPUT_FILE"
52
+ [[ -s "${OUTPUT_FILE}.stderr.log" ]] || rm "${OUTPUT_FILE}.stderr.log" 2>/dev/null || true
53
+ exit "$RC"
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # omnilane runner: Alibaba Qwen Code CLI
5
+ #
6
+ # Usage: run-qwen.sh MODE WORKDIR MODEL EFFORT PROMPT_FILE OUTPUT_FILE
7
+ # MODE = advise (default approvals: write tools blocked non-interactively)
8
+ # | work (--approval-mode yolo: may edit files in WORKDIR)
9
+ #
10
+ # Qwen Code has no reasoning-effort knob, so EFFORT is parity-only.
11
+
12
+ source "$(dirname "${BASH_SOURCE[0]}")/../lib/common.sh"
13
+
14
+ MODE="$1"; WORKDIR="$2"; MODEL="$3"; EFFORT="$4"; PROMPT_FILE="$5"; OUTPUT_FILE="$6"
15
+ : "$EFFORT" # parity with the uniform runner interface
16
+
17
+ QWEN_BIN="${QWEN_BIN:-qwen}"
18
+ RUN_TIMEOUT="${OMNILANE_TIMEOUT:-600}"
19
+
20
+ truncate_payload "$PROMPT_FILE" 140000
21
+
22
+ ARGS=(-p "$(cat "$PROMPT_FILE")" --output-format text)
23
+ [[ -n "$MODEL" && "$MODEL" != "-" ]] && ARGS+=(-m "$MODEL")
24
+ [[ "$MODE" == "work" ]] && ARGS+=(--approval-mode yolo)
25
+
26
+ set +e
27
+ (
28
+ cd "$WORKDIR" || exit 127
29
+ # Subscription-login path: strip OpenAI-compatible env overrides so the CLI
30
+ # uses its own Qwen OAuth instead of a hijacked endpoint.
31
+ run_with_timeout "$RUN_TIMEOUT" env \
32
+ -u OPENAI_API_KEY -u OPENAI_BASE_URL -u DASHSCOPE_API_KEY \
33
+ OMNILANE_DEPTH=1 \
34
+ "$QWEN_BIN" "${ARGS[@]}" \
35
+ > "${OUTPUT_FILE}.tmp" 2> "${OUTPUT_FILE}.stderr.log"
36
+ )
37
+ RC=$?
38
+ set -e
39
+
40
+ # Empty output is a failure, not a silent rc=0 success.
41
+ if ! grep -q '[^[:space:]]' "${OUTPUT_FILE}.tmp" 2>/dev/null; then
42
+ echo "omnilane: qwen produced no output" >> "${OUTPUT_FILE}.stderr.log"
43
+ [[ "$RC" -eq 0 ]] && RC=1
44
+ fi
45
+
46
+ [[ -f "${OUTPUT_FILE}.tmp" ]] && mv "${OUTPUT_FILE}.tmp" "$OUTPUT_FILE"
47
+ [[ -s "${OUTPUT_FILE}.stderr.log" ]] || rm "${OUTPUT_FILE}.stderr.log" 2>/dev/null || true
48
+ exit "$RC"