Claude Code 音频提示音配置指南(Windows 版)

文章目录
- [Claude Code 音频提示音配置指南(Windows 版)](#Claude Code 音频提示音配置指南(Windows 版))
前言
使用 Claude Code 时,最烦人的事情之一就是它经常需要你停下来操作------授权命令、确认执行、等待回复。如果你不盯着屏幕,它就一直卡在那里;如果你盯着屏幕,又浪费了宝贵的摸鱼时间。
Claude Code 提供了 hooks(钩子)机制,可以在特定事件发生时自动执行 shell 命令。利用这个机制,我们可以在 Claude 需要你操作时播放一声提示音,在任务完成时再播放一声,这样你完全可以不用盯着屏幕。
本文介绍如何在 Windows 环境下,使用 Claude Code 原生 hooks 配置音频提示音,无需额外安装任何软件。
前提条件
- Windows 10/11 系统
- 已安装 Claude Code CLI
可以先验证一下音频播放是否可用:
powershell
# 测试播放系统提示音
powershell -Command "[System.Media.SystemSounds]::Asterisk.Play()"
如果能听到提示音,说明环境没问题,可以继续下一步。
1. 打开 Claude Code 配置文件
Claude Code 的全局配置文件位于 ~/.claude/settings.json,所有会话都会读取这个文件中的 hooks 配置。
powershell
# 用记事本打开(如果文件不存在会自动创建)
notepad ~/.claude/settings.json
如果你之前没有配置过 hooks,文件中可能只有 permissions 等字段,没有 hooks 字段。如果已经有过其他 hooks 配置,你可以在现有基础上添加音频 hooks,它们会并行触发,互不影响。
2. 添加音频 hooks 配置
在 hooks 字段中添加 Stop 和 Notification 两个事件。这两个事件的含义:
| 事件 | 触发时机 | 作用 |
|---|---|---|
| Stop | Claude 需要你操作时(等待授权、确认命令等) | 提醒你回来处理 |
| Notification | 任务完成时 | 告诉你事情做完了 |
在 hooks 下添加以下内容:
json
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "powershell -ExecutionPolicy Bypass -Command \"[System.Media.SystemSounds]::Hand.Play()\""
}
]
}
],
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "powershell -ExecutionPolicy Bypass -Command \"[System.Media.SystemSounds]::Asterisk.Play()\""
}
]
}
]
}
}
各字段说明:
"type": "command"--- 表示执行一个 shell 命令powershell -ExecutionPolicy Bypass--- 绕过 PowerShell 执行策略,防止脚本被阻止[System.Media.SystemSounds]::Hand.Play()--- 播放 Windows 系统内置音效Hand--- 错误/拒绝提示音,短促醒目,适合 Stop 事件Asterisk--- 信息提示音,柔和轻快,适合 Notification 事件
如果你的配置文件中已经有其他 hooks,只需在 Stop 和 Notification 数组中追加新的条目即可,例如:
json
{
"hooks": {
"Stop": [
{
"hooks": [
{ "type": "command", "command": "your-existing-hook-command" },
{ "type": "command", "command": "powershell -ExecutionPolicy Bypass -Command \"[System.Media.SystemSounds]::Hand.Play()\"" }
]
}
]
}
}
3. 添加自动权限(避免每次弹确认)
每次触发 hook 时,Claude Code 默认会弹出权限确认框,问你是否允许执行该命令。如果不想每次都手动确认,可以把 PowerShell 命令加入自动允许列表。
编辑 ~/.claude/settings.local.json(如果不存在就创建),在 permissions.allow 数组中加入:
json
{
"permissions": {
"allow": [
"Bash(powershell*)"
]
}
}
这个配置的含义是:匹配所有以 powershell 开头的 Bash 命令,自动允许执行,不再弹确认框。
注意 :
settings.local.json不会被同步到其他设备,只影响本机。如果你在多台机器上使用 Claude Code,每台都需要单独配置。
4. 重启 Claude Code
配置修改后,需要重启 Claude Code 才能生效。关闭当前会话,重新启动即可:
powershell
# 在 Claude Code 中输入
/exit
# 然后重新启动
claude
5. 验证配置
启动新的 Claude Code 会话后,可以手动触发一下事件来验证:
- 在 Claude Code 中输入一个需要授权的命令,当它弹出确认框时,你应该能听到
Hand的提示音 - 当 Claude 完成一个较长的任务时,你应该能听到
Asterisk的完成音
如果没听到声音,检查以下几点:
- 手动测试 :在 PowerShell 中运行
powershell -Command "[System.Media.SystemSounds]::Hand.Play()" - 是否重启了 Claude Code:修改配置后必须重启才生效
- 音响/耳机是否正常:检查音量和设备连接
6. 音效选择指南
可用音效速查
Windows 内置了 4 种系统音效,无需任何文件路径,不会遇到路径转义问题:
| 音效 | 命令 | 特点 | 推荐场景 |
|---|---|---|---|
Asterisk |
[System.Media.SystemSounds]::Asterisk.Play() |
柔和信息音 | 任务完成、普通通知 |
Hand |
[System.Media.SystemSounds]::Hand.Play() |
短促错误音 | 操作提醒、权限确认 |
Exclamation |
[System.Media.SystemSounds]::Exclamation.Play() |
警告音 | 警告、异常 |
Beep |
[System.Media.SystemSounds]::Beep.Play() |
基础蜂鸣声 | 简单提醒 |
试听方法
在 PowerShell 中逐个试听:
powershell
Write-Host "1/4 Asterisk - 柔和信息音"
[System.Media.SystemSounds]::Asterisk.Play()
Start-Sleep -Seconds 2
Write-Host "2/4 Hand - 短促错误音"
[System.Media.SystemSounds]::Hand.Play()
Start-Sleep -Seconds 2
Write-Host "3/4 Exclamation - 警告音"
[System.Media.SystemSounds]::Exclamation.Play()
Start-Sleep -Seconds 2
Write-Host "4/4 Beep - 基础蜂鸣声"
[System.Media.SystemSounds]::Beep.Play()
事件与音效搭配建议
| 事件 | 含义 | 推荐风格 | 当前配置 |
|---|---|---|---|
| Stop | Claude 停下来等你操作 | 短促醒目,提醒你回来 | Hand |
| Notification | 任务完成 | 柔和轻快,表示结束 | Asterisk |
更换音效
如果想换其他音效,只需修改 settings.json 中的音效名称即可。例如把 Stop 的音效从 Hand 换成 Exclamation:
json
"command": "powershell -ExecutionPolicy Bypass -Command \"[System.Media.SystemSounds]::Exclamation.Play()\""
使用自定义 WAV 文件
如果系统内置音效不能满足需求,也可以播放自定义的 WAV 文件:
powershell
powershell -Command "(New-Object Media.SoundPlayer 'C:/Windows/Media/Windows Ding.wav').Play()"
在 hooks 中使用时,注意路径使用正斜杠 (/)而非反斜杠(\),避免 JSON 转义问题:
json
"command": "powershell -ExecutionPolicy Bypass -Command \"(New-Object Media.SoundPlayer 'C:/Windows/Media/Windows Ding.wav').Play()\""
关键说明
为什么推荐 SystemSounds 而不是 WAV 文件?
| 对比项 | SystemSounds | WAV 文件 |
|---|---|---|
| 路径问题 | 无需路径 | 需要完整文件路径 |
| 转义问题 | 无 | 反斜杠容易被吞掉 |
| 依赖 | 无 | 需要文件存在 |
| 可用音效 | 4 种内置音效 | 任意 WAV 文件 |
使用 SystemSounds 可以彻底避免路径转义问题,是最简单可靠的方案。
多会话注意
如果你同时运行多个 Claude Code 会话(比如开了多个终端),每个会话完成任务时都会触发 Notification hooks。这意味着你可能会在没有操作的时候听到声音------那是其他会话触发的。
解决办法:关掉不需要的 Claude Code 会话,只保留当前在用的。
本账号所有文章均为原创,欢迎转载,请注明文章出处:https://shandianchengzi.blog.csdn.net/article/details/161746781。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。