插件对话 / 手机
手机遥控
离开电脑时,用手机继续插件对话:发起新一轮、看进度、回答 agent 的审批、截一张当前页面的图、收到完成通知。agent 和已登录的 Chrome 仍在电脑上运行, 手机只是遥控器。
启动网关
chrome-use mobile serve 是手机唯一能连到的进程。默认只监听
127.0.0.1:17345,配合同一台电脑上的 Cloudflare 隧道使用。
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 里时最省事:
IP=$(tailscale ip -4)
chrome-use mobile serve --bind "$IP"
chrome-use mobile pair --url "ws://$IP:17345" --name "我的 iPhone"
Cloudflare 命名隧道
手机不装 Tailscale 时,用命名隧道给网关一个固定的 wss:// 域名:
cloudflared tunnel login
cloudflared tunnel create chrome-use-mobile
cloudflared tunnel route dns chrome-use-mobile mobile.example.com
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
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 快速隧道每次启动换地址,换了就得重新配对,只适合试用。
同一局域网
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 上。
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 头)一律拒绝。
手机能做什么
- 查看对话列表,新建对话,发文字和最多 5 张图(每张 512 KiB 以内),停止当前一轮。
- 实时看进度。断网重连后从上次的位置继续,事件不丢也不重复。
- 回答 Claude Code、Codex 等的审批请求。
- 给对话自己的浏览器 session 截图(每个对话 2 秒最多一张)。session 没在运行时只报错,不会打开浏览器。
- 查看定时任务,立即运行,开关定时任务。
手机拿到的权限比电脑少:
- 不能打开完全访问,从手机新建的对话最多到
writeFiles,Pi 只能用浏览器工具,也不能提高已有对话的工具权限。 - 高权限对话(完全访问、能执行命令、或 Pi 有浏览器以外的工具)默认只能看、停止、拒绝审批;
要从手机发消息、批准或运行这类定时任务,先在电脑上执行
chrome-use mobile access <id> full, App 随后会要求解锁。 - 不能选项目文件夹、指定 agent 可执行文件、改配置、改技能、新建或编辑定时任务、停止服务。
- 删除对话要在请求里明确确认。
推送通知
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/。