到期的內建檢查項真的跑一遍,成敗回寫待辦簿 #26

Merged
admin merged 2 commits from feat/run-due-built-in-check-items into develop 2026-09-04 06:07:21 +00:00
Member

摘要

  • 需求描述:待辦簿蓋好之後一直沒有人執行它。十六筆內建項、十五筆到期,而執行紀錄與失敗次數從建立到現在一次都沒動過——巡檢每輪把它們印出來,如此而已。這張把執行那一步接上,並且只接唯讀盤點指令那一種。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
tools/run-due.sh 新增。讀到期清單、展開代入點、執行、回寫成敗,兩個子命令 run 與 plan
skills/assistant/SKILL.md 巡檢多一步(步驟五,寫心跳之前)、工具路徑表、結束碼表、界線一條、收尾回報一個區塊
references/behaviors.md 外部呼叫那一欄記下這一支的完整合約
三份 manifest 版號 0.2.2 升到 0.2.3

只跑三種動作裡的一種

待辦簿的動作欄有三種值:一行指令、技能名、只提醒。這一支只跑第一種。

技能名那一種不跑,因為叫用一整支技能會寫 wiki、開 PR、改檔案,而這一支跑在沒有人看的那一輪裡。唯讀盤點指令失敗最多回一個非零碼,那一筆記一次失敗;一支技能中途失敗可能留下寫到一半的頁或開錯的 PR。兩種代價不同,就該分兩次判、分兩次接。

使用者親手登錄的那幾筆也不跑。 只有帶著反查鍵的內建項會被執行,那幾筆的指令經過種入那一支的檢核。人手動登錄的沒有經過那道關,動作欄想寫什麼都行。

代不出目標不算失敗

兩個代入點的現況不同:

代入點 資料來源 狀態
{cli} jsc-cli/tools/detect-clis.sh 可用,這台機器偵測到五支
{repo} 存取庫掃描 還沒做出來

所以三支指令這一輪只跑得動兩支。帶不出目標的那一筆印一行跳過,而且執行紀錄與失敗次數一個字都不動。

那一筆沒有做錯任何事。記成失敗會讓一個沒有人修得動的計數一路往上爬,而那個計數存在的理由正是指出「有一筆壞掉的項目每輪重試而沒人知道」。把「還沒接上」記成「壞掉」,等於用假的壞掉把真的壞掉蓋掉。

執行前再驗一次形狀

種入那一支驗過同樣幾項,這裡不省——待辦檔是純文字,種入之後可能被改。擋掉金錢符號、反引號、波浪號、分號、管線與連接符號;路徑一定要落在這一輪的根目錄底下;代完之後不得留大括號。

權限閘門與這一支的關係

這一支自己執行那些指令,所以權限層只看得到 run-due.sh 這一條,看不到裡面跑了什麼。

那不是繞過閘門。閘門本來就不是沙箱,它是一份「可信入口」的白名單,而清單上每一支腳本本來就做得了它該做的事——巡檢那一支會寫 wiki 頁,部署那一支會改整台機器的外掛。

防線改由三層擋:只跑經過審查的委派清單種出來的項目、執行前再驗一次形狀、代不出來的一律不跑。這段理由寫進了檔頭,因為下一個維護的人一定會問,而「為什麼不會被擋」跟「為什麼不需要被擋」是兩個不同的答案。

界線補了一條

不對發現動手,跟跑自己排定的工作,不是同一件事:

  • 待人處理那幾列是關於別人機器狀態的發現,跑那幾列等於一輪自己決定別人的工作該怎麼做
  • 到期的內建項是助理自己被交付的工作,來源是要走 PR 審查的委派清單

並寫明:哪天那一欄出現會寫入的指令,要重新吵這一段,不是悄悄把它放寬。

測試結果

  • 真機乾跑:15 筆到期,2 筆要跑(其中一筆展開成五個 CLI 目標)、1 筆代不出目標、12 筆這一批不跑。數字與委派清單對得上。
  • 真的執行並回寫(隔離環境):成功那一筆寫進 last_run 與算好的下次到期;失敗那一筆 last_run 有了、失敗次數變 1;第二次再跑變 2。這是待辦簿建起來之後第一次有欄位因為執行而改變。
  • 四道防線各驗一次:指令裡夾帶分號、指令不在根目錄底下、代完還留著認不得的代入點、不是內建項——四種全部擋住,夾帶的那個檔案沒有被建出來。
  • 結束碼六條路各驗一次:無參數與認不得的子命令回 6、相對路徑根目錄回 6、清單不存在回 2、欄位數對不上回 2、空清單回 0、有指令失敗回 1。
  • 欄位數保護:到期清單的欄位數不是這一支認得的就一筆都不跑,而不是照舊讀進錯的欄位。
  • lint-scripts.sh、check-behaviors.sh、ste100-lint.sh、check-skill-paths.sh 四支都回結束碼 0。
  • 全程沒有動到正式的待辦簿,真跑那幾次用的是隔離的根目錄。

這一批的邊界

失敗照重試、不自動退讓,維持規格原本的寫法。逾期提醒怎麼送到前景、登錄時的補問流程、待辦簿的 wiki 雙向同步,三項都不在這一批。存取庫掃描做出來之後,帶那個代入點的那一筆會自己開始跑,這一支不必再改。

前置 Push Request

  • 無
## 摘要 - 需求描述:待辦簿蓋好之後一直沒有人執行它。十六筆內建項、十五筆到期,而執行紀錄與失敗次數從建立到現在一次都沒動過——巡檢每輪把它們印出來,如此而已。這張把執行那一步接上,並且只接唯讀盤點指令那一種。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `tools/run-due.sh` | 新增。讀到期清單、展開代入點、執行、回寫成敗,兩個子命令 `run` 與 `plan` | | `skills/assistant/SKILL.md` | 巡檢多一步(步驟五,寫心跳之前)、工具路徑表、結束碼表、界線一條、收尾回報一個區塊 | | `references/behaviors.md` | 外部呼叫那一欄記下這一支的完整合約 | | 三份 manifest | 版號 0.2.2 升到 0.2.3 | ## 只跑三種動作裡的一種 待辦簿的動作欄有三種值:一行指令、技能名、只提醒。這一支只跑第一種。 **技能名那一種不跑**,因為叫用一整支技能會寫 wiki、開 PR、改檔案,而這一支跑在沒有人看的那一輪裡。唯讀盤點指令失敗最多回一個非零碼,那一筆記一次失敗;一支技能中途失敗可能留下寫到一半的頁或開錯的 PR。**兩種代價不同,就該分兩次判、分兩次接。** **使用者親手登錄的那幾筆也不跑。** 只有帶著反查鍵的內建項會被執行,那幾筆的指令經過種入那一支的檢核。人手動登錄的沒有經過那道關,動作欄想寫什麼都行。 ## 代不出目標不算失敗 兩個代入點的現況不同: | 代入點 | 資料來源 | 狀態 | | --- | --- | --- | | `{cli}` | `jsc-cli/tools/detect-clis.sh` | 可用,這台機器偵測到五支 | | `{repo}` | 存取庫掃描 | 還沒做出來 | 所以三支指令這一輪只跑得動兩支。帶不出目標的那一筆印一行跳過,**而且執行紀錄與失敗次數一個字都不動。** 那一筆沒有做錯任何事。記成失敗會讓一個沒有人修得動的計數一路往上爬,而那個計數存在的理由正是指出「有一筆壞掉的項目每輪重試而沒人知道」。**把「還沒接上」記成「壞掉」,等於用假的壞掉把真的壞掉蓋掉。** ## 執行前再驗一次形狀 種入那一支驗過同樣幾項,這裡不省——待辦檔是純文字,種入之後可能被改。擋掉金錢符號、反引號、波浪號、分號、管線與連接符號;路徑一定要落在這一輪的根目錄底下;代完之後不得留大括號。 ## 權限閘門與這一支的關係 這一支自己執行那些指令,所以權限層只看得到 `run-due.sh` 這一條,看不到裡面跑了什麼。 那不是繞過閘門。**閘門本來就不是沙箱,它是一份「可信入口」的白名單**,而清單上每一支腳本本來就做得了它該做的事——巡檢那一支會寫 wiki 頁,部署那一支會改整台機器的外掛。 防線改由三層擋:只跑經過審查的委派清單種出來的項目、執行前再驗一次形狀、代不出來的一律不跑。這段理由寫進了檔頭,因為下一個維護的人一定會問,而「為什麼不會被擋」跟「為什麼不需要被擋」是兩個不同的答案。 ## 界線補了一條 不對發現動手,跟跑自己排定的工作,不是同一件事: - 待人處理那幾列是關於別人機器狀態的**發現**,跑那幾列等於一輪自己決定別人的工作該怎麼做 - 到期的內建項是助理自己被交付的**工作**,來源是要走 PR 審查的委派清單 並寫明:哪天那一欄出現會寫入的指令,要重新吵這一段,不是悄悄把它放寬。 ## 測試結果 - **真機乾跑**:15 筆到期,2 筆要跑(其中一筆展開成五個 CLI 目標)、1 筆代不出目標、12 筆這一批不跑。數字與委派清單對得上。 - **真的執行並回寫**(隔離環境):成功那一筆寫進 `last_run` 與算好的下次到期;失敗那一筆 `last_run` 有了、失敗次數變 1;第二次再跑變 2。**這是待辦簿建起來之後第一次有欄位因為執行而改變。** - **四道防線各驗一次**:指令裡夾帶分號、指令不在根目錄底下、代完還留著認不得的代入點、不是內建項——四種全部擋住,夾帶的那個檔案沒有被建出來。 - **結束碼六條路各驗一次**:無參數與認不得的子命令回 6、相對路徑根目錄回 6、清單不存在回 2、欄位數對不上回 2、空清單回 0、有指令失敗回 1。 - 欄位數保護:到期清單的欄位數不是這一支認得的就一筆都不跑,而不是照舊讀進錯的欄位。 - `lint-scripts.sh`、`check-behaviors.sh`、`ste100-lint.sh`、`check-skill-paths.sh` 四支都回結束碼 0。 - 全程沒有動到正式的待辦簿,真跑那幾次用的是隔離的根目錄。 ## 這一批的邊界 失敗照重試、不自動退讓,維持規格原本的寫法。逾期提醒怎麼送到前景、登錄時的補問流程、待辦簿的 wiki 雙向同步,三項都不在這一批。存取庫掃描做出來之後,帶那個代入點的那一筆會自己開始跑,這一支不必再改。 ## 前置 Push Request - 無
jiantw83 added 2 commits 2026-09-04 05:59:04 +00:00
待辦簿蓋好之後一直沒有人執行它。十六筆內建項、十五筆到期,而 last_run 與
fail_count 從建立到現在一次都沒動過——巡檢每輪把它們印出來,如此而已。

這一支只跑動作是一行指令、而且帶著 spec_key 的那幾筆。技能名那一種不跑:
叫用一整支技能會寫頁、開 PR、改檔案,而這一支跑在沒有人看的那一輪裡;唯讀
盤點指令失敗最多回一個非零碼,一支技能中途失敗可能留下寫到一半的頁。兩種
代價不同,就該分兩次判、分兩次接。使用者親手登錄的那幾筆也不跑,那幾筆沒有
經過種入那一支的檢核,動作欄想寫什麼都行。

代入點只展開得了 CLI 那一個。存取庫掃描還沒做出來,所以帶那個代入點的一律
印一行跳過,而且**執行紀錄與失敗次數一個字都不動**:代不出目標不是那一筆做
錯了什麼,記成失敗會讓一個沒有人修得動的計數一路往上爬,而那個計數存在的
理由正是指出「有一筆壞掉的項目每輪重試而沒人知道」。把「還沒接上」記成
「壞掉」,等於用假的壞掉把真的壞掉蓋掉。

執行前再驗一次指令形狀,不信任待辦檔的內容——那是純文字,種入之後可能被改。
擋掉金錢符號、反引號、波浪號、分號、管線與連接符號,路徑一定要落在這一輪的
根目錄底下,代完之後不得留大括號。

權限閘門看不到這一支裡面跑了什麼,檔頭把理由寫明了:閘門是可信入口的白名單、
不是沙箱,清單上每一支腳本本來就做得了它該做的事。防線改由「只跑經過審查的
清單種出來的項目」加「執行前再驗一次形狀」擋。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
檢核腳本沒人叫等於不存在,所以同一批把它接進巡檢的步驟五,擺在寫心跳之前
——跑過的結果要進得了這一輪的紀錄。任何一個結束碼都不中止那一輪:一支指令
失敗是發現,不是壞掉的一輪。

界線那一段補了一條,把兩件事分開:不對發現動手,跟跑自己排定的工作,不是
同一件事。待人處理那幾列是關於別人機器狀態的發現,跑那幾列等於一輪自己決定
別人的工作該怎麼做;到期的內建項是助理自己被交付的工作,來源是要走 PR 審查
的委派清單。並且寫明:哪天那一欄出現會寫入的指令,要重新吵這一段,不是悄悄
把它放寬。

收尾回報多一個區塊,因為那是待辦簿自己的工作唯一被交代的地方,並要求把
「跳過那幾筆的歷史沒有被動過」講明。

三份 manifest 版號 0.2.2 升到 0.2.3。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
admin merged commit dc7c164d9a into develop 2026-09-04 06:07:21 +00:00
admin deleted branch feat/run-due-built-in-check-items 2026-09-04 06:07:22 +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#26