在手机上收到 Claude Code 通知并批准权限
Claude Code 有 hook:在特定时刻运行你指定的命令。这足以做出一个提醒,在它请求权限或完成任务时通知你,甚至让你在手机上直接回答。下面讲它底层怎么运作,以及 Wendo 怎么用它。
什么是 Claude Code 的 hook
hook 是 Claude Code 在某件事发生时运行的命令:会话开始、你发送提示词、它需要权限、它答完一轮。你在 ~/.claude/settings.json 里声明它们,每个事件一个键,各自指向一条命令:
{
"hooks": {
"Stop": [
{ "hooks": [{ "type": "command", "command": "~/.wendo/wendo-hook.sh" }] }
]
}
}
Claude Code 运行这条命令时,会通过标准输入传入一份 JSON,里面是事件的数据:事件名、工作目录、会话 ID,以及视情况而定的、它想使用的工具。命令拿这些数据想做什么都行。对某些事件,它还可以把响应写到标准输出,Claude Code 就是这样得知决定的。
Wendo 的 hook 注册的事件
安装脚本把同一个脚本加到六个事件上:
PermissionRequest:Claude Code 即将向你请求权限。Notification:Claude Code 发出的、需要你注意的通知。Stop:它已经答完。UserPromptSubmit:你发送了提示词,所以它在工作。SessionStart和SessionEnd:会话开始或结束。
每个事件都会作为一行存进电脑上的 ~/.wendo/events.jsonl。应用用你的密钥通过 SSH 读取这个文件,所以没有中间服务器,也没有账号。你在收件箱里看到的内容就来自这里。
安装只要一条命令:
curl -fsSL https://wendo.lirafy.dev/install.sh | sh
修改 settings.json 之前,它会先备份为 settings.json.bak-wendo,可以反复运行而不产生重复项。你已有的 hook 不会被动。选项和手动设置在提醒与批准页面;搭建整套环境的完整流程在如何在手机上使用 Claude Code。
批准是怎么进行的
PermissionRequest 是唯一一个让 hook 留下来等待的事件。Claude Code 请求权限时,脚本把请求记为待处理,应用收件箱里会出现一行,带有批准和拒绝按钮。你点其中一个,应用就把答案写进电脑上的一个文件,hook 取到它,再把决定交还给 Claude Code。
等待时间是 90 秒。如果到时你还没回答,hook 什么也不输出,Claude Code 就像没有 Wendo 一样,在终端里显示它平常的提示。这一点很重要:手机没电或没信号时,不会有任何东西卡住,只是回到原本的用法。
如果你先在终端里回答,而不是在手机上,这也会被记录下来,标记为在本地处理。
几个环境变量可以调整它,写在 hook 命令前面:
WENDO_APPROVAL_TIMEOUT:等待的秒数。settings.json里 hook 的timeout(安装后的配置中是 120)必须比它大。WENDO_BLOCKING=0:只提醒,不等待回答。WENDO_HOST:应用对这台电脑的称呼,在它与hostname -s不同时使用。
Claude 的提问(AskUserQuestion)和计划批准(ExitPlanMode)不会阻塞。它们要你做选择,而不是回答是或否,所以你在聊天视图里回答。
应用关闭时的提醒:ntfy
Wendo 打开时,应用每隔几秒读取一次收件箱。应用关闭后,就得有东西把提醒推到你的手机上,这就是 ntfy:一个简单的推送通知服务,用一个 HTTP 请求就能发布消息。
- 在
settings.json里,把NTFY_TOPIC放在 hook 命令前面:
NTFY_TOPIC=a-long-random-topic ~/.wendo/wendo-hook.sh
- 在手机上安装 ntfy 应用,并订阅同一个主题。
- 也在 Wendo 里填入这个主题,位置是设置 › 智能体 › 通知。
要生成一个没人猜得到的主题:
openssl rand -hex 16
主题相当于密码。在公共的 ntfy 服务器上,任何知道主题名的人都能读到发布到它上面的内容,也能自己发消息,所以别用 claude-john 这类名字。提醒里包含项目名,以及消息或命令的一段摘录,足够你做判断,但不是你希望陌生人读到的东西。
如果你不想依赖公共服务器,可以用 NTFY_URL 让 hook 指向你自己的 ntfy 服务器。默认值是 https://ntfy.sh。点一下提醒,就会打开智能体所在的 tmux、zellij 或 herdr 窗格,前提是你在其中之一里运行它(见 tmux 页面)。
在 Android 上,还会至少每 15 分钟在后台检查一次。只有权限、通知和任务完成这几类提醒会发到 ntfy;hook 不会推送会话开始、会话结束,也不会推送每一条提示词。
限制
- 目前只支持 Claude Code。hook 不会注册到其他智能体。
- 电脑上需要
jq。只有使用 ntfy 时才需要curl。 - 没有终端复用器的话,应用不知道 Claude 在哪个窗格,也就无法直接带你过去。
- 免费版包含收件箱里的 5 次试用批准;Pro 没有限制。
- Wendo 还没有上架商店:App Store 和 Google Play 即将上架。