2026-08-07

Claude Code 跑完/卡住了怎么让手机收到通知

开了个长任务,人跑去干别的了,回来才发现早就跑完二十分钟,或者一直卡在一个确认提示上干等。下面四种办法按"要折腾多少"从少到多排。

四个选项

  1. 开官方手机推送——不用写代码,但有几个前置条件。
  2. 直接在提示词里说一句——零配置,按次生效。
  3. tmux 活动监控 / 终端响铃——如果你已经在用这些工具,天生自带。
  4. 自己写 webhook 脚本——完全自主,但要自己维护。

1. 官方手机推送(先试这个)

Remote Control 处于连接状态时,Claude Code 能直接给手机推通知。/config 里有两个独立开关:「Push when Claude decides」(模型自己判断这一刻值不值得打扰你)和「Push when actions required」(专门在它被你卡住、等你决策时触发)。也可以直接在提示词里说一句"notify me when the tests finish",当次任务就按这个来。来源,官方文档)

门槛在于:这功能架在 Remote Control 之上,而 Remote Control 目前是 research preview,Pro/Max/Team/Enterprise 都能用,但 Team/Enterprise 账号默认关着,得管理员手动打开。来源,官方文档)你还得装官方 App,而且任务跑完那一刻 Remote Control 必须真的处于连接状态——如果它已经超时或进程被杀了(这种情况可以看我们另一篇排查 Remote Control 的文章),那就没有东西可推了。

2. 提示词里直接要求

不用配置任何东西——用大白话跟 Claude 说清楚就行。这条路走的其实还是上面那套推送机制,所以前置条件也一样(Remote Control 得连着、账号层级得够)。偶尔用一次挺方便,但每次会话都要重新打一遍这句话,而且只覆盖你想起来要说的那部分。

3. tmux monitor-activity 或终端响铃

如果你本来就在 tmux 里跑东西,monitor-activity 会在窗口有变化时标记出来,大多数终端在收到响铃字符时也会闪一下或者真的响一声。这个如果你本来就活在 tmux 里,配置成本是零,但它只在你还坐在这台机器前才有意义——人一走,被标记的窗口没人看,铃声没人听得见。

4. 自己写 webhook 脚本

把命令包一层,跑完之后 curl 一个 webhook——企业微信机器人、Slack、Discord,随便接哪个。这是这几条里唯一不锁平台的方案,但代价按次算:每条命令都要单独记得包一层,忘了包一次就白搭,而且只覆盖你自己写脚本触发的场景——它能覆盖的是"这条命令跑完了",覆盖不了"AI 自己判断这一刻值得通知你"。

四种办法对比

配置成本手机锁屏/人不在时能收到覆盖"AI 自己判断"这类
官方推送低(开关 + 装 App)
提示词要求不能——只覆盖你说过的
tmux / 响铃零(已用 tmux 的话)不能——只在人还坐在电脑前不能
webhook 脚本按条命令算,持续投入不能——只覆盖包过的命令

PocketShell 在哪一段有用

如果你真正想要的是"我用的任意一款 CLI 编码工具——不只是 Claude Code——跑完一轮或卡住等输入时,手机都能收到,而且不用为每个任务单独写一层包装脚本",这跟上面四条的形状不一样:它们每一条都只覆盖一个工具或一条命令。

PocketShell 接的是这些工具自己暴露的原生完成 hook——具体到 Claude Code 就是写 ~/.claude/settings.json 里的 hooks.Notification——而不是扫描进程猜谁在跑。目前这样自动接线的有四款工具:Claude Code、Codex、OpenCode、Kimi。送达走两条互补的渠道:Web Push(自签 VAPID 密钥、负载加密、点开直接跳回对应会话)和出站 Webhook(内置企业微信、飞书、Slack、Discord 的模板,外加自定义 JSON 模板),每条渠道各自有开关和测试发送按钮。它还会区分"你正盯着这个会话看"(只给应用内轻提示,不推系统通知)和"你在别处或手机锁屏"(推系统通知),同一会话默认有 10 秒的去重窗口,一个吵闹的任务不会连环轰炸你。

它不做的事:不扫描任意进程,所以没有原生完成 hook 的工具接不进来——目前是四款工具,不是"任意 CLI 程序都行"。而且触发 hook 所需的环境变量是新建会话时才注入的,接线之前已经存在的旧会话得重建一下才能生效。

← 所有文章