❝Phone Harness 是一个让 LLM Agent 通过 Mac 的 iPhone 镜像 功能直接操控真实 iPhone 的轻量级 Python 工具,无越狱、无 Xcode、无 WebDriverAgent,用截屏+OCR 当眼睛,用 HID 级 CGEvent 当手。
大家应该都听过"屏幕镜像"——把手机画面投到 Mac 上显示。Phone Harness 就是借用了 macOS 自带的 iPhone Mirroring(iPhone 镜像) 功能,把它当作一条"管道":
"眼睛"——怎么看的?它用 Mac 自带的图片识别技术(Vision 框架),对镜像窗口截图,然后自动识别屏幕上的文字和它们的位置。比如它能看到屏幕上有个"天气"按钮,坐标在 (400, 468) 这个位置。 "手"——怎么点的?它模拟真实的鼠标点击和键盘输入(底层叫 CGEvent),直接发到镜像窗口里。对 iPhone 来说,这就和真实的手指触摸一样。点击"天气"按钮的位置,天气 App 就打开了。 "验"——怎么确认的?点完之后再截一张图,看看画面有没有变成天气预报,确认操作成功了。
要点
利用 macOS Sequoia+ 的 iPhone Mirroring 将手机画面渲染为 Mac 窗口,Agent 通过截屏获取屏幕内容,用 Apple Vision 框架做 OCR 识别所有可见文字及其坐标; 通过 CGEvent(HID 级)模拟触摸操作:点击、长按、拖拽、滑动、滚动、以及 Cmd+1/2/3 快捷键切换主屏幕/应用切换器/Spotlight; 每条脚本独立运行,无守护进程,每次调用自包含——窗口边界和截屏实时获取; Agent 可在执行过程中编辑 agent-workspace/agent_helpers.py来自动加载自定义辅助函数;借助 SKILL.md注册为 Agent Skill,Claude Code 或 Codex 可按需自动调用;已明确的限制:不支持多点触控(无捏合)、无法操作相机/Face ID 流程、DRM 视频截屏为黑屏、OCR 只识别文字不看图标语义(图标需要截图+视觉模型辅助)、一台 Mac 同时只能控制一部手机、解锁实体手机会暂停镜像。
部署与使用
环境要求: 系统需为macOS Sequoia 及以上版本+ iPhone Mirroring 已配对 + 终端需获取系统设置中的「辅助功能」和「屏幕录制」权限。
安装方式(通过 Agent 自动完成):
git clone https://github.com/ShawnPana/phone-harness.git ~/.phone-harness之后阅读 install.md,将 phone-harness 加入 PATH 并注册为 Agent Skill。用 ./phone-harness --doctor 验证完整链路。
基本使用示例:
./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项目由 Shawn Pana 开发,采用 MIT License,当前 361 Stars。
❝项目地址:github.com/ShawnPana/phone-harness
夜雨聆风