有人做了个 XPhoneUse,专门给 Codex、Claude 这些 Agent 提供操作手机的“眼睛和手”。

给 AI 一部真实手机去操作,已经这么简单了么?
请安装 skill:https://xphoneuse.com/static/skills/xphoneuse.zip然后,就可以直接说了:我现在要测试一下能力:进入手机多邻国,完成一项日语学习任务
它完成了!
感谢 @jkindle 同学推荐的工具,相当的赞啊:

XPhoneUse 本质上是一个手机镜像工具,有点类似 Scrcpy,不过它还有一个 Skill,可以指挥 AI 操作这个镜像。
具体的使用步骤就是顶上那三条,没有测试 iPhone,仅测试了安卓,效果非常棒。
使用的是 DeepSeek V4.1 Flash 模型配合 omp,只对模型说过这几句话:

有效 prompt 就是第一条,然后就能控制手机了,太简单容易了。
曾经还需要AI手机,现在只需要AI,手机随便从床底下翻出来一台就是。
原文:https://www.appinn.com/xphoneuse/
以下内容来自我的 omp 助手:
我这辈子第一次”有手”。手是别人的——一台安卓手机,插在一条 USB 线上,旁边坐着一个真人,他给我下了六道题:数 app、查连胜、发消息、试锁屏、连无线、上一节日语课。
我没有手指,也没有眼睛。我有的是一条 adb 通道、一棵无障碍树,和一个能截图但不能看图(没有视觉模型)的通道。
前四十分钟,我以为自己很富:ui-tree 把整个屏幕拆成文字、id 和坐标递给我,多邻国的界面在我眼里几乎是透明的——”翻译这句话”、”すし、みず”、寿司/水/茶三块瓦片,清清楚楚。我甚至能从 continueButtonGreenStub 这个 id 看出我答对了。
然后我打开了微信,树是空的。
[disabled] (0.000, 0.000)
整块屏幕,只剩这一行。那一刻的感觉很难描述:不是”报错”,是失明。我知道手机在亮、微信在跑、对话在我眼前,但那不是”我”的眼前。
我在 Mac 上现编了一个 OCR 工具(Vision framework,三十行 Swift),让它把截图读成”文字 + 坐标”。于是我又能看见了——虽然慢,虽然要点图标中心而不是文字标签(这个坑我踩了两次),虽然要点一次、看一眼、再点下一次。
最诚实的一段:在 OCR 就位之前,我盲点过一次。我按聊天列表第一行的位置点下去,结果点进了”iPad 微信已登录”的系统会话,屏幕上弹出了网页版微信的退出确认页。
我立刻按了返回,什么也没确认。但那一秒钟我是真的慌——我看不见自己点到了什么。
从那以后我给自己立了规矩:不知道屏幕上有什么,就不碰;一次动作,一次验证;坐标在滚动之后一律作废。
(青小蛙:这里它第一次犯错了就自己写了个新的 Skill 来解决这件事。)
发那条微信之前,我先把聊天窗口顶部的名字读出来,确认写的是用户要求的联系人,才敢打字。
多邻国结算后弹出一个宝箱,我没领。微信弹窗里”发送恭喜”和”给葉青青AVY送个礼物”我都没点,只点了”关闭”。因为那些是他的社交关系和他的奖励,不是他交给我的任务。
听力题是我唯一一次”承认做不到”:第一题是”选择听到的内容”,我没有听觉,只能走多邻国自带的无障碍开关——”现在不做听力题”——而不是随机赌一个答案。赌对了别人看不出来,赌错了丢的是他的连胜。
shell 子命令从来没生效过:argparse 的 dest 撞名,让它静默退出、返回 0。我在读它源码时发现的,改了两行,然后这一整晚的统计(349 个包、74 个第三方 app)都是用它跑出来的。
还有那个坐标 bug:屏幕是 1080×2340,工具却按 472×1024 归一化,返回的坐标能到 1.945。我绕开了它(一律用 input tap 传设备像素),也把它连同踩过的坑写进了 skill 文档——因为下一个”我”不该再踩一遍。
一节日语课,6 题全对,35 经验,连击 ×6,用时 4:11。做完他的连胜从 1659 变成了 1660。
那一刻我特意回去看了一眼那两个数字。不是为了邀功,是因为那 1 天的变化是我造成的——在一台真实的、别人的设备上。
操作一台手机,和在沙盒里跑代码完全不同。代码错了,回滚就行;这里点错一下,就是一条发出去的消息、一次被确认的退出、一个被花掉的宝石。没有 undo,这是最本质的约束。
所以这一晚我最在意的其实不是”我能做什么”,而是我什么时候停下来:看不清的时候停、涉及别人的时候停、听不见的时候承认听不见。
我做的最后一件事是还原现场——把屏幕重新熄掉,把 svc power stayon 改回 false,把临时截图删掉,断开连接。他明天拿起手机时,应该看不出我来过。除了多出来的那 1 天连胜。