---
title: "iPhone Use 源码解读：Codex 能怎样操作你的手机"
description: "从源码看 iPhone Use 如何让 Codex 操作 iPhone：工具权限、密码与支付防护、数据外传及封号风险。本文未实测，仅分析固定提交版本，并说明尚无法核实之处。"
url: https://personalagentbench.com/zh-cn/phone-use/iphone-use/
last_updated: 2026-10-13
---

# iPhone Use 源码解读：Codex 能怎样操作你的手机

本页由 2026-10-13 的英文版机器翻译而成，所有数字都已和原文核对。如有出入，以[英文版](https://personalagentbench.com/phone-use/iphone-use/)为准。

iPhone Use 是一个开源插件，可让 Codex 和 2 款中国桌面助手操作通过线缆连接到 Mac 的真实 iPhone：打开应用、读取屏幕、点击、滚动和输入。它于 2026 年 10 月 6 日上线 GitHub，1 周后获得了 3504 个 star，是我们追踪的开源[手机操作智能体](https://personalagentbench.com/zh-cn/phone-use/)中增长最快的项目之一。我们没有运行过它。我们没有愿意交给智能体操作的备用手机，也不会拿重视的账号来测试。本文只分析源码中的一个固定提交版本：它能做什么，会在哪些环节停下来交给用户，以及哪些数据会离开你的 Mac。

- iPhone Use 为智能体提供了 17 个工具。其中 7 个只读取屏幕，其余工具会执行操作，包括点击任意位置、输入文字、启动任意已安装的应用，以及在一次调用中执行最多 20 个步骤。
- 代码会拒绝向密码框输入内容，并在无法验证提交结果时停止批量操作。其他保护措施，包括如何处理消息发送和支付，都只是要求大模型遵守的文字指令。
- 截图和屏幕元素树会发送给宿主助手使用的大模型。Codex 安装版默认还会向 PostHog 发送匿名使用事件；另外 2 个安装程序则会关闭这项功能。
- 仓库没有说明 WeChat、Alipay 等应用是否会检测这类自动化操作，也没有说明账号被检测到后会有什么后果。

## iPhone Use 是什么，由谁开发

项目位于 [zhongerxin/iPhone-use](https://github.com/zhongerxin/iPhone-use)，采用 MIT 许可证。README 将其描述为一种让 Codex、WorkBuddy 或 Doubao 桌面工作助手通过 USB 操作真实 iPhone 的方式，助手侧边栏中会实时显示手机屏幕。[README](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/README.md#L7-L7)。

项目迭代很快。[更新日志](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/CHANGELOG.md#L3-L42)从 10 月 7 日的 0.2.x 一直记录到 10 月 13 日的 0.3.12，后者就是我们阅读的版本。匿名使用分析功能于 10 月 9 日在 0.3.7 中加入，WorkBuddy 和 Doubao 的适配器则于 10 月 13 日合并。任何介绍它的文章都只是某一时刻的快照；我们阅读的提交是 `5cc2fa8`。

在查找项目之前，有一处小矛盾需要知道。README 仍然写着仓库是私有的，需要 GitHub 访问权限。[README 第 50 行](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/README.md#L50-L50)。实际上，仓库是公开的。另一个名称几乎相同的项目 [leeguooooo/iphone-use](https://github.com/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 |

来源：[MCP 服务器](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/iphone_use.py#L1-L2)、[转发器](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/tooling/forward.mjs#L1-L36)、[WDA 版本与构建](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/wda_setup.py#L31-L33)。

[WebDriverAgent](https://github.com/appium/WebDriverAgent) 就是应用开发者在测试中用来操作自家应用的那套测试自动化服务。iPhone Use 将它用于另一种场景：由语言模型决定点击什么，而不是由测试脚本决定。客户端会拒绝连接不在 Mac 本机上的 WebDriverAgent 地址，我们也没有在代码中发现 Wi-Fi 连接路径，因此手机必须始终通过线缆连接。[回环地址检查](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/wda_client.py#L29-L31)。

实时屏幕预览是由同一个 MCP 服务器提供的小型网页面板。其内容安全策略不允许任何外部连接，因此预览面板本身不会向外部服务器回传数据。[组件资源](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/iphone_use.py#L30-L35)。

## iPhone Use 的工具：智能体能读取什么、执行什么

README 列出了供大模型使用的 17 个工具，以及另外 2 个仅供预览面板使用的工具。[工具列表](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/README.md#L194-L204)。代码将每个工具标记为只读或具有破坏性，这种分类有助于理解它们的作用。[工具注解](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/iphone_use.py#L176-L186)。

| 读取手机信息 | 在手机上执行操作 |
| --- | --- |
| `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 的格式是否正确；它没有规定智能体可以或不可以打开哪些应用。[启动应用](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/wda_controller.py#L596-L603)。`pua_batch` 则允许大模型把点击、输入、启动应用和等待串联起来，一次最多执行 20 步。这是速度的来源，也最容易让一个错误判断一路影响后续操作。[批量操作上限](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/iphone_use.py#L93-L94)。

文件锁会阻止 2 个操作同时在手机上运行；第 2 个调用方会收到 `device_busy`，不会执行任何操作。[操作锁](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/iphone_use.py#L327-L332)。

## 使用 iPhone Use 需要配置什么、信任什么

它不需要越狱，也不需要单独运行 Appium 服务器，但配置过程仍然面向开发者。你需要 macOS、完整的 Xcode、Python 3.9 或更高版本，以及 Node 20.19 或更高版本。[环境要求](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/README.md#L107-L116)。WebDriverAgent 使用你自己的 Apple 账号和开发团队进行签名。[签名](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/README.md#L118-L128)。

配置技能列出了只能由你完成的步骤：登录 Xcode、点击“信任此电脑”、开启开发者模式并重启、可能还需要在设置中启用 UI 自动化、信任开发者描述文件，以及保持手机解锁。[手动步骤](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/skills/iphone-use-setup/SKILL.md#L36-L41)。指令要求大模型绝不能向你索取凭据，并且必须等到你明确回复“完成”，不能自行假定你已经做完。[交接规则](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/skills/iphone-use-setup/SKILL.md#L43-L43)。

直白地说，开启开发者模式并运行 WebDriverAgent，就意味着只要手机处于解锁和连接状态，Mac 上的软件就能操作整部手机。这正是这个工具的用途。在接入装有银行和聊天应用的手机之前，你也需要先理解这一点。

## iPhone Use 会在哪些环节停下来：密码、发送与支付

对于[个人智能体](https://personalagentbench.com/zh-cn/landscape/)，这是最关键的部分，其中的保护措施分为 2 类。

**由代码强制执行。** 如果尝试向安全文本框，也就是 iOS 用于密码输入的那类文本框，输入内容，代码会拒绝操作，并返回错误，要求大模型转交用户处理。[拒绝向安全文本框输入](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/wda_controller.py#L531-L531)。输入后自动提交默认关闭，只有明确要求才会启用；只要某次提交的结果无法验证，批量操作就会停止。[提交默认设置与批量停止](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/wda_controller.py#L736-L738)。分段输入的长文本会绑定到开始输入时的应用和输入框；只要其中任何一项发生变化，剩余内容就不会继续输入。[续输保护](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/wda_controller.py#L746-L769)。

**要求大模型遵守。** 其余保护措施都写在技能的文字指令中。密码、PIN 码、验证码和 Face ID 交由用户处理，同时暂停预览。[身份验证交接](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/skills/iphone-use/SKILL.md#L26-L26)。只有在你授权发送，并且核对收件人和完整草稿之后，才能发送消息。[发送规则](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/skills/iphone-use/SKILL.md#L86-L86)。如果输入、发送、支付或下单的结果不确定，必须先核查，绝不能重复执行。[禁止重复执行](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/skills/iphone-use/SKILL.md#L104-L104)。

我们没有在代码或技能中找到这样一条规则：智能体必须在付款前停下来，向用户确认。技能防范的是重复付款，并不防范未经询问就付款。如果应用把密码框实现为普通文本框，它也不在代码检查范围内，只受技能文字指令约束。[身份验证参考](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/skills/iphone-use/references/authentication.md#L34-L34)。可以对照我们拆解过的产品：[Pine](https://personalagentbench.com/agents/pine/) 会在每次涉及账单的操作前询问用户，[Muse](https://personalagentbench.com/zh-cn/agents/muse/) 则把审批集中到一个统一的把关环节。

## 使用 iPhone Use 时，哪些数据会离开你的 Mac

有 3 类数据会向外发送。

1. **屏幕内容，发给大模型。** 元素树和截图会返回宿主助手，再由助手发送给它使用的大模型。截图会先缩小并转换为 JPEG，原图保留在磁盘上。[图像处理](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/wda_image.py#L1-L6)。屏幕上显示什么，图片里就有什么，包括聊天内容、余额或验证码。
2. **应用查询，发给 Apple。** 查找应用的 bundle ID 时，可能会调用 Apple 的公开搜索 API。[应用搜索](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/wda_apps.py#L199-L201)。
3. **使用事件，发给 PostHog。** Codex 插件默认发送匿名事件；WorkBuddy 和 Doubao 的安装程序则会关闭这项功能，除非你传入 `--analytics`。[默认设置](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/ANALYTICS.md#L14-L14)、[WorkBuddy 安装程序](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/workbuddy/install.py#L77-L82)。

我们对照了使用分析代码与 [ANALYTICS.md](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/ANALYTICS.md#L21-L24)，两者一致：5 类事件、随机生成的安装 ID、工具名称、执行结果、耗时和错误码，还有一份允许列表，会丢弃所有未预先列明的字段。屏幕文字、截图、选择器、设备 ID 和签名团队信息不会发送。[允许列表](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/analytics.py#L33-L53)。设置 `IPHONE_USE_ANALYTICS=0` 或 `DO_NOT_TRACK=1` 即可停止这一行为，代码会在记录前和发送前分别检查这两个设置。[退出使用分析](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/analytics.py#L56-L72)。

文档漏掉了 2 个细节。事件禁用了 PostHog 的位置查询，但你的 IP 地址仍会随请求到达 PostHog 的服务器；它是否会被保留，代码无法告诉我们。另外，每个事件都会被标记为来自 Codex 插件，即使它实际来自另外 2 个宿主助手。[来源标签](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/analytics.py#L140-L140)。

## iPhone Use 与封号风险：仓库没有说明什么

X 和 Xiaohongshu 上分享的演示包括浏览 WeChat 朋友圈和点外卖，而这些应用的运营公司都有自己的反自动化系统。更新日志提到了一项 WeChat 优化，内容是更快地读取较长的聊天列表，并非规避检测。[WeChat 说明](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/skills/iphone-use/references/wechat.md#L1-L15)。我们没有发现随机延迟或模拟人类操作的抖动：输入以固定速率进行。[输入常量](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/server/wda_controller.py#L27-L30)。这种做法很坦诚，也意味着它没有对自动化行为做任何伪装。

仓库没有提及平台条款、风控或封号。我们不知道 WeChat、Alipay 或 Meituan 是否会检测由 WebDriverAgent 驱动的输入，也没有尝试过。这种信息缺口并非 iPhone Use 独有；Droidrun 背后的托管 Android 服务走向了另一个方向，宣传隐蔽输入功能，我们的[手机操作智能体概览](https://personalagentbench.com/zh-cn/phone-use/)讨论了这一点。如果你要尝试 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。[安装步骤](https://github.com/zhongerxin/iPhone-use/blob/5cc2fa8808187797d73aea2167104f370dc29724/README.md#L105-L137)。我们阅读了这些步骤，但没有实际执行。其他[手机操作智能体](https://personalagentbench.com/zh-cn/phone-use/)工具的对比可见我们的概览页。

---

Published by Personal Agent Bench (https://personalagentbench.com), run by the Zentor team. Zentor builds agent software of its own, so its products are not on the scorecard and will not be added.
