發佈 jsc-cli 0.0.4:模型能力標籤閘門與階段模型路由 #6

Merged
admin merged 11 commits from develop into master 2026-08-24 08:16:46 +00:00
Member

本 PR 內容

把 develop 累積的變更發佈到 master,發佈版本 0.0.4。

目前領先 master 的 commit

  • 0d9e496 Merge pull request 'fix/model-config-resolve-subcommand' (#4) from fix/model-config-resolve-subcommand into develop
  • f2029d4 feat(cli): 新增 model-config.sh 的 resolve 子指令
  • 286b2f7 fix(marketplace): 同步兩份 marketplace.json 的說明與擁有者欄位
  • 3f4b160 Merge pull request 'feat/model-config-routing' (#3) from feat/model-config-routing into develop
  • cb6df17 chore(manifest): 版本號提升至 0.0.2
  • 072e018 docs(models): 補上角色式模型路由文件與階段指定模型輸出表
  • de504ee feat(model-config): 新增 SDLC 階段指定模型鏈解析工具

待納入(依賴 #5)

本 PR 依賴 #5。#5 合併進 develop 後,其內容會自動出現在本 PR:

  • 新增 tools/model-tags.sh 與 reasoning-max 標籤分級
  • SDLC 階段閘門改由能力標籤在程式層判定
  • 三份 manifest 升版至 0.0.4

合併順序

已在 Gitea 設定依賴,前置 PR 未關閉前本 PR 無法合併。跨 repo 發佈順序:jsc-cli → jsc-hooks → jsc-sdlc——後者的技能會呼叫前者的腳本,順序顛倒會讓使用者裝到不完整的組合。

## 本 PR 內容 把 `develop` 累積的變更發佈到 `master`,發佈版本 0.0.4。 ## 目前領先 master 的 commit - 0d9e496 Merge pull request 'fix/model-config-resolve-subcommand' (#4) from fix/model-config-resolve-subcommand into develop - f2029d4 feat(cli): 新增 model-config.sh 的 resolve 子指令 - 286b2f7 fix(marketplace): 同步兩份 marketplace.json 的說明與擁有者欄位 - 3f4b160 Merge pull request 'feat/model-config-routing' (#3) from feat/model-config-routing into develop - cb6df17 chore(manifest): 版本號提升至 0.0.2 - 072e018 docs(models): 補上角色式模型路由文件與階段指定模型輸出表 - de504ee feat(model-config): 新增 SDLC 階段指定模型鏈解析工具 ## 待納入(依賴 #5) 本 PR 依賴 #5。#5 合併進 `develop` 後,其內容會自動出現在本 PR: - 新增 `tools/model-tags.sh` 與 `reasoning-max` 標籤分級 - SDLC 階段閘門改由能力標籤在程式層判定 - 三份 manifest 升版至 0.0.4 ## 合併順序 已在 Gitea 設定依賴,前置 PR 未關閉前本 PR 無法合併。跨 repo 發佈順序:`jsc-cli` → `jsc-hooks` → `jsc-sdlc`——後者的技能會呼叫前者的腳本,順序顛倒會讓使用者裝到不完整的組合。
jiantw83 added 7 commits 2026-08-24 08:10:32 +00:00
What:新增 tools/model-config.sh,提供 get {stage} 與 list 兩個子命令,解析 SDLC 各階段(plan、analyze、implement、maintain)的指定模型鏈。
Why:讓 jsc-sdlc 各階段閘門能以角色式模型路由指定模型與遞補鏈,而不是只靠能力標籤比對;同時讓專案能覆寫全域設定。
How:以 POSIX sh 加 awk 實作;先讀專案目錄 .jsc/models,該階段沒設定才退回 $JSC_HOME/models.conf(JSC_HOME 預設 ~/.jsc);設定格式 stage=model[,fallback...],同階段多行取最後一行;get 未設定時空輸出且 exit 0,list 每階段輸出 stage、chain、source(未設定印「-」)。
Who:jsc-cli models 技能與 jsc-sdlc 各階段的模型閘門。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
What:references/model-tags.md 新增「階段指定模型(角色式路由)」章節,說明設定格式、檔案優先序與遞補鏈語意;skills/models/SKILL.md 的 description 與步驟加入 model-config.sh list 的「階段指定模型」輸出表(stage、指定鏈、source 三欄);README.md 補上 tools/model-config.sh 工具列與 models 技能說明。
Why:角色式模型路由需要文件明確定義設定格式與判定順序,jsc-sdlc 閘門與使用者才知道指定模型優先、標籤比對為備援。
How:設定格式 stage=model[,fallback...];優先序為專案 .jsc/models 覆寫 $JSC_HOME/models.conf;解析一律透過 jsc-cli/tools/model-config.sh,不自行讀檔;models 技能輸出表未設定的階段以「-」表示。
Who:models 技能的使用者與依賴模型閘門的 jsc-sdlc 各階段技能。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
What:plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三份 manifest 的 version 由 0.0.1 提升為 0.0.2。
Why:本次新增角色式模型路由功能(model-config.sh 與相關文件),屬功能性變更,需要新版本號讓各 CLI 的插件更新機制辨識。
How:同步修改三份 manifest 的 version 欄位,維持三處版本一致。
Who:jsc-cli 插件的安裝與更新流程(jsc-cli:deploy 及各 CLI 原生插件命令)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Reviewed-on: #3
Reviewed-by: 系統管理員 <1+admin@noreply.localhost>
What:
`.agents/plugins/marketplace.json` 和 `.claude-plugin/marketplace.json` 兩份檔案內容不一致。這次把兩份都對齊 plugins/jsc 的標準版本。在 `.agents/plugins/marketplace.json` 加上最上層的 description 和 owner(name: "JSC")欄位,並幫十個外掛(jsc-ask、jsc-cli、jsc-git、jsc-gitea、jsc-hooks、jsc-log、jsc-meta、jsc-pkg、jsc-review、jsc-sdlc)各自補上說明文字。在 `.claude-plugin/marketplace.json` 加上最上層的 description 和 owner 欄位,並修正 jsc-meta 說明文字,把「新建/更新/刪除」改成「新建、更新、刪除」。

Why:
這兩份檔案是 marketplace 的清單檔,內容原本不一致。`.claude-plugin/marketplace.json` 已有每個外掛的說明,但缺最上層欄位。`.agents/plugins/marketplace.json` 完全沒有說明文字。清單檔不一致,會讓不同工具讀到不同資訊,造成混淆,所以要修正。

How:
對照 plugins/jsc 這份標準版本,逐一比對兩份檔案,補齊缺少的欄位,並統一用字。

Who:
這次改動跟 jsc-cli 自己的技能邏輯無關,是整個 repo 層級的一致性修正。目的是讓 jsc-cli 這個 repo 可以正確扮演 marketplace 註冊入口的角色,跟其他 repo 的清單檔保持同步。
What:
在 `tools/model-config.sh` 新增 `resolve {stage}` 子指令。這個指令會取出某個 SDLC 階段的模型鏈(跟 `get {stage}` 用同樣的解析規則:先讀專案的 `.jsc/models`,找不到再讀 `$JSC_HOME/models.conf`),然後印出鏈中第一個模型名稱,當作目前這個 CLI 可用的模型。同時新增 `current_cli()` 這個輔助函式,透過各家 CLI 的環境變數,判斷目前是在 claude、codex、copilot、antigravity、還是 kiro 底下執行。這個版本先把 `current_cli()` 的結果記錄下來,還沒有拿它去過濾模型鏈中不可用的模型,這件事留到之後再做,因為要判斷某個模型是否可用,需要 LLM 層級的判斷,不是單純的 shell script 能做到的。之後的計畫是拿 `current_cli()` 的結果,對照 `references/model-tags.md` 和 `detect-clis.sh`,跳過模型鏈裡不可用的模型。另外,把 README.md 裡 `tools/model-config.sh` 的工具說明表格,加上新的 `resolve {stage}` 子指令說明。版本號也從 0.0.2 升到 0.0.3,同步改了 `plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 這三份清單檔,這是這個 repo 的慣例:新增功能時要一併升版號。

Why:
jsc-meta:skill-check 這次稽核發現,jsc-sdlc 底下 plan、analyze、implement、maintain 這四個階段的技能,各自都要幫自己的階段挑一個模型,來做 gate check。如果沒有 `resolve` 這個子指令,這四個技能就要各自在技能說明裡,重複寫一次「讀模型鏈、選一個候補模型」的邏輯。這樣容易寫錯,也難維護。

How:
在既有的 `get`/`list` 邏輯基礎上,加一個 `resolve` 子指令,直接回傳模型鏈的第一個模型。同時加上 `current_cli()`,先把偵測 CLI 的能力做出來,但先不接上過濾邏輯,用註解說明後續要怎麼接。文件和版本號一併更新。

Who:
這個功能是給 jsc-sdlc 的四個階段技能(plan、analyze、implement、maintain)用的。它們可以直接呼叫 `resolve {stage}`,取得一個可用的模型名稱,不用各自重複寫模型鏈的判斷邏輯。
Reviewed-on: #4
Reviewed-by: 系統管理員 <1+admin@noreply.localhost>
admin added 4 commits 2026-08-24 08:16:33 +00:00
admin approved these changes 2026-08-24 08:16:43 +00:00
admin merged commit d9415edf19 into master 2026-08-24 08:16:46 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Reference: plugins/cli#6