前置认知:为什么是 Phone Harness?
Agent 操作电脑已经不算新鲜了。但操作手机——真正看见屏幕、点按钮、填文字、交结果——依然是少数派的领域。
Phone Harness(GitHub: ShawnPana/phone-harness,2.7k stars,MIT 协议)是这条链路的开源实现。它不需要在手机上装 App,也不越狱,而是靠两套机制:
- iPhone:借用 macOS 的 iPhone 镜像功能,把手机画面变成 Mac 上的一个窗口,再用 OCR 识别文字坐标,模拟点击和滑动。
- Android:通过无线 ADB 读取截屏和控件树,执行点击、滑动、输入。
核心逻辑就一句:观察屏幕 → 执行动作 → 再次观察 → 确认结果。每一步都要验证,不能盲飞。
方案一:iPhone 镜像方案(macOS)
环境准备
- macOS Sequoia 或更高版本
- 一部 iPhone(能完成镜像配对)
- Python 3.12+
- Codex 桌面端
第一步:安装 Phone Harness
git clone https://github.com/ShawnPana/phone-harness.git ~/.phone-harness
cd ~/.phone-harness
pip install -e .
安装完成后,phone-harness 命令应出现在 PATH 中。如果新开的终端报 command not found,检查 Python scripts 目录是否已加入 PATH。
第二步:注册为 Codex Skill
phone-harness skill > ~/.codex/skills/phone-harness/SKILL.md
更新仓库后,重新执行上述命令,确保 SKILL.md 是最新版本。
第三步:配置 macOS 系统权限(最容易踩坑)
Phone Harness 要做两件事:看屏幕 + 控制鼠标键盘。对应两个系统权限:
open "x-apple.systempreferences:com.apple.preference.security?Privacy_SystemSoftware"
open "x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"
- 辅助功能:勾选执行 Phone Harness 的终端 App(决定点击/键盘是否生效)
- 屏幕与系统录音:勾选同一个终端 App(决定能否截取镜像画面)
权限设好后,完全退出并重新打开终端,再重新建立 iPhone 镜像。
第四步:跑 doctor 自检
phone-harness --doctor
依次检查 PyObjC、辅助功能、屏幕录制、镜像 App、窗口、截图、OCR。看到 FAIL 时从第一个开始修,后面的错误往往是连锁反应。
全部通过后,验证链路是否连通:
phone-harness <<'PY'
print(screen_info())
PY
能返回窗口边界,说明链路已通。
第五步:第一次任务——低风险小事
不要一上来就写复杂流程。先让 Codex 做一个简单任务,比如:
帮我在美团上找公司附近评分 4.5 以上的三家咖啡店,列出名称、距离和评分。
任务过程中你会遇到截图全黑、界面可见却无法点击、OCR 识别错误等问题。每一步 Codex 做完动作后,都会重新截图确认,这就是"每次只做一个动作,做完必须验证"的原则。
方案二:Android 无线 ADB 方案
环境准备
- Android 11+ 设备(闲置机即可)
- 电脑安装 adb(
brew install android-platform-tools或下载 Android SDK Platform Tools) - iPhone 和 Android 需在同一 Wi-Fi 下
第一步:开启无线调试
手机「设置 → 关于手机 → 连续点击版本号 7 次」开启开发者模式,然后进入「开发者选项」,开启 USB 调试 和 无线调试。
第二步:配对并连接
adb mdns services
adb pair 手机IP:配对端口
adb connect 手机IP:连接端口
adb devices -l
配对端口和连接端口不同,以 adb mdns services 返回的真实地址为准,不要照抄示例。
第三步:注册 Skill 并验证
phone-harness skill > ~/.codex/skills/phone-harness/SKILL.md
phone-harness --platform android
状态返回 ready、能读出当前 App 和控件后,再实际点击并重新读取页面,才算"看"和"动"都接通。
第四步:中文输入特殊处理
原生 adb shell input text 主要支持 ASCII。如需输入中文,安装 ADBKeyBoard:
adb install ADBKeyBoard.apk
adb shell ime set com.android.adbkeyboard/.AdbIME
写入前确认输入框已获得焦点,写入后重新读取页面,并切回原输入法。
第五步:验收测试——只读比价
让 Codex 分别打开淘宝和京东搜索某商品,读取标题、型号、价格,不加入购物车、不进入支付。遇到验证码或登录失效立即停止。这证明安卓设备能完成「打开 App → 搜索 → 读取结果 → 切换 App → 整理信息」的完整循环。
安全红线
- ✅ 只读、比价、查天气——安全
- ❌ 支付、身份认证、删除操作——必须人工确认
- ❌ 不要对外开放 ADB 端口
- ❌ 远程维护用 SSH,不用 ADB 直连公网
现状与展望
目前的效率还无法和电脑端命令行操作相比,截图识别有误差,偶发断线,点偏也是常有的事。但这条链路已经能跑通基本循环。
桌面端 Agent 功能趋近饱和之后,移动端必然成为下一块战场。Phone Harness 算是迈出了第一步,值得持续关注。
来源:今日头条 @长路寰宇《让Codex接管你的手机点外卖、玩游戏、刷抖音,手把手教你怎么搞》
资料最后核对日期:2026-09-26 · 内容整理自 CodexGuide 社区公开教程