让AI在手机模拟器里刷题:28个应用、416个任务模板,单机并行256个实例
做移动GUI智能体研究的人,大概都体会过这种绝望:让AI在真机上操作银行App,转了一笔钱,数据写到服务器后端,然后——没法重置了。下一轮训练只能换台手机,或者手动去数据库里擦屁股。GRPO那种需要几百个并行rollout的强化学习算法?在真机上基本是白日梦。
MobileGym这个项目的思路挺直接:既然真机环境不可控,那就造一个假的。整个安卓模拟器跑在浏览器里,用结构化JSON替代真实设备状态,内置28个模拟应用和416个任务模板。说白了,AI看到的不是一堆像素,而是一份可以随时读取、修改、重置的状态表。
评判这件事终于不用靠猜了
在真实设备上跑评测,AI能看到的只有UI树。余额多少、订单状态怎样、聊天记录写了什么——这些信息藏在后端和加密数据库里,AI根本摸不到。研究者只能退而求其次,用VLM做”看图猜话”式的评判,错误率能到10.2%。
MobileGym把环境状态完全暴露成JSON,评判器直接读数据做比对,毫秒级出结果。我看了下他们的测试数据,百万次评判的稳定性基本没什么波动。另外还有个叫AnswerSheet的协议,要求Agent提交结构化表单而非自由文本,算是堵住了chain-of-thought泄露刷分的漏洞。
256个实例并行跑,六分钟收工
资源消耗是让我有点意外的地方。每个实例大概占400MB内存、50MB磁盘,256个并行实例跑起来CPU占用不到10%。完整256任务评估六分钟就能跑完,这个效率对做RL训练的人来说确实友好。底层用的是React 19、Vite 6、Zustand 5和Tailwind CSS v4,整体做得比较克制。
状态操控方面,支持重置、注入、快照、克隆,这些都是真机上几乎不可能做到的事。AI在沙箱里可以犯错无数次——误转账、误关注、误发消息,全环境状态比对能让这些”副作朋”无处遁形。说到这儿你可能想问,模拟环境里练出来的东西,搬到真机上还能使吗?
Sim-to-Real的保留率达到95.1%
这大概是整个项目最关键的数据。在59个信号任务上,模拟训练的模型放到真实Redmi Note 12 Turbo上跑,成功率72.9%,而真机基线只有32.2%,提升了40.7分。模拟端76.7%、真实端72.9%,保留率95.1%。这组数字说明在模拟环境里学到的不是”应试技巧”,而是真正能迁移到真机的操作能力。
每个应用的导航结构都是声明式的有限状态机,静态分析、BFS搜索、轨迹规划都能直接跑,运行时和任务编写工具复朋同一套描述。对研究者来说,这意味着你不需要为每个新任务从零开始写脚本。
我的一些看法
坦率讲,28个模拟应用的覆盖面还是有限的,如果你研究的场景比较垂直,可能得自己写新应用。不过416个任务模板的粒度已经够细了,扩展起来不算太痛苦。还有个在线体验地址可以直接试,不用先搭环境,这点对想快速了解项目的人来说挺方便的。
下载链接:https://pan.quark.cn/s/e2380fdaf5a4
GitHub 项目地址:https://github.com/Purewhiter/mobilegym