插件对话 / 手机

手机遥控

离开电脑时,用手机继续插件对话:发起新一轮、看进度、回答 agent 的审批、截一张当前页面的图、收到完成通知。agent 和已登录的 Chrome 仍在电脑上运行, 手机只是遥控器。

启动网关

chrome-use mobile serve 是手机唯一能连到的进程。默认只监听 127.0.0.1:17345,配合同一台电脑上的 Cloudflare 隧道使用。

bash
chrome-use mobile serve                        # 127.0.0.1:17345
chrome-use mobile serve --bind 100.101.102.103 # 只监听 Tailscale 地址
chrome-use mobile serve --bind 0.0.0.0 --allow-all-interfaces
chrome-use mobile serve --name "书房 Mac"         # 手机上显示的电脑名,默认取系统的电脑名称

指定 IP 暂不可用时,网关在进程内按 1–60 秒指数退避等待,监听成功后才输出就绪信息,不会自动换地址或扩大监听范围。换网后请更新 --bind 和手机连接地址;端口占用等其他错误仍立即报错。

监听非 loopback 地址时会打印警告;监听所有网卡必须加 --allow-all-interfaces。网关不转发 /api/v1/*、stream WebSocket,也不暴露侧栏服务的端口和 capability。

选一种连接方式

手机要能访问网关的地址。我们不运营中转服务器,地址由你自己提供。

Tailscale

电脑和手机在同一个 tailnet 里时最省事:

bash
IP=$(tailscale ip -4)
chrome-use mobile serve --bind "$IP"
chrome-use mobile pair --url "ws://$IP:17345" --name "我的 iPhone"

Cloudflare 命名隧道

手机不装 Tailscale 时,用命名隧道给网关一个固定的 wss:// 域名:

bash
cloudflared tunnel login
cloudflared tunnel create chrome-use-mobile
cloudflared tunnel route dns chrome-use-mobile mobile.example.com
~/.cloudflared/config.yml
tunnel: chrome-use-mobile
credentials-file: /Users/you/.cloudflared/<tunnel-id>.json
ingress:
  - hostname: mobile.example.com
    service: http://127.0.0.1:17345
  - service: http_status:404
bash
chrome-use mobile serve --trust-cf-header
cloudflared tunnel run chrome-use-mobile
chrome-use mobile pair --url wss://mobile.example.com --name "我的 Pixel"

经隧道来的连接在电脑上都来自 127.0.0.1。--trust-cf-header 让网关按 cloudflared 填的 CF-Connecting-IP 区分来源做限流;只在 cloudflared 跑在这台电脑上时打开。

Cloudflare 会在边缘解开 TLS,所以手机和网关之间的每一帧另外做了端到端加密,隧道看不到指令、 页面文字或截图。trycloudflare.com 快速隧道每次启动换地址,换了就得重新配对,只适合试用。

同一局域网

bash
chrome-use mobile serve --bind 192.168.1.20
chrome-use mobile pair --url ws://192.168.1.20:17345

不带 --url 运行 pair 会列出本机检测到的 Tailscale 和局域网地址。

局域网 IP 会随网络或 DHCP 分配改变。需要跨网络长期连接时,优先使用 Tailscale 的稳定地址,或让网关监听本机地址并通过命名隧道连接。配置 launchd 常驻服务时,使用 KeepAlive = { SuccessfulExit = false } 并设置 ThrottleInterval = 60,避免其他启动错误造成频繁重启。

配对

pair 在终端打印二维码,用 chrome-use App 扫描。二维码 10 分钟内有效,只能用一次, 再扫会失败。电脑上有多个 Chrome profile 使用侧栏时,用 --profile 指定这台手机能操作哪一个;配对后手机的所有请求都固定在这个 profile 上。

bash
chrome-use mobile pair --url wss://mobile.example.com --name "我的 iPhone"
chrome-use mobile pair --url wss://mobile.example.com --json   # 只输出 chromeuse://pair 链接

配对完成前,二维码里的链接就是这台手机的密钥,不要截图或贴到别处。配对时手机会再生成一份自己的密钥, 之后终端滚动记录里的这个链接就没用了。

管理设备

命令作用
chrome-use mobile devices [--json]列出设备:名称、状态、配对时间、最后连接时间和 IP、是否开了推送。
chrome-use mobile revoke <id>删除设备的密钥和推送 token。正在运行的网关在一秒内断开它的连接。
chrome-use mobile access <id> full|limited是否允许这台手机操作高权限对话(见下文)。配对时也可以用 pair --allow-full-access。
chrome-use mobile push-test <id>给这台设备发一条测试通知。

握手失败多的来源地址会被逐步延长等待时间(最长 5 分钟)。设备本身不会因为失败被停用。 浏览器发起的连接(带 Origin 头)一律拒绝。

手机能做什么

手机拿到的权限比电脑少:

推送通知

App 打开推送后,网关会在这些时候通知手机:agent 等你审批、一轮结束、定时任务完成或失败。 同一个对话 10 秒内最多一条。通知内容在电脑上加密,推送服务只转发密文;它不含页面内容和工具输出。 默认推送服务是 https://chrome-use-push.leeguoo.com,可用 --push-url 或环境变量 CHROME_USE_PUSH_URL 换成自己部署的。

数据位置

设备列表和密钥在 ~/.chrome-use/mobile/,目录 0700、文件 0600,Windows 上只有当前用户可读。设置了 CHROME_USE_RELAY_DIR 时改用该目录下的 mobile/。