拿排程條目記下的 CLI 清單比對,少跑一支就點名 #38

Merged
admin merged 2 commits from feat/report-cli-gap-against-entry-snapshot into develop 2026-09-07 01:46:32 +00:00
Member

摘要

  • 需求描述:無人值守那一輪報「對 4 支 CLI 都跑過,全部成功」,而這台機器裝了 5 支。少的那一支裝在會過期的目錄底下,條目帶的 PATH 是安裝當下拍的。報告讀起來完全正常,因為沒有東西知道該有幾支。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
tools/schedule.sh 條目多記一個變數,記下安裝當下偵測到哪幾支 CLI
tools/run-due.sh 拿它比對,少了哪一支就印 cli_missing= 並點名
skills/assistant/SKILL.md 收尾回報要讀那一行,並講明「全部成功不代表全部跑過」
references/behaviors.md 兩支的合約各補一段
三份 manifest 版號 0.2.8 升到 0.2.9

為什麼原本看不出來

偵測 CLI 那一支純看 PATH,分不出「裝了但執行檔不在 PATH 上」。而條目帶的 PATH 是安裝當下拍的:

現在的 shell        claude codex copilot antigravity kiro   (5 支)
條目帶的 PATH 底下  claude codex antigravity kiro           (4 支)

少的那一支裝在 /run/user/0/fnm_multishells/{行程編號}_{時間戳}/bin——重開機就不在了。

而少一支的後果不是報錯:那一輪照樣把偵測到的每一支都跑過、照樣全部成功、照樣回報「都跑過了」。沒有基準,就沒有東西比得出差額。

這件事我當初預言了一半

cli_path() 的註解寫過:

有些 CLI 裝在會過期的目錄底下,那種路徑下一次開機就不在了。這裡不特別過濾——過濾要認得每一種安裝方式,那份名單會過期得比路徑還快。重跑一次 install 就會重新拍一份。

預言對了,但漏了一句:沒有任何東西會提醒該重跑。

判法照既有那一套

條目記 CLI 代號的判法照組 PATH 那一套逐支 command -v,不另叫外部腳本。兩個理由:

  • install 那一刻本來就用同一套判過一次(為了組 PATH),再叫一支等於同一件事兩套實作
  • 那一支只看 PATH,跟這裡拿得到的資訊一樣多,多繞一層沒有換到任何東西

只報不修

那條路徑本質上是暫時的。真正的解法是那支 CLI 該裝在穩定位置,或者重跑一次排程安裝重新拍快照——兩件都不是這一支該替人決定的。

所以只點名、只提醒,並指出重跑安裝會重新拍一份。

舊條目安靜通過

沒有那個變數時不警告。那一種情況分不出「沒少」與「沒基準」,而拿「沒基準」當缺失會讓每一台還沒重裝的機器每輪亮一次紅——今天已經看過一次那種雜訊怎麼把真的發現蓋掉。

測試結果

情況 結果
基準與實際一致(五支) 不出聲,cli_missing=-
基準多一支不存在的 點名那一支,印警告
完全沒設基準(舊條目) cli_missing=-,不警告
  • 真機情境重現:拿條目實際帶的那條 PATH 在清空環境裡跑,確實抓到「記著五支、這一輪只偵測到 4 支」。
  • 條目那一行加了這個變數之後 774 字元,仍在 crontab 的長度上限內。
  • 四支檢核腳本都回結束碼 0。
  • 全程用乾跑與隔離環境,沒有動到正式的排程與待辦簿。

前置 Push Request

  • 無
## 摘要 - 需求描述:無人值守那一輪報「對 4 支 CLI 都跑過,全部成功」,而這台機器裝了 5 支。少的那一支裝在會過期的目錄底下,條目帶的 `PATH` 是安裝當下拍的。報告讀起來完全正常,因為沒有東西知道該有幾支。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `tools/schedule.sh` | 條目多記一個變數,記下安裝當下偵測到哪幾支 CLI | | `tools/run-due.sh` | 拿它比對,少了哪一支就印 `cli_missing=` 並點名 | | `skills/assistant/SKILL.md` | 收尾回報要讀那一行,並講明「全部成功不代表全部跑過」 | | `references/behaviors.md` | 兩支的合約各補一段 | | 三份 manifest | 版號 0.2.8 升到 0.2.9 | ## 為什麼原本看不出來 偵測 CLI 那一支**純看 `PATH`**,分不出「裝了但執行檔不在 `PATH` 上」。而條目帶的 `PATH` 是安裝當下拍的: ``` 現在的 shell claude codex copilot antigravity kiro (5 支) 條目帶的 PATH 底下 claude codex antigravity kiro (4 支) ``` 少的那一支裝在 `/run/user/0/fnm_multishells/{行程編號}_{時間戳}/bin`——**重開機就不在了**。 而少一支的後果不是報錯:那一輪照樣把偵測到的每一支都跑過、照樣全部成功、照樣回報「都跑過了」。**沒有基準,就沒有東西比得出差額。** ## 這件事我當初預言了一半 `cli_path()` 的註解寫過: > 有些 CLI 裝在會過期的目錄底下,那種路徑下一次開機就不在了。這裡不特別過濾——過濾要認得每一種安裝方式,那份名單會過期得比路徑還快。重跑一次 `install` 就會重新拍一份。 預言對了,但漏了一句:**沒有任何東西會提醒該重跑。** ## 判法照既有那一套 條目記 CLI 代號的判法照組 `PATH` 那一套逐支 `command -v`,不另叫外部腳本。兩個理由: - `install` 那一刻本來就用同一套判過一次(為了組 `PATH`),再叫一支等於同一件事兩套實作 - 那一支只看 `PATH`,跟這裡拿得到的資訊一樣多,多繞一層沒有換到任何東西 ## 只報不修 那條路徑本質上是暫時的。真正的解法是那支 CLI 該裝在穩定位置,或者重跑一次排程安裝重新拍快照——**兩件都不是這一支該替人決定的**。 所以只點名、只提醒,並指出重跑安裝會重新拍一份。 ## 舊條目安靜通過 沒有那個變數時不警告。那一種情況分不出「沒少」與「沒基準」,而拿「沒基準」當缺失會讓每一台還沒重裝的機器每輪亮一次紅——今天已經看過一次那種雜訊怎麼把真的發現蓋掉。 ## 測試結果 | 情況 | 結果 | | --- | --- | | 基準與實際一致(五支) | 不出聲,`cli_missing=-` | | 基準多一支不存在的 | 點名那一支,印警告 | | 完全沒設基準(舊條目) | `cli_missing=-`,不警告 | - **真機情境重現**:拿條目實際帶的那條 `PATH` 在清空環境裡跑,確實抓到「記著五支、這一輪只偵測到 4 支」。 - 條目那一行加了這個變數之後 774 字元,仍在 `crontab` 的長度上限內。 - 四支檢核腳本都回結束碼 0。 - 全程用乾跑與隔離環境,沒有動到正式的排程與待辦簿。 ## 前置 Push Request - 無
jiantw83 added 2 commits 2026-09-07 01:40:31 +00:00
偵測 CLI 那一支純看 PATH,分不出「裝了但執行檔不在 PATH 上」。而條目帶的
PATH 是安裝當下拍的,其中某些 CLI 裝在會過期的目錄底下——這台機器實測就有
一支裝在帶行程編號的多殼層目錄,重開機之後那條路徑就不在了。

少了基準的後果不是報錯,是安靜地少做一支。那一輪照樣把偵測到的每一支都跑
過、照樣全部成功、照樣回報「都跑過了」,因為它不知道該有幾支。實測那一輪報
「對 4 支 CLI 都跑過,全部成功」,而機器上裝了 5 支——報告讀起來完全正常。

所以條目多記一個變數,記下安裝當下偵測到哪幾支,作為往後每一輪的參照基準。
判法照組 PATH 那一套逐支 command -v,不另叫外部腳本:install 那一刻本來就用
同一套判過一次,再叫一支等於同一件事兩套實作,而那一支拿得到的資訊跟這裡
一樣多,多繞一層沒有換到任何東西。

讀的那一邊比對之後印 cli_missing= 並點名少了哪一支,同時明說「全部成功不代表
全部跑過」。只報不修:那條路徑本質上是暫時的,真正的解法是那支 CLI 該裝在
穩定位置,或者重跑一次排程安裝重新拍快照——兩件都不是這一支該替人決定的。

舊條目沒有那個變數時安靜通過,不誤報:那一種情況分不出「沒少」與「沒基準」,
而拿「沒基準」當缺失會讓每一台還沒重裝的機器每輪亮一次紅。

實測三種情況:基準與實際一致時不出聲;基準多一支不存在的會點名那一支;完全
沒設基準時印減號、不警告。另外拿條目實際帶的那條 PATH 在清空環境裡重現真機
情境,確實抓到少了那一支。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
巡檢步驟五的記錄清單補上那個欄位,並寫明它是唯一看得出「少跑一支」的地方
——每一支偵測到的目標都跑過、都通過,那一輪也照樣回報都跑過了。

回報要求也寫進去:點名少了哪幾支、講明乾淨通過不等於完整通過、指出重跑排程
安裝才會重新拍快照。

三份 manifest 版號 0.2.8 升到 0.2.9。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
admin merged commit f6a293ddab into develop 2026-09-07 01:46:32 +00:00
admin deleted branch feat/report-cli-gap-against-entry-snapshot 2026-09-07 01:46:32 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/assist#38