善忘技术夹 Logo
善忘技术夹
善用佳软 开源/免费

让 Claude 操作 iPhone App?这个开源项目做到了

让 Claude 操作 iPhone App?这个开源项目做到了

风险提示:本文介绍的是一个实验性项目,涉及 AI 直接控制物理设备。请务必在充分了解安全风险、隐私影响和误操作后果后,再决定是否尝试。不建议在主力设备上运行。


我们早就习惯了让 AI 写文章、写代码、画图。这些能力已经很强了。

但仔细想想,这些事本质上都在”数字世界”里完成——AI 生成文本、图片、代码,输出的是文件,是数据,不会真正碰到物理设备。

那如果 AI 不只是写代码,而是直接操作你手机上的 App 呢?不是通过 API,不是通过插件,而是像人一样看屏幕、点按钮、输入文字、滑动页面?

我最近在 GitHub 上发现了一个项目,叫 phone-harness,做的就是这件事。它让 Claude、GPT 这类大语言模型,通过 macOS 的 iPhone Mirroring 功能,直接操控真实的 iPhone。

第一次看到它成功运行的时候,我的感受很复杂——既觉得这很酷,又意识到这伴随着不小的风险。


它是什么?

插图:AI 操控真实手机

phone-harness 是一个开源工具,让 LLM Agent 通过 macOS 的 iPhone Mirroring 功能,直接控制真实的 iPhone。

核心逻辑可以用三步说清楚:

  1. 看屏幕 —— 截取 iPhone 镜像窗口的画面,用 Apple Vision 框架做 OCR,提取屏幕上所有可见的文字和它们的精确坐标
  2. 动手操作 —— 通过 Core Graphics Events(macOS 底层的 HID 事件注入机制)发送点击、长按、拖拽、滑动、文字输入等操作
  3. 验证结果 —— 再次截图,确认操作是否生效。镜像窗口没有 DOM 结构,截图就是唯一真实依据

插图:三步原理

整个项目用 Python 编写,核心代码大约 500 行。MIT 开源协议,GitHub 上已经有 1.6k Star。

项目地址:https://github.com/ShawnPana/phone-harness

几个关键点值得注意:

  • 不需要越狱。 很多人看到”AI 控制 iPhone”时第一反应就是这个,但 phone-harness 走的是 macOS 原生路径,跟越狱没有半点关系。
  • 不需要 Xcode。 不需要编译任何东西,不需要开发者证书,不需要签名。
  • 不需要 WebDriverAgent。 传统 iOS 自动化方案(如 Appium)依赖的 WDA 配置相当繁琐,phone-harness 用 macOS 原生能力完全替代了这套方案。

你只需要一台运行 macOS Sequoia+ 的 Mac 和一台支持 iPhone Mirroring 的 iPhone,就够了。


安装配置

安装流程不算复杂,但有几个关键点需要注意。

前置条件:

  • macOS Sequoia(15.0 及以上版本)
  • 支持 iPhone Mirroring 的 iPhone(iOS 18+)
  • 你的 Mac 和 iPhone 已经配对好 iPhone Mirroring(需要物理操作,打开 iPhone Mirroring 应用,在手机上确认配对)

安装步骤:

git clone https://github.com/ShawnPana/phone-harness ~/.phone-harness
cd ~/.phone-harness
pip install -e .

然后需要手动开启两个系统权限:

  1. 系统设置 → 隐私与安全性 → 辅助功能 —— 开启终端(或 VS Code 等你用来运行脚本的终端应用)。这个权限用于模拟点击和按键操作,即时生效

  2. 系统设置 → 隐私与安全性 → 屏幕录制 —— 同样开启终端应用。这个权限用于截取 iPhone 镜像窗口的画面,需要重启终端才能生效

安全提醒:辅助功能和屏幕录制是 macOS 上权限级别很高的两个能力。开启后,终端应用就能读取屏幕上任何内容并模拟操作。请确保你只运行自己信任的脚本。

验证是否配置成功:

phone-harness --doctor

--doctor 会按顺序检查链路:pyobjc 库 → 辅助功能权限 → 屏幕录制权限 → iPhone Mirroring 应用是否运行 → 手机是否连接 → 窗口是否可捕获 → 截图是否正常 → OCR 是否可用。修复第一个失败的检查项即可,后面的检查依赖前面的通过。

常见问题:

  • 如果截图是黑色或空白的,通常是屏幕录制权限已开启但终端还未重启
  • 如果提示”找不到窗口”,可能是手机未配对或超出了蓝牙范围,先手动打开 iPhone Mirroring 应用配对一次
  • 如果点击没有反应,检查辅助功能权限是否已开启,以及镜像窗口是否处于最前

如果熟悉 macOS 权限设置,整个过程大约 10-15 分钟可以搞定。


基本使用

phone-harness 的使用方式是通过管道传递 Python 脚本到 CLI:

./phone-harness <<'PY'
open_app("Notes")
tap_text("New Note")
type_text("hello from the harness")
print([o["text"] for o in ocr()][:10])
PY

这段脚本做的事情是:打开备忘录 App,点击”新建笔记”按钮,输入文字,然后打印屏幕上当前 OCR 识别到的前 10 段文字。

有几个关键点需要特别注意:

  • 操作会真实发生在你的手机上,不是模拟器,不是沙盒。你在备忘录里输入的文字,真的写进了备忘录。
  • 脚本执行期间,不要触碰物理手机。解锁手机或操作手机会中断 iPhone Mirroring 会话,导致操作状态不一致。
  • 操作的每一步都依赖截图反馈,没有”撤销”按钮。如果 AI 误解了屏幕内容,点击了错误的位置,那就是真实发生的误操作。

能力边界与限制

插图:能力边界

先说明白:phone-harness 是一个实验性项目,不是成熟产品,不适合日常使用。

它能做什么:

  • 点击屏幕上的文字(通过 OCR 匹配文本,点击对应坐标)
  • 长按、拖拽、滑动、滚动
  • 输入文字(Unicode 打字,通过 keycode 实现)
  • 键盘快捷键:Cmd+1 回到主屏、Cmd+2 打开 App 切换器、Cmd+3 打开 Spotlight
  • 滚动列表并自动收集所有可见项(scroll_collect 函数,会去重,能判断是否到底)
  • 等待页面稳定(多次截图对比,直到画面不再变化)

它不能做什么(这是限制,不是 bug):

  • 不支持多点触控。 无法做捏合缩放、双指旋转等手势。鼠标点击映射到触摸是 1:1 的。
  • 不支持相机/Face ID 流程。 涉及硬件的操作无法模拟。
  • DRM 视频内容显示为黑屏。 苹果的版权保护机制让镜像窗口对受保护内容直接黑屏,OCR 什么都读不到。
  • OCR 只能识别文字,无法识别无标签图标。 主屏幕上的 App 图标本身就是图片,下面的文字标签才是可点击的——但直接点文字标签是没反应的,实际可点击区域在文字上方约 35 像素处。项目提供了 tap_icon 辅助函数来处理这个情况。
  • 窗口不在最前时,输入操作会被系统吞掉,静默失败。 没有错误提示,操作就是没生效。
  • 仅支持单台手机、单会话。 没有多设备支持。

技术层面的限制更值得关注:

  • 镜像窗口的坐标不是固定的,窗口位置变化后之前的坐标就失效了。项目每次操作都重新获取窗口边界和截图,不建议缓存坐标
  • AppleScript 的 click at 在镜像窗口上被静默忽略——因为镜像窗口本质上是一个视频流,macOS 的 accessibility 树看不到窗口内部的内容。所以所有操作必须走 HID 级别的 CGEvent,这是 phone-harness 不依赖 AppleScript 的原因。
  • 物理解锁手机 -> 镜像暂停 -> 锁屏恢复,这一系列操作需要用户手动完成,AI 无法代劳。项目代码中明确写了:不要尝试自动点击”连接”按钮,因为连接是物理操作,只有用户自己能做。

安全、隐私与风险(独立成章)

插图:安全警示

这是整篇文章最重要的部分。 我把它单独拿出来,希望你能认真读完。

风险 1:误操作风险

AI 的”点击”会真实发生在你的手机上。这不是模拟器,不是预览,是真实的触摸事件。

如果 AI 误解了屏幕内容——比如把”删除”按钮识别成了”编辑”按钮——那就是一次真实的误操作。你相册里的照片可能被删了,你备忘录里的内容可能被改了,你设置里的选项可能被动了。

建议:

  • 只在备用机上测试
  • 测试前备份重要数据
  • 脚本执行时全程盯着屏幕,随时准备中断

风险 2:隐私泄露

AI 通过 OCR 读取你手机屏幕上的所有文字。这意味着:聊天记录、短信内容、邮件正文、相册中图片上的文字、密码输入框(虽然不应该在这种场景下输密码)——所有出现在屏幕上的文字,Agent 都能读到

更关键的是,如果你使用的是云端 LLM(如 GPT-4、Claude API),这些屏幕内容会被发送到外部服务器。也就是说,你手机上的信息经过了第三方服务。

建议:

  • 如果使用云端 LLM,确保你了解数据的去向和处理方式
  • 考虑使用本地 LLM(如通过 Ollama 运行),避免敏感数据出网
  • 在操作前关闭包含敏感信息的 App 和通知

风险 3:权限滥用

辅助功能和屏幕录制是 macOS 上的高权限。开启后,终端应用可以:

  • 读取屏幕上任何内容(包括其他 App 的界面、密码管理器的填充内容等)
  • 模拟鼠标点击和键盘输入(可以执行任意操作)

虽然 phone-harness 本身是开源项目,代码可以审查,但如果你运行了别人写的脚本,或者 AI 生成了不安全的操作代码,后果不可预测。

建议:

  • 只运行你完全信任的脚本
  • 仔细审查脚本内容,特别是涉及”删除”、“修改”、“发送”等操作的地方
  • 使用完毕后,可以暂时关闭辅助功能和屏幕录制权限

风险 4:物理操作冲突

脚本执行期间,如果物理手机被解锁,iPhone Mirroring 会暂停并显示”iPhone in Use”提示。恢复镜像需要再次锁屏。这可能导致操作状态不一致——脚本以为自己已经执行了某步操作,但实际上操作被中断了。

项目自身的安全设计

项目作者在安全方面做了不少设计:

  • 代码中硬编码了”阻塞标记”——当屏幕显示”iPhone in Use”、“Lock Your iPhone”、“Mirroring Ended”、“To Connect”等文字时,connection_state() 会返回 "blocked",Agent 无法继续操作
  • ensure_mirroring() 明确禁止自动点击连接界面,会要求用户手动操作
  • SKILL.md 中明确写了许可规则:涉及发送消息、发布内容、购买、删除、修改设置等操作,必须停下并询问用户

但请理解,这些安全机制是代码层面的约束,不是不可绕过的。如果用户主动运行了跳过安全检查的脚本,项目方无法阻止。

免责声明:本文仅作技术介绍。读者自行决定是否使用该工具,使用后果自负。作者和本文不对使用过程中产生的任何数据丢失、隐私泄露或其他损失承担责任。


实现原理

如果你对技术细节感兴趣,phone-harness 的实现思路值得了解。

无状态设计: 每次调用都重新获取窗口边界和截图,不需要守护进程,没有状态同步问题。这意味着你可以在脚本中任意组合操作,不用担心状态不一致。

镜像窗口发现: 通过 macOS 原生 API 定位 iPhone Mirroring 窗口的位置和大小,获取窗口的 frame 信息。

Vision OCR 流程: 截图 -> 文本检测 -> 坐标映射 -> 返回文本和位置。Apple Vision 框架的识别精度不错,返回的结果包含文字内容、置信度和边界框坐标,可以直接用于点击定位。

CGEvent 注入: 在 HID(人机交互设备)层级模拟触摸事件。这比 AppleScript 更底层,也更可靠。项目用了 Quartz 框架(macOS 的 Core Graphics 框架的 Python 绑定)来构造和发送事件。

为什么不用 WebDriverAgent? WDA 是 Facebook 开源(现由 Appium 维护)的 iOS 自动化方案,它需要在手机上安装一个通过 Xcode 编译和签名的代理应用。配置过程繁琐,且需要开发者账号。phone-harness 用 macOS 原生能力——iPhone Mirroring 做传输层、Vision 做视觉层、CGEvent 做操作层——完全替代了这套方案。核心代码只有 500 行,读起来不费劲。

背景模式: 项目还提供了一个”背景模式”(通过 PHONE_HARNESS_BACKGROUND=1 环境变量启用),使用 SkyLight 私有框架记录事件,不需要把镜像窗口放在最前——这样你可以在操作手机的同时用 Mac 做别的事。但背景模式依赖 macOS 私有 API,不保证在所有版本上都能用,如果加载失败会自动回退到经典模式。


写在最后

phone-harness 是一个技术实验。它展示了 AI 控制物理设备的可能性,也让我们看到了这条路有多难走。

我不会说”推荐大家都去用”。实际上,对绝大多数人来说,这个项目目前的价值更在于研究而非使用。如果你对 AI Agent、macOS 自动化、iOS 测试感兴趣,clone 下来看看代码,了解它的实现思路,是很有收获的。但如果你只是想找个工具来帮你自动操作手机,说实话,现在的 phone-harness 还不够成熟。

我更想说的是,phone-harness 代表了一个方向——当 AI 不再只是”生成内容”,而是开始操作系统、操作设备、操作物理世界的时候,我们怎么定义安全边界?

是让 AI 能看但不能动?能看能动但需要每一步确认?还是给 AI 设定一个行动范围,只在范围内自主操作?

这个问题没有标准答案。但 phone-harness 让我们提前看到了一些可能性,也看到了一些需要警惕的东西。


项目信息:


你觉得 AI 应该能控制你的手机吗?安全边界在哪里?欢迎在评论区聊聊你的看法。

喜欢这款工具?关注「善忘技术夹」全媒体

扫描二维码关注微信公众号与小程序,获取更多高品质开源软件推荐与效率工具测试。

善忘技术夹 微信公众号宣传图
微信公众号 (扫码关注)
善忘技术夹 微信小程序宣传图
微信小程序 (扫码即用)