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 条评论

登录 后参与评论

还没有评论,来抢沙发~