把任務丟給 Claude Code、自己去做別的事,本來就是長時間跑 Agent 的意義。問題是什麼時候該回來看。看太勤,省下的時間又賠回去;看太晚,Agent 可能從第二分鐘就在等你授權。
在 Mac 上有三種解法,從自己動手寫 hook 到直接用內建功能都有。
有兩個時間點要知道
不管用哪種方法,你都會想在兩個不同的時刻收到提醒:
- 完成。 Agent 跑完這一輪,在等你的下一則訊息。
- 需要輸入。 Agent 在任務中途停下來,通常是要你允許它執行指令或修改檔案。
第二種更重要。卡在權限提示的 Agent,進度是零。
方法一:Claude Code hooks
Claude Code 可以在特定事件發生時執行 shell 指令。有兩個 hook 事件剛好對應上面兩個時刻:
Stop:Claude 回應完畢時執行。Notification:Claude 需要你注意時執行,例如請求權限,或等你輸入等了很久。
把它們加到 ~/.claude/settings.json(所有專案)或某個專案裡的 .claude/settings.json。下面的範例用的是 macOS 內建的 osascript:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Task finished\" with title \"Claude Code\" sound name \"Glass\"'"
}
]
}
],
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Waiting for your input\" with title \"Claude Code\" sound name \"Funk\"'"
}
]
}
]
}
}重新啟動 Claude Code,跑個短任務測試一下。第一次執行時,macOS 可能會詢問是否允許「工序指令編寫程式」顯示通知。
這個做法的限制: 通知不會告訴你是哪個專案或哪個終端機,點下去也不會帶你過去,而且其他 Agent 都得各自設定一次。最新的事件清單請看 Claude Code hooks 文件。
方法二:Codex notify
Codex CLI 可以在每一輪 Agent 執行完後跑一支程式。在 ~/.codex/config.toml 裡把 notify 設成一個指令,Codex 會把事件的 JSON 描述傳給它:
notify = ["osascript", "-e", "display notification \"Codex finished\" with title \"Codex\""]較新的 Codex 版本也支援 hooks,包含 Stop 事件,可以在 hooks.json 或 config.toml 的 [hooks] 表格中設定。各版本的選項不太一樣,請查看對應版本的 Codex hooks 文件。
方法三:Vibe Console 內建
Vibe Console 會替你盯著每個 Agent 終端機,支援全部八種 Agent,不用任何設定:
- 每個分頁都有狀態圓點,顯示 Agent 是執行中還是閒置,一整片格狀排列的 Agent 狀態一眼就懂。
- Agent 完成時,App 會播放音效(預設是 Glass),並短暫展開 MacBook 瀏海到那個工作階段,顯示是哪個 Agent、哪個終端機。
- Agent 停下來等你時,會播放另一個音效(預設是 Funk),不用看螢幕就能分辨是「做完了」還是「卡住了」。
- 兩種音效都能自訂,也可以關掉。
當 Claude Code 或 Codex 的用量在某個週期內超過 80% 和 100% 時,它也會發 macOS 通知。請看 Claude Code 用量上限。
同時跑好幾個 Agent 時最有感。請看 如何平行執行多個 Claude Code Agent。
該用哪一種?
| Hooks / notify | Vibe Console | |
|---|---|---|
| 費用 | 免費 | 包含在 App 內 |
| 設定 | 每個 Agent 各自設定,JSON 或 TOML | 不用設定 |
| 能分辨完成與卡住 | 可以,要設兩個 hook | 可以,兩種音效 |
| 顯示是哪個終端機 | 不行 | 可以,在瀏海裡 |
| 八種 Agent 都適用 | 只限有 hooks 的 | 是 |
如果一次只跑一個 Claude Code 工作階段,hooks 就夠用了。如果你在多個專案裡跑好幾個 Agent,一個認得每個終端機的工作區最能省時間。
常見問題
為什麼我的 Claude Code hook 沒有觸發?
確認 JSON 格式正確、檔案放在對的位置,而且有重新啟動 Claude Code。也可以在終端機裡單獨執行那行 osascript 指令,確認通知權限有打開。
可以把通知推到手機上嗎?
Hooks 可以呼叫任何指令,包括推播服務。Claude Code 也支援從它的行動 App 遠端控制,離開座位也能查看工作階段。
免費試用內建提示音 14 天:下載 Vibe Console。
