程式開發代理完成或需要核准時,如何收到通知
在電腦或手機上收到程式開發代理完成、失敗或等待核准的提醒,並在離開座位前先測試一次。
想在程式開發代理完成工作或需要核准時收到通知,可以開啟代理內建的提醒,或加入一個在這些事件發生時執行的 hook。如果你會離開電腦,就把提醒送到手機。出門前先測試,因為等待核准的代理在你回覆之前什麼都不會做。
本文以 Claude Code 為例。讓電腦保持喚醒另有專門的指南。Reunified 的 Mono 會為透過它執行的代理傳送這些提醒,但這個方法適用於任何環境。
1. 決定哪些代理事件需要提醒
重要的事件有三個:
| 事件 | 接下來要做的事 |
|---|---|
| 等待權限 | 閱讀要求,再決定允許或拒絕 |
| 已完成 | 查看結果並審查變更 |
| 因錯誤而停止 | 閱讀錯誤訊息,決定是否重試 |
如果只設定一種提醒,就選權限提醒。
2. 在 Claude Code 中開啟提醒
Claude Code 完成工作或因權限而暫停時,如果判斷你可能不在電腦前,就會傳送通知。預設只有在 Ghostty、Kitty 和 iTerm2 中才會顯示桌面通知(見終端機設定)。在其他終端機中,可以在 ~/.claude/settings.json 把 preferredNotifChannel 設為 "terminal_bell",讓終端機響鈴。使用 tmux 時,在 ~/.tmux.conf 加入 set -g allow-passthrough on,再重新載入設定。
如果想用自己的音效或指令,就在同一個檔案加入 hooks。Notification 事件可以搭配 permission_prompt(核准要求已等待約六秒)和 idle_prompt(Claude 約一分鐘前已完成,而你之後沒有再輸入)等比對條件(matcher)。在 Mac 上,以下設定會為兩種事件播放不同的音效:
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt",
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]
},
{
"matcher": "idle_prompt",
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Hero.aiff" }]
}
]
}
}hooks 指南也提供了 macOS、Linux 和 Windows 的桌面通知指令。其他代理的做法不同,請查看各自的文件。
3. 把提醒送到手機
有三種方式可以送到手機:
- 代理自己的 App。 啟用 Claude Code 的 Remote Control 後,執行
/config,開啟「Push when Claude decides」(由 Claude 判斷何時推播)、「Push when actions required」(需要你操作時推播),或兩者都開。這需要符合資格的方案,Claude App 也要登入同一個帳號並允許通知。 - 傳送推播訊息的 hook,例如用
curl呼叫某個推播服務,而你的手機上裝有該服務的 App。 - 輔助 App,負責從電腦轉送工作階段事件。
不論哪種方式,電腦都必須開機、保持喚醒並連上網路,代理也要持續執行。hook 用到的權杖請放在 ~/.claude/settings.json,不要放在專案的 .claude/settings.json,因為後者可能會被提交到儲存庫。
4. 別讓鎖定畫面洩露提醒內容
任何人只要靠近鎖定中的手機,都能看到通知預覽。hook 訊息裡不要放機密、檔案內容或記錄檔內容。只傳送事件和專案名稱就好:以一個名為「invoice-export」的虛構專案為例,「invoice-export:需要核准」就夠了。在 iPhone 上,開啟「設定」>「通知」,把「顯示預覽」設為「解鎖時」。Android 也能在鎖定畫面隱藏敏感內容,只是選項名稱因手機而異。
在 Mono 中,完成提醒會顯示代理的最後一則訊息,太長時會縮短。權限提醒則顯示代理所描述的要求,通常就是指令本身。
5. 出門前用無害的任務測試
在家裡的電腦上,開一個名為「invoice-export 檢查」的工作階段,請代理執行測試並回報失敗項目,但不要修改檔案。代理在執行指令前會先詢問,所以它會要求執行 npm test。在電腦上切換到其他畫面或 App,然後鎖定手機,走到另一個房間。
在 Mono 中,你應該會看到:
- 一則「代理程式權限要求」提醒,上面寫著測試指令。
- 按下提醒會開啟該工作階段,你在那裡選擇「允許」。之後若有新的要求,會另外傳送提醒。
- 「代理程式已在『invoice-export 檢查』中完成」,並附上代理的最後一則訊息,例如「dates.test.ts 裡有一項測試在時區處理上失敗。我沒有修改任何檔案。」
接著在手機上開著這個工作階段,再執行第二個任務:你正在看的時候,不會收到提醒。出門前,確認沒有任何裝置的螢幕上開著這個工作階段。
6. 排除收不到提醒的問題
| 症狀 | 要檢查的地方 |
|---|---|
| 完全沒有提醒 | 系統的通知權限、專注模式或勿擾模式、App 本身的開關 |
| 只出現在電腦上 | 是否開啟傳送到其他裝置;手機是否已登入並允許通知 |
| 延遲或整批送達 | iPhone 的通知摘要、Android 的電池最佳化、電腦進入睡眠 |
| 正在看時沒有提醒 | 這是正常的:你正在查看的工作階段或終端機不會發出提醒 |
| 沒有權限提醒,代理卻繼續工作 | 開啟了自動接受模式,例如 Mono 的 YOLO 模式 |
在 Mono 中,開啟「設定」>「通知」,檢查「所有通知」、「Code」(完成和停止的工作階段)、「權限要求」和「傳送到你的其他裝置」。這些選項預設都是開啟的。提醒由執行代理的那台電腦發出,所以要讓 Mono 在那台電腦上保持執行。
從手機核准之前,先讀讀權限要求中要確認什麼。其他設定步驟請參考用手機與程式開發代理協作。Mono 還沒有正式推出,但你可以加入候補名單。
