釋出 jsc-assist 0.1.1:排程輪次自帶環境與權限,監控頁改成固定三塊 #8

Merged
admin merged 6 commits from develop into master 2026-09-02 01:29:25 +00:00
Member

摘要

  • 需求描述:把已經收進開發線的 jsc-assist 0.1.1 推上預設分支。0.1.1 修好無人值守那一輪的四道關卡,並把監控頁改成固定三塊。推上預設分支之後,marketplace 與版本閘門才看得到這一版,jsc-cli:deploy 也才裝得下去。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
tools/schedule.sh 排程條目自己帶齊環境:執行檔解成絕對路徑、安裝當下快照環境變數、自帶寫入確認旗標,裝完印出那一輪需要的放行規則。
tools/patrol.sh 監控頁改成固定三塊的產出;每一處判成警示的地方都記下警示來源;工具改從不帶版本號的連結找起。
templates/monitor-page.md 範本跟著改成固定三塊,補上摘要表與警示來源那一欄,寫入規則整段重寫。
skills/assistant/SKILL.md 技能流程改用不帶版本號的工具路徑,監控頁寫法改成讀回舊頁再整頁寫回。
references/behaviors.md 行為約束從「一律只附加」改成固定三塊的寫法。
README.md 說明書跟上新的工具路徑與監控頁寫法。
AGENTS.md 同上,禁則第四條改寫。
plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三份外掛清單一併升到 0.1.1。

設計重點

重點 做法 為什麼
執行檔走絕對路徑 安裝時把 CLI 執行檔解成絕對路徑再寫進條目,解不到就停下不猜。 排程的環境變數清單很短,不含使用者的 bin 目錄。裸的指令名每一輪都找不到執行檔,而那一輪沒有人在現場看得到。
環境變數就地快照 安裝當下把主機位址、金鑰與各頁型的 wiki 存放庫寫成條目的指令前綴。 排程不讀殼的設定檔。那一輪少了主機位址與存放庫變數,wiki 就連不上,監控頁寫不成,整條排程空轉。
條目自帶寫入確認 條目固定帶上確認旗標。 寫入確認只認終端機,排程那一輪永遠沒有終端機,寫監控頁一定被擋。無人值守的那一輪本來就沒有人可以按同意。
裝完印出放行規則 安裝成功後把那一輪要用到的腳本與檔案規則一行一條印出來。 工具權限沒開,巡檢腳本連跑都跑不起來,而且是靜靜被擋,外面只看得到心跳過期。
監控頁固定三塊 本頁基本資料、最新一輪完整內容、近 24 輪摘要表。摘要表五欄,含警示來源。 十五分鐘一輪,一天疊出九十六節,沒有人讀得完,也就沒有人會發現壞掉。軌跡留在摘要表,看得出是從哪一輪開始壞的。
工具走不帶版本號的連結 工具路徑與權限規則都指向那一組連結。 外掛升版不必回頭改設定,權限規則也對得起來。
兩支腳本自檢執行路徑 開跑就檢查自己是不是從那一組連結被叫起來,不是就印警告,只警告、不中止。 實測發現代理人會把路徑解回外掛快取那一份。從工作樹直接跑是開發時的正當用法,中止會把那條路擋掉。
補上警示來源 摘要表與最新一輪那一塊都多一欄,記下判成警示的理由。 原本會出現「警示、四項全過、待人處理 0」這種讀不懂的列,看的人查不出警示哪來。

測試結果

項目 結果
排程條目安裝與空跑 通過。條目帶絕對路徑、環境快照與確認旗標,印出時金鑰已遮掉。
缺少不帶版本號的連結 通過。安裝印出警告並指出缺哪幾個連結,不代建。
放行規則輸出 通過。四支腳本各印裸路徑與兩種呼叫形式,共 12 條,加上兩條檔案規則與一條技能規則。檔案規則印的是解出來的絕對路徑。
監控頁固定三塊 部分通過。收攏那一步確實產出三塊與五欄摘要列,但「整塊換掉、摘要列插到最上面、超過 24 列丟掉最舊那一列」屬於寫回遠端頁那一步,還沒有真的跑過,要等部署後補驗。
執行路徑自檢 通過。從工作樹直接跑會印警告並照跑。
全新 CLI 行程讀到的說明書版本 未通過。全新行程仍讀到外掛快取的舊版說明書。這一項要等這一版上了預設分支、部署過才驗得到。

合併之後依序做三件事:跑 jsc-cli:deploy 的更新模式、重開各支 CLI 清掉重啟閘門、補跑一輪真實環境的驗證,把上面未通過的那一項補齊。

已知風險

風險 影響 目前的處置
部署尚未維護那一組不帶版本號的連結 新機器裝上這一版,會因為缺連結而只收到警告,排程輪次跑不完。 那是另一個 domain 的變更,PR 還沒開。在它完成之前,新機器要先手動把連結補起來。
監控頁第一次重組會收掉舊節 現在堆疊的舊節收成摘要列,只留最新一輪的完整內容,舊節的完整內容不會保留。 刻意如此,重組時會在回報裡說明。要留存的機器請先自行備份那一頁。
環境變數是安裝當下的快照 主機位址、金鑰或存放庫變數改過,條目仍帶著舊值。 改過環境變數就重跑一次安裝,條目才會跟著換。
條目裡帶著金鑰快照 排程檔案被別人讀到就等於金鑰外流。 排程檔案要保持只有本人讀得到;腳本印出條目時一律把金鑰遮掉。

前置 Push Request

  • 無
## 摘要 - 需求描述:把已經收進開發線的 jsc-assist 0.1.1 推上預設分支。0.1.1 修好無人值守那一輪的四道關卡,並把監控頁改成固定三塊。推上預設分支之後,marketplace 與版本閘門才看得到這一版,`jsc-cli:deploy` 也才裝得下去。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `tools/schedule.sh` | 排程條目自己帶齊環境:執行檔解成絕對路徑、安裝當下快照環境變數、自帶寫入確認旗標,裝完印出那一輪需要的放行規則。 | | `tools/patrol.sh` | 監控頁改成固定三塊的產出;每一處判成警示的地方都記下警示來源;工具改從不帶版本號的連結找起。 | | `templates/monitor-page.md` | 範本跟著改成固定三塊,補上摘要表與警示來源那一欄,寫入規則整段重寫。 | | `skills/assistant/SKILL.md` | 技能流程改用不帶版本號的工具路徑,監控頁寫法改成讀回舊頁再整頁寫回。 | | `references/behaviors.md` | 行為約束從「一律只附加」改成固定三塊的寫法。 | | `README.md` | 說明書跟上新的工具路徑與監控頁寫法。 | | `AGENTS.md` | 同上,禁則第四條改寫。 | | `plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` | 三份外掛清單一併升到 0.1.1。 | ## 設計重點 | 重點 | 做法 | 為什麼 | | --- | --- | --- | | 執行檔走絕對路徑 | 安裝時把 CLI 執行檔解成絕對路徑再寫進條目,解不到就停下不猜。 | 排程的環境變數清單很短,不含使用者的 bin 目錄。裸的指令名每一輪都找不到執行檔,而那一輪沒有人在現場看得到。 | | 環境變數就地快照 | 安裝當下把主機位址、金鑰與各頁型的 wiki 存放庫寫成條目的指令前綴。 | 排程不讀殼的設定檔。那一輪少了主機位址與存放庫變數,wiki 就連不上,監控頁寫不成,整條排程空轉。 | | 條目自帶寫入確認 | 條目固定帶上確認旗標。 | 寫入確認只認終端機,排程那一輪永遠沒有終端機,寫監控頁一定被擋。無人值守的那一輪本來就沒有人可以按同意。 | | 裝完印出放行規則 | 安裝成功後把那一輪要用到的腳本與檔案規則一行一條印出來。 | 工具權限沒開,巡檢腳本連跑都跑不起來,而且是靜靜被擋,外面只看得到心跳過期。 | | 監控頁固定三塊 | 本頁基本資料、最新一輪完整內容、近 24 輪摘要表。摘要表五欄,含警示來源。 | 十五分鐘一輪,一天疊出九十六節,沒有人讀得完,也就沒有人會發現壞掉。軌跡留在摘要表,看得出是從哪一輪開始壞的。 | | 工具走不帶版本號的連結 | 工具路徑與權限規則都指向那一組連結。 | 外掛升版不必回頭改設定,權限規則也對得起來。 | | 兩支腳本自檢執行路徑 | 開跑就檢查自己是不是從那一組連結被叫起來,不是就印警告,只警告、不中止。 | 實測發現代理人會把路徑解回外掛快取那一份。從工作樹直接跑是開發時的正當用法,中止會把那條路擋掉。 | | 補上警示來源 | 摘要表與最新一輪那一塊都多一欄,記下判成警示的理由。 | 原本會出現「警示、四項全過、待人處理 0」這種讀不懂的列,看的人查不出警示哪來。 | ## 測試結果 | 項目 | 結果 | | --- | --- | | 排程條目安裝與空跑 | 通過。條目帶絕對路徑、環境快照與確認旗標,印出時金鑰已遮掉。 | | 缺少不帶版本號的連結 | 通過。安裝印出警告並指出缺哪幾個連結,不代建。 | | 放行規則輸出 | 通過。四支腳本各印裸路徑與兩種呼叫形式,共 12 條,加上兩條檔案規則與一條技能規則。檔案規則印的是解出來的絕對路徑。 | | 監控頁固定三塊 | 部分通過。收攏那一步確實產出三塊與五欄摘要列,但「整塊換掉、摘要列插到最上面、超過 24 列丟掉最舊那一列」屬於寫回遠端頁那一步,還沒有真的跑過,要等部署後補驗。 | | 執行路徑自檢 | 通過。從工作樹直接跑會印警告並照跑。 | | 全新 CLI 行程讀到的說明書版本 | 未通過。全新行程仍讀到外掛快取的舊版說明書。這一項要等這一版上了預設分支、部署過才驗得到。 | 合併之後依序做三件事:跑 `jsc-cli:deploy` 的更新模式、重開各支 CLI 清掉重啟閘門、補跑一輪真實環境的驗證,把上面未通過的那一項補齊。 ## 已知風險 | 風險 | 影響 | 目前的處置 | | --- | --- | --- | | 部署尚未維護那一組不帶版本號的連結 | 新機器裝上這一版,會因為缺連結而只收到警告,排程輪次跑不完。 | 那是另一個 domain 的變更,PR 還沒開。在它完成之前,新機器要先手動把連結補起來。 | | 監控頁第一次重組會收掉舊節 | 現在堆疊的舊節收成摘要列,只留最新一輪的完整內容,舊節的完整內容不會保留。 | 刻意如此,重組時會在回報裡說明。要留存的機器請先自行備份那一頁。 | | 環境變數是安裝當下的快照 | 主機位址、金鑰或存放庫變數改過,條目仍帶著舊值。 | 改過環境變數就重跑一次安裝,條目才會跟著換。 | | 條目裡帶著金鑰快照 | 排程檔案被別人讀到就等於金鑰外流。 | 排程檔案要保持只有本人讀得到;腳本印出條目時一律把金鑰遮掉。 | ## 前置 Push Request - 無
jiantw83 added 6 commits 2026-09-02 01:28:38 +00:00
排程條目改成自己帶齊執行環境,install 完也印出那一輪要開的權限規則。

背景助理在無人值守的輪次連續失敗,查出四道關卡。cron 給的 PATH 很短,
不含使用者的 bin 目錄,裸的指令名每一輪都是找不到執行檔。cron 也不讀
殼的設定檔,那一輪沒有 Gitea 主機位址與 wiki 存放庫變數,連不上 wiki。
寫入確認只認 tty,排程沒有 tty,寫監控頁一定被擋。工具權限沒開,巡檢
腳本連跑都跑不起來,而那一輪沒有人可以按同意。四關任何一關沒過,那一
輪就不寫心跳,排程裝著卻永遠空轉,外面只看得到心跳過期。

CLI 改用 command -v 解成絕對路徑再寫進條目,解不到就停下,不猜路徑。
install 當下把主機位址、金鑰、狀態根目錄、心跳門檻與所有已設定的 wiki
存放庫變數就地快照,以名稱等於值的前綴寫進條目,值裡的單引號照 POSIX
寫法跳脫。條目自帶寫入確認旗標,無人值守的那一輪本來就沒有人可以按同
意。install 完印出四支腳本各三種呼叫形式的 allow 規則,路徑一律取
current 那一組不帶版本的連結,並順手檢查連結在不在,不在只警告、不代
建。腳本內部找心跳腳本也改成 current 優先,避免同一輪跑到混版的工具。

條目裡帶著金鑰快照,所以印條目時一律把金鑰遮成星號,遮到下一個空白為
止;crontab 檔案要保持只有本人讀得到,這幾個變數改過就要重跑一次
install。功能範圍是助理的系統排程安裝、移除與查現況。
巡檢產出與監控頁範本改成固定三塊:本頁基本資料、最新一輪、近 24 輪摘要。

舊寫法是一輪附加一節。十五分鐘跑一輪,一天就疊出九十六節,那樣的頁沒
有人讀得完,也就沒有人會發現助理壞在哪一輪。軌跡留著卻沒人看,等於沒
有留。

基本資料建頁時寫一次就不動。最新一輪每輪整塊換掉,只留最新那一輪的完
整內容。摘要表一輪一列,最新的在最上面,超過 24 列就丟掉最舊的那一列,
一列只有四欄:巡檢時間、本輪判定、四項成敗、待人處理筆數,一眼看得出
是從哪一輪開始壞的。collect 的輸出鍵位跟著換,section_file 不再產出,
改印 latest_file、summary_file 與 summary_row_file,另外多印本輪待人處
理的筆數。範本連帶把流程圖與寫入規則改成先讀回舊頁、再三塊重組整頁寫
回,並寫明舊格式的頁第一次重組要怎麼收。

順手把腳本內部找別的 domain 工具的順序改成 current 連結優先,理由跟排
程那支一樣:技能與權限規則都以 current 為準,腳本自己去挑另一個版本就
會跑到混版的工具,而那種不一致查起來沒有線索。功能範圍是一輪巡檢的收
攏與監控頁產出。
技能主文、行為清單、專案說明與界線文件一起改,對齊這一輪的排程修正與
監控頁改版。

工具路徑與監控頁寫法都換了,文件沒跟上就是照舊做法跑:用快取基底目錄
組出來的路徑會被權限靜靜擋掉,那一輪停在沒有人能回答的權限詢問;照舊
的附加語意寫頁,又會把剛換好的三塊寫回一輪一節。

技能主文的工具路徑一律改走 current 那一組不帶版本的路徑,新增 Tool
paths 一節列出四支工具,並寫明權限閘門只放行那一組,放行技能不等於放
行技能裡的每一個呼叫。監控頁那幾步改寫成讀回舊頁、基本資料原樣留著、
最新一輪整塊換掉、本輪摘要列擺最上面並截到 24 列,舊格式的頁第一次重
組要在回報裡說明。frontmatter 的 description 重寫並補上單引號,句中有
冒號不加引號會讓解析走偏。界線四從「只附加」改成三塊寫入語意。專案說
明與行為清單同步條目的環境快照、allow 規則、暫存檔名與可驗證跡象。

功能範圍是助理技能的文件與行為合約,不動任何腳本行為。
三份外掛清單的版本從 0.1.0 改成 0.1.1。

這一輪改了排程條目的組法、監控頁的格式與技能的工具路徑,三件都會影響
已經裝在機器上的那一份。版本不動,版本閘門就看不出哪台機器裝的是舊的
那一版,也提不出重啟要求,舊條目會繼續空轉到有人自己發現。

三份檔案只動 version 一欄,其餘不碰,三份保持同一個號碼,這樣不管從哪
一支 CLI 讀到的都是同一個答案。功能範圍是外掛的版本宣告。
兩支腳本開跑就檢查自己的執行路徑,監控頁的摘要表與最新一輪那一塊補上
「警示來源」。

兩件都是實測之後補的。用全新的 CLI 行程跑,代理人會把工具路徑解回外掛
快取那一份,不是指定的工作樹那一份。原本的對策只在技能說明書裡寫明禁
止,那是文件約束,擋不住真的走錯的那一輪。權限閘門只放行 current 那一
組確切路徑,走錯就被靜靜擋掉,那一輪不寫心跳,外面只看得到心跳過期。
另一頭,沙箱跑出來的摘要列是「警示、四項全過、待人處理 0」,讀的人看
不出警示哪來。查過不是缺陷:四項來源都讀得到,是讀到的內容有警示。摘
要表的用途本來就是一眼看出從哪一輪開始壞,少了原因那一欄就做不到。

巡檢與排程兩支腳本開跑時先比對自己是不是從 current 底下被叫起來的,不
是就往 stderr 印一行警告,點名實際路徑、應該用的路徑與理由。刻意只警告
不中止:從工作樹直接跑腳本是開發時的正當用法,中止會把那條路擋掉,真
正的失敗本來就發生在權限閘門那裡。摘要表從四欄加到五欄,最新一輪那一
塊也補一列,值取每一處設警示時收下來的短理由,多個用頓號串,沒有就寫
「無」。腳本裡每一處把判定改成警示的地方,一律改走同一支函式順手收下
理由,collect 的輸出多印一行 warn_sources。技能主文、行為清單與監控頁
範本跟著寫明這兩件事。

功能範圍是助理的一輪巡檢與系統排程安裝。
Reviewed-on: #7
admin approved these changes 2026-09-02 01:29:23 +00:00
admin merged commit de3775f970 into master 2026-09-02 01:29:25 +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/assist#8