编程智能体完成任务或需要审批时,如何收到通知
编程智能体完成任务、出错或等待你审批时,在电脑或手机上收到提醒,并在离开座位前先测试一遍。
想在编程智能体完成任务或需要审批时收到通知,可以打开它自带的提醒,或者添加一个在这些事件发生时运行的钩子(hook)。如果你要离开电脑,就把提醒发到手机上。离开前先测试一遍,因为等待审批的智能体在你回应之前什么也不会做。
本文以 Claude Code 为例。如何让电脑保持唤醒,请看另一篇指南。Reunified 的 Mono 会为通过它运行的智能体发送这些提醒,不过这套方法适用于任何环境。
1. 确定哪些智能体事件需要提醒
有三种事件值得关注:
| 事件 | 接下来要做什么 |
|---|---|
| 等待权限 | 阅读请求,然后允许或拒绝 |
| 已完成 | 检查结果,审查改动 |
| 因错误停止 | 阅读错误信息,决定是否重试 |
如果只设置一种提醒,就选权限提醒。
2. 在 Claude Code 中打开提醒
Claude Code 完成任务或暂停等待权限时,如果判断你不在电脑前,就会发送通知。默认情况下,只有 Ghostty、Kitty 和 iTerm2 会显示桌面通知(见终端设置)。在其他终端里,可以在 ~/.claude/settings.json 中把 preferredNotifChannel 设为 "terminal_bell",让终端响铃。使用 tmux 时,在 ~/.tmux.conf 中添加 set -g allow-passthrough on,然后重新加载配置。
如果想用自己的声音或命令,就在同一个文件里添加钩子。Notification 事件支持 permission_prompt(审批请求已等待约六秒)和 idle_prompt(Claude 约一分钟前已完成,之后你没有再输入)等匹配器。在 Mac 上,下面的配置会为两种情况播放不同的声音:
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt",
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]
},
{
"matcher": "idle_prompt",
"hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Hero.aiff" }]
}
]
}
}钩子指南里还有适用于 macOS、Linux 和 Windows 的桌面通知命令。其他智能体的做法各不相同,请查阅它们的文档。
3. 把提醒发到手机上
有三种方式可以把提醒送到手机:
- 智能体自己的应用。 启用 Claude Code 的 Remote Control 后,运行
/config,打开“由 Claude 决定何时推送”(Push when Claude decides)、“需要操作时推送”(Push when actions required),或两者都打开。这需要符合条件的订阅方案,并且手机上的 Claude 应用要登录同一个账号、允许通知。 - 发送推送消息的钩子,例如用
curl发给某个推送服务,而你的手机上装有这个服务的应用。 - 配套应用,负责把电脑上的会话事件转发到手机。
无论哪种方式,电脑都必须开机、保持唤醒并联网,智能体也必须仍在运行。钩子用到的令牌要放在 ~/.claude/settings.json 里,不要放在项目的 .claude/settings.json 中,因为后者可能会被提交到代码仓库。
4. 别让锁屏上的提醒泄露内容
手机即使锁着,身边的人也能看到通知预览。不要在钩子消息里放密钥、文件内容或日志。只发送事件和项目名称:以一个虚构项目“invoice-export”为例,“invoice-export:需要审批”就足够了。在 iPhone 上,打开“设置”>“通知”,把“显示预览”设为“解锁时”。Android 也可以在锁屏上隐藏敏感内容,只是选项名称因手机而异。
在 Mono 中,完成提醒会显示智能体的最后一条消息,太长时会截短。权限提醒会显示智能体对这项请求的描述,通常就是那条命令。
5. 离开前用一个无害的任务测试
在家里的电脑上新建一个名为“invoice-export 检查”的会话,让智能体运行测试并报告失败项,但不要修改文件。智能体运行命令前会先征求同意,所以它会请求运行 npm test。在电脑上切换到别的窗口或应用,然后锁上手机,走到另一个房间。
在 Mono 中,你应该看到:
- 一条“智能体权限请求”提醒,其中写明测试命令。
- 按下提醒会打开这个会话,你在里面选择“允许”。之后的每个请求都会单独发送提醒。
- “智能体在‘invoice-export 检查’中已完成”,并附上智能体的最后一条消息,例如“dates.test.ts 中有一个测试因时区问题失败。我没有修改任何文件。”
接着在手机上打开这个会话,再运行第二个任务:你正看着会话时,不会收到提醒。出门前,确认没有任何设备的屏幕上正显示着这个会话。
6. 收不到提醒时如何排查
| 现象 | 检查什么 |
|---|---|
| 完全收不到 | 系统通知权限、专注模式或勿扰模式、应用自身的开关 |
| 只在电脑上出现 | 是否开启了发送到其他设备;手机是否已登录并允许通知 |
| 延迟或成批到达 | iPhone 的定时推送摘要、Android 的电池优化、电脑进入了睡眠 |
| 正在查看时收不到 | 正常现象:你正在看的会话或终端不会发出提醒 |
| 没有权限提醒,智能体却继续执行 | 开启了自动接受模式,例如 Mono 的“YOLO模式” |
在 Mono 中,打开“设置”>“通知”,检查“全部通知”“代码”(已完成和已停止的会话)、“权限请求”和“发送到你的其他设备”。这些选项默认都是打开的。提醒由运行智能体的那台电脑发出,所以要让 Mono 在那台电脑上保持运行。
在手机上批准之前,先读一读权限请求里应该检查什么。其余设置请看用手机与编程智能体协作。Mono 还没有正式推出,你可以加入候补名单。
