写点什么

Claude Code 干活终于会「出声」了!再也不用盯屏幕等完成

  • 2025-09-03
    北京
  • 本文字数:2105 字

    阅读完需:约 7 分钟

Claude Code干活终于会「出声」了!再也不用盯屏幕等完成

哈喽大家好,

我是阿星👋🏻

众所周知 claudecode 是干完活儿也不吭声的。一会儿一看结束没。

怎么让它每次干完活播报提示音。

除了可以 hook 配置中直接写 afplay,我看

朋友小红书上的思路是先写脚本后 hook,我用的是第二种——

先听效果——


原理如下——

首先: Claude Code 执行操作时会触发"事件",你可以配置这些事件自动运行脚本。

其次: 通过在配置文件中设置 SessionStart(启动时)和 PostToolUse(完成任务时)等 hook 事件,分别播放不同的提示音来区分不同的工作状态。

简单说就是:Claude 干活的时候会"通知"你的脚本,脚本收到通知就播放声音。

制作铃声

这里我随便在剪映里生成了几个铃声👇




创建 hook 文件夹

放入 hooks 文件夹。如果你找不到这个文件夹创建一个就可以了。

mkdir -p /Users/xingyang/hooks
复制代码

找自己 claudecode 对应的指定动作

软件是非常多个性的,一升级动作就变形了有的

所以我们需要自己找到自己版本的指定动作,和体操运动一样的

比如咱们要播放就需要一个动作一览表,也就是 hook event

这个 event 的名字不同的版本还不一样,非常容易搞错

我一开始就是搞错事件名耽误半天

所以你必须找到你的 claudecode 支持的 hook 事件不能瞎写

说白了就是表演体操里的指定动作

怎么查询属于自己的指定动作呢?

#查询claude事件名的办法
/help/hooks
复制代码

类似于这样一个最下面就是你 hook 事件名



提取出来就是最下面的 hook event


Claude Code v1.0.72 实际支持的事件:PreToolUse - 工具执行前PostToolUse - 工具执行后Notification - 发送通知时UserPromptSubmit - 用户提交提示时SessionStart - 新会话开始时
复制代码

视频里的系哦啊过就是用的 time.mp3 一个铃声

当 hook event——PostToolUse 被触发 → 播放 time.mp3

而这个PostToolUse代表的就是工具执行后。我们在 claude 里完成某件事时就会自动播放。

写个提示音播放脚本

我们让 cc 自动播放脚本,脚本也得存在才行。先让 AI 给我们写个脚本

首先创建脚本目录和文件:

# 创建脚本目录mkdir -p /Users/xingyang/.local/bin
# 创建脚本文件nano /Users/xingyang/.local/bin/claude-beep.sh
复制代码

脚本内容超简单,就 3 行:

第一行 :告诉系统这是 bash 脚本

第二行 :记录日志,方便调试(可选)

第三行 :播放音频文件

#!/bin/bashecho "Hook triggered at $(date): $1" >> /tmp/claude-hook.logafplay "$1"
复制代码

保存后给脚本执行权限:

chmod +x /Users/xingyang/.local/bin/claude-beep.sh
复制代码

测试脚本是否工作:

# 手动测试播放/Users/xingyang/.local/bin/claude-beep.sh /Users/xingyang/hooks/time.mp3
复制代码

如果听到声音说明脚本正常,如果没声音检查:

  1. 音频文件路径是否正确

  2. 系统音量是否开启

  3.  可以试试用 afplay /Users/xingyang/hooks/time.mp3 直接测试音频

这样脚本就写好了,下一步就是配置 Claude Code 调用这个脚本。

告诉 cc 啥时候播提示音

所以我们解决了播放以后,还要解决啥时候安。所以需要复制下面代码后保存这个配置 👉 .claude/settings.json

注意这个settings.json必须是在.claude的根目录下否则可能读取不到

你可以根据自己的需求配置删减,比如下面这个就是带了好几个 hooks。从我标 ⭐️⭐️⭐️的地方就是 hook 相关的代码。

所以你看👇下面这些直接复制就行了。路径换成你的。

{  "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": [      {        "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 还有很多好玩的东西,我是阿星,我们下期再见。


发布于: 刚刚阅读数: 4
用户头像

全平台同名 2025-05-15 加入

zuojialongxi

评论

发布
暂无评论
Claude Code干活终于会「出声」了!再也不用盯屏幕等完成_AI_阿星AI工作室_InfoQ写作社区