Claude Code 快速通知工具 —— 当 AI 完成回复时,自动推送桌面通知。
本项目基于 liujintai/claude-code-notify 改造,移除了对 Claude Haiku API 的依赖,实现了纯本地的极速响应模式。
- ⚡ 极速响应:<0.1 秒通知(毫秒级)
- 🎨 自定义图标:Claude 专属图标
- 🚀 零依赖:无需网络调用,100% 可靠
- 💡 即装即用:无需配置,开箱即用
- 🧠 智能通知:与 ECC 项目保持一致的文案逻辑
- 从 Stop hook 的
last_assistant_message读取内容 - 提取第一个非空行作为通知消息
- 自动截断超过 100 字符的内容
- 从 Stop hook 的
当 Claude Code 完成任务后,你会收到智能通知:
通知文案会根据 Claude 的实际回复内容生成:
- 短消息:直接显示完整内容
- 长消息:截断到 100 字符并添加 "..."
- 多行消息:只显示第一行
- 兼容 ECC:与 everything-claude-code 项目使用相同的通知逻辑
- macOS(支持 Apple Silicon 和 Intel)
- Python 3.8+
- Swift 编译器(Xcode Command Line Tools)
- Claude Code CLI
curl -fsSL https://raw.githubusercontent.com/wanghuan9/cc-notify/main/install.sh | bashgit clone https://github.com/wanghuan9/cc-notify.git
cd cc-notify
bash install.sh- 新开一个 Claude Code 会话即可生效
- 如未收到测试通知,请到 系统设置 → 通知 → ClaudeNotify 中开启通知权限
Claude Code 回复结束
↓
Stop Hook 触发
↓
notify.py 执行(接收 stdin JSON)
↓
读取 last_assistant_message
↓
提取第一行并截断到 100 字符
↓
ClaudeNotify.app 推送通知
↓
立即显示(<0.1 秒)
- Claude Code 的 Stop Hook 在每次回复结束时触发
notify.py notify.py从 stdin 读取 JSON 数据,获取last_assistant_message- 如果没有该字段,fallback 到从
~/.claude/history.jsonl读取 - 提取第一个非空行,截断到 100 字符
- 通过自制的
ClaudeNotify.app推送带 Claude 专属图标的 macOS 通知 - 兼容 ECC 项目:与
everything-claude-code使用相同的extractSummary逻辑
~/.claude/cc-notify/
├── notify.py # 通知脚本
├── cc.jpg # 图标源文件
└── ClaudeNotify.app/ # Swift 通知工具
└── Contents/
├── Info.plist
├── MacOS/ClaudeNotify
└── Resources/AppIcon.icns
如需重新安装或更新:
cd ~/.claude/cc-notify
bash install.sh替换 src/cc.jpg 后重新运行安装脚本:
cd claude-code-notify
# 替换 src/cc.jpg 为你的图标
bash install.sh# 方式一:使用卸载脚本
curl -fsSL https://raw.githubusercontent.com/wanghuan9/cc-notify/main/uninstall.sh | bash
# 方式二:手动卸载
rm -rf ~/.claude/cc-notify
# 然后手动编辑 ~/.claude/settings.json 删除 hooks 配置Q: 安装后没有收到通知?
A: 到 系统设置 → 通知 → ClaudeNotify 中确认通知权限已开启。
Q: 支持 Linux 吗?
A: notify.py 理论上支持 Linux(通过 notify-send),但安装脚本目前仅支持 macOS。
Q: 与 everything-claude-code 的区别?
A: 本项目专注于通知功能,使用相同的文案逻辑,但:
- 更轻量(无需完整的 ECC 插件系统)
- 更快速(<0.1 秒响应)
- 自定义图标(Claude 专属图标)
- 纯本地实现(无需网络调用)
详细的兼容性说明请参考 ECC_COMPATIBILITY.md
Q: 通知文案为什么只显示第一行?
A: 这与 ECC 项目保持一致的设计:
- 提取第一个非空行作为通知内容
- 截断到 100 字符限制
- 保持通知简洁明了
MIT License

