编程 不用越狱,iPhone屏幕上的字靠OCR找坐标:macOS镜像窗口里跑通了Agent控制真机

2026-09-05 19:22:27

不用越狱,iPhone屏幕上的字靠OCR找坐标:macOS镜像窗口里跑通了Agent控制真机

手机上的 Agent,终于开始碰真实 iPhone 了。过去想让 Claude、Codex 操作手机,一般离不开模拟器、ADB 或专门的自动化框架;到 iPhone 上更麻烦,Xcode、WebDriverAgent、签名、开发者配置一套装下来,光环境就折腾半天。

GitHub 上的 phone-harness 解决了这个问题,目前已有 2.3K Star。它做的事情很直接:让 Claude、Codex 这类 Agent 直接操作你手里的真实 iPhone,不需要越狱,也不需要装 WebDriverAgent。中间用到的桥梁,其实是苹果自家的 iPhone Mirroring(iPhone 镜像)。

原理不复杂

phone-harness 没有直接去控制 iOS 系统,它控制的是 Mac 上的 iPhone 镜像窗口。iPhone Mirroring 本来就能把手机画面显示到 Mac 上并接收鼠标键盘操作,项目就利用了这一点。整个过程三步:看屏幕 → 找位置 → 点下去

它先截取 iPhone 镜像窗口,再用苹果 Vision Framework 做 OCR。OCR 不只是把"天气、地图、照片、备忘录"这些字认出来,还会返回文字在屏幕上的坐标,这样 Agent 看到"地图"就知道该点哪里。找到坐标后,用 macOS 的 CGEvents 模拟输入,把点击、键盘操作送进镜像窗口,已经能完成点击、长按、滑动、滚动、输入文字这些常见动作。还封装了几个实用操作:home() 回桌面、open_app("Notes") 打开备忘录、tap_text("New Note") 找到文字并点击、type_text("hello") 输入内容。从 Agent 的角度看,不需要研究底层怎么控制 iPhone,调用现成能力就行。

每一步都重新确认

网页自动化能读 DOM,知道按钮输入框的状态,iPhone 镜像没有这些。所以它的处理方法是:操作完,再看一眼。让 Agent 打开天气,先用 OCR 找到图标,点击坐标,等待页面稳定,再截图做 OCR 确认天气页真的打开了。识别、操作、再识别、确认结果,手机画面就是最终判断依据。

遇到没有文字的图标,OCR 就派不上用场了。这时 Agent 可以直接截屏,用视觉模型判断图标位置再算坐标点击。所以它实际上有两只"眼睛":有文字的地方用 OCR,速度快坐标清楚;没文字的地方让视觉模型看截图。这套思路不如 DOM 精确,但已能覆盖很多真实手机操作。

还能自己补工具

项目里比较有 Harness 味道的是 agent-workspace 中的 agent_helpers.py:核心代码负责截图、OCR、点击这些基础能力,保持稳定;任务需要的额外能力,Agent 可以自己写进这个文件。遇到重复操作不必每次都重新规划,Agent 给自己补一个 helper,下次直接调用。底层提供手和脚,Agent 按任务给自己补充工具——这也是它和普通手机自动点击脚本不一样的地方。

安装与限制

安装方式也做成 Skill 了:把一段 Setup Prompt 丢给 Codex 或 Claude,让 Agent 自己克隆项目、读取 install.md、安装依赖并注册成 phone-harness Skill。真正需要人操作的只有两件事:第一次把 iPhone 和 Mac 的 iPhone Mirroring 配对,再为终端开启 Accessibility 和 Screen Recording 权限。装完运行 phone-harness--doctor 检查整条控制链路。

目前它更像轻量实验项目,还不是完整的 iPhone 自动化平台:一次只能控制一台手机;实体 iPhone 解锁后镜像会暂停;不支持多点触控,双指缩放做不了;相机、Face ID 流程有限制,DRM 视频直接黑屏;OCR 只认文字,无标签图标还是得靠视觉模型。

它最聪明的地方是借用了苹果现成的 iPhone Mirroring,把 Mac 变成 Agent 和真实 iPhone 之间的桥梁,整条链路很容易理解。

开源地址:https://github.com/ShawnPana/phone-harness

推荐文章

程序员茄子在线接单