你丢给 Claude Code 一个长任务,切到另一个窗口干活,二十分钟后回来一看——它两分钟就停了,卡在那儿等你批准一条命令。
这个场景大概每个用 Claude Code 跑长活的人都遇到过。解决办法不复杂:配一个 Notification 钩子,让它在需要你的时候主动弹桌面通知。
Claude Code 在需要你注意时会触发这个钩子,比如弹出权限确认,或者空闲等待输入。钩子会从标准输入收到一小段 JSON,里面有个 message 字段。
先写脚本
存成 .claude/hooks/notify.sh,然后给它加上可执行权限(chmod +x):
- 脚本开头用 set -uo pipefail 做基本的 shell 防护
- 用 python3 从标准输入解析 JSON,取出 message 字段;解析失败就退回一句默认文案
- 检测到 osascript 就用 macOS 的通知,检测到 notify-send 就用 Linux 的通知
- 两个都没有,就打印一个终端响铃字符当兜底
- 结尾 exit 0
再注册钩子
在 .claude/settings.json 里加一段 hooks 配置,把 Notification 指向刚写的脚本:类型是 command,命令路径就是 .claude/hooks/notify.sh。
这里有个细节值得留意:钩子的 payload 字段和 matcher 选项在不同版本之间可能变化,配置前最好对照你当前安装的 Claude Code 版本查一下钩子文档。
三条让它真正有用的经验
- 永远 exit 0。通知钩子不该阻塞会话,卡住主流程就本末倒置了。
- 配合 settings.json 里一份合理的允许列表(allow-list),这样你只会被真正需要决策的事情叫醒,而不是每条命令都响一次。
- 消息写短。你要知道的是哪个仓库在等你,不是读一份日志。
这套钩子和允许列表、安全钩子、一份简短的团队规则文件放在一起,就是一套完整的配置组合。想先试试这个模式,免费样例已经够跑起来了。
说到底,长任务跑飞这件事,问题从来不在模型快慢,而在它停下来的时候你根本不知道。一个几行的脚本,把"等你"变成"叫你",二十分钟的浪费就省下来了。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.