Agent 接管 iPhone,终于有人跑通了。
GitHub 项目 phone-harness 实现了让 Claude、Codex 等 Agent 直接操作真实 iPhone,无需越狱或 WebDriverAgent。其核心是复用苹果原生的 iPhone Mirroring 功能,通过 macOS 截图、Vision Framework OCR 识别文字坐标,再用 CGEvents 模拟输入完成点击、滑动等操作,并采用「操作→截图→再识别→确认」闭环验证结果。
手机上的 Agent 终于触达真实 iPhone
手机上的 Agent,终于开始碰真实 iPhone 了。过去想要让 Claude、Codex 操作手机,一般都离不开模拟器、ADB 或者专门的自动化框架。到了 iPhone 上更麻烦。Xcode、WebDriverAgent、签名、开发者配置等一套东西装下来,光环境就折腾半天。
最近在 GitHub 上看到了一个很有趣的项目,它叫 phone-harness,现在已经获得了 2.3K 的星星。

它做的事情很直接:让 Claude、Codex 这类 Agent,直接操作你手里的真实 iPhone。不需要越狱,也不需要安装 WebDriverAgent。中间真正用到的桥梁,其实是苹果自己的 iPhone Mirroring,也就是 iPhone 镜像。

原理其实没有那么复杂
phone-harness 没有直接去控制 iOS 系统。它控制的是 Mac 上的 iPhone 镜像窗口。iPhone Mirroring 本来就可以把手机画面显示到 Mac 上,同时接收鼠标和键盘操作。phone-harness 就利用了这一点。
整个过程可以理解成三步:看屏幕 → 找位置 → 点下去。
它先截取 iPhone 镜像窗口,再通过苹果 Vision Framework 做 OCR。比如屏幕上出现:
天气 地图 照片 备忘录
OCR 不只是把这些字识别出来,还会返回文字在屏幕上的坐标。这样 Agent 看到“地图”之后,就知道应该点哪里。

Agent 是怎么点手机的
找到坐标之后,下一步就是操作。phone-harness 使用 macOS 的 CGEvents 模拟输入,把点击、键盘等操作送进 iPhone 镜像窗口。所以它已经可以完成点击、长按、滑动、滚动、输入文字这些常见动作。

还封装了几个比较实用的操作。比如:
home()回到桌面。open_app("Notes")打开备忘录。tap_text("New Note")找到文字并点击。type_text("hello")输入内容。
从 Agent 的角度看,不需要研究底层怎么控制 iPhone,只需要调用这些现成能力。
每一步都会重新确认
这里还有一个细节比较重要。网页自动化可以读取 DOM,知道按钮、输入框现在是什么状态。iPhone 镜像没有这些东西。所以 phone-harness 的处理方法很简单:操作完,再看一眼。
比如说让 Agent 打开天气。它先用 OCR 找到 Weather 图标,点击对应坐标,等待页面稳定,然后再截图、做 OCR,看下天气页面是否真的打开了。也就是说,它不是点完就完成了,而是:
识别、操作、再识别、确认结果。手机上显示出来的画面就是最后的判断依据。
找不到文字怎么办
OCR 很适合处理带文字的按钮,但手机里还有大量没有文字的图标。phone-harness 也有办法。Agent 可以直接截屏,然后用视觉模型来判断图标的位置,再计算出坐标进行点击。因此它实际上有两只“眼睛”。有文字的地方先用 OCR,速度快,坐标也清楚。没有文字的地方就让视觉模型看截图。

这套思路虽然不如 DOM 精确,但是已经可以覆盖很多真实的手机操作了。
还能自己补工具
我觉得这个项目比较有 Harness 味道的地方,在 agent-workspace。里面有一个 agent_helpers.py。

核心代码负责截图、OCR、点击这些基础能力,这部分保持稳定。任务需要的额外能力可以让 Agent 自己写入到 agent_helpers.py 中。也就是说,遇到重复操作时,不一定每次都重新规划。Agent 可以给自己补一个 helper,下次直接调用。底层提供手和脚,Agent 根据任务给自身补充工具。这也是它和一般的手机自动点击脚本不一样的地方。
安装也做成了 Skill
作者给出的安装方式也很有意思。

可以直接把一段 Setup Prompt 丢给 Codex 或 Claude,让 Agent 自己克隆项目、读取 install.md、安装依赖,再注册成 phone-harness Skill。真正需要人操作的主要有两件事:第一次将 iPhone 和 Mac 的 iPhone Mirroring 进行配对;然后为终端开启 Accessibility 和 Screen Recording 权限。
安装完毕之后运行:
phone-harness--doctor就可以检查整条控制链路有没有正常工作。
目前也有明显限制
phone-harness 现在更像一个轻量实验项目,还不是完整的 iPhone 自动化平台。一次只能控制一台手机。实体 iPhone 解锁后,镜像会暂停。它也不支持多点触控,所以双指缩放这类操作做不了。相机、Face ID 流程同样有限制,DRM 视频还会直接显示黑屏。另外 OCR 只能识别文字,并不知道一个没有标签的图标代表什么,这时候还是需要视觉模型来判断。
轻量而务实的技术路径
phone-harness 最有意思的地方,不是又做了一套手机自动化框架。它反而很轻。直接借用苹果已经提供的 iPhone Mirroring 功能,把 Mac 变成 Agent 和真实 iPhone 之间的桥梁。Agent 用截图和 OCR 看手机,用 CGEvents 去点击,再重新截图确认结果。整条链路很容易理解。
JOTO 企业落地观察
- 该方案绕过 iOS 系统级权限限制,仅依赖 macOS 层面的镜像与输入模拟,为企业在合规前提下探索移动设备端智能体交互提供了新路径。
- 「识别→操作→再识别→确认」的闭环机制,天然适配企业级 RAG 知识工程中对操作可追溯、结果可验证的要求。
- agent_helpers.py 的动态扩展设计,暗示了智能体工程中「能力即服务(Capability-as-a-Service)」的演进方向——企业可沉淀高频操作为标准化 helper,降低后续任务编排成本。
- 对 DRM 视频、Face ID 等系统级保护机制的回避,提示企业在部署类似系统时需明确边界:它适用于开放 UI 场景(如内部办公 App),不适用于强安全管控场景。
立即咨询 JOTO
JOTO 提供覆盖企业智能体规划与搭建、AI 平台私有化部署、RAG 知识工程、AI 安全治理、FDE 驻场共创及持续运营优化的全周期 AI 落地服务,帮助企业把验证中的 AI 能力转化为安全、可控、可持续迭代的生产力。 联系 JOTO 获取 AI 落地咨询
想把这些做法用到你的业务里?
留下你的场景和痛点,我们帮你判断从哪一步开始。
联系我们


