JOTO
Contact us
← AI 智库
AI 硬件

Agent 接管 iPhone,终于有人跑通了。

2026 年 9 月 5 日

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 的星星。

phone-harness 项目 GitHub 页面截图
phone-harness 项目 GitHub 页面

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

iPhone Mirroring 在 Mac 上显示 iPhone 屏幕
iPhone Mirroring 在 Mac 上显示 iPhone 屏幕

原理其实没有那么复杂

phone-harness 没有直接去控制 iOS 系统。它控制的是 Mac 上的 iPhone 镜像窗口。iPhone Mirroring 本来就可以把手机画面显示到 Mac 上,同时接收鼠标和键盘操作。phone-harness 就利用了这一点。

整个过程可以理解成三步:看屏幕 → 找位置 → 点下去。

它先截取 iPhone 镜像窗口,再通过苹果 Vision Framework 做 OCR。比如屏幕上出现:
天气 地图 照片 备忘录
OCR 不只是把这些字识别出来,还会返回文字在屏幕上的坐标。这样 Agent 看到“地图”之后,就知道应该点哪里。

OCR 返回文字及其屏幕坐标示意图
OCR 返回文字及其屏幕坐标示意图

Agent 是怎么点手机的

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

phone-harness 支持的操作类型示意图
phone-harness 支持的操作类型示意图

还封装了几个比较实用的操作。比如:

  • 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。

agent_helpers.py 文件结构截图
agent_helpers.py 文件结构截图

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

安装也做成了 Skill

作者给出的安装方式也很有意思。

Setup Prompt 让 Agent 自动完成安装流程
Setup Prompt 让 Agent 自动完成安装流程

可以直接把一段 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 落地咨询

想把这些做法用到你的业务里?

留下你的场景和痛点,我们帮你判断从哪一步开始。

联系我们
Contact Us

Start your enterprise AI rollout

Tell us your industry, team, and current pain points. We'll get back to you within one business day to help you decide what to tackle first, what data to prepare, and which platform fits.

WeChat
Scan to add us for a 1:1 chat
JOTO WeChat consultation QR code

Tell us what you need

Once we receive your details, we'll be in touch within one business day.