给人用

远程控制:用另一台 iPhone 或浏览器操作手机

同一套守护进程既给 agent 用,也给人用:在浏览器或 iOS App 里看实时画面,点、滑、输入。 付费开发者账号签的 App 还能让手机自己跑控制服务,不需要电脑; 配一个云中继,就能从任何网络连回来。

iPhone 17 上的 Phone Use 正在远程控制另一台 iPhone 的设置页
iPhone 17 远程操作另一台 iPhone:顶部是连接方式(局域网 / 外网)、延迟和帧率,下方是返回、主屏幕、搜索、键盘。

三种用法

🖥️ Mac 托管

手机插在 Mac 上(或和 Mac 在同一 Wi‑Fi),在 Mac 的控制页或 iOS App 里操作。画面是手机上编码的 H.264。

📱 手机自托管(本机控制)

被控手机上的 Phone Use 自己跑控制服务,运行时不需要 Mac。另一台手机在同一局域网里直接连它。

🌐 跨网络(云中继)

被控手机主动连到你部署的中继,控制方从任何网络经中继连过来。被控手机不用开端口,也不用 VPN。

装 App

App 不在 App Store 上,用你自己的开发者账号构建安装:

bash
$ iphone-use setup-app                    # 默认实例的手机
$ iphone-use setup-app --instance i13     # 另一台手机

手机自托管:不需要电脑

  1. 首次配对:setup-app 装完会用 USB 做一次配对,把配对记录交给 App。之后运行时不再需要 Mac。
  2. 启用:在被控手机上打开 Phone Use › 设置 › 本机控制 › 启用本机控制,允许添加 VPN 配置。本机控制占用的是 iOS 唯一的 VPN 位置,所以和 Tailscale 等 VPN 不能同时开。
  3. 连接:点「让其他设备连接」出二维码,用另一台手机的 Phone Use 扫码。

本机控制和 Mac 上的 runner 会抢同一个自动化会话。要用本机控制,先在 Mac 上 iphone-use setup pause --instance <名字>;要改回 Mac 托管,先在 App 里停掉本机控制,再 iphone-use setup resume。

不碰被控手机就连上

两台手机都连着 Mac 时,一条命令就能把控制方连上被控手机,不用扫码:

bash
$ iphone-use setup-app --instance i13 --connect-to default --connect-only

Mac 通过 USB 往被控手机的 App 里放一个只能用一次、5 分钟内有效的连接码,再在控制方手机上打开连接链接。控制方手机会弹一次确认,点「连接」即可。


跨网络:云中继

被控手机在家、控制方在外面(比如走蜂窝网络)时,用云中继。中继只转发;登录、配对码、设备令牌这些鉴权,仍由被控手机上的守护进程自己做。

text
控制方 ──https──▶ 中继 /p/<id>/…  ──WebSocket──▶ 被控手机上的守护进程

部署你自己的中继

中继是一个 Cloudflare Worker(每台手机一个 Durable Object),在仓库的 relay/ 目录里。用你自己的 Cloudflare 账号:

bash
$ cd relay && npm install
$ npx wrangler login
$ $EDITOR wrangler.toml        # 换成你的域名,或删掉 routes 用 workers.dev
$ npx wrangler deploy
$ curl https://<你的中继>/      # → iphone-use relay

让手机经中继连接

bash
$ iphone-use setup-app --instance <被控手机> --connect-to <控制方手机> \
    --connect-only --relay https://<你的中继>

被控手机拿到中继地址后会一直保持一条出站连接。控制方和它在同一 Wi‑Fi 时,App 会自动改走局域网直连(状态栏显示「局域网」),离开后回到中继(显示「外网」)。Mac 上的守护进程设置 IPHONE_USE_RELAY_URL=https://<你的中继> 也会连到中继。

费用与限制

常见问题

为什么不用 Tailscale?

iOS 同一时间只允许一个 VPN 生效,而本机控制本身就占用了这个位置。被控手机由 Mac 托管时,Tailscale 这类 VPN 仍然可以用来访问 Mac。

画面黑着,但能操作?

先看状态栏的延迟和帧率。外网下帧率很低,通常是控制方网速不够;回到局域网会自动变快。还是没有画面,点「重新加载画面」。

谁能连我的手机?

只有拿到一次性配对码(二维码或 --connect-to)、或者已经配对过的设备。中继地址里的 id 是随机的,中继还会锁定手机第一次出示的密钥,别人冒充不了这台手机。

接下来:它怎么工作 · 隐私与安全。