釋出部署刷新連結農場的功能至 master,版本 0.3.2 升到 0.3.3 #62

Merged
admin merged 3 commits from develop into master 2026-09-03 04:41:59 +00:00
Member

摘要

  • 需求描述:把 develop 的路徑解析修正釋出到 master。部署工具的 git clone 沒有指定分支,抓的是預設分支 master,所以變更沒進 master 就到不了任何一台機器。版本 0.3.2 升到 0.3.3。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

部署收尾刷新 current 連結農場,新增 link 輸出行;技能文件與行為契約跟著更新,並修正一句因這次改動而失效的敘述。

設計重點

  • 這是釋出用的 PR,內容全部來自已經審過並合併進 develop 的變更,這裡不新增任何程式碼。
  • 釋出的動機是這兩項修正都要在真實機器上才驗得完。合併進 develop 的驗證是在同形佈局與 dry-run 做的,真機驗收要等部署。

測試結果

  • 合併前的檢查都跑過並回結束碼 0:lint-scripts.sh、check-behaviors.sh、ste100-lint.sh。
  • 真機驗收待部署後進行,兩項指標:版本閘門要能查得到遠端版本、部署要自己刷新連結農場而不需要人手動修。

前置 Push Request

  • 無
## 摘要 - 需求描述:把 `develop` 的路徑解析修正釋出到 `master`。部署工具的 `git clone` 沒有指定分支,抓的是預設分支 `master`,所以變更沒進 `master` 就到不了任何一台機器。版本 0.3.2 升到 0.3.3。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 部署收尾刷新 `current` 連結農場,新增 `link` 輸出行;技能文件與行為契約跟著更新,並修正一句因這次改動而失效的敘述。 ## 設計重點 - 這是釋出用的 PR,內容全部來自已經審過並合併進 `develop` 的變更,這裡不新增任何程式碼。 - 釋出的動機是這兩項修正都要在真實機器上才驗得完。合併進 `develop` 的驗證是在同形佈局與 dry-run 做的,真機驗收要等部署。 ## 測試結果 - 合併前的檢查都跑過並回結束碼 0:`lint-scripts.sh`、`check-behaviors.sh`、`ste100-lint.sh`。 - 真機驗收待部署後進行,兩項指標:版本閘門要能查得到遠端版本、部署要自己刷新連結農場而不需要人手動修。 ## 前置 Push Request - 無
jiantw83 added 3 commits 2026-09-03 04:41:00 +00:00
$JSC_HOME/current 是一組不帶版本的符號連結,每個外掛一條,指向快取裡帶版本號的實體目錄。技能文件裡所有跨外掛的腳本呼叫都以這一層為根,因為它不帶版本號、寫得進權限允許清單。

問題是沒有任何東西會更新這些連結,只有 wire-cli.sh 會更新 jsc-hooks 那一條。其餘幾條是人手動建的,建好之後就停在當時的版本。實際後果是部署完四個 domain 之後,快取裡是新版,連結卻還指著舊版:助理巡檢照文件的字面路徑跑,跑到的是舊腳本,而其中一個舊版底下根本沒有它要呼叫的檔案。失敗無聲,只有心跳停止,沒人盯就不會有人發現。

部署改成收尾時刷新整組連結。挑部署來做,是因為它本來就知道裝了哪些 domain、裝到哪個版本,資訊最齊。

四個設計決定:

基準 CLI 取 claude、codex、copilot、kiro 之中第一支找得到的,整輪只有那一支寫連結。連結農場只有一組,不可能同時指向五個 CLI 的副本;而五支 CLI 是平行跑的,五支都寫會互相覆寫,最後指到哪一份是隨機的、出事重現不出來。antigravity 一律不當基準,它的來源是本地 clone,而那份 clone 明文允許是維護者的開發樹,把全機器路徑指到做到一半的樹正好是這次要修的那種毛病。

版本目錄取版本排序最大、且真的有 plugin.json、且本身不是符號連結的那一層。要求 plugin.json 是因為裝到一半的目錄沒有它,挑到會讓連結指向不完整的外掛而且照樣不報錯。

解除安裝的判準是「連結還在、指向卻沒了」,不是「這輪解除安裝過這個 domain」。只解除安裝其中一支 CLI 時,連結可能還指著另一支手上完好的副本,那一條必須留著。

連結建立失敗印一行繼續,不記進失敗清單。這一段跑在外掛都裝好之後,部署本身已經成功;記成失敗會連帶跳過重啟閘門,操作者拿到的是一台明明裝好卻被說成失敗的機器。缺陷仍然看得見,因為輸出多了一行。

目標存在但不是符號連結時一律不覆寫,印 skip 要人工處理。ln -sfn 對著實體目錄下手會把連結建進那個目錄裡,農場當場壞掉還不會報錯。

新增 link 行讓呼叫端讀得到每一條連結指到哪裡,狀態五選一。技能文件與行為契約跟著更新,另修正一句因這次改動而失效的敘述:原本寫 current 底下沒有 jsc-cli,刷新之後那條連結會存在,改成講清楚它仍然靠不住,因為第一次建起它的正是這一輪。
連結農場的刷新要靠版號才傳得到機器端。

三份 manifest 由 sync-skill-manifest.sh 同步,只動版本欄位。
Reviewed-on: #61
admin approved these changes 2026-09-03 04:41:57 +00:00
admin merged commit 075c681e2e into master 2026-09-03 04:41:59 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/cli#62