一个视觉模型,加上一块 40 多块钱的ESP32板子和一根 USB-C 线,就能自己去点你的 iPhone。这篇文章讲清楚它到底怎么做到的,以及它现在还做不到什么。
「设置一个早上 8 点的闹钟,每周一和周二重复,然后保存。」
这句话不是对人说的。接收它的是一串提示词,然后它开始动:退出自己所在的 App,回到桌面,点开时钟,在滚轮上拨到 8 点,勾上「周一」「周二」,按保存。
全程没有任何 API 调用,也没有哪个 App 给它开了接口。它用的是一块插在 iPhone 底部的 ESP32 板子,淘宝上 40 到 50 块。
这是这两周 GitHub 上最出圈的项目之一:esp32-iphone-agent。10 月 11 日建仓,到今天(10 月 20 日)已经 3377 star、449 fork,作者是 Henry Yuan。
它的一句话介绍写得很克制,但每个定语都在拆掉一个门槛:
让 AI 模型用一块 7 美元的 ESP32 操作一台真 iPhone:AirPlay 当眼睛,USB HID 当手,任意兼容 OpenAI 的视觉模型。不需要 Mac,不需要开发者账号,不越狱。

Agent 自己打开时钟、拨滚轮到 8:00、勾选周一和周二
一、先把这个闭环拆开
三个部件,对应三种器官。
眼睛,是把屏幕投给板子。 板子自己开一个 Wi-Fi 热点,于是它出现在 iPhone 控制中心的「屏幕镜像」列表里,名字叫 ESP32 Agent,和你的 Apple TV 排在一起。点一下,屏幕就投过去了。但板子并不看这个画面——它不解码,只把 H.264 码流原样通过蓝牙转给手机上的 App。
手,是 USB HID。 插上之后,对 iPhone 来说它就是一只标准的 USB 鼠标加键盘。打开「辅助触控」,屏幕上出现指针,点一下是轻点,拖一下是滑动。
脑子,是手机上的那个 App。 它解码画面、截图、发给视觉模型,拿回动作,再通过蓝牙指挥板子的鼠标去点。规划器和执行器可以用两个不同的模型。
于是就有了一个很别扭、也很妙的循环:
手机把屏幕投给板子 → 板子把画面还给手机 → 手机想明白了 → 让板子去点手机
左:真机。右:Agent 通过板子看到的画面,以及指针校准
二、最值钱的一步,是「看见」
要 AI 操作 iPhone,第一件事是让它看见屏幕。这一步卡死过所有人,每条路都有各自的代价:
-
• 越狱、私有 API:门槛高、风险大,系统一升级就得重来。 -
• WebDriverAgent / XCUITest:mobile-mcp、Midscene 这一类,必须有台 Mac 挂着,还要开发者签名。本质是把苹果给自动化测试的工具,拿来当 Agent 用。 -
• CoreDevice 调试通道:actell 走的这条路,要开发者模式、要 Developer Disk Image。 -
• HDMI 采集卡:aiden、glassbox 用的是这个思路,得再买一块采集硬件,再配一台主机。
这个项目的答案绕得很漂亮:iPhone 本来就有「把屏幕投出去」的能力。 AirPlay 是系统原生功能,不需要越狱,不需要开发者账号。它缺的只是一个「接收端」。
而一个 7 美元的 ESP32-S3,加上从 UxPlay 移植过来的接收端代码,就能冒充一台 Apple TV。
我觉得这是整个项目最「黑客」的地方:它没有破解任何东西。它只是把 iPhone 本来就愿意对 Apple TV 打开的那扇门,接到了自己身上。
顺带一个容易被忽略的巧思:手机连着板子的热点时是没有外网的,但蜂窝数据还在。所以画面走 Wi-Fi,模型调用走流量,两不打架。
三、真正让它跑起来的,是几个很土的细节
只有上面那些,它就是个漂亮的 demo。能用起来,靠的是这些:
指针是相对的。 蓝牙鼠标只报「往右挪了 3 格」,不报「现在在哪」,可点击必须有坐标。作者的做法是:App 自己记账,定期把指针赶回角落归零;需要精确点的时候,先让指针「晃一下」,在截图里把它找出来,再修正偏差。等于硬给一个没有反馈的执行器,做出了闭环。
每一步之后等画面稳。 点完不马上问模型「下一步」,而是等屏幕不再变化,再告诉模型:变了,或者没变。没变就说明这一步白做了,得换个打法。
断线能接上。 板子掉了、热点断了、镜像断了,不重头再来,从当前这一步继续跑。
能复盘。 每次运行都留在手机上,可以逐步回放,点按和滑动画在截图上,也能导出 trace 给另一个 Agent 分析。这在同类项目里少见:它把 Agent 的失败当成可研究的数据,而不是黑箱。
四、成本
板子 Seeed XIAO ESP32-S3,普通版,8MB PSRAM,不是 Sense 也不是 Plus,40 到 50 元。要求 USB-C 口走 S3 原生 USB。
手机 iOS 18 以上,要有蜂窝数据。USB-C 机型直接插,Lightning 机型需要一个 Lightning 转 USB 相机转换器。电由手机供给板子。
模型 任何兼容 OpenAI 接口的视觉模型。云端 API、OpenRouter,或者自己用 vLLM、Ollama 起一个都行。作者开发时用的是 NVIDIA 的 Qwen3.8-Flash-Next-NVFP4,跑在两台 DGX Spark 上。
Mac一次性需要。刷固件、编译 App、签名,都得在一台装了 Xcode 的 Mac 上做一次。免费 Apple ID 就能签,代价是每 7 天重签一回。
五、限制
硬限制也摆在那里:
-
• 蓝牙带宽只有 300-500 kbps,所以传过去的画面是 480×1040、最高 5fps。模型看到的是一张很糊、且迟了几秒的截图。 -
• iOS 不投密码输入、Apple Pay、DRM 视频这几类界面。Agent 天生看不见,也永远点不了。锁屏就断。 -
• 键盘只能打 ASCII,中文输入还在 roadmap 上。横屏 App 不支持。 -
• App 用了一个私有 API(suspend)把自己挂起。自编译没问题,上架前要换掉。从提交记录看(fastlane、TestFlight lane、隐私清单、审核信息),作者正在认真做这件事。
所以它的状态是:能跑通,但还不能托付。 做实验、做研究、做 demo、当课程作业,都成立;指望它现在替你抢票、替你回微信,不行。
END
#agent #iphone #esp32
如果这篇文章对你有帮助,欢迎点赞、在看、转发

