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

Merged
admin merged 11 commits from develop into master 2026-08-24 08:16:46 +00:00
5 changed files with 45 additions and 7 deletions
Showing only changes of commit f2029d4cd0 - Show all commits
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "jsc-cli",
"version": "0.0.2",
"version": "0.0.3",
"description": "CLI 偵測、模型能力標籤與技能庫批次部署",
"skills": "./skills",
"author": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "jsc-cli",
"version": "0.0.2",
"version": "0.0.3",
"description": "CLI 偵測、模型能力標籤與技能庫批次部署",
"skills": "./skills"
}
+1 -1
View File
@@ -21,7 +21,7 @@ Marketplace 統一為 `jsc`(https://gitea.jsc.idv.tw/plugins/jsc.git),安
| 工具 | 用途 |
| --- | --- |
| `tools/detect-clis.sh` | 列出已安裝的 AI CLI 與執行檔路徑(TSV:name / path / version;kiro 的執行檔為 `kiro-cli`) |
| `tools/model-config.sh` | 解析 SDLC 各階段的指定模型鏈(`get {stage}`、`list`);專案 `.jsc/models` 優先於 `$JSC_HOME/models.conf`,格式見 `references/model-tags.md` |
| `tools/model-config.sh` | 解析 SDLC 各階段的指定模型鏈(`get {stage}`、`list`、`resolve {stage}` 印出目前 CLI 可用的第一個模型);專案 `.jsc/models` 優先於 `$JSC_HOME/models.conf`,格式見 `references/model-tags.md` |
## Skills 目錄
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "jsc-cli",
"version": "0.0.2",
"version": "0.0.3",
"description": "CLI 偵測、模型能力標籤與技能庫批次部署",
"skills": "./skills/"
}
+39 -1
View File
@@ -9,6 +9,7 @@
# 用法:
# model-config.sh get {stage} 印出該階段解析後的模型鏈(逗號分隔);未設定不印。兩種情況都 exit 0。
# model-config.sh list 每階段一行:stage<TAB>chain<TAB>source(project 或 global);未設定的 chain 與 source 印「-」。
# model-config.sh resolve {stage} 印出該階段「目前 CLI 可用的第一個模型」單一名稱;鏈為空或無法判定時不印,exit 0。
set -u
JSC_HOME="${JSC_HOME:-$HOME/.jsc}"
@@ -52,8 +53,36 @@ resolve() { # $1=階段
return 0
}
# 判斷目前是哪個 CLI 在跑(盡量而為,非必要)。
# 依 CLI 官方常見環境變數判斷;偵測不到就回傳 unknown。
current_cli() {
[ -n "${CLAUDECODE:-}" ] && { echo claude; return 0; }
[ -n "${CODEX_SANDBOX:-}${CODEX_HOME:-}" ] && { echo codex; return 0; }
[ -n "${COPILOT_AGENT:-}" ] && { echo copilot; return 0; }
[ -n "${ANTIGRAVITY_SESSION:-}" ] && { echo antigravity; return 0; }
[ -n "${KIRO_SESSION:-}" ] && { echo kiro; return 0; }
echo unknown
}
# resolve 子指令:印出「目前 CLI 可用的第一個模型」單一名稱。
# 簡化說明:這個 repo 目前沒有「列出某 CLI 實際安裝/可用模型」的 shell 級機制
# ——現有的 skills/models 是靠 sub agent 讀各 CLI 的設定檔(~/.claude/settings.json、
# ~/.codex/config.toml 等),屬於 LLM 才能做的判讀,沒辦法在這支 POSIX sh 腳本裡重現。
# 因此這裡只用 current_cli() 抓到的「目前 CLI 名稱」這個既有訊號做記錄,
# 實際判斷可用性一律簡化為「直接取模型鏈的第一個模型」,不逐一檢查該模型是否真的能用。
# 之後若要做到依 CLI 實際可用模型過濾,可以在這裡比對 current_cli 的結果與
# references/model-tags.md/detect-clis.sh 的輸出,逐一嘗試鏈上模型直到找到可用的。
resolve_first_usable() { # $1=階段
chain=$(resolve "$1" | cut -f1)
[ -n "$chain" ] || return 0
cli=$(current_cli)
: "目前偵測到的 CLI:$cli(本版本尚未用來篩選模型,見上方簡化說明)"
printf '%s\n' "$chain" | cut -d, -f1
return 0
}
usage() {
echo "用法:model-config.sh get {plan|analyze|implement|maintain} | list" >&2
echo "用法:model-config.sh get {plan|analyze|implement|maintain} | list | resolve {plan|analyze|implement|maintain}" >&2
exit 1
}
@@ -67,6 +96,15 @@ case "${1:-}" in
resolve "$stage" | cut -f1
exit 0
;;
resolve)
stage="${2:-}"
case " $STAGES " in
*" $stage "*) ;;
*) usage ;;
esac
resolve_first_usable "$stage"
exit 0
;;
list)
for stage in $STAGES; do
line=$(resolve "$stage")