【记录】Claude Code|Ubuntu26给Claude Code新增任务消息提示音

Claude Code 音频提示音配置指南

文章目录

  • [Claude Code 音频提示音配置指南](#Claude Code 音频提示音配置指南)
    • 前言
    • 前提条件
    • [1. 打开 Claude Code 配置文件](#1. 打开 Claude Code 配置文件)
    • [2. 添加音频 hooks 配置](#2. 添加音频 hooks 配置)
    • [3. 添加自动权限(避免每次弹确认)](#3. 添加自动权限(避免每次弹确认))
    • [4. 重启 Claude Code](#4. 重启 Claude Code)
    • [5. 验证配置](#5. 验证配置)
    • [6. 音效选择指南](#6. 音效选择指南)
    • 关键说明
      • [为什么必须用 `setsid`?](#为什么必须用 setsid?)
      • [PulseAudio (`paplay`) vs ALSA (`aplay`)](#PulseAudio (paplay) vs ALSA (aplay))
      • 多会话注意

前言

使用 Claude Code 时,最烦人的事情之一就是它经常需要你停下来操作------授权命令、确认执行、等待回复。如果你不盯着屏幕,它就一直卡在那里;如果你盯着屏幕,又浪费了宝贵的摸鱼时间。

Claude Code 提供了 hooks(钩子)机制,可以在特定事件发生时自动执行 shell 命令。利用这个机制,我们可以在 Claude 需要你操作时播放一声提示音,在任务完成时再播放一声,这样你完全可以不用盯着屏幕。

本文介绍如何在 Linux 环境下,使用 Claude Code 原生 hooks 配置音频提示音,无需额外脚本或 Node.js 环境。

前提条件

  • Linux 系统,已安装 PulseAudio(Ubuntu 默认自带)
  • 已安装 Claude Code CLI
  • 系统音效目录存在(/usr/share/sounds/freedesktop/stereo/

可以先验证一下音频播放工具是否可用:

bash 复制代码
# 检查 paplay 是否存在(PulseAudio 的命令行播放工具)
which paplay

# 测试播放一个音效
paplay /usr/share/sounds/freedesktop/stereo/bell.oga

如果能听到叮咚声,说明环境没问题,可以继续下一步。

1. 打开 Claude Code 配置文件

Claude Code 的全局配置文件位于 ~/.claude/settings.json,所有会话都会读取这个文件中的 hooks 配置。

bash 复制代码
vim ~/.claude/settings.json

如果你之前没有配置过 hooks,文件中可能只有 permissions 等字段,没有 hooks 字段。如果已经有过其他 hooks 配置(比如飞书通知),你可以在现有基础上添加音频 hooks,它们会并行触发,互不影响。

2. 添加音频 hooks 配置

hooks 字段中添加 StopNotification 两个事件。这两个事件的含义:

事件 触发时机 作用
Stop Claude 需要你操作时(等待授权、确认命令等) 提醒你回来处理
Notification 任务完成时 告诉你事情做完了

hooks 下添加以下内容:

json 复制代码
{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "setsid paplay /usr/share/sounds/freedesktop/stereo/bell.oga"
          }
        ]
      }
    ],
    "Notification": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "setsid paplay /usr/share/sounds/freedesktop/stereo/audio-volume-change.oga"
          }
        ]
      }
    ]
  }
}

各字段说明:

  • "type": "command" --- 表示执行一个 shell 命令
  • "command" --- 具体要执行的命令
  • setsid --- 让播放进程脱离当前终端的进程组,防止 hook 等待播放结束(必须加,否则会卡住
  • paplay --- PulseAudio 的命令行播放工具,播放指定的音频文件
  • bell.oga / audio-volume-change.oga --- 音效文件路径,可以替换成你喜欢的音效

如果你的配置文件中已经有其他 hooks,只需在 StopNotification 数组中追加新的条目即可,例如:

json 复制代码
{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          { "type": "command", "command": "your-existing-hook-command" },
          { "type": "command", "command": "setsid paplay /usr/share/sounds/freedesktop/stereo/bell.oga" }
        ]
      }
    ]
  }
}

3. 添加自动权限(避免每次弹确认)

每次触发 hook 时,Claude Code 默认会弹出权限确认框,问你是否允许执行该命令。如果不想每次都手动确认,可以把 paplay 加入自动允许列表。

编辑 ~/.claude/settings.local.json(如果不存在就创建),在 permissions.allow 数组中加入:

json 复制代码
{
  "permissions": {
    "allow": [
      "Bash(setsid paplay *)"
    ]
  }
}

这个配置的含义是:匹配所有以 setsid paplay 开头的 Bash 命令,自动允许执行,不再弹确认框。

注意settings.local.json 不会被同步到其他设备,只影响本机。如果你在多台机器上使用 Claude Code,每台都需要单独配置。

4. 重启 Claude Code

配置修改后,需要重启 Claude Code 才能生效。关闭当前会话,重新启动即可:

bash 复制代码
# 直接退出当前会话,然后重新启动
exit
claude

5. 验证配置

启动新的 Claude Code 会话后,可以手动触发一下 Stop 事件来验证:

  • 在 Claude Code 中输入一个需要授权的命令(比如 rm 某个文件),当它弹出确认框时,你应该能听到 bell.oga 的提示音
  • 当 Claude 完成一个较长的任务时,你应该能听到 audio-volume-change.oga 的完成音

如果没听到声音,检查以下几点:

  1. PulseAudio 是否正常运行pactl info | grep "Server Name"
  2. 音效文件是否存在ls /usr/share/sounds/freedesktop/stereo/bell.oga
  3. setsid 是否安装which setsid(通常属于 util-linux 包,系统自带)
  4. 是否重启了 Claude Code:修改配置后必须重启才生效

6. 音效选择指南

试听方法

系统自带的音效都在 /usr/share/sounds/freedesktop/stereo/ 目录下,可以用以下脚本逐个试听:

bash 复制代码
for f in /usr/share/sounds/freedesktop/stereo/*.oga; do
  echo "$(basename $f)"
  setsid paplay "$f"
  sleep 2
done

每播放一个会停 2 秒,方便你判断哪个好听。

事件与音效搭配建议

事件 含义 推荐风格 当前配置
Stop Claude 停下来等你操作 清脆短促,提醒你回来 bell.oga
Notification 任务完成 轻快柔和,表示结束 audio-volume-change.oga

常用音效速查

音效文件 描述 适合场景
bell.oga 叮咚声 操作提醒、权限确认
audio-volume-change.oga 音量变化声 任务完成、柔和提醒
complete.oga 完成提示音 任务结束
dialog-warning.oga 警告声 错误、异常
dialog-information.oga 信息提示 普通通知
message-new-instant.oga 新消息声 新消息到达
camera-shutter.oga 快门声 截图、捕获
trash-empty.oga 清空回收站 清理完成
screen-capture.oga 截屏声 截图相关
在这里插入图片描述

自定义音效

如果系统音效不满足需求,可以使用自己的音频文件。paplay 支持 WAV、OGG、FLAC 等格式:

bash 复制代码
# WAV 和 OGG 格式直接支持
setsid paplay /path/to/your-sound.wav
setsid paplay /path/to/your-sound.ogg

# MP3 需要先用 ffmpeg 转换为 WAV
ffmpeg -i input.mp3 output.wav
setsid paplay /path/to/output.wav

关键说明

为什么必须用 setsid

Claude Code 的 hook 机制会等待命令执行完毕后才继续。如果直接运行 paplay,它会同步播放音频,播放期间 hook 一直显示 "running stop hooks" 转圈,直到播放结束才释放。

setsid 的作用是创建一个新的会话(session),让 paplay 进程完全脱离当前终端的进程组。这样 hook 命令会立即返回,界面不会卡住。

如果用 &(后台运行)是不够的,因为 hook 的 shell 仍然会等待所有后台子进程结束。只有 setsid 能真正让进程脱离。

PulseAudio (paplay) vs ALSA (aplay)

特性 paplay (PulseAudio) aplay (ALSA)
默认安装 Ubuntu 等主流发行版自带 需要安装 alsa-utils
多路混音 支持,多个程序可同时播放 不支持,同时只能一个程序播放
桌面环境兼容 好,与桌面音量控制集成 可能与 PulseAudio 冲突
延迟 略高(经过 PulseAudio 服务) 更低(直接操作硬件)

推荐使用 paplay,兼容性更好。

多会话注意

如果你同时运行多个 Claude Code 会话(比如开了多个终端),每个会话完成任务时都会触发 Notification hooks。这意味着你可能会在没有操作的时候听到声音------那是其他会话触发的。

解决办法:关掉不需要的 Claude Code 会话,只保留当前在用的。


本账号所有文章均为原创,欢迎转载,请注明文章出处:https://shandianchengzi.blog.csdn.net/article/details/161525403。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

相关推荐
gwjcloud1 小时前
Kubernetes从入门到精通(devops)06
运维·devops
运维小子1 小时前
用 Hooks 把 Claude Code 管起来
ai·claude
一切皆是因缘际会2 小时前
人工智能价值重构与发展破局
人工智能·百度·ai·重构
蚰蜒螟2 小时前
从mkdir命令到磁盘:Linux内核目录创建过程深度解析
linux·运维·数据库
GISer_Jing2 小时前
Claude Code Tool System 与 Permission 机制深度解析
ai·系统架构·前端框架·ai编程
念何架构之路2 小时前
接入层Nginx
运维·nginx
运维栈记2 小时前
Remotion + Claude Code:用自然语言创作视频的革命性突破
人工智能·ai·音视频
wanhengidc2 小时前
云手机 跨设备无缝衔接
运维·服务器·人工智能·智能手机·云计算
sxlishaobin2 小时前
SSH远程免密登录的两种方式
运维·ssh