如何让 Claude Code 每轮对话结束播放提示音通知你

Claude Code 处理长任务时,开发者切到浏览器或终端做别的事,完成后没有声音提示,容易错过回复时机。同样,Claude 向你提问或请求权限审批时如果没注意到,也会拖慢整个流程。通过配置 StopNotificationPermissionRequest 三个 Hook,可以让 Claude 在不同场景下自动播放不同提示音。

Claude Code 的 Hook 机制

Hook 是 Claude Code 的生命周期钩子系统,在特定事件发生时自动执行命令。与声音通知相关的事件:

事件 触发时机 音效建议
Stop Claude 完成一轮回复 tada.wav — 任务完成
Notification Claude 发出通知(包括提问) notify.wav — 需要你注意
PermissionRequest Claude 请求权限审批 chimes.wav — 需要立即审批

三个事件用不同音效,听声音就知道该做什么。

配置方法

编辑用户级配置文件 ~/.claude/settings.json,添加 hooks 字段:

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "(New-Object Media.SoundPlayer 'C:\\Windows\\Media\\tada.wav').PlaySync()",
            "shell": "powershell",
            "timeout": 10
          }
        ]
      }
    ],
    "Notification": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "(New-Object Media.SoundPlayer 'C:\\Windows\\Media\\notify.wav').PlaySync()",
            "shell": "powershell",
            "timeout": 10
          }
        ]
      }
    ],
    "PermissionRequest": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "(New-Object Media.SoundPlayer 'C:\\Windows\\Media\\chimes.wav').PlaySync()",
            "shell": "powershell",
            "timeout": 10
          }
        ]
      }
    ]
  }
}

保存后立即生效,无需重启。

字段说明

字段 作用
type "command" 执行 shell 命令
command PowerShell 播放音频的命令 播放指定 .wav 文件
shell "powershell" 显式指定 PowerShell,避免被 Git Bash 接管
timeout 10 超时秒数,防止音频卡死阻塞会话

command 中的路径使用 \\ 双反斜杠,因为 JSON 字符串中 \ 是转义字符。

换成自定义音效

Windows 系统自带音效位于 C:\Windows\Media\,可选 tada.wavnotify.wavchimes.wavding.wav 等。

如果想用自定义音效:

  1. 准备一个 .wav 文件,放到任意路径
  2. command 中的路径替换为自定义文件路径:
"command": "(New-Object Media.SoundPlayer 'C:\\Users\\你的用户名\\sounds\\custom.wav').PlaySync()"

macOS / Linux 方案

非 Windows 系统需要替换 command,并去掉 shell 字段(默认使用 bash):

macOS:

{
  "type": "command",
  "command": "afplay /System/Library/Sounds/Glass.aiff"
}

Linux(需安装 paplayaplay):

{
  "type": "command",
  "command": "paplay /usr/share/sounds/freedesktop/stereo/complete.oga"
}

禁用与管理

本文由 AI 辅助生成,可能存在错误或遗漏,请以实际资料和官方文档为准。