先说结论
想让 Claude Code 或 Codex 跑完、出错、等你批准时手机响一下,有两条路:一是用它们自带的扩展点自己配——Claude Code 的 hooks、Codex 的 notify——把事件转给 ntfy、Telegram 之类的推送服务;二是用 BotBus 这类常驻电脑的应用,它在任务进入「等审批、等回答、完成、失败」四种状态时推到 iPhone、Apple Watch 或 Android 手机上,点开通知就进到那个任务,能批准、回答或接着聊。自己配的办法免费、灵活,适合只想要一声提醒的人;它卡在“只能通知、不能操作”,以及要自己处理通知内容经过谁的服务器。
为什么需要推送
Coding agent 的长任务很少一口气跑完。中途它会停下来请示:要跑一条命令、要改一个目录外的文件、要你在两个方案里选一个。跑完了它也只是安静地停在终端里。你要么守在屏幕前,要么隔一阵回来看一眼——多数时候回来发现它十分钟前就停了,在等你。
所以“通知”真正要解决的是两件事:该你出手的那一刻知道,以及知道以后最好能马上处理。前一件靠推送,后一件靠推送后面接着的那个界面。
自己配:hooks 与 notify
这条路完全可行,也是很多人的第一选择。下面的情况是 2026 年 10 月 6 日对照两家官方文档核对的。
Claude Code 的 hooks
Claude Code 的 Notification hook 会在它要提醒你的时候触发,可以按 notification_type 过滤:permission_prompt(弹出了权限框)、idle_prompt(一轮跑完、输入框闲着一阵)、agent_needs_input 等。Stop hook 在一轮回答结束时触发。在 ~/.claude/settings.json 里给这两个事件挂一条命令或一个 HTTP 地址,转发给 ntfy、Pushover、Bark 或 Telegram 机器人,手机就能响。
要注意的是,官方文档写明 Notification hook 只能观察、不能做决定:它的退出码和输出都会被忽略。也就是说,推送能告诉你“它在等你批准”,但你要批准还是得回到电脑前,或者再另外搭一套能把决定送回去的东西。
Codex 的 notify
Codex 在 config.toml 里提供 notify:写成 notify = ["python3", "/path/to/notify.py"],每次触发时把一段 JSON 作为参数传给你的程序,里面有会话 id、工作目录、这一轮的输入和最后一条回复。目前它只支持 agent-turn-complete 这一种事件,审批请求不会触发 notify。终端界面自带的 tui.notifications 可以对 approval-requested 发桌面通知,但那是本机桌面通知,人不在电脑前就看不到。Codex 另有 hooks 可以挂到更多生命周期事件上,想覆盖审批得自己去配、自己测。
这条路卡在哪
- 只能通知,不能操作。 收到“等待批准”之后,手机上点不了“允许”,还是要回电脑。
- 覆盖面要自己补。 Codex 的
notify只管“一轮结束”;出错、被系统授权弹窗挡住、agent 在对话里问你问题,各要单独想办法。 - 每个 agent 一套。 同时用 Claude Code 和 Codex,就要维护两份配置、两个脚本;再加一台电脑,又要再配一遍。
- 内容经过谁。 通知正文往往带着命令、文件路径、最后一条回复。用公共推送服务时,这些内容通常是明文经过对方服务器的,自建推送服务器能解决,但又多了一样要维护的东西。
如果你只用一个 agent、只想知道“跑完了没有”,一个十几行的脚本就够了,不必为此装别的东西。
BotBus 的做法
BotBus 是常驻在电脑上的应用(Mac 版在菜单栏,Linux 版是命令行后台程序),自动发现本机的 Codex、Claude Code、Hermes、Pi、OpenClaw、DeepSeek Harness 等 agent,把任务同步到手机和手表。推送是它顺带做掉的一件事,规则是固定的:
什么时候会响
任务进入下面四种状态之一时推一条:
| 状态 | 通知标题 | 正文 |
|---|---|---|
| 等待审批 | 「Codex 等待审批」这类 | 它要做什么(请求摘要) |
| 等你回答 | 「Claude Code 在等你回答」这类 | 它问的问题 |
| 任务完成 | 「… 任务完成」 | 最后一条回复 |
| 任务失败 | 「… 任务失败」 | 最后一条消息或报错 |
还在跑、被你自己中断的任务不推。同一个任务、同一个状态和同一个请求,30 秒内只推一次,不会刷屏。BotBus 启动后的第一轮只记下现状、不推送,所以重启电脑或重开 BotBus 时,不会把积压的“已完成”一次性推给你。你在列表里移出的项目,它的任务也不再推送。
不只是手机上开的任务:电脑终端里开的 Codex 会话、桌面 App 里的会话,只要 BotBus 能看到它的状态变化,一样会推。Claude Code 的终端会话要先在 BotBus 设置的「本机 Agent」里点「安装 hooks」——BotBus 正是靠 hooks 得知会话在请求权限、跑完或出错,安装时只合并它自己的条目,保留你原有的 hooks。
另外有两种 Mac 版特有的情况:任务失败的原因是 macOS 的系统授权弹窗挡住了,会推一条「电脑需要系统授权」;agent 停下来等人、而电脑上恰好有个密码框聚焦着,通知会说明可以直接在手机上操作电脑去填。
点开以后能做什么
点通知直接进到那个任务,看到完整的请求或对话。接下来可以:
- 批准或拒绝权限请求;agent 给了选项的提问,直接点选回答。
- 任务完成后续聊,让它接着改;失败了看原因,再决定重试还是回电脑处理。
- 必要时中断它。
这些操作都要求那台电脑在线,并且取决于对应 agent 的连接器是否支持、任务当时处于什么状态。比如 Codex:手机上开的会话,以及从 BotBus 菜单「启动 Codex」打开的桌面 App 里的会话,审批都能在手机上回答(见《在 iPhone 上看 Codex 任务》);只被 BotBus 读取的会话能看到状态、收到推送,但未必能从手机上替它做决定。有的 agent 本身没有审批这一步(Pi 就没有),就只会收到完成和失败。通知本身没有附带“允许”按钮,批准要在打开的任务页里点,这样批之前能看清完整内容。审批的细节见《人不在电脑前,怎么在手机上审批 Claude Code 的权限请求》。
通知内容怎么保护
BotBus 的中转服务器转给苹果推送服务的只有一句固定文案(“有任务在等你审批”“任务完成了”这几句之一)和一段密文。iPhone 上的通知扩展用配对时拿到的钥匙解开密文,换成电脑发来的真实标题、正文和电脑名;中转服务器和苹果都读不到正文。Android 版经 Firebase 收到的同样只有路由字段和密文,在手机本地解开后才显示。
代价是两处:Apple Watch 没有通知扩展,手表上收到的永远是那几句固定文案,抬腕看到“有任务在等你审批”,具体内容要点进去看;中转服务器看得到推送的类别(审批、提问、完成、失败)和时间,这是路由需要的元数据。完整说明见端到端加密说明。
限制与边界
- 电脑睡着就不会推。 状态变化是电脑上的 BotBus 发现的,电脑睡眠、合盖或断网时它什么也看不到。BotBus 不阻止电脑休眠,长任务要自己用系统设置或
caffeinate之类的办法让电脑醒着。 - 要先给通知权限。 iPhone 在配对之后才申请通知权限,拒绝了就收不到;要在系统设置里重新打开。
- Android 首次的后备提醒。 Android 在收到第一条推送之前,每 15 分钟查一次作为后备提醒,所以刚装好时可能会晚到;没有 Google Play 服务的手机拿不到实时推送。
- 启动瞬间的任务可能漏掉。 BotBus 刚启动时只建基线;一个检查间隔内从出现到结束的新任务,可能不会推“完成”。
- Claude Code 的空闲提醒。 Claude Code 自己会在一轮跑完、输入框闲一阵后发出
idle_prompt,BotBus 会把这样的会话记成在等你,可能在“任务完成”之后再收到一条“在等你回答”。 - 没有按类别静音。 目前不能在 BotBus 里单独关掉某一类推送,只能用系统的通知设置整体管理,或者用专注模式。
- 只是电脑这一侧的状态。 agent 卡在网络、限额上没有报错、也没有退出时,任务状态没变,就不会响。
常见问题
我已经配了 Claude Code 的 Notification hook,装 BotBus 的 hooks 会冲突吗?
不会。BotBus 的安装器只合并和移除带它自己标记的 hooks,你原来的 Notification、Stop hook 照常执行。两边都开着时你会收到两份推送,可以按需关掉一边。
Codex 等我批准时,手机能收到吗?
能。Codex 自己的 notify 不覆盖审批,但 BotBus 看到 Codex 任务进入“等待审批”就会推送。手机上开的会话和经 BotBus「启动 Codex」打开的桌面会话,点开就能批准或拒绝。前提是电脑在线、BotBus 在运行。如果你给项目开了 BotBus 的自动批准,手机发起的那一轮里被自动放行的审批不再推送。
手表上能直接批准吗?
能在手表 app 里处理:点开推送进到任务,看请求、批准或拒绝。只是手表上的推送本身只显示固定文案,看不到具体命令。详见《在 Apple Watch 上管 AI 编程 agent》。
推送的内容会被中转服务器看到吗?
正文不会。标题、正文和电脑名在你的设备上加密,中转服务器只转发密文和一句固定文案;它能看到的是推送类别、时间这类元数据。
怎么开始用?
在电脑上装好 BotBus,用手机扫配对二维码,允许通知即可。下载在官网首页:电脑端有 Mac 版(macOS 26 或更新)和 Linux 版,iPhone 与 Apple Watch 版在 App Store(iOS 26 / watchOS 26 起),Android 版需要 Android 8.0 或更新,在官网下载区下载安装包。