Wendov1.0 · iOS 和 Android
简体中文

指南

在手机上收到 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 请求就能发布消息。

  1. 在 settings.json 里,把 NTFY_TOPIC 放在 hook 命令前面:
NTFY_TOPIC=a-long-random-topic ~/.wendo/wendo-hook.sh
  1. 在手机上安装 ntfy 应用,并订阅同一个主题。
  2. 也在 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 即将上架。