1. Claude Code人工确认与任务结束提醒配置(Windows)

1.1. 概述

Claude Code 支持 hook 机制,可利用其 StopNotification 事件实现桌面提醒功能。配置后,无需持续关注 Claude Code 的执行过程:当任务结束或需要用户确认时,系统会以声音与弹窗的方式即时提醒。

1.2. 提醒的作用

  • 任务结束提醒:任务执行完成时弹出"任务完成"窗口并通过声音提醒。
  • 需要确认提醒:Claude Code 需要用户授权时(如执行需权限的命令),弹出"需要确认"窗口,正文显示具体待确认内容,并通过声音提醒。

弹窗以独立进程弹出,不阻塞 Claude Code 的执行。

1.3. 环境要求

仅支持 Windows。推荐 Windows 10 / 11;Windows 7 / 8 / 8.1 也可运行,但需注意:

  • 弹窗(WScript.Shell.Popup)自 Win7 起均可用。
  • 声音([console]::Beep):Win10+ 经默认音频设备播放,可靠有声;Win7/8/8.1 经 PC 喇叭播放,无喇叭的机器可能无声。
  • "需要确认"弹窗的具体内容依赖 ConvertFrom-Json,需 PowerShell 3.0+。Win8+ 自带;Win7 默认为 PowerShell 2.0,需安装 Windows Management Framework 5.1。未安装时弹窗仍可弹出但不显示具体内容,不会报错。

依赖:系统自带 powershell.exe、已安装 Claude Code。

1.4. 配置方式

编辑 Claude Code 用户配置文件 ~/.claude/settings.json(路径为 C:\Users\<用户名>\.claude\settings.json),将以下 hooks 字段合并至其中(若已存在 envmcpServers 等字段,予以保留,仅增改 hooks):

"hooks": {
  "Notification": [
    {
      "matcher": "",
      "hooks": [
        {
          "type": "command",
          "command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"[console]::Beep(800,250);Start-Sleep -Milliseconds 80;[console]::Beep(1000,250);Start-Sleep -Milliseconds 80;[console]::Beep(1200,400);[Environment]::SetEnvironmentVariable('CCT','Claude Code - 需要确认','Process');[Environment]::SetEnvironmentVariable('CCX',('Claude 需要你的确认:'+[char]13+[char]10+[char]13+[char]10+(& { if ([Console]::IsInputRedirected){try{[string]((ConvertFrom-Json([Console]::In.ReadToEnd())).message)}catch{''}}else{''}})),'Process');Start-Process powershell -ArgumentList '-NoProfile','-Command','(New-Object -ComObject WScript.Shell).Popup([Environment]::GetEnvironmentVariable(''CCX''),0,[Environment]::GetEnvironmentVariable(''CCT''),48)|Out-Null' -WindowStyle Hidden\""
        }
      ]
    }
  ],
  "Stop": [
    {
      "matcher": "",
      "hooks": [
        {
          "type": "command",
          "command": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"[console]::Beep(523,280);Start-Sleep -Milliseconds 180;[console]::Beep(784,280);Start-Sleep -Milliseconds 180;[console]::Beep(1047,280);Start-Sleep -Milliseconds 180;[console]::Beep(1568,420);[Environment]::SetEnvironmentVariable('CCT','Claude Code - 任务完成','Process');[Environment]::SetEnvironmentVariable('CCX','Claude 已完成任务,请查看结果。','Process');Start-Process powershell -ArgumentList '-NoProfile','-Command','(New-Object -ComObject WScript.Shell).Popup([Environment]::GetEnvironmentVariable(''CCX''),15,[Environment]::GetEnvironmentVariable(''CCT''),64)|Out-Null' -WindowStyle Hidden\""
        }
      ]
    }
  ]
}

command 为单行 JSON 字符串,复制时请保持原样,勿折行;其中 \" 为 JSON 转义引号,'' 为 PowerShell 内嵌单引号,均为必要字符。

保存后重启 Claude Code,hook 于启动时加载。重启后令 Claude Code 完成一个任务或执行一个需授权的命令,即可触发对应提醒。

1.5. 提醒效果

任务结束(Stop 事件),于 Claude Code 回复结束时触发:

  • 声音:C5 → G5 → C6 → G6(523 / 784 / 1047 / 1568 Hz),四声升调,每声 280ms、间隔 180ms、末声 420ms。
  • 弹窗:标题 Claude Code - 任务完成,正文 Claude 已完成任务,请查看结果。,15 秒后自动关闭。

需要确认(Notification 事件),于 Claude Code 需要授权时触发:

  • 声音:800 → 1000 → 1200 Hz,三声升调。
  • 弹窗:标题 Claude Code - 需要确认,正文动态拼接实际待确认内容(取自 hook 传入 JSON 的 message 字段),常驻直至用户点击 OK。

1.6. 自定义提醒方式

声音、弹窗文案、停留时长、图标等均可调整。可直接以自然语言向 Claude Code 提出修改要求,例如:

  • “把任务完成的声音改成 3 声下行音调”
  • “需要确认的弹窗 10 秒后自动关闭”
  • “弹窗正文改成英文”
  • “只保留声音,去掉弹窗的系统提示音”
  • “任务完成改用《欢乐颂》开头几个音”

Claude Code 将直接修改 settings.json 中对应脚本,并当场播放或触发以确认效果。

更多推荐