釋出:工作階段開始時帶出助理的未讀提醒 #90

Merged
admin merged 2 commits from develop into master 2026-09-07 04:17:17 +00:00
Member

這一批釋出一件事

第十支 hook session-reminder.sh:工作階段開始時,把助理算好的未讀提醒帶到前景。

要人自己去翻的提醒,不算提醒。 助理算得出哪幾筆到期、哪幾筆逾期,但那些結果本來只寫在監控頁上。

這一支一個判定都不做

佇列由 jsc-assist 的巡檢每一輪重寫,這一支只讀、只印。自己拿 due 欄跟現在比就是第二套到期判定,跟助理那一套遲早對不上,而對不上的那一天兩邊都說自己是對的。

代價正面處理:助理停了佇列就不更新,而舊佇列讀起來跟新的一模一樣。所以檔頭帶時間戳與 epoch,這一支算得出年紀;超過心跳門檻或心跳不新鮮就先說一句。門檻與狀態都取 heartbeat.sh 印的那一行。

空又過期時分兩路:待辦簿有東西才說話,零筆就安靜——人自己按停也算零筆那一種。

一個工作階段只提一次

記號是 sessions/{代號}.reminded。接不到 session id 的 CLI 全部共用 default,所以 session-timer.sh restart 順手清掉它——不清的話那支 CLI 從第二個工作階段起再也收不到提醒。

接線與檢核一起改

兩份 hook 設定、kiro 的 agentSpawn、claude 的 status 逐支列舉、冒煙測試(17 → 18 條)、錯誤掃描的 jsc 判定,還有散在文件與回報字串裡的「九支 hook」十處。不留一支沒人驗的 hook。

版本

0.4.7 → 0.4.8。

部署後的預期

wire-cli.sh status claude 現在會回 wired。部署之前它回 unwired 並點名 session-reminder … missing,那是對的——那一項比對的是已部署的那一版。

copilot 與 antigravity 沒有工作階段開始事件,這一支對那兩支接不上,與 session-timer.sh 的處境相同。

## 這一批釋出一件事 第十支 hook `session-reminder.sh`:工作階段開始時,把助理算好的未讀提醒帶到前景。 **要人自己去翻的提醒,不算提醒。** 助理算得出哪幾筆到期、哪幾筆逾期,但那些結果本來只寫在監控頁上。 ## 這一支一個判定都不做 佇列由 `jsc-assist` 的巡檢每一輪重寫,這一支只讀、只印。自己拿 `due` 欄跟現在比就是第二套到期判定,跟助理那一套遲早對不上,而對不上的那一天兩邊都說自己是對的。 代價正面處理:助理停了佇列就不更新,而舊佇列讀起來跟新的一模一樣。所以檔頭帶時間戳與 epoch,這一支算得出年紀;超過心跳門檻或心跳不新鮮就先說一句。門檻與狀態都取 `heartbeat.sh` 印的那一行。 空又過期時分兩路:待辦簿有東西才說話,零筆就安靜——人自己按停也算零筆那一種。 ## 一個工作階段只提一次 記號是 `sessions/{代號}.reminded`。接不到 session id 的 CLI 全部共用 `default`,所以 `session-timer.sh restart` 順手清掉它——**不清的話那支 CLI 從第二個工作階段起再也收不到提醒**。 ## 接線與檢核一起改 兩份 hook 設定、kiro 的 `agentSpawn`、claude 的 `status` 逐支列舉、冒煙測試(17 → 18 條)、錯誤掃描的 jsc 判定,還有散在文件與回報字串裡的「九支 hook」十處。**不留一支沒人驗的 hook。** ## 版本 0.4.7 → 0.4.8。 ## 部署後的預期 `wire-cli.sh status claude` 現在會回 `wired`。部署之前它回 `unwired` 並點名 `session-reminder … missing`,那是對的——那一項比對的是已部署的那一版。 copilot 與 antigravity 沒有工作階段開始事件,這一支對那兩支接不上,與 `session-timer.sh` 的處境相同。
jiantw83 added 2 commits 2026-09-07 04:15:44 +00:00
助理算得出哪幾筆到期、哪幾筆逾期,但那些結果只寫在監控頁上——人要自己
去翻,或自己跑一次狀態查詢。這一支把它帶到前景。

session-reminder.sh 只讀助理那一輪寫好的提醒佇列,一個判定都不做。
自己拿 due 欄與 next_run 去跟現在比就是第二套到期判定,跟助理那一套遲早
對不上,而對不上的那一天兩邊都說自己是對的。它也要快:這一支跑在每一個
工作階段的開頭。

只印佇列換來一個新的失效模式,正面處理:助理停了,佇列就不再更新,而一份
舊佇列讀起來跟新的一模一樣。所以佇列檔頭帶那一輪的時間戳與 epoch,這裡
算出它多舊;超過心跳門檻或心跳不新鮮,就明說這批提醒是多久以前算的、
助理現在的心跳是什麼狀態。門檻與狀態都取 heartbeat.sh 印的那一行。

佇列空又過期的那一種分兩路:待辦簿有東西才說話,零筆就安靜——人自己按停
也算零筆那一種,對著一個刻意的決定每個工作階段催一次是噪音不是提醒。
助理狀態目錄根本不存在時整支安靜退出,那台機器從沒啟動過助理。

一個工作階段只提一次,記號是 sessions/{代號}.reminded。接不到 session id
的 CLI 全部共用 default,所以 session-timer.sh 的 restart 分支順手清掉那個
記號——不清的話那支 CLI 從第二個工作階段起再也收不到提醒。清除掛在那裡
不掛在這裡:「這是不是新的工作階段」的判準只有那一支知道。

接線與檢核一起改,不留一支沒人驗的 hook:hooks.json 與推導出來的
codex-hooks.json 各加一條、kiro 的 agentSpawn 加一條、claude 的 status
逐支列舉加一項、冒煙測試加一條並把預期條數從 17 改成 18、執行期錯誤掃描
的 jsc 判定加一支腳本名,還有散在文件與回報字串裡的「九支 hook」十處
全部改成十支。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reviewed-on: #89
admin approved these changes 2026-09-07 04:17:14 +00:00
admin merged commit d5c4f924ee into master 2026-09-07 04:17:17 +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/hooks#90