本文最后更新于 61 天前,如有失效请评论区留言。
VibeNotification的Github仓库:
开发和调试不易,希望小伙伴们帮忙给项目点Star、关注我的帐号呀!感谢感谢!
最近在用 Claude Code/Codex 跑长任务时,我希望他们工作时我可以做点别的事;等回复完成后再给个系统提示,我再过去查看结果。在Play a sound when Codex finishes a prompt / task · Issue #3962 · openai/codex的启示下,我折腾了个小工具——VibeNotification,能在 Claude Code/Codex 回复完成时弹系统通知+响铃。经过一段时间的调试,目前算是可用性比较强了,这里就公开给大家用一下 (~ ̄▽ ̄)~
python -m vibe_notification --config
# 会出现友好的交互式配置向导,按回车使用默认值即可
可以调节提示音的音量大小:
# 设置音量为 50%
VIBE_NOTIFICATION_SOUND_VOLUME=0.5 python -m vibe_notification
# 通过配置文件设置更持久
支持 5 种系统内置声音,不同操作系统的兼容性如下:
| 声音类型 | Windows | macOS | Linux | 说明 |
|---|---|---|---|---|
| Glass | ⚠️ 映射到 Asterisk | ✅ 原生支持 | ⚠️ 使用默认声音 | 清脆的玻璃声,推荐用于成功提示 |
| Ping | ⚠️ 映射到 Asterisk | ✅ 原生支持 | ⚠️ 使用默认声音 | 清晰的叮声,适合一般通知 |
| Pop | ❌ 不可用 | ✅ 原生支持 | ⚠️ 使用默认声音 | 轻快的弹出声 |
| Tink | ❌ 不可用 | ✅ 原生支持 | ⚠️ 使用默认声音 | 细小的提示音 |
| Basso 🔥 | ⚠️ 映射到 Exclamation | ✅ 原生支持 | ⚠️ 使用默认声音 | 低沉的警示音,适合错误提示 |
# 测试不同声音
python -m vibe_notification --sound-name Glass --test # 成功提示音
python -m vibe_notification --sound-name Basso --test # 错误提示音
python -m vibe_notification --sound-name Ping --test # 一般通知音
💡 需要 Python 环境
还没有安装 Python?请查看官方文档:
– Python 安装使用指南 – 官方完整的安装说明
– Python 官方下载页面 – 获取最新版本
– Python 中文文档 – 中文版安装指南💻 要求:Python 3.7+(支持 3.7-3.11 版本)
可选项。不是必须的。直接安装在base环境我觉得没啥问题。
python -m venv venv && source venv/bin/activate
git clone https://github.com/huangwb8/VibeNotification.git
cd VibeNotification
pip install -e .
pip install vibe-notification
python -m vibe_notification --test
效果:弹出系统通知 + 播放提示音,如果系统静音或禁用通知,会看到 INFO 日志但无弹窗
Claude Code 的 Stop 钩子在每次回复完成时触发,最适合做即时提醒。把下面片段写进 ~/.claude/settings.json:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "python -m vibe_notification"
}
]
}
]
}
}
如果你还没改过 ~/.claude/settings.json,可以直接照着下面的完整示例抄一份(包含常见的 Claude Code 环境变量)再把 Stop 钩子塞进去,更清晰知道要写到哪里:
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"env": {
"ANTHROPIC_AUTH_TOKEN": "xxx",
"ANTHROPIC_BASE_URL": "https://open.bigmodel.cn/api/anthropic",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-4.6",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-4.6",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-4.6",
"ANTHROPIC_MODEL": "glm-4.6",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"DISABLE_ERROR_REPORTING": "1",
"DISABLE_TELEMETRY": "1",
"MCP_TIMEOUT": "60000"
},
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "python -m vibe_notification"
}
]
}
]
},
"includeCoAuthoredBy": false,
"outputStyle": "engineer-professional"
}
把上面的 JSON 保存后,Claude Code 每次“消息停住”就会调用 python -m vibe_notification。你也可以把 Stop 换成 SessionEnd,或者再加一个 SubagentStop,都放在同一个文件里即可。
Codex 支持 notify 钩子,把事件 JSON 丢给 VibeNotification 即可。打开 ~/.codex/config.toml,追加:
notify = ["python3", "-m", "vibe_notification"]
如果不确定该丢到 config.toml 的哪个位置,可以参考我自己的示例(notify 贴在模型配置附近)再按需替换模型名称:
model_provider = "xxx"
model = "gpt-5.1-codex-max"
model_reasoning_effort = "medium"
disable_response_storage = true
notify = ["python3", "-m", "vibe_notification"]
[model_providers.xxx]
name = "xxx"
base_url = "https://xxx/v1"
wire_api = "responses"
requires_openai_auth = true
[tui]
notifications = true
保存后直接跑一条指令试试看,结束时就能听到“滴”一声提醒啦 (~ ̄▽ ̄)~
默认配置存放在 ~/.config/vibe-notification/config.json,一般用户不需要直接修改。我这边也给了在Shell里进行交互式配置的特性:
# 会出现友好的交互式配置向导,支持中英文
python -m vibe_notification --config
{
"enable_sound": true, // 是否播放提示音
"enable_notification": true, // 系统通知开关
"sound_name": "Glass", // 声音类型:Glass/Ping/Pop/Tink/Basso
"sound_volume": 1.0, // 音量:0.0-1.0
"notification_timeout": 10000, // 通知停留时间(毫秒)
"log_level": "INFO", // 日志级别:DEBUG/INFO/WARNING/ERROR
"language": "auto" // 界面语言:auto/zh-CN/en
}
一般来说不推荐。 但反正也支持吧 (~ ̄▽ ̄)~
# 基础控制
VIBE_NOTIFICATION_SOUND=0 # 关闭声音
VIBE_NOTIFICATION_NOTIFY=0 # 关闭弹窗
VIBE_NOTIFICATION_SOUND_VOLUME=0.5 # 音量 50%
VIBE_NOTIFICATION_SOUND_NAME=Ping # 切换声音
# 调试用
VIBE_NOTIFICATION_LOG_LEVEL=DEBUG # 显示详细日志
VIBE_NOTIFICATION_CONFIG_FILE=/path/to/config.json # 使用自定义配置文件
python -m vibe_notification --test 有弹窗/铃声,说明本地依赖 OK。command 被触发;没有的话检查 settings.json 路径和 JSON 括号。~/.codex/config.toml 是否被其他 notify 覆盖。notify-send 是否可用;macOS 需要通知权限别关掉。VIBE_NOTIFICATION_LOG_LEVEL=DEBUG python -m vibe_notification --test
python -m vibe_notification --show-config
for sound in Glass Ping Pop Tink Basso; do
echo "Testing $sound..."
VIBE_NOTIFICATION_SOUND_NAME=$sound python -m vibe_notification --test
done
which python 指向安装了 VibeNotification 的那个。SessionEnd 钩子。libnotify-bin:sudo apt-get install libnotify-bin
如果你经常运行批量任务,可以创建一个别名:
# 添加到 ~/.bashrc 或 ~/.zshrc
alias vibt='VIBE_NOTIFICATION_LOG_LEVEL=DEBUG python -m vibe_notification --test'
alias vibc='python -m vibe_notification --config'
# run_with_notify.py
import subprocess
import sys
from vibe_notification import send_notification
# 运行命令
result = subprocess.run(sys.argv[1:], capture_output=True, text=True)
# 根据结果发送不同通知
if result.returncode == 0:
send_notification("任务成功", f"{sys.argv[1]} 执行成功")
else:
send_notification("任务失败", f"{sys.argv[1]} 执行失败", sound_name="Basso")
在 GitHub Actions 或其他 CI/CD 中使用:
- name: Notify completion
if: always()
run: |
pip install vibe-notification
python -m vibe_notification "构建完成: ${{ job.status }}"
现在咱们已经拥有一个功能完善的”AI 助手通知助手”。VibeNotification 不仅解决了基本的提醒需求,还提供了丰富的自定义选项和优雅的使用体验。下次跑Codex/Claude Code长任务,不用盯着屏幕了,直接去其它界面看剧喝菜,爽得一批;等它滴一声、弹窗再回去看看输出结果就行。Gemini CLI因为我自己没用过,所以没有支持。有问题的小伙伴欢迎到 GitHub 仓库 提 Issue 或 PR (~ ̄▽ ̄)~ ;博客评论区留言也没问题!
---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍
本文最后更新于 61 天前,如有失效请评论区留言。
VibeNotification的Github仓库:
开发和调试不易,希望小伙伴们帮忙给项目点Star、关注我的帐号呀!感谢感谢!
最近在用 Claude Code/Codex 跑长任务时,我希望他们工作时我可以做点别的事;等回复完成后再给个系统提示,我再过去查看结果。在Play a sound when Codex finishes a prompt / task · Issue #3962 · openai/codex的启示下,我折腾了个小工具——VibeNotification,能在 Claude Code/Codex 回复完成时弹系统通知+响铃。经过一段时间的调试,目前算是可用性比较强了,这里就公开给大家用一下 (~ ̄▽ ̄)~
python -m vibe_notification --config
# 会出现友好的交互式配置向导,按回车使用默认值即可
可以调节提示音的音量大小:
# 设置音量为 50%
VIBE_NOTIFICATION_SOUND_VOLUME=0.5 python -m vibe_notification
# 通过配置文件设置更持久
支持 5 种系统内置声音,不同操作系统的兼容性如下:
| 声音类型 | Windows | macOS | Linux | 说明 |
|---|---|---|---|---|
| Glass | ⚠️ 映射到 Asterisk | ✅ 原生支持 | ⚠️ 使用默认声音 | 清脆的玻璃声,推荐用于成功提示 |
| Ping | ⚠️ 映射到 Asterisk | ✅ 原生支持 | ⚠️ 使用默认声音 | 清晰的叮声,适合一般通知 |
| Pop | ❌ 不可用 | ✅ 原生支持 | ⚠️ 使用默认声音 | 轻快的弹出声 |
| Tink | ❌ 不可用 | ✅ 原生支持 | ⚠️ 使用默认声音 | 细小的提示音 |
| Basso 🔥 | ⚠️ 映射到 Exclamation | ✅ 原生支持 | ⚠️ 使用默认声音 | 低沉的警示音,适合错误提示 |
# 测试不同声音
python -m vibe_notification --sound-name Glass --test # 成功提示音
python -m vibe_notification --sound-name Basso --test # 错误提示音
python -m vibe_notification --sound-name Ping --test # 一般通知音
💡 需要 Python 环境
还没有安装 Python?请查看官方文档:
– Python 安装使用指南 – 官方完整的安装说明
– Python 官方下载页面 – 获取最新版本
– Python 中文文档 – 中文版安装指南💻 要求:Python 3.7+(支持 3.7-3.11 版本)
可选项。不是必须的。直接安装在base环境我觉得没啥问题。
python -m venv venv && source venv/bin/activate
git clone https://github.com/huangwb8/VibeNotification.git
cd VibeNotification
pip install -e .
pip install vibe-notification
python -m vibe_notification --test
效果:弹出系统通知 + 播放提示音,如果系统静音或禁用通知,会看到 INFO 日志但无弹窗
Claude Code 的 Stop 钩子在每次回复完成时触发,最适合做即时提醒。把下面片段写进 ~/.claude/settings.json:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "python -m vibe_notification"
}
]
}
]
}
}
如果你还没改过 ~/.claude/settings.json,可以直接照着下面的完整示例抄一份(包含常见的 Claude Code 环境变量)再把 Stop 钩子塞进去,更清晰知道要写到哪里:
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"env": {
"ANTHROPIC_AUTH_TOKEN": "xxx",
"ANTHROPIC_BASE_URL": "https://open.bigmodel.cn/api/anthropic",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-4.6",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-4.6",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-4.6",
"ANTHROPIC_MODEL": "glm-4.6",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"DISABLE_ERROR_REPORTING": "1",
"DISABLE_TELEMETRY": "1",
"MCP_TIMEOUT": "60000"
},
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "python -m vibe_notification"
}
]
}
]
},
"includeCoAuthoredBy": false,
"outputStyle": "engineer-professional"
}
把上面的 JSON 保存后,Claude Code 每次“消息停住”就会调用 python -m vibe_notification。你也可以把 Stop 换成 SessionEnd,或者再加一个 SubagentStop,都放在同一个文件里即可。
Codex 支持 notify 钩子,把事件 JSON 丢给 VibeNotification 即可。打开 ~/.codex/config.toml,追加:
notify = ["python3", "-m", "vibe_notification"]
如果不确定该丢到 config.toml 的哪个位置,可以参考我自己的示例(notify 贴在模型配置附近)再按需替换模型名称:
model_provider = "xxx"
model = "gpt-5.1-codex-max"
model_reasoning_effort = "medium"
disable_response_storage = true
notify = ["python3", "-m", "vibe_notification"]
[model_providers.xxx]
name = "xxx"
base_url = "https://xxx/v1"
wire_api = "responses"
requires_openai_auth = true
[tui]
notifications = true
保存后直接跑一条指令试试看,结束时就能听到“滴”一声提醒啦 (~ ̄▽ ̄)~
默认配置存放在 ~/.config/vibe-notification/config.json,一般用户不需要直接修改。我这边也给了在Shell里进行交互式配置的特性:
# 会出现友好的交互式配置向导,支持中英文
python -m vibe_notification --config
{
"enable_sound": true, // 是否播放提示音
"enable_notification": true, // 系统通知开关
"sound_name": "Glass", // 声音类型:Glass/Ping/Pop/Tink/Basso
"sound_volume": 1.0, // 音量:0.0-1.0
"notification_timeout": 10000, // 通知停留时间(毫秒)
"log_level": "INFO", // 日志级别:DEBUG/INFO/WARNING/ERROR
"language": "auto" // 界面语言:auto/zh-CN/en
}
一般来说不推荐。 但反正也支持吧 (~ ̄▽ ̄)~
# 基础控制
VIBE_NOTIFICATION_SOUND=0 # 关闭声音
VIBE_NOTIFICATION_NOTIFY=0 # 关闭弹窗
VIBE_NOTIFICATION_SOUND_VOLUME=0.5 # 音量 50%
VIBE_NOTIFICATION_SOUND_NAME=Ping # 切换声音
# 调试用
VIBE_NOTIFICATION_LOG_LEVEL=DEBUG # 显示详细日志
VIBE_NOTIFICATION_CONFIG_FILE=/path/to/config.json # 使用自定义配置文件
python -m vibe_notification --test 有弹窗/铃声,说明本地依赖 OK。command 被触发;没有的话检查 settings.json 路径和 JSON 括号。~/.codex/config.toml 是否被其他 notify 覆盖。notify-send 是否可用;macOS 需要通知权限别关掉。VIBE_NOTIFICATION_LOG_LEVEL=DEBUG python -m vibe_notification --test
python -m vibe_notification --show-config
for sound in Glass Ping Pop Tink Basso; do
echo "Testing $sound..."
VIBE_NOTIFICATION_SOUND_NAME=$sound python -m vibe_notification --test
done
which python 指向安装了 VibeNotification 的那个。SessionEnd 钩子。libnotify-bin:sudo apt-get install libnotify-bin
如果你经常运行批量任务,可以创建一个别名:
# 添加到 ~/.bashrc 或 ~/.zshrc
alias vibt='VIBE_NOTIFICATION_LOG_LEVEL=DEBUG python -m vibe_notification --test'
alias vibc='python -m vibe_notification --config'
# run_with_notify.py
import subprocess
import sys
from vibe_notification import send_notification
# 运行命令
result = subprocess.run(sys.argv[1:], capture_output=True, text=True)
# 根据结果发送不同通知
if result.returncode == 0:
send_notification("任务成功", f"{sys.argv[1]} 执行成功")
else:
send_notification("任务失败", f"{sys.argv[1]} 执行失败", sound_name="Basso")
在 GitHub Actions 或其他 CI/CD 中使用:
- name: Notify completion
if: always()
run: |
pip install vibe-notification
python -m vibe_notification "构建完成: ${{ job.status }}"
现在咱们已经拥有一个功能完善的”AI 助手通知助手”。VibeNotification 不仅解决了基本的提醒需求,还提供了丰富的自定义选项和优雅的使用体验。下次跑Codex/Claude Code长任务,不用盯着屏幕了,直接去其它界面看剧喝菜,爽得一批;等它滴一声、弹窗再回去看看输出结果就行。Gemini CLI因为我自己没用过,所以没有支持。有问题的小伙伴欢迎到 GitHub 仓库 提 Issue 或 PR (~ ̄▽ ̄)~ ;博客评论区留言也没问题!
---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍