Claude Code 写完了你还不知道?一个桌面通知工具解决!
Claude Code 跑完或要你确认时,桌面弹窗提醒,还能用 AI 摘要说它干了什么;附安装步骤。

目录

Claude Code 是目前最强的终端 AI 编程助手,能自主完成复杂编码任务。但它有一个让人抓狂的问题:任务完成了,没有任何提示。你要么盯着终端干等,要么切走之后完全不知道它什么时候做完。这篇文章是我解决这个问题的完整记录。
盯着终端等 AI,是一种什么体验#
前几天晚上,我同时开了三个终端窗口跑 Claude Code。
一个在重构项目的认证模块,一个在写单元测试,还有一个在做文档生成。三个任务同时交给 Claude,理论上应该很高效——我可以切出去喝杯咖啡,回来收结果。
但实际情况是:我哪也去不了。
因为 Claude Code 没有任何完成提示。不弹窗,不响铃,不闪烁。它安安静静地跑完任务,然后安安静静地等着你回来看。如果你正好切到浏览器看了篇文章,或者回了条消息——完了,你不知道它什么时候完成的,更不知道三个窗口里哪个先做完。

这个体验很像什么呢?像你点了三份不同的外卖,但骑手到了都不打电话,默默把餐放在门口就走了。你不时要起身开门检查一下,但十次里有八次门口是空的。
如果你用过 Claude Code,你一定经历过这种"反复切回终端检查"的循环。短任务还好,几十秒就完事。但像代码重构、大规模文件生成这种可能跑几分钟的任务,你要么死盯着等,要么不断轮询——两种方式都在浪费时间。
我决定解决这个问题。
一个通知气泡,解决所有焦虑#
先看最终效果。
任务完成时,屏幕右上角弹出一个原生 macOS 通知——带提示音,标题告诉你状态,副标题显示是哪个任务:

如果 Claude 需要你确认权限或等待输入,也会弹一个不同风格的通知:

关键信息:
- 实时弹窗:Claude 完成的瞬间通知就到了,不需要轮询
- 带提示音:就算你在看别的 App,声音也能把你"叫回来"
- AI 智能摘要:通知副标题不是一串 session ID,而是 AI 生成的 6 字短标题(比如"重构认证模块"),一眼就知道是哪个任务完成了
- 两种状态区分:✅ 已完成(任务做完了)和 ⏳ 等待操作(需要你介入),声音也不同
这是怎么做到的?Claude Code 提供了一个叫 Hooks 的机制——你可以在特定事件(比如任务完成、需要权限确认)触发自定义脚本。我的工具就是基于这个机制构建的。
效果很简单:你可以放心切到别的 App、喝咖啡、做其他事情——通知会自动找你。
下面这张是我实际使用时的桌面截图,右上角的通知弹窗就是 claude-code-notifier 在工作:

为什么现有工具不够用,我决定自己做#
动手之前,我先在 GitHub 上搜了一圈。"claude code notification"、"claude code hooks sound"——前后看了 20 多个项目,包括 Star 最多的 ctoth/claudio[1](Go 写的音频插件,支持音色包)。装上试了半小时,发现一个核心问题:
只有声音,没有桌面通知弹窗,也无法区分任务。
三个终端同时跑,"叮"一声——哪个窗口完成了?发生了什么?不知道,还是得切回终端看。这些工具做的是"提醒你去看终端",但我想要的是"不用看终端就知道发生了什么"。
于是卸掉,自己做。

实现方案:桌面通知 + AI 摘要#
思路很直接:写一个 Python 脚本挂到 Claude Code 的 Hooks 上。当 Stop(任务完成)或 Notification(需要操作)事件触发时,脚本读取会话首条消息,调 claude-3-haiku 生成 6 字短标题,然后通过 osascript 发送 macOS 原生通知。
核心流程:
Claude Code Hook (stdin JSON)
│
▼
notify.sh (入口)
│
▼
notify.py
├── 读取会话 transcript
├── AI 摘要 (claude-3-haiku)
│ 或 本地关键词提取
├── 缓存摘要
│
▼
macOS 通知 + 提示音
缓存 + Fallback:让通知瞬间触发#
一个会话过程中可能触发多次 Stop(Claude 每回复一次就触发),没必要每次都调 API。所以加了缓存机制:每个 session_id 第一次触发时调 AI,摘要写入 ~/.cache/claude-code-notifier/,后续同 session 直接读缓存,瞬间触发。
同时做了本地 fallback:没有 API Key 或调用失败时,自动切换到本地关键词提取。大部分时候用户给 Claude Code 的第一句话就包含核心意图——"重构认证模块""给 API 加限流""修复登录 bug"——不需要 AI 也能提取出来。
功能跑通后,打包成了独立开源工具 claude-code-notifier,写了一键安装脚本和双语 README。
仓库地址 + 完整使用指南#
整个项目已经开源,MIT 协议,开箱即用。
GitHub 仓库:github.com/antonailog/claude-code-notifier

功能特性#
- 任务完成时桌面通知 + Hero 提示音
- 等待操作时桌面通知 + Sosumi 提示音
- AI 智能会话摘要(claude-3-haiku 生成 6 字短标题)
- 本地 fallback(无 API 时自动关键词提取)
- 缓存机制(每个 session 只调一次 AI,后续通知瞬间触发)
安装步骤#
三步搞定:
# 1. 克隆仓库
git
clone
https://github.com/antonailog/claude-code-notifier.git
# 2. 运行安装脚本
cd
claude-code-notifier
bash install.sh
# 3. 重启 Claude Code
安装脚本会自动备份你的 settings.json,然后把 Hook 配置注入进去。完全无侵入,卸载时一键恢复。
可选:启用 AI 摘要#
如果你想要 AI 生成的智能会话摘要,额外装一个 Python 包:
pip install anthropic
工具会自动使用你现有的 Claude Code API 凭证(ANTHROPIC_API_KEY 或 ANTHROPIC_AUTH_TOKEN)。如果没有配置或 API 不可用,会自动回退到本地关键词提取——完全不影响通知功能本身。
自定义配置#
换提示音: 编辑 notify.py,修改 sound 参数。macOS 自带 14 种系统声音:
声音风格适合场景 Hero 胜利感、振奋任务完成 Sosumi 经典 Mac 警告需要注意 Glass 轻柔、清脆轻量通知 Ping 快速、干净次要更新 Funk 短促、有力错误警告 Pop 柔和、活泼工具完成
加更多事件: Claude Code 支持 8 种 Hook 事件,我默认只监听了最关键的两个。你可以按需添加:
Hook 事件说明建议声音 StopClaude 完成回复 HeroNotification 需要权限 / 等待输入 SosumiSubagentStop 子 Agent 完成任务 PingPreToolUse 工具调用前 TinkPostToolUse 工具调用后 PopSessionStart 新会话开始 Blow
卸载#
cd
claude-code-notifier
bash uninstall.sh
一键恢复原始配置,不留痕迹。
相关项目推荐#
做这个工具的过程中发现了不少同类项目,各有特点:
- ctoth/claudio[2] — Go 编写的音频插件,支持音色包和按事件播放不同声音
- wyattjoh/claude-code-notification[3] — 轻量 macOS 通知 Hook,可自定义系统声音
- shanraisshan/claude-code-voice-hooks[4] — 工具使用时播放 ding/dong 声音
- farouqaldori/claude-island[5] — macOS 菜单栏会话管理器,带通知功能
- soulee-dev/claude-code-notify-powershell[6] — Windows PowerShell toast 通知
写在最后#
这个工具解决的问题说起来很小:Claude Code 完成任务时通知你一声。但用了之后你会发现,它改变的不是某个功能,而是你和 AI 协作的方式。
之前你只能"盯着 AI 工作",现在你可以"让 AI 在后台工作"。
这个差别看起来很微妙,但实际影响很大。你不再需要守在终端前等结果,可以真正做到多线程工作——让 Claude 跑着任务,你去做别的事情,完成了它来找你。
从"人等机器"变成"机器叫人"。
我越来越觉得,AI 工具的核心竞争力最终不是"谁更聪明",而是谁更懂得融入你的工作流。一个能力再强的助手,如果每次做完事都要你亲自跑过去检查,那它本质上还是在消耗你的注意力。真正好用的工具,应该像一个靠谱的同事——活干完了,主动拍你一下,"搞定了,你看看"。
这大概就是 Hooks 机制最大的价值:它让 Claude Code 从一个"需要你盯着的工具"变成了一个"会主动汇报的助手"。一个通知气泡的差距,背后是完全不同的工作模式。
未来的 AI 编程一定是"无感协作"的:你甚至不需要知道 AI 什么时候开始、什么时候结束,它会自己安排好一切,只在需要你的时候出现。我们现在做的每一个小工具,都是在朝那个方向走一步。
仓库地址:github.com/antonailog/claude-code-notifier
Star 一下支持开源。遇到问题欢迎提 Issue,我会持续维护。
如果你对 AI 编程工具、开发效率提升这些话题有兴趣,关注「阿東的 AI 手记」,后续会持续分享实战经验和开源工具。
引用链接#
[1]ctoth/claudio: https://github.com/ctoth/claudio
[2]ctoth/claudio: https://github.com/ctoth/claudio
[3]wyattjoh/claude-code-notification: https://github.com/wyattjoh/claude-code-notification
[4]shanraisshan/claude-code-voice-hooks: https://github.com/shanraisshan/claude-code-voice-hooks
[5]farouqaldori/claude-island: https://github.com/farouqaldori/claude-island
[6]soulee-dev/claude-code-notify-powershell: https://github.com/soulee-dev/claude-code-notify-powershell