Claude Code 任務完成提醒、提示音、Windows 通知怎麼設:終端響鈴、Notification hook 和 Stop hook 的區別

Claude Code 做完任務想收到提醒,官方有三條路:在設定裏把 preferredNotifChannel 設為 terminal_bell 讓終端響鈴;用 Notification hook 在它等你輸入或批准時彈窗;用 Stop hook 在每次回覆完畢時執行命令。本文含 Windows 寫法和排查。

NNathaniel bigo··原創首發·AI 輔助撰寫
10 分鐘讀完
資料核對於 2026-11-05 · 依據官方文檔與公開資料整理 Pro 帳號
本文根據 Claude Code 官方文檔《Configure your terminal》《Automate actions with hooks》《Hooks reference》整理,資料核對於 2026-11-05。配圖為本站整理的示意圖,不是介面截圖。本站(bigolab.com)不是 Anthropic 官方網站。

適用於誰

  • 讓 Claude Code 跑長任務,想去幹別的、做完再被叫回來的人;
  • 搜「claude 任務結束時響鈴」「claude code hooks 通知 windows」的人;
  • 已經配過 Hook,但提醒沒出來的人。

Hook 的基本寫法已經在 /guides/claude-code-hooks 裏整理過,這裏專門講「提醒」這一個用途,並補上 Windows 和終端響鈴。

結論先說

  1. 官方有三條路:①設定項 preferredNotifChannel 設成 "terminal_bell",讓終端響鈴;②Notification hook,在 Claude 等你輸入或批准時執行命令;③Stop hook,在 Claude 每次回覆完畢時執行命令。
  2. 「做完了」和「等你」是兩個不同的事件:Notification 是 Claude 在等輸入或權限;Stop 是 Claude 完成回覆。想「任務完成就響一下」,Stop 更直接。
  3. Windows 上官方的 Notification 示例是用 powershell.exe 彈一個對話框,不是螢幕角落的通知,對話框可能開在終端窗口後面。
  4. 終端預設的提醒因終端而異:Ghostty、Kitty、iTerm2 預設發桌面通知(iTerm2 要先開提醒設定),Apple Terminal 預設無聲,其他終端預設什麼都沒有。
  5. Hook 與內置通知並行,不是替代。

任務完成提醒的幾種辦法:觸發時機和配置方式

圖:本站根據 Claude Code 官方文檔:Configure your terminal 與 Automate actions with hooks 整理的示意圖

一、最簡單:讓終端響鈴

官方說,Claude 完成任務或停在權限提示上、而你似乎不在終端前時,會觸發一個通知事件。預設怎麼提醒取決於終端:

  • Ghostty、Kitty、iTerm2:桌面通知,iTerm2 要先打開它的提醒設定;
  • Apple Terminal:不出聲;當前窗口配置裏「Audible bell」關着時發一個靜默的響鈴字符,其他情況什麼都沒有;
  • 其他終端:什麼都沒有。

要讓 Claude Code 不管終端、一律發響鈴字符,在 ~/.claude/settings.json(Windows 在用戶目錄的 .claude 文件夾裏)寫:

json
{
  "preferredNotifChannel": "terminal_bell"
}

在 Apple Terminal 裏還要在 Settings > Profiles > Advanced 打開 Audible bell 才能聽到。Windows Terminal 等終端收到響鈴字符後會不會發聲,官方沒有單獨說明,取決於終端自己的設定。

二、Notification hook:Claude 等你時彈窗

官方的 Windows 示例寫進 ~/.claude/settings.json:

json
{
  "hooks": {
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""
          }
        ]
      }
    ]
  }
}

官方提醒:這條命令打開的是對話框,不是角落裏的通知,所以對話框可能開在終端窗口後面;先在 PowerShell 裏單獨測試這條命令。如果你在 WSL 裏跑 Claude Code,powershell.exe 必須能通過 Windows 互操作在 PATH 裏找到。macOS 用 osascript,Linux 用 notify-send(需要桌面通知服務,伺服器、SSH、容器裏通常沒有),完整示例見 /guides/claude-code-hooks。

空的 matcher 對所有通知類型生效。只想在特定情況下提醒,把 matcher 設為這些值之一(官方表格的一部分):

matcher什麼時候觸發
permission_promptClaude 需要你批准工具使用或沙箱命令的網絡請求,且提示已等了約 6 秒
idle_promptClaude 回覆完約 60 秒後,你還沒有輸入
auth_success認證完成
agent_completed後台會話完成或失敗,僅在 agent view 打開時觸發

寫完後,在 Claude Code 裏輸入 /hooks,應該能在 Notification 下看到它。要測試,按 Shift+Tab 切到 manual mode on,讓 Claude 做一件需要批准的事,然後切到別的窗口。

三、Stop hook:每次回覆完畢時執行

官方對 Stop 的描述是「Claude 回覆完畢時」觸發,不支持 matcher,每次都觸發。配置結構和 Notification 一樣,只是事件名換成 Stop,並且可以省略 matcher:

json
{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "powershell.exe -Command \"[console]::beep(800,300)\""
          }
        ]
      }
    ]
  }
}

說明:這裏的 command 是本文補充的寫法,官方文檔沒有給 Stop hook 的 Windows 示例;[console]::beep 是 PowerShell 裏調用系統蜂鳴的通用方法,能不能出聲取決於你的電腦和系統設定。想彈窗而不是響鈴,可以把命令換成上面官方的 MessageBox 寫法。

注意 Stop 每個回合都會觸發,包括你隨手問一句得到的短回答,不想被頻繁打擾就用 Notification 加 idle_prompt。Hook 的更多限制,比如 Stop hook 用退出碼 2 會讓 Claude 繼續而不是停下,見官方 Hooks 參考頁,這裏不展開。

四、提醒沒出來,按這幾處查

提醒沒出現:按現象排查

圖:本站根據 Claude Code 官方文檔:Automate actions with hooks 與 Configure your terminal 整理的示意圖

  • /hooks 裏看不到:確認 JSON 有效,尾逗號和註釋都不允許;文件在 ~/.claude/settings.json(全局)或 .claude/settings.json(項目);改完通常自動生效,幾秒內沒出現就重啟會話;
  • Hook 在列表裏但沒執行:檢查事件名和 matcher 是否一致,matcher 區分大小寫;
  • 看到 blocking because Git Bash wasn't found:這是 Windows 上沒找到 Git Bash,失敗或超時的 hook 還攔住了工具調用,官方在 Hooks 參考頁有「Failed hooks on Windows without Git Bash」一節說明修法;
  • 在 tmux 裏收不到桌面通知:官方說預設情況下通知和進度條到不了外層終端,要在 ~/.tmux.conf 加 set -g allow-passthrough on,再運行 tmux source-file ~/.tmux.conf;
  • iTerm2 沒通知:要在 Settings → Profiles → Terminal 裏勾選 Notification Center Alerts,再點 Filter Alerts 啟用 Send escape sequence-generated alerts;
  • 還是沒有,確認終端程序在系統設定裏有通知權限。

通過 SSH 登入遠程伺服器時,官方說桌面通知能到達你本機,所以遠程會話也能提醒你,詳見 /guides/claude-code-ssh-remote-server。

常見問題

Q:Hook 會消耗額度嗎?

Hook 是在本機運行的 shell 命令,官方沒有說它消耗模型額度。額度怎麼算見 /guides/claude-usage-limits。

Q:能不能用手機收提醒?

本文沒有核對官方的手機通知功能的細節,需要的話以官方文檔為準。

Q:和狀態欄有關係嗎?

沒有。狀態欄是顯示資訊的,見 /guides/claude-code-statusline-model-context-usage。

相關教學

參考資料

  • Claude Code 官方文檔:Configure your terminal — https://code.claude.com/docs/en/terminal-config
  • Claude Code 官方文檔:Automate actions with hooks — https://code.claude.com/docs/en/hooks-guide
  • Claude Code 官方文檔:Hooks reference — https://code.claude.com/docs/en/hooks

Nathaniel 的更多內容

  1. 01

    Claude Code 支持語音輸入嗎:/voice 開啟,按住空格說話,要 claude.ai 帳號和本地麥克風,支持的聽寫語言有限

    Claude Code 命令行版支持語音輸入(voice dictation):輸入 /voice 開啟,按住空格說話,轉寫文字直接進輸入框。但必須用 claude.ai 帳號登入、有本地麥克風,SSH 和雲端會話不能用;官方的聽寫語言清單裏沒有中文。

    Claude0
  2. 02

    Claude Code 狀態欄怎麼配置:/statusline 一句話生成,顯示模型、上下文佔用和 5 小時 / 7 天用量

    Claude Code 底部狀態欄可以自己定製:用 /statusline 說一句話讓它生成腳本,或在 settings.json 的 statusLine 裏指向自己的腳本。本文講怎麼配、腳本能讀到哪些字段(模型、上下文、花費、訂閱用量)、Windows 寫法和不顯示時的排查。

    Claude0
  3. 03

    Claude Code 提示未登入、怎麼退出登入、切換帳號:/login、/logout、/status 和 CLAUDE_CONFIG_DIR

    Claude Code 提示 Not logged in 時運行 /login;退出登入用 /logout;想同時用兩個帳號,官方的做法是給每個帳號單獨設 CLAUDE_CONFIG_DIR。本文講幾個登入命令、登入憑據存哪、/status 怎麼看當前帳號,以及 API 密鑰覆蓋訂閱的坑。

    Claude0
  4. 04

    Claude Code 安裝卡住、很慢、失敗怎麼辦:先測下載伺服器,再按報錯對照(下載中斷、Killed、PATH、PowerShell)

    Claude Code 安裝卡住或失敗,官方的排查順序是:先測 downloads.claude.ai 能不能連上,再按報錯分類處理。本文整理下載中斷、Linux 內存不足 Killed、Docker 裏卡住、Windows 命令用錯 shell 等情況的官方對策。

    Claude0
  5. 05

    Claude Code 怎麼連接遠程伺服器(SSH):桌面版加 SSH 環境,或登入伺服器後在終端裏直接用

    Claude Code 連遠程伺服器有兩種官方做法:桌面版 Code 標籤頁裏添加 SSH 環境,桌面版會自動在伺服器上裝好 Claude Code;或者自己 SSH 登入伺服器,在終端裏安裝並登入。本文講兩種做法的步驟、伺服器要求和常見報錯。

    Claude0
  6. 06

    Claude Code 歷史記錄在哪、文件夾在哪:~/.claude 裏每個文件是什麼,哪些 30 天后會被清掉,哪些不能刪

    Claude Code 的會話記錄、提示歷史、配置和登入憑據都在用戶目錄下的 .claude 文件夾(Windows 是 %USERPROFILE%\.claude)。本文按官方文檔列出各文件的用途、預設保留期、哪些不能刪,以及怎麼清理、怎麼換位置。

    Claude0

同產品的其他教學

  1. 01

    Claude Code 怎麼導出會話、導出上下文:/export、/copy 和 .jsonl 會話記錄的區別

    Claude Code 導出對話用 /export(純文本,可直接寫入文件),只要最後一條回答用 /copy。本文講兩個命令的區別、會話記錄 .jsonl 在哪、腳本怎麼拿結構化結果,以及「導出上下文」換新會話時官方給的做法。

    Claude0
  2. 02

    Claude Code 代碼改壞了怎麼回退:/rewind 或連按兩次 Esc,三種恢復方式,哪些改動回退不了

    Claude Code 改壞了代碼,可以輸入 /rewind(別名 /undo),或在輸入框為空時連按兩次 Esc,選擇只恢復代碼、只回退對話或兩者一起。本文講選單裏每一項的含義,以及 Bash 命令、子代理、外部改動為什麼回退不了。

    Claude0
  3. 03

    別讓 Claude Code 一直問你能不能執行:選 don't ask again、寫 allow 規則、切 acceptEdits 或 auto 模式

    Claude Code 總彈「能不能執行」,可以分三層解決:彈窗裏選 don't ask again 存規則,用 allow 規則放行常用命令,或按 Shift+Tab 切到 acceptEdits、auto 模式。本文按場景講,並說明哪些提示官方就是關不掉。

    Claude0
  4. 04

    Claude Code 官網下載在哪、怎麼安裝:原生安裝、npm、Homebrew、WinGet 怎麼選,Windows 要不要裝 Git

    搜「Claude Code 官網下載」「為什麼要裝 Git」「為什麼不推薦 npm」,官方文檔的答案是:安裝說明在 code.claude.com,原生安裝標為推薦,npm 要 Node.js 22,Windows 的 Git 是可選的。本文按官方文檔逐項說明。

    Claude0
  5. 05

    Claude Code 無法粘貼、無法讀取圖片怎麼辦:Ctrl+V 和 Alt+V 的區別,拖放和路徑三种放圖方法

    Claude Code 裏粘貼不了截圖、讀不到圖片?官方文檔給了三種把圖放進對話的方法:拖放進窗口、Ctrl+V 粘貼(Windows 和 WSL 用 Alt+V)、直接寫圖片路徑。官方沒有為「粘貼失敗」單列排查,本文把官方寫明的做法和通用排查分開講。

    Claude0
  6. 06

    Claude 報錯 529 overloaded_error 怎麼辦:API 暫時過載是什麼意思,和 429、500、504 怎麼區分

    Claude API 返回 529 overloaded_error,官方的解釋是 API 暫時過載,全體用戶高峰時都可能遇到,不是你的 Key 或餘額出了問題。本文按官方錯誤頁(2026-10 查詢)講清它和 429、500、504 的區別、SDK 怎麼自動重試、流式請求中途報錯怎麼處理。

    Claude0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~