哈喽大家好,
我是阿星👋🏻
众所周知claudecode是干完活儿也不吭声的。一会儿一看结束没。
怎么让它每次干完活播报提示音。
除了可以 hook 配置中直接写 afplay,我看朋友小红书上的思路是先写脚本后hook,我用的是第二种------
先听效果------ 视频上传不了 原文


原理如下------
首先: Claude Code 执行操作时会触发"事件",你可以配置这些事件自动运行脚本。
其次: 通过在配置文件中设置 SessionStart
(启动时)和 PostToolUse
(完成任务时)等hook事件,分别播放不同的提示音来区分不同的工作状态。
简单说就是:Claude 干活的时候会"通知"你的脚本,脚本收到通知就播放声音。
制作铃声
这里我随便在剪映里生成了几个铃声👇
创建hook文件夹
放入hooks文件夹。如果你找不到这个文件夹创建一个就可以了。
bash
mkdir -p /Users/xingyang/hooks
找自己claudecode对应的指定动作
软件是非常多个性的,一升级动作就变形了有的
所以我们需要自己找到自己版本的指定动作,和体操运动一样的
比如咱们要播放就需要一个动作一览表,也就是hook event
这个event的名字不同的版本还不一样,非常容易搞错
我一开始就是搞错事件名耽误半天
所以你必须找到你的claudecode支持的hook事件不能瞎写
说白了就是表演体操里的指定动作
怎么查询属于自己的指定动作呢?
bash
#查询claude事件名的办法
/help
/hooks
类似于这样一个最下面就是你hook事件名

提取出来就是最下面的hook event
css
Claude Code v1.0.72 实际支持的事件:
PreToolUse - 工具执行前
PostToolUse - 工具执行后
Notification - 发送通知时
UserPromptSubmit - 用户提交提示时
SessionStart - 新会话开始时
视频里的系哦啊过就是用的time.mp3一个铃声
当hook event------PostToolUse
被触发 → 播放 time.mp3
而这个PostToolUse
代表的就是工具执行后。我们在claude里完成某件事时就会自动播放。
写个提示音播放脚本
我们让cc自动播放脚本,脚本也得存在才行。先让AI给我们写个脚本
首先创建脚本目录和文件:
bash
# 创建脚本目录
mkdir -p /Users/xingyang/.local/bin
# 创建脚本文件
nano /Users/xingyang/.local/bin/claude-beep.sh
脚本内容超简单,就3行:
第一行 :告诉系统这是bash脚本
第二行 :记录日志,方便调试(可选)
第三行 :播放音频文件
bash
#!/bin/bash
echo "Hook triggered at $(date): $1" >> /tmp/claude-hook.log
afplay "$1"
保存后给脚本执行权限:
bash
chmod +x /Users/xingyang/.local/bin/claude-beep.sh
测试脚本是否工作:
bash
# 手动测试播放
/Users/xingyang/.local/bin/claude-beep.sh /Users/xingyang/hooks/time.mp3
如果听到声音说明脚本正常,如果没声音检查:
- 音频文件路径是否正确
- 系统音量是否开启
- 可以试试用
afplay /Users/xingyang/hooks/time.mp3
直接测试音频
这样脚本就写好了,下一步就是配置 Claude Code 调用这个脚本。
告诉cc啥时候播提示音
所以我们解决了播放以后,还要解决啥时候安。所以需要复制下面代码后保存这个配置 👉 .claude/settings.json
注意这个settings.json
必须是在.claude
的根目录下否则可能读取不到
你可以根据自己的需求配置删减,比如下面这个就是带了好几个hooks。从我标 ⭐️⭐️⭐️的地方就是hook相关的代码。
所以你看👇下面这些直接复制就行了。路径换成你的。
css
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "sk-947e50xxxxx",
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
"ANTHROPIC_MODEL": "deepseek-chat",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1,
"API_TIMEOUT_MS": 600000
},
"permissions": {
"allow": [],
"deny": []
},
⭐️⭐️⭐️
"hooks": {
"PostToolUse": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "/Users/xingyang/.local/bin/claude-beep.sh /Users/xingyang/hooks/time.mp3"
}
],
"UserPromptSubmit": [
[{]([url](url))
"matcher": "",
"hooks": [
{
"type": "command",
"command": "/Users/xingyang/.local/bin/claude-beep.sh /Users/xingyang/hooks/gold.mp3"
}
]
}
]
}
],
"Notification": [
{
"matcher": "permission",
"hooks": [
{
"type": "command",
"command": "/Users/xingyang/.local/bin/claude-beep.sh /Users/xingyang/hooks/gold.mp3"
}
]
}
]
}
}
现在重启 Claude Code
测试效果 :
- 发送一条消息 → 应该听到
time .mp3
- Claude 执行操作后 → 应该听到
time.mp3
- 如果遇到不能播放的时候其实要排查的就是三个点了👇
关于报错
1、hook事件名错了,那可以现在终端测试一下音频是否能正常播放。

2、mp3位置放错了
3、你没有触发自己期待的事件 (hook event)但是又在期待发生
AI coding还有很多好玩的东西,我是阿星,我们下期再见。