omnilane 0.8.3 → 0.9.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 +50 -1
- package/README.ja.md +26 -6
- package/README.ko.md +25 -5
- package/README.md +40 -8
- package/README.zh-CN.md +19 -8
- package/README.zh-TW.md +31 -6
- package/VERSION +1 -1
- package/bin/omnilane +4 -3
- package/bin/omnilane-mcp +291 -0
- package/completions/omnilane.fish +50 -0
- package/package.json +1 -1
- package/scripts/check.sh +125 -0
- package/scripts/configure.sh +149 -1
- package/scripts/dispatch.sh +4 -4
- package/scripts/doctor.sh +38 -0
- package/scripts/jobs.sh +132 -10
- package/scripts/lib/common.sh +57 -3
- package/scripts/runners/run-cerebras.sh +7 -0
- package/scripts/runners/run-deepseek.sh +7 -0
- package/scripts/runners/run-groq.sh +7 -0
- package/scripts/runners/run-mistral.sh +7 -0
- package/scripts/runners/run-openai-compat.sh +102 -0
- package/scripts/runners/run-openrouter.sh +5 -84
- package/scripts/runners/run-zai.sh +7 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,54 @@ semantic version tags.
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.9.0] - 2026-07-19
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- `omnilane completion fish` prints a Fish completion script
|
|
14
|
+
(`completions/omnilane.fish`): static command, option, and enum completion for
|
|
15
|
+
every public command, including the direct-API vendors and `jobs cancel`/`rm`.
|
|
16
|
+
Load it with `omnilane completion fish | source`. Dynamic lane-name and job-id
|
|
17
|
+
completion remain Bash/Zsh-only for now.
|
|
18
|
+
- Five OpenAI-compatible direct-API vendors — `deepseek`, `zai` (GLM),
|
|
19
|
+
`mistral`, `groq`, and `cerebras` — join `openrouter` as CLI-free inference
|
|
20
|
+
lanes (curl + a `<VENDOR>_API_KEY`, advise mode only). A single vendor registry
|
|
21
|
+
in `lib/common.sh` (endpoint, key env, and default model per vendor) now drives
|
|
22
|
+
every vendor-name check in `dispatch.sh` and `jobs.sh`, so adding another
|
|
23
|
+
OpenAI-compatible vendor is a one-line registry entry plus a thin runner
|
|
24
|
+
wrapper. `configure` lists them with suggested models. See
|
|
25
|
+
`docs/model-capabilities-2026-07.md` for the July 2026 model/benchmark snapshot
|
|
26
|
+
behind the routing defaults.
|
|
27
|
+
- `omnilane doctor` now reports vendor-CLI availability: which of codex, claude,
|
|
28
|
+
grok, gemini (the `agy` CLI), kimi, qwen, and opencode are reachable, plus
|
|
29
|
+
the direct-API vendors openrouter, deepseek, zai, mistral, groq, and cerebras
|
|
30
|
+
(curl + each `<VENDOR>_API_KEY`). Shown in human and `--json` output;
|
|
31
|
+
the probe mirrors the runners' `*_BIN` overrides and `local.sh` in an isolated
|
|
32
|
+
subshell. It is a `PASS`/`WARN` check and never fails the report.
|
|
33
|
+
- MCP server read-only introspection tools: `explain`, `validate`, `dry_run`,
|
|
34
|
+
`jobs_list`, `jobs_stats`, `jobs_audit`, and `doctor` join the existing
|
|
35
|
+
`route`, `list_lanes`, `jobs_status`, and `jobs_result`, so the MCP surface
|
|
36
|
+
mirrors the CLI's full offline read-only surface. All refuse provider calls and
|
|
37
|
+
create no job state; `dry_run` requires an explicit `workdir` only when `mode`
|
|
38
|
+
is `work`. `jobs_stats`/`jobs_audit` accept an optional `last` and `json`.
|
|
39
|
+
- `configure set|get|unset|list|diff` non-interactive subcommands: script or
|
|
40
|
+
inspect `routing.local.yaml` without a tty. `set` validates the lane, refuses
|
|
41
|
+
unsafe specs, and rolls back on a structural FAIL; `diff` shows how local
|
|
42
|
+
overrides change the effective table versus the defaults. The interactive menu
|
|
43
|
+
is unchanged.
|
|
44
|
+
- `jobs list` and `jobs stats` filters: `--lane` and `--vendor` (and, for
|
|
45
|
+
`list`, `--status running|done`) narrow the output in both human and `--json`
|
|
46
|
+
modes. `list` scans all jobs for up to 20 matches; `stats` filters within its
|
|
47
|
+
`--last` sample and recomputes the success rate and lane/vendor aggregates.
|
|
48
|
+
Invalid filter values exit 2; unfiltered behavior is unchanged.
|
|
49
|
+
- `jobs cancel ID`: stop a running background job. Signals the worker's process
|
|
50
|
+
group (SIGTERM, then SIGKILL after a grace period) so the vendor CLI child
|
|
51
|
+
dies too, and leaves a terminal exit recorded — 143 on graceful stop, 137 if
|
|
52
|
+
force-killed. Idempotent on already-finished, dead, or never-backgrounded jobs.
|
|
53
|
+
- `jobs rm ID`: delete one job's stored directory (task, output, exit, metadata).
|
|
54
|
+
Refuses a job whose worker is still alive — cancel it first — complementing
|
|
55
|
+
`jobs prune`, which only bulk-deletes completed jobs by count or age.
|
|
56
|
+
|
|
9
57
|
## [0.8.3] - 2026-07-18
|
|
10
58
|
|
|
11
59
|
### Added
|
|
@@ -259,7 +307,8 @@ semantic version tags.
|
|
|
259
307
|
- Initial shared routing table, cross-vendor dispatcher, runners, installer,
|
|
260
308
|
and baseline lint fixes.
|
|
261
309
|
|
|
262
|
-
[Unreleased]: https://github.com/Seraphim0916/omnilane/compare/v0.
|
|
310
|
+
[Unreleased]: https://github.com/Seraphim0916/omnilane/compare/v0.9.0...HEAD
|
|
311
|
+
[0.9.0]: https://github.com/Seraphim0916/omnilane/compare/v0.8.3...v0.9.0
|
|
263
312
|
[0.8.3]: https://github.com/Seraphim0916/omnilane/compare/v0.8.2...v0.8.3
|
|
264
313
|
[0.8.2]: https://github.com/Seraphim0916/omnilane/compare/v0.8.1...v0.8.2
|
|
265
314
|
|
package/README.ja.md
CHANGED
|
@@ -21,6 +21,14 @@
|
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
+
## v0.9.0 の新機能
|
|
25
|
+
|
|
26
|
+
- **OpenAI 互換の direct-API ベンダーを 5 つ追加** — `deepseek`、`zai`(GLM)、
|
|
27
|
+
`mistral`、`groq`、`cerebras` が `openrouter` と同じく CLI 不要のレーンに
|
|
28
|
+
(curl と `<VENDOR>_API_KEY` だけ)。`lib/common.sh` のレジストリに 1 行で
|
|
29
|
+
追加でき、モデル能力の比較は [`docs/model-capabilities-2026-07.md`](docs/model-capabilities-2026-07.md) を参照。
|
|
30
|
+
- **Fish シェル補完** — `omnilane completion fish | source`。
|
|
31
|
+
|
|
24
32
|
## v0.8.3 の新機能
|
|
25
33
|
|
|
26
34
|
- **MCP サーバー** — `omnilane mcp` は依存ゼロの stdio MCP サーバーを起動し、
|
|
@@ -148,6 +156,8 @@ flowchart LR
|
|
|
148
156
|
指定ベンダーに固定し、フォールバックしません。
|
|
149
157
|
- **`skills/omnilane/SKILL.md`** — 四つのハーネス共通のスキル:
|
|
150
158
|
自分のモデルを特定し、自分のレーンは自前で実行、残りはディスパッチ。
|
|
159
|
+
- **`omnilane mcp`** — 同じルーティングを MCP stdio サーバーとして提供。
|
|
160
|
+
スキルではなく MCP で統合するホスト向け。
|
|
151
161
|
|
|
152
162
|
<div align="center">
|
|
153
163
|
|
|
@@ -301,10 +311,13 @@ MCP 対応ホストがスキルの導入やルーティングリマインダー
|
|
|
301
311
|
}
|
|
302
312
|
```
|
|
303
313
|
|
|
304
|
-
サーバーは `route`、`jobs_status`、`jobs_result`、`
|
|
314
|
+
サーバーは `route` に加えて、読み取り専用の照会ツール `list_lanes`、`explain`、`validate`、`dry_run`、`jobs_list`、`jobs_status`、`jobs_result`、`jobs_stats`、`jobs_audit`、`doctor` を公開します。
|
|
305
315
|
`route` のデフォルトは読み取り専用の `advise` モードで、`work` を選ぶ呼び
|
|
306
316
|
出しには明示的な `workdir` が必須です。
|
|
307
317
|
|
|
318
|
+
実行時に必要なのは Node.js のみ(npm パッケージは不要)。npm 派なら
|
|
319
|
+
`npm install -g omnilane` で MCP サーバーごと CLI をインストールできます。
|
|
320
|
+
|
|
308
321
|
## ⚙️ カスタマイズ
|
|
309
322
|
|
|
310
323
|
三層、すべて任意:
|
|
@@ -329,6 +342,8 @@ scripts/dispatch.sh --list # 実効テーブル(フォールバック解決
|
|
|
329
342
|
```
|
|
330
343
|
eval "$(omnilane completion bash)" # 現在の Bash で補完を有効化
|
|
331
344
|
source <(omnilane completion zsh) # 現在の Zsh で補完を有効化
|
|
345
|
+
omnilane completion fish | source # 現在の Fish で補完を有効化
|
|
346
|
+
omnilane mcp # MCP stdio サーバー(Node.js が必要)
|
|
332
347
|
omnilane release-audit [--target VERSION] [--json] # オフライン・読み取り専用のリリースゲート
|
|
333
348
|
omnilane ui start # ローカル Live UI を起動または再利用し、URL を表示
|
|
334
349
|
omnilane ui status # Live UI の稼働状態を表示
|
|
@@ -342,11 +357,15 @@ dispatch.sh [--json] --list [--json]
|
|
|
342
357
|
dispatch.sh [--json] --explain LANE [--json] # 候補ごとの決定理由をオフライン表示
|
|
343
358
|
dispatch.sh [--json] --validate [--json] # プロバイダーを呼ばず実効ルーティングを検証
|
|
344
359
|
jobs.sh [--json] {list | status ID | result ID} # JSON は本文を返さずメタデータのみ
|
|
360
|
+
jobs.sh [--json] list [--lane L] [--vendor V] [--status running|done] # 一覧を絞り込み
|
|
345
361
|
jobs.sh wait ID [--timeout N] # ジョブ終了値。124 はタイムアウト、125 はワーカー消失
|
|
346
|
-
jobs.sh
|
|
362
|
+
jobs.sh cancel ID # 実行中ジョブを停止:グループに SIGTERM、その後 SIGKILL
|
|
363
|
+
jobs.sh rm ID # 完了/停止ジョブを1件削除(実行中は拒否)
|
|
364
|
+
jobs.sh [--json] stats [--last N] [--lane L] [--vendor V] # ローカル成功率とルーティング集計
|
|
347
365
|
jobs.sh audit [--last N] [--json] # 読み取り専用のジョブ整合性・プライバシー検査
|
|
348
366
|
jobs.sh prune [--keep N] [--apply] # 既定はプレビューのみ。完了ジョブだけを対象
|
|
349
367
|
configure.sh # 対話式レーンメニュー
|
|
368
|
+
configure.sh set|get|unset|list|diff LANE [SPEC] # routing.local.yaml を非対話で編集/確認
|
|
350
369
|
```
|
|
351
370
|
|
|
352
371
|
終了コード:`2` 使い方エラー(無効なベンダー、または指定ベンダーがレーンに
|
|
@@ -419,11 +438,12 @@ configure.sh # 対話式レーンメニ
|
|
|
419
438
|
|
|
420
439
|
## 🌱 ステータス
|
|
421
440
|
|
|
422
|
-
|
|
441
|
+
omnilane は 13 のディスパッチベンダーを備えます——4 つのハーネスネイティブ
|
|
423
442
|
(codex、claude、grok、gemini)、3 つの集約/オーバーフロー CLI(kimi、qwen、
|
|
424
|
-
opencode)、そして CLI 不要の
|
|
425
|
-
runner
|
|
426
|
-
|
|
443
|
+
opencode)、そして CLI 不要の OpenAI 互換 direct-API ベンダー 6 つ(openrouter、
|
|
444
|
+
deepseek、zai、mistral、groq、cerebras)——すべて統一 runner 契約と契約テスト
|
|
445
|
+
付き。Claude Code の `SessionStart` 自動リマインダーと MCP stdio サーバー
|
|
446
|
+
(`omnilane mcp`)も同梱。direct-API と集約系の runner はフェイクバイナリで
|
|
427
447
|
契約テスト済みです。実モデルでの報告を歓迎します。Grok/Antigravity の
|
|
428
448
|
コマンドシェル挙動は CLI バージョンで変わる可能性があります。issue と PR を
|
|
429
449
|
歓迎します。
|
package/README.ko.md
CHANGED
|
@@ -21,6 +21,14 @@
|
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
+
## v0.9.0 새 기능
|
|
25
|
+
|
|
26
|
+
- **OpenAI 호환 direct-API 벤더 5개 추가** — `deepseek`, `zai` (GLM), `mistral`,
|
|
27
|
+
`groq`, `cerebras` 가 `openrouter` 처럼 CLI 없는 레인으로 추가(curl 과
|
|
28
|
+
`<VENDOR>_API_KEY` 만 필요). `lib/common.sh` 레지스트리에 한 줄로 추가되며,
|
|
29
|
+
모델 능력 비교는 [`docs/model-capabilities-2026-07.md`](docs/model-capabilities-2026-07.md) 참고.
|
|
30
|
+
- **Fish 셸 자동완성** — `omnilane completion fish | source`.
|
|
31
|
+
|
|
24
32
|
## v0.8.3 새 기능
|
|
25
33
|
|
|
26
34
|
- **MCP 서버** — `omnilane mcp` 는 의존성 없는 stdio MCP 서버를 시작하여,
|
|
@@ -147,6 +155,8 @@ flowchart LR
|
|
|
147
155
|
고정하며 폴백하지 않습니다.
|
|
148
156
|
- **`skills/omnilane/SKILL.md`** — 네 하네스 공용 스킬: 자기 모델을 파악하고,
|
|
149
157
|
자기 레인은 직접 수행, 나머지는 디스패치.
|
|
158
|
+
- **`omnilane mcp`** — 같은 라우팅을 MCP stdio 서버로 제공.
|
|
159
|
+
스킬 대신 MCP 로 통합하는 호스트용.
|
|
150
160
|
|
|
151
161
|
<div align="center">
|
|
152
162
|
|
|
@@ -294,10 +304,13 @@ MCP 지원 호스트가 스킬 설치나 라우팅 리마인더 없이 omnilane
|
|
|
294
304
|
}
|
|
295
305
|
```
|
|
296
306
|
|
|
297
|
-
서버는 `route`, `jobs_status`, `jobs_result`, `
|
|
307
|
+
서버는 `route` 와 함께 읽기 전용 조회 도구 `list_lanes`, `explain`, `validate`, `dry_run`, `jobs_list`, `jobs_status`, `jobs_result`, `jobs_stats`, `jobs_audit`, `doctor` 를 제공합니다.
|
|
298
308
|
`route` 의 기본값은 읽기 전용 `advise` 모드이며, `work` 를 선택한 호출은
|
|
299
309
|
명시적 `workdir` 을 함께 제공해야 합니다.
|
|
300
310
|
|
|
311
|
+
실행에 필요한 것은 Node.js 뿐입니다(npm 패키지 없음). npm 을 선호하면
|
|
312
|
+
`npm install -g omnilane` 으로 MCP 서버가 포함된 CLI 를 설치할 수 있습니다.
|
|
313
|
+
|
|
301
314
|
## ⚙️ 사용자 설정
|
|
302
315
|
|
|
303
316
|
세 계층, 모두 선택 사항:
|
|
@@ -322,6 +335,8 @@ scripts/dispatch.sh --list # 실효 테이블(폴백 해석 주석 포함)
|
|
|
322
335
|
```
|
|
323
336
|
eval "$(omnilane completion bash)" # 현재 Bash 에서 완성 활성화
|
|
324
337
|
source <(omnilane completion zsh) # 현재 Zsh 에서 완성 활성화
|
|
338
|
+
omnilane completion fish | source # 현재 Fish 에서 완성 활성화
|
|
339
|
+
omnilane mcp # MCP stdio 서버(Node.js 필요)
|
|
325
340
|
omnilane release-audit [--target VERSION] [--json] # 오프라인 읽기 전용 릴리스 게이트
|
|
326
341
|
omnilane ui start # 로컬 Live UI 를 시작하거나 재사용하고 URL 표시
|
|
327
342
|
omnilane ui status # Live UI 실행 상태 표시
|
|
@@ -335,11 +350,15 @@ dispatch.sh [--json] --list [--json]
|
|
|
335
350
|
dispatch.sh [--json] --explain LANE [--json] # 후보별 라우팅 결정을 오프라인 설명
|
|
336
351
|
dispatch.sh [--json] --validate [--json] # 공급자 호출 없이 실효 라우팅 검사
|
|
337
352
|
jobs.sh [--json] {list | status ID | result ID} # JSON은 본문 없이 메타데이터만 반환
|
|
353
|
+
jobs.sh [--json] list [--lane L] [--vendor V] [--status running|done] # 목록 필터
|
|
338
354
|
jobs.sh wait ID [--timeout N] # 작업 종료값, 124 시간 초과, 125 작업자 소실
|
|
339
|
-
jobs.sh
|
|
355
|
+
jobs.sh cancel ID # 실행 중 작업 중지: 그룹 SIGTERM 후 SIGKILL
|
|
356
|
+
jobs.sh rm ID # 완료/종료 작업 1건 삭제(실행 중이면 거부)
|
|
357
|
+
jobs.sh [--json] stats [--last N] [--lane L] [--vendor V] # 로컬 성공률과 라우팅 집계
|
|
340
358
|
jobs.sh audit [--last N] [--json] # 읽기 전용 작업 무결성/개인정보 검사
|
|
341
359
|
jobs.sh prune [--keep N] [--apply] # 기본은 미리보기이며 완료된 작업만 정리
|
|
342
360
|
configure.sh # 대화형 레인 메뉴
|
|
361
|
+
configure.sh set|get|unset|list|diff LANE [SPEC] # routing.local.yaml 비대화식 편집/확인
|
|
343
362
|
```
|
|
344
363
|
|
|
345
364
|
종료 코드: `2` 사용법 오류(잘못된 벤더 또는 지정 벤더가 레인에 없는 경우 포함),
|
|
@@ -407,10 +426,11 @@ CLI 를 사용할 수 없음, `5` 1라운드 성공 투표자 부족, `6` 2라
|
|
|
407
426
|
|
|
408
427
|
## 🌱 상태
|
|
409
428
|
|
|
410
|
-
|
|
429
|
+
omnilane 은 13개의 디스패치 벤더를 갖춥니다——4개의 하네스 네이티브(codex,
|
|
411
430
|
claude, grok, gemini), 3개의 집합/오버플로 CLI(kimi, qwen, opencode), 그리고
|
|
412
|
-
CLI 가 필요 없는
|
|
413
|
-
|
|
431
|
+
CLI 가 필요 없는 OpenAI 호환 direct-API 벤더 6개(openrouter, deepseek, zai,
|
|
432
|
+
mistral, groq, cerebras)——모두 통일 runner 계약과 계약 테스트를 갖추었고,
|
|
433
|
+
Claude Code `SessionStart` 자동 리마인더와 MCP stdio 서버(`omnilane mcp`)도 포함합니다.
|
|
414
434
|
kimi, qwen, opencode, openrouter 의 runner 는 페이크 바이너리로 계약 테스트를
|
|
415
435
|
마쳤습니다. 실제 모델 사용 보고를 환영합니다. Grok/Antigravity 커맨드 셸
|
|
416
436
|
동작은 CLI 버전에 따라 달라질 수 있습니다. issue 와 PR 환영합니다.
|
package/README.md
CHANGED
|
@@ -21,6 +21,14 @@ or any hosted model via OpenRouter — on the subscriptions you already pay for,
|
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
+
## What's new in v0.9.0
|
|
25
|
+
|
|
26
|
+
- **Five OpenAI-compatible direct-API vendors** — `deepseek`, `zai` (GLM),
|
|
27
|
+
`mistral`, `groq`, and `cerebras` join `openrouter` as CLI-free lanes (curl +
|
|
28
|
+
a `<VENDOR>_API_KEY`). A one-line `lib/common.sh` registry entry adds each;
|
|
29
|
+
see [`docs/model-capabilities-2026-07.md`](docs/model-capabilities-2026-07.md).
|
|
30
|
+
- **Fish shell completion** — `omnilane completion fish | source`.
|
|
31
|
+
|
|
24
32
|
## What's new in v0.8.3
|
|
25
33
|
|
|
26
34
|
- **MCP server** — `omnilane mcp` starts a zero-dependency stdio MCP server,
|
|
@@ -37,6 +45,12 @@ or any hosted model via OpenRouter — on the subscriptions you already pay for,
|
|
|
37
45
|
Advise/consult only (it cannot edit files; work mode fails with guidance)
|
|
38
46
|
and the model slug is mandatory, e.g.
|
|
39
47
|
`dispatch.sh --vendor openrouter --model anthropic/claude-sonnet-5 consult "..."`.
|
|
48
|
+
- **`deepseek`, `zai`, `mistral`, `groq`, `cerebras` vendors** — the same
|
|
49
|
+
CLI-free direct-API path as `openrouter`, for OpenAI-compatible providers:
|
|
50
|
+
DeepSeek, Z.ai GLM, Mistral, Groq, and Cerebras. Each needs only `curl` and
|
|
51
|
+
its `<VENDOR>_API_KEY`; advise/consult only. A one-line `lib/common.sh`
|
|
52
|
+
registry entry defines each endpoint, key env, and default model. See
|
|
53
|
+
[`docs/model-capabilities-2026-07.md`](docs/model-capabilities-2026-07.md).
|
|
40
54
|
- **`opencode` vendor** — headless dispatch through the OpenCode
|
|
41
55
|
multi-provider aggregator CLI (`opencode run`). Advise mode pins OpenCode's
|
|
42
56
|
built-in read-only `plan` agent; work mode uses `--auto`. Joins the default
|
|
@@ -149,6 +163,8 @@ flowchart LR
|
|
|
149
163
|
vendor without fallback.
|
|
150
164
|
- **`skills/omnilane/SKILL.md`** — a single skill every harness can load:
|
|
151
165
|
identify your own model, self-execute your lane, dispatch the rest.
|
|
166
|
+
- **`omnilane mcp`** — the same routing surface as an MCP stdio server,
|
|
167
|
+
for hosts that integrate via MCP instead of skills.
|
|
152
168
|
|
|
153
169
|
<div align="center">
|
|
154
170
|
|
|
@@ -301,10 +317,15 @@ adding a routing reminder. Configure the host to launch the installed CLI:
|
|
|
301
317
|
}
|
|
302
318
|
```
|
|
303
319
|
|
|
304
|
-
The server exposes `route
|
|
305
|
-
`
|
|
320
|
+
The server exposes `route` plus read-only introspection: `list_lanes`,
|
|
321
|
+
`explain`, `validate`, `dry_run`, `jobs_list`, `jobs_status`, `jobs_result`,
|
|
322
|
+
`jobs_stats`, `jobs_audit`, and `doctor`. `route` defaults to read-only `advise` mode. Calls that select `work` must also
|
|
306
323
|
provide an explicit `workdir`.
|
|
307
324
|
|
|
325
|
+
Node.js is the only runtime requirement (no npm packages). If you prefer
|
|
326
|
+
npm, `npm install -g omnilane` installs the CLI with the MCP server
|
|
327
|
+
included.
|
|
328
|
+
|
|
308
329
|
## ⚙️ Configure
|
|
309
330
|
|
|
310
331
|
Three layers, all optional:
|
|
@@ -314,6 +335,9 @@ Three layers, all optional:
|
|
|
314
335
|
future models), and writes the result to `~/.omnilane/routing.local.yaml`.
|
|
315
336
|
It intentionally skips the multi-vendor `consult` lane; edit that one by
|
|
316
337
|
hand if needed. `install.sh` offers to run the menu at the end of a normal install.
|
|
338
|
+
For scripting, `configure set|get|unset|list|diff LANE [SPEC]` edits or inspects the same file
|
|
339
|
+
without a tty — `set` validates the lane and rejects an unsafe or structurally
|
|
340
|
+
invalid spec, rolling back on failure.
|
|
317
341
|
2. **`~/.omnilane/routing.local.yaml`** — hand-edited overrides, same format
|
|
318
342
|
as `routing.yaml`; local lines win. See `routing.local.yaml.example`.
|
|
319
343
|
3. **`~/.omnilane/local.sh`** — per-machine binaries, proxies, auth wrappers;
|
|
@@ -332,6 +356,8 @@ omnilane list | route … | jobs … | configure # global wrapper, works anywh
|
|
|
332
356
|
# (install.sh links it into ~/.local/bin)
|
|
333
357
|
eval "$(omnilane completion bash)" # enable Bash completion for this shell
|
|
334
358
|
source <(omnilane completion zsh) # enable Zsh completion for this shell
|
|
359
|
+
omnilane completion fish | source # enable Fish completion for this shell
|
|
360
|
+
omnilane mcp # MCP stdio server (needs Node.js)
|
|
335
361
|
omnilane release-audit [--target VERSION] [--json] # offline, read-only release gate
|
|
336
362
|
omnilane ui start # start/reuse the local Live UI; print its URL
|
|
337
363
|
omnilane ui status # report whether the Live UI is running
|
|
@@ -345,11 +371,15 @@ dispatch.sh [--json] --list [--json]
|
|
|
345
371
|
dispatch.sh [--json] --explain LANE [--json] # offline candidate-by-candidate decision trace
|
|
346
372
|
dispatch.sh [--json] --validate [--json] # lint effective routing; no provider calls
|
|
347
373
|
jobs.sh [--json] {list | status ID | result ID} # JSON result reports metadata, never bodies
|
|
374
|
+
jobs.sh [--json] list [--lane L] [--vendor V] [--status running|done] # filter the listing
|
|
348
375
|
jobs.sh wait ID [--timeout N] # job exit; 124 timeout; 125 dead worker
|
|
349
|
-
jobs.sh
|
|
376
|
+
jobs.sh cancel ID # stop a running job: group SIGTERM, then SIGKILL
|
|
377
|
+
jobs.sh rm ID # delete one finished/dead job (refuses a running job)
|
|
378
|
+
jobs.sh [--json] stats [--last N] [--lane L] [--vendor V] # local success and routing aggregates
|
|
350
379
|
jobs.sh audit [--last N] [--json] # read-only job integrity/privacy check
|
|
351
380
|
jobs.sh prune [--keep N] [--apply] # preview by default; completed jobs only
|
|
352
381
|
configure.sh # interactive lane menu
|
|
382
|
+
configure.sh set|get|unset|list|diff LANE [SPEC] # script/inspect routing.local.yaml, no tty
|
|
353
383
|
```
|
|
354
384
|
|
|
355
385
|
**Big decisions can get a panel, not a person.** The `arbitrate` lane ships
|
|
@@ -439,11 +469,13 @@ configurator and `routing.local.yaml` exist so you can disagree.
|
|
|
439
469
|
|
|
440
470
|
## 🌱 Status
|
|
441
471
|
|
|
442
|
-
|
|
443
|
-
grok, gemini), three aggregator/overflow CLIs (kimi, qwen, opencode),
|
|
444
|
-
CLI-free
|
|
445
|
-
|
|
446
|
-
|
|
472
|
+
omnilane now spans thirteen dispatch vendors — four harness natives (codex,
|
|
473
|
+
claude, grok, gemini), three aggregator/overflow CLIs (kimi, qwen, opencode),
|
|
474
|
+
and six CLI-free OpenAI-compatible direct-API vendors (openrouter, deepseek,
|
|
475
|
+
zai, mistral, groq, cerebras) — on the uniform runner contract with
|
|
476
|
+
contract tests, plus the Claude Code `SessionStart`
|
|
477
|
+
auto-reminder and an MCP stdio server surface (`omnilane mcp`). The direct-API
|
|
478
|
+
and aggregator runners are contract-tested against fake binaries;
|
|
447
479
|
real-model reports welcome. Grok/Antigravity command-shell behavior may still
|
|
448
480
|
vary across CLI versions. Issues and PRs welcome.
|
|
449
481
|
|
package/README.zh-CN.md
CHANGED
|
@@ -21,6 +21,11 @@
|
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
+
## v0.9.0 新功能
|
|
25
|
+
|
|
26
|
+
- **新增 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)。
|
|
27
|
+
- **fish shell 补全** — `omnilane completion fish | source`。
|
|
28
|
+
|
|
24
29
|
## v0.8.3 新功能
|
|
25
30
|
|
|
26
31
|
- **MCP server** — `omnilane mcp` 启动零依赖的 stdio MCP server,任何支持
|
|
@@ -131,6 +136,8 @@ flowchart LR
|
|
|
131
136
|
调用对应厂商的 CLI。`--vendor` 会锁定指定厂商,不做降级。
|
|
132
137
|
- **`skills/omnilane/SKILL.md`** — 一份技能四个框架都能加载:
|
|
133
138
|
先认出自己是哪个模型,自己通道的活自己干,其余派出去。
|
|
139
|
+
- **`omnilane mcp`** — 同一套路由改以 MCP stdio server 提供,
|
|
140
|
+
给走 MCP 而非 skill 集成的宿主。
|
|
134
141
|
|
|
135
142
|
<div align="center">
|
|
136
143
|
|
|
@@ -267,10 +274,13 @@ Esc。服务器发送事件(SSE)会实时更新,又不会重建当前聚焦的
|
|
|
267
274
|
}
|
|
268
275
|
```
|
|
269
276
|
|
|
270
|
-
Server 提供 `route`、`jobs_status`、`jobs_result`、`
|
|
277
|
+
Server 提供 `route`,以及一组只读查询工具:`list_lanes`、`explain`、`validate`、`dry_run`、`jobs_list`、`jobs_status`、`jobs_result`、`jobs_stats`、`jobs_audit`、`doctor`。
|
|
271
278
|
`route` 默认只读 `advise` 模式;选择 `work` 的调用必须同时提供明确的
|
|
272
279
|
`workdir`。
|
|
273
280
|
|
|
281
|
+
唯一的运行需求是 Node.js(不装任何 npm 包);也可以直接
|
|
282
|
+
`npm install -g omnilane`,CLI 连同 MCP server 一起装好。
|
|
283
|
+
|
|
274
284
|
## ⚙️ 自定义设置
|
|
275
285
|
|
|
276
286
|
三层,全部可选:
|
|
@@ -295,6 +305,8 @@ scripts/dispatch.sh --list # 生效表,标出候选链降级与关闭的通
|
|
|
295
305
|
```
|
|
296
306
|
eval "$(omnilane completion bash)" # 在当前 Bash 启用补全
|
|
297
307
|
source <(omnilane completion zsh) # 在当前 Zsh 启用补全
|
|
308
|
+
omnilane completion fish | source
|
|
309
|
+
omnilane mcp # MCP stdio server(需 Node.js)
|
|
298
310
|
omnilane release-audit [--target 版本] [--json] # 离线、只读的发布闸门
|
|
299
311
|
omnilane ui start # 启动或复用本地 Live UI,输出链接
|
|
300
312
|
omnilane ui status # 查看 Live UI 是否正在运行
|
|
@@ -308,11 +320,15 @@ dispatch.sh [--json] --list [--json]
|
|
|
308
320
|
dispatch.sh [--json] --explain 通道 [--json] # 离线逐候选解释路由决策
|
|
309
321
|
dispatch.sh [--json] --validate [--json] # 离线检查生效路由,不调用模型
|
|
310
322
|
jobs.sh [--json] {list | status 作业ID | result 作业ID} # JSON 结果只回元数据,不回正文
|
|
323
|
+
jobs.sh [--json] list [--lane L] [--vendor V] [--status running|done] # 过滤列表
|
|
311
324
|
jobs.sh wait 作业ID [--timeout N] # 作业退出码;124 超时;125 工作进程消失
|
|
312
|
-
jobs.sh
|
|
325
|
+
jobs.sh cancel 作业ID # 停止运行中的作业:整组 SIGTERM,再 SIGKILL
|
|
326
|
+
jobs.sh rm 作业ID # 删除单个已完成/已死作业(运行中会被拒绝)
|
|
327
|
+
jobs.sh [--json] stats [--last N] [--lane L] [--vendor V] # 本机成功率与路由汇总
|
|
313
328
|
jobs.sh audit [--last N] [--json] # 只读检查作业完整性与隐私
|
|
314
329
|
jobs.sh prune [--keep N] [--apply] # 默认仅预览;只清理已完成作业
|
|
315
330
|
configure.sh # 交互通道菜单
|
|
331
|
+
configure.sh set|get|unset|list|diff LANE [SPEC] # 非交互编辑/查看 routing.local.yaml
|
|
316
332
|
```
|
|
317
333
|
|
|
318
334
|
退出码:`2` 用法错误(包括厂商值无效,或指定厂商不在该通道)、`3` 通道已关闭、
|
|
@@ -380,12 +396,7 @@ configure.sh # 交互通道菜单
|
|
|
380
396
|
|
|
381
397
|
## 🌱 状态
|
|
382
398
|
|
|
383
|
-
|
|
384
|
-
三个聚合/溢流 CLI(kimi、qwen、opencode),加上免 CLI 的 `openrouter` 直连
|
|
385
|
-
API vendor——全部走统一 runner 契约并附 contract 测试,另有 Claude Code
|
|
386
|
-
`SessionStart` 自动提醒。kimi、qwen、opencode、openrouter 的 runner 以假
|
|
387
|
-
可执行文件做过契约测试;欢迎反馈真实模型使用经验。Grok/Antigravity 命令壳
|
|
388
|
-
行为仍可能随 CLI 版本变动。欢迎提交 issue 与 PR。
|
|
399
|
+
omnilane 现有 13 个派工 vendor——4 个框架原生(codex、claude、grok、gemini)、3 个聚合/溢流 CLI(kimi、qwen、opencode),加上 6 个免 CLI 的 OpenAI-compatible direct-API vendor(openrouter、deepseek、zai、mistral、groq、cerebras)——全部走统一 runner 契约并附 contract 测试,另有 Claude Code `SessionStart` 自动提醒与 MCP stdio server 介面(`omnilane mcp`)。direct-API 与聚合 runner 皆以假可执行档做过契约测试;欢迎反馈真实模型使用经验。Grok/Antigravity 命令壳行为仍可能随 CLI 版本变动。欢迎提交 issue 与 PR。
|
|
389
400
|
|
|
390
401
|
项目文档:[贡献指南](CONTRIBUTING.md) · [安全政策](SECURITY.md) ·
|
|
391
402
|
[变更记录](CHANGELOG.md)
|
package/README.zh-TW.md
CHANGED
|
@@ -21,6 +21,14 @@
|
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
24
|
+
## v0.9.0 新功能
|
|
25
|
+
|
|
26
|
+
- **五個 OpenAI-compatible direct-API vendor** — `deepseek`、`zai`(GLM)、
|
|
27
|
+
`mistral`、`groq`、`cerebras`,與 `openrouter` 同為免 CLI 通道(curl 加一把
|
|
28
|
+
`<VENDOR>_API_KEY`);`lib/common.sh` registry 一行即加一個。詳見
|
|
29
|
+
[`docs/model-capabilities-2026-07.md`](docs/model-capabilities-2026-07.md)。
|
|
30
|
+
- **fish shell 補全** — `omnilane completion fish | source`。
|
|
31
|
+
|
|
24
32
|
## v0.8.3 新功能
|
|
25
33
|
|
|
26
34
|
- **MCP server** — `omnilane mcp` 啟動零依賴的 stdio MCP server,任何支援
|
|
@@ -36,6 +44,11 @@
|
|
|
36
44
|
託管模型,不必再裝任何代理 CLI。僅限 advise/consult(不能改檔,
|
|
37
45
|
work 模式會明確報錯指路),模型 slug 必填,例如
|
|
38
46
|
`dispatch.sh --vendor openrouter --model anthropic/claude-sonnet-5 consult "..."`。
|
|
47
|
+
- **`deepseek`、`zai`、`mistral`、`groq`、`cerebras` vendor** — 與 `openrouter`
|
|
48
|
+
同一條免 CLI 直連 API 路徑,對應 OpenAI-compatible 供應商:DeepSeek、Z.ai GLM、
|
|
49
|
+
Mistral、Groq、Cerebras。各只要 `curl` 加自己那把 `<VENDOR>_API_KEY`;僅限
|
|
50
|
+
advise/consult。端點、金鑰、預設模型由 `lib/common.sh` 一行 registry 定義。
|
|
51
|
+
詳見 [`docs/model-capabilities-2026-07.md`](docs/model-capabilities-2026-07.md)。
|
|
39
52
|
- **`opencode` vendor** — 透過 OpenCode 多供應商聚合 CLI 無頭派工
|
|
40
53
|
(`opencode run`)。advise 模式鎖定內建唯讀 `plan` agent;work 模式
|
|
41
54
|
用 `--auto`。加入預設 `coding-overflow` 鏈作為最後備援。
|
|
@@ -131,6 +144,8 @@ flowchart LR
|
|
|
131
144
|
呼叫對應廠商的 CLI。`--vendor` 會鎖定點名廠商,不做降級。
|
|
132
145
|
- **`skills/omnilane/SKILL.md`** — 一份技能四個框架都能載入:
|
|
133
146
|
先認出自己是哪個模型,自己通道的活自己做,其餘派出去。
|
|
147
|
+
- **`omnilane mcp`** — 同一套路由改以 MCP stdio server 提供,
|
|
148
|
+
給走 MCP 而非 skill 整合的宿主。
|
|
134
149
|
|
|
135
150
|
<div align="center">
|
|
136
151
|
|
|
@@ -268,10 +283,13 @@ omnilane ui stop # 正常停止
|
|
|
268
283
|
}
|
|
269
284
|
```
|
|
270
285
|
|
|
271
|
-
Server 提供 `route`、`jobs_status`、`jobs_result`、`
|
|
286
|
+
Server 提供 `route`,以及一組唯讀查詢工具:`list_lanes`、`explain`、`validate`、`dry_run`、`jobs_list`、`jobs_status`、`jobs_result`、`jobs_stats`、`jobs_audit`、`doctor`。
|
|
272
287
|
`route` 預設唯讀 `advise` 模式;選 `work` 的呼叫必須同時提供明確的
|
|
273
288
|
`workdir`。
|
|
274
289
|
|
|
290
|
+
唯一的執行需求是 Node.js(不裝任何 npm 套件);也可以直接
|
|
291
|
+
`npm install -g omnilane`,CLI 連同 MCP server 一起裝好。
|
|
292
|
+
|
|
275
293
|
## ⚙️ 自訂設定
|
|
276
294
|
|
|
277
295
|
三層,全部選用:
|
|
@@ -298,6 +316,7 @@ omnilane list | route … | jobs … | configure # 全域指令,任何目錄
|
|
|
298
316
|
# (install.sh 會連結進 ~/.local/bin)
|
|
299
317
|
eval "$(omnilane completion bash)" # 在目前 Bash 啟用補全
|
|
300
318
|
source <(omnilane completion zsh) # 在目前 Zsh 啟用補全
|
|
319
|
+
omnilane completion fish | source # 在目前 Fish 啟用補全
|
|
301
320
|
omnilane ui start # 啟動或沿用本機 Live UI,印出網址
|
|
302
321
|
omnilane ui status # 查看 Live UI 是否運作中
|
|
303
322
|
omnilane ui url # 印出目前通過驗證的本機網址
|
|
@@ -310,12 +329,17 @@ dispatch.sh [--json] --list [--json]
|
|
|
310
329
|
dispatch.sh [--json] --explain 通道 [--json] # 離線逐候選解釋路由決策
|
|
311
330
|
dispatch.sh [--json] --validate [--json] # 離線檢查生效路由,不呼叫模型
|
|
312
331
|
jobs.sh [--json] {list | status 工作ID | result 工作ID} # JSON 結果只回中繼資料,不回本文
|
|
332
|
+
jobs.sh [--json] list [--lane L] [--vendor V] [--status running|done] # 過濾清單
|
|
313
333
|
jobs.sh wait 工作ID [--timeout N] # 工作結束碼;124 逾時;125 工作者消失
|
|
314
|
-
jobs.sh
|
|
334
|
+
jobs.sh cancel 工作ID # 停止執行中的工作:整組 SIGTERM,再 SIGKILL
|
|
335
|
+
jobs.sh rm 工作ID # 刪除單一已完成/已死工作(執行中會被拒絕)
|
|
336
|
+
jobs.sh [--json] stats [--last N] [--lane L] [--vendor V] # 本機成功率與路由彙整
|
|
315
337
|
jobs.sh audit [--last N] [--json] # 唯讀檢查工作完整性與隱私
|
|
316
338
|
jobs.sh prune [--keep N] [--apply] # 預設只預覽;只清理已完成工作
|
|
339
|
+
omnilane mcp # MCP stdio server(需 Node.js)
|
|
317
340
|
omnilane release-audit [--target 版本] [--json] # 離線、唯讀的發布閘門
|
|
318
341
|
configure.sh # 互動通道選單
|
|
342
|
+
configure.sh set|get|unset|list|diff LANE [SPEC] # 非互動編輯/檢視 routing.local.yaml
|
|
319
343
|
```
|
|
320
344
|
|
|
321
345
|
**重大決定可以開評審團,不是問一個人。**`arbitrate` 通道**預設關閉**——
|
|
@@ -390,10 +414,11 @@ codex/claude/grok/gemini 自選 1-4 個評審。開了之後,同一個問題丟
|
|
|
390
414
|
|
|
391
415
|
## 🌱 狀態
|
|
392
416
|
|
|
393
|
-
|
|
394
|
-
三個聚合/溢流 CLI(kimi、qwen、opencode)
|
|
395
|
-
API vendor
|
|
396
|
-
`SessionStart`
|
|
417
|
+
omnilane 現有十三個派工 vendor——四個框架原生(codex、claude、grok、gemini)、
|
|
418
|
+
三個聚合/溢流 CLI(kimi、qwen、opencode),加上六個免 CLI 的 OpenAI-compatible
|
|
419
|
+
直連 API vendor(openrouter、deepseek、zai、mistral、groq、cerebras)——全部走
|
|
420
|
+
統一 runner 契約並附 contract 測試,另有 Claude Code `SessionStart` 自動提醒與
|
|
421
|
+
MCP stdio server 介面(`omnilane mcp`)。直連 API 與聚合 runner 皆以假
|
|
397
422
|
執行檔做過契約測試;歡迎回報真實模型使用經驗。Grok/Antigravity 指令殼行為
|
|
398
423
|
仍可能隨 CLI 版本變動。歡迎回報 issue 與 PR。
|
|
399
424
|
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.9.0
|
package/bin/omnilane
CHANGED
|
@@ -40,13 +40,14 @@ case "$cmd" in
|
|
|
40
40
|
;;
|
|
41
41
|
completion)
|
|
42
42
|
[[ $# -eq 1 ]] || {
|
|
43
|
-
echo "usage: omnilane completion bash|zsh" >&2
|
|
43
|
+
echo "usage: omnilane completion bash|zsh|fish" >&2
|
|
44
44
|
exit 2
|
|
45
45
|
}
|
|
46
46
|
case "$1" in
|
|
47
47
|
bash) cat "$REPO/completions/omnilane.bash" ;;
|
|
48
48
|
zsh) cat "$REPO/completions/_omnilane" ;;
|
|
49
|
-
|
|
49
|
+
fish) cat "$REPO/completions/omnilane.fish" ;;
|
|
50
|
+
*) echo "usage: omnilane completion bash|zsh|fish" >&2; exit 2 ;;
|
|
50
51
|
esac
|
|
51
52
|
;;
|
|
52
53
|
release-audit) exec bash "$REPO/scripts/release-audit.sh" "$@" ;;
|
|
@@ -69,7 +70,7 @@ omnilane — one routing table, every harness
|
|
|
69
70
|
dispatch or consult a model
|
|
70
71
|
omnilane jobs [--json] COMMAND [ARGS] list, status, result, stats, wait, or audit
|
|
71
72
|
omnilane mcp start the MCP stdio server
|
|
72
|
-
omnilane completion bash|zsh
|
|
73
|
+
omnilane completion bash|zsh|fish print a shell completion script
|
|
73
74
|
omnilane release-audit [flags] offline, read-only release gate
|
|
74
75
|
omnilane doctor [--json] read-only local health report
|
|
75
76
|
omnilane ui start|status|url|stop
|