iPhone Use 源码解读:Codex 能怎样操作你的手机
iPhone Use 是一个开源插件,可让 Codex 和 2 款中国桌面助手操作通过线缆连接到 Mac 的真实 iPhone:打开应用、读取屏幕、点击、滚动和输入。它于 2026 年 10 月 6 日上线 GitHub,1 周后获得了 3504 个 star,是我们追踪的开源手机操作智能体中增长最快的项目之一。我们没有运行过它。我们没有愿意交给智能体操作的备用手机,也不会拿重视的账号来测试。本文只分析源码中的一个固定提交版本:它能做什么,会在哪些环节停下来交给用户,以及哪些数据会离开你的 Mac。
- iPhone Use 为智能体提供了 17 个工具。其中 7 个只读取屏幕,其余工具会执行操作,包括点击任意位置、输入文字、启动任意已安装的应用,以及在一次调用中执行最多 20 个步骤。
- 代码会拒绝向密码框输入内容,并在无法验证提交结果时停止批量操作。其他保护措施,包括如何处理消息发送和支付,都只是要求大模型遵守的文字指令。
- 截图和屏幕元素树会发送给宿主助手使用的大模型。Codex 安装版默认还会向 PostHog 发送匿名使用事件;另外 2 个安装程序则会关闭这项功能。
- 仓库没有说明 WeChat、Alipay 等应用是否会检测这类自动化操作,也没有说明账号被检测到后会有什么后果。
iPhone Use 是什么,由谁开发
项目位于 zhongerxin/iPhone-use,采用 MIT 许可证。README 将其描述为一种让 Codex、WorkBuddy 或 Doubao 桌面工作助手通过 USB 操作真实 iPhone 的方式,助手侧边栏中会实时显示手机屏幕。README。
项目迭代很快。更新日志从 10 月 7 日的 0.2.x 一直记录到 10 月 13 日的 0.3.12,后者就是我们阅读的版本。匿名使用分析功能于 10 月 9 日在 0.3.7 中加入,WorkBuddy 和 Doubao 的适配器则于 10 月 13 日合并。任何介绍它的文章都只是某一时刻的快照;我们阅读的提交是 5cc2fa8。
在查找项目之前,有一处小矛盾需要知道。README 仍然写着仓库是私有的,需要 GitHub 访问权限。README 第 50 行。实际上,仓库是公开的。另一个名称几乎相同的项目 leeguooooo/iphone-use 是另一位作者开发的独立工具,不在本文讨论范围内。
iPhone Use 如何连接 Codex 与真实 iPhone
它由 3 个组件构成,全部运行在你的 Mac 和手机上。
| 组件 | 具体是什么 | 运行位置 |
|---|---|---|
| MCP 服务器 | 一个仅使用标准库的 Python 文件,宿主助手通过 stdio 与它通信 | Mac |
| USB 转发器 | 一段小型 Node 脚本,监听 127.0.0.1:18100,并转发到手机的 8100 端口 | Mac |
| WebDriverAgent | Appium 的开源 UI 自动化服务,固定为 16.14.0 版本,使用你自己的 Apple 签名构建 | iPhone |
WebDriverAgent 就是应用开发者在测试中用来操作自家应用的那套测试自动化服务。iPhone Use 将它用于另一种场景:由语言模型决定点击什么,而不是由测试脚本决定。客户端会拒绝连接不在 Mac 本机上的 WebDriverAgent 地址,我们也没有在代码中发现 Wi-Fi 连接路径,因此手机必须始终通过线缆连接。回环地址检查。
实时屏幕预览是由同一个 MCP 服务器提供的小型网页面板。其内容安全策略不允许任何外部连接,因此预览面板本身不会向外部服务器回传数据。组件资源。
iPhone Use 的工具:智能体能读取什么、执行什么
README 列出了供大模型使用的 17 个工具,以及另外 2 个仅供预览面板使用的工具。工具列表。代码将每个工具标记为只读或具有破坏性,这种分类有助于理解它们的作用。工具注解。
| 读取手机信息 | 在手机上执行操作 |
|---|---|
pua_observe:元素树和/或截图 | pua_tap:按元素或 x/y 坐标点击 |
pua_find:查找元素 | pua_type_text:输入文字,可选择提交 |
pua_wait:等待元素出现 | pua_swipe、pua_scroll_find |
pua_apps:查找应用的 bundle ID | pua_launch_app:打开任意已安装的应用 |
pua_doctor、pua_metrics:运行状况与耗时 | pua_press_button:主屏幕键、音量键 |
pua_screen:打开或暂停预览 | pua_batch:一次调用最多执行 20 个步骤 |
pua_collect_list、pua_setup、pua_ready |
其中有 2 个工具值得仔细看。pua_launch_app 在打开应用前,只检查 bundle ID 的格式是否正确;它没有规定智能体可以或不可以打开哪些应用。启动应用。pua_batch 则允许大模型把点击、输入、启动应用和等待串联起来,一次最多执行 20 步。这是速度的来源,也最容易让一个错误判断一路影响后续操作。批量操作上限。
文件锁会阻止 2 个操作同时在手机上运行;第 2 个调用方会收到 device_busy,不会执行任何操作。操作锁。
使用 iPhone Use 需要配置什么、信任什么
它不需要越狱,也不需要单独运行 Appium 服务器,但配置过程仍然面向开发者。你需要 macOS、完整的 Xcode、Python 3.9 或更高版本,以及 Node 20.19 或更高版本。环境要求。WebDriverAgent 使用你自己的 Apple 账号和开发团队进行签名。签名。
配置技能列出了只能由你完成的步骤:登录 Xcode、点击“信任此电脑”、开启开发者模式并重启、可能还需要在设置中启用 UI 自动化、信任开发者描述文件,以及保持手机解锁。手动步骤。指令要求大模型绝不能向你索取凭据,并且必须等到你明确回复“完成”,不能自行假定你已经做完。交接规则。
直白地说,开启开发者模式并运行 WebDriverAgent,就意味着只要手机处于解锁和连接状态,Mac 上的软件就能操作整部手机。这正是这个工具的用途。在接入装有银行和聊天应用的手机之前,你也需要先理解这一点。
iPhone Use 会在哪些环节停下来:密码、发送与支付
对于个人智能体,这是最关键的部分,其中的保护措施分为 2 类。
由代码强制执行。 如果尝试向安全文本框,也就是 iOS 用于密码输入的那类文本框,输入内容,代码会拒绝操作,并返回错误,要求大模型转交用户处理。拒绝向安全文本框输入。输入后自动提交默认关闭,只有明确要求才会启用;只要某次提交的结果无法验证,批量操作就会停止。提交默认设置与批量停止。分段输入的长文本会绑定到开始输入时的应用和输入框;只要其中任何一项发生变化,剩余内容就不会继续输入。续输保护。
要求大模型遵守。 其余保护措施都写在技能的文字指令中。密码、PIN 码、验证码和 Face ID 交由用户处理,同时暂停预览。身份验证交接。只有在你授权发送,并且核对收件人和完整草稿之后,才能发送消息。发送规则。如果输入、发送、支付或下单的结果不确定,必须先核查,绝不能重复执行。禁止重复执行。
我们没有在代码或技能中找到这样一条规则:智能体必须在付款前停下来,向用户确认。技能防范的是重复付款,并不防范未经询问就付款。如果应用把密码框实现为普通文本框,它也不在代码检查范围内,只受技能文字指令约束。身份验证参考。可以对照我们拆解过的产品:Pine 会在每次涉及账单的操作前询问用户,Muse 则把审批集中到一个统一的把关环节。
使用 iPhone Use 时,哪些数据会离开你的 Mac
有 3 类数据会向外发送。
- 屏幕内容,发给大模型。 元素树和截图会返回宿主助手,再由助手发送给它使用的大模型。截图会先缩小并转换为 JPEG,原图保留在磁盘上。图像处理。屏幕上显示什么,图片里就有什么,包括聊天内容、余额或验证码。
- 应用查询,发给 Apple。 查找应用的 bundle ID 时,可能会调用 Apple 的公开搜索 API。应用搜索。
- 使用事件,发给 PostHog。 Codex 插件默认发送匿名事件;WorkBuddy 和 Doubao 的安装程序则会关闭这项功能,除非你传入
--analytics。默认设置、WorkBuddy 安装程序。
我们对照了使用分析代码与 ANALYTICS.md,两者一致:5 类事件、随机生成的安装 ID、工具名称、执行结果、耗时和错误码,还有一份允许列表,会丢弃所有未预先列明的字段。屏幕文字、截图、选择器、设备 ID 和签名团队信息不会发送。允许列表。设置 IPHONE_USE_ANALYTICS=0 或 DO_NOT_TRACK=1 即可停止这一行为,代码会在记录前和发送前分别检查这两个设置。退出使用分析。
文档漏掉了 2 个细节。事件禁用了 PostHog 的位置查询,但你的 IP 地址仍会随请求到达 PostHog 的服务器;它是否会被保留,代码无法告诉我们。另外,每个事件都会被标记为来自 Codex 插件,即使它实际来自另外 2 个宿主助手。来源标签。
iPhone Use 与封号风险:仓库没有说明什么
X 和 Xiaohongshu 上分享的演示包括浏览 WeChat 朋友圈和点外卖,而这些应用的运营公司都有自己的反自动化系统。更新日志提到了一项 WeChat 优化,内容是更快地读取较长的聊天列表,并非规避检测。WeChat 说明。我们没有发现随机延迟或模拟人类操作的抖动:输入以固定速率进行。输入常量。这种做法很坦诚,也意味着它没有对自动化行为做任何伪装。
仓库没有提及平台条款、风控或封号。我们不知道 WeChat、Alipay 或 Meituan 是否会检测由 WebDriverAgent 驱动的输入,也没有尝试过。这种信息缺口并非 iPhone Use 独有;Droidrun 背后的托管 Android 服务走向了另一个方向,宣传隐蔽输入功能,我们的手机操作智能体概览讨论了这一点。如果你要尝试 iPhone Use,请使用即使失去也能承受的手机和账号。
关于 iPhone Use,我们无法核实的部分
- 是否能用,以及成功率如何。 我们没有运行过它。项目没有公布成功率,本文也没有任何实测数据。它没有参加我们的测试,也没有得分。
- 宿主助手会保留什么。 截图会发送给 Codex、WorkBuddy 或 Doubao,以及它们的大模型提供商。这些数据如何保留,不在本仓库的说明范围内。
- PostHog 会保留多久,即每个事件随请求带来的 IP 地址会保留多久。
- 0.3.12 之后的任何变化。 按照目前的迭代速度,本页中的细节可能几天内就会改变。固定版本链接准确标明了我们阅读的内容。
常见问题
尝试 iPhone Use 安全吗? 它是开源的,使用分析行为也与文档一致,这一点已经超过了许多工具。但智能体可以在解锁的手机上打开任意应用、点击任意位置,而代码层面仅会在密码框和无法验证结果的提交处阻止操作。支付确认则交由大模型处理。请使用备用手机,以及即使失去也能承受的账号。
iPhone Use 需要越狱吗? 不需要。它使用 Appium 的 WebDriverAgent,由你自己的 Apple 开发团队签名,同时需要在手机上开启开发者模式,并在 Mac 上安装完整的 Xcode。
iPhone Use 能通过 Wi-Fi 工作吗? 我们阅读的版本不行。客户端只会通过 Mac 上的转发器与 WebDriverAgent 通信,我们没有发现 Wi-Fi 连接路径。
iPhone Use 会向 PostHog 发送什么? 5 类匿名事件,包含工具名称、执行结果、耗时、错误码和随机生成的安装 ID。它不会发送屏幕内容、截图或设备 ID。Codex 安装版默认开启,WorkBuddy 和 Doubao 安装版默认关闭;设置 IPHONE_USE_ANALYTICS=0 即可关闭。
WeChat 或 Alipay 会因此封号吗? 我们不知道,仓库也没有给出答案:它从未提及封号或平台条款。代码没有对自动化行为做任何伪装。
如何安装 iPhone Use? 在安装了完整 Xcode、Python 3.9 或更高版本以及 Node 20.19 或更高版本的 Mac 上,克隆仓库,然后运行 sh scripts/install.sh 安装 Codex 插件;WorkBuddy 和 Doubao 各有自己的安装程序。接着,使用你自己的 Apple 团队为 WebDriverAgent 签名,并在手机上信任这台 Mac。安装步骤。我们阅读了这些步骤,但没有实际执行。其他手机操作智能体工具的对比可见我们的概览页。