用自然语言让手机自己动起来:mobile-use 完全入门指南
“Hey,帮我打开 Gmail,把未读邮件的发件人和主题整理成表格。”一句话,手机真的照做了。
1. mobile-use 是什么?
一句话版本:
mobile-use 是一个开源 AI 代理,能让你像跟朋友说话一样,用自然语言命令 Android 或 iOS 设备完成任何 App 操作。
它背后的大语言模型会“看懂”你的指令,然后像真人一样点按、滑动、输入文字,最终把结果结构化地交还给你。
2. 为什么值得一试?
痛点 | 传统方法 | mobile-use 的做法 |
---|---|---|
想批量备份微信聊天记录 | 手动截屏、复制、粘贴 | 一句话指令,自动滚屏并导出 JSON |
每天统计 5 个 App 的日活数据 | 打开每个 App 截图、OCR、填表 | 发一句话,手机自己跑完 5 个 App,把数据汇总 |
父母不会用智能机 | 远程视频指导 | 把指令写成一句中文,他们照着念,手机自动完成 |
3. 核心能力拆解
-
自然语言控制
支持中文、英文等多语言,直接说“打开支付宝,给张三转 100 元并备注午饭”即可。 -
UI 感知自动化
不靠坐标,不靠像素,而是通过 AI 理解界面元素,遇到改版也能适应。 -
数据抓取与结构化
把任何 App 里的可见信息抽取成 JSON、CSV、Markdown 等格式。 -
可插拔 LLM
默认用 OpenAI,你也可以换成 Claude、Gemini、本地模型,改一行配置即可。
4. 性能到底多强?
官方在 AndroidWorld 基准测试里拿下 开源榜第一 的 pass@1 成绩。
如果你想看更细的排行榜,直接访问官方 Google 表格(README 里给了链接)。
5. 准备工作:一分钟对照表
事项 | Android 真机 | Android 模拟器 | iOS 模拟器 |
---|---|---|---|
开启调试 | 设置 → 开发者选项 → USB 调试 | Android Studio 自带 | macOS + Xcode |
必需工具 | ADB | ADB | Xcode |
首次连接 | 插线、点“允许 USB 调试” | 无 | 无 |
网络要求 | 与电脑同 Wi-Fi | 与电脑同网段 | localhost 即可 |
6. 安装:两种路线
路线 A:Docker 一键启动(推荐新手)
步骤 1:检查环境
-
电脑已装 Docker -
手机已开 USB 调试并与电脑同 Wi-Fi
步骤 2:运行脚本
Linux/macOS
chmod +x mobile-use.sh
./mobile-use.sh \
"打开 Gmail,找出前三封未读邮件,列出发件人和主题" \
--output-description "JSON 列表,每项含 sender 和 subject"
Windows(PowerShell)
powershell.exe -ExecutionPolicy Bypass -File mobile-use.ps1 `
"打开 Gmail,找出前三封未读邮件,列出发件人和主题" `
--output-description "JSON 列表,每项含 sender 和 subject"
终端可能会停下来问你是否同意 Maestro 收集匿名数据,按
Y
或n
即可。
常见问题 FAQ
-
提示 “Could not get device IP”?
手机 Wi-Fi 接口名字不是常见 wlan0。用adb shell ip addr show up
查接口,再在脚本后加--interface <接口名>
。 -
连不上 5555 端口?
大概率是防火墙。关掉防火墙或放行 5555 即可。 -
docker pull 报 401?
之前登录过私有 ghcr.io,先docker logout ghcr.io
,再跑脚本。
路线 B:手动开发模式(适合折腾党)
1. 克隆仓库
git clone https://github.com/minitap-ai/mobile-use.git
cd mobile-use
2. 设置环境变量
cp .env.example .env
# 用编辑器打开 .env,把 OPENAI_API_KEY 填进去
3. 创建虚拟环境
uv venv
source .venv/bin/activate # Windows 用 .venv\Scripts\activate
uv sync
4. 运行你的第一句话
python ./src/mobile_use/main.py \
"打开设置,告诉我当前电量" \
--output-description "纯文本电量百分比"
7. 使用示例:从入门到进阶
示例 1:一句话查天气
python ./src/mobile_use/main.py "打开天气 App,读出北京现在的温度和湿度"
返回:
{"location":"北京","temperature":"31 °C","humidity":"58 %"}
示例 2:批量抓数据
需求:把抖音关注列表前 50 个账号名和粉丝数导成 CSV。
指令:
python ./src/mobile_use/main.py \
"打开抖音,进入我的关注,依次点进前 50 个账号,把昵称和粉丝数记下来" \
--output-description "CSV,列名 nickname,followers"
示例 3:复杂工作流
场景:每天 9 点自动给老板发日报邮件。
做法:
-
用系统定时任务 crontab 触发脚本 -
指令里包含: -
打开企业微信 → 进入汇报 → 截图 -
打开邮箱 → 新建邮件 → 上传截图 → 发送
-
-
输出确认 JSON,脚本校验 "status":"sent"
即退出。
8. 自定义大模型:换“大脑”只需两步
-
复制模板
cp llm-config.override.template.jsonc llm-config.override.jsonc
-
编辑 JSONC 文件,把
"provider":"openai"
改成"provider":"claude"
或"provider":"gemini"
,并填写对应 key。
保存后立即生效,无需重启容器。
9. 真实场景问答(FAQ)
Q1:iPhone 真机什么时候支持?
A:官方 README 明确写着“Physical iOS devices are not yet supported”,只能先用模拟器。
Q2:会不会偷看我的隐私?
A:代码完全开源,MIT 许可证,可自己审计。它只在本地跑,除非你主动把结果发出去。
Q3:中文 App 识别准确吗?
A:只要界面文字是标准系统字体,AI 就能识别。遇到生僻图标配文字,也能通过上下文猜出来。
Q4:断网能用吗?
A:不行。LLM 调用需要联网,除非你部署本地模型并把 endpoint 指过去。
Q5:可以一次执行多条指令吗?
A:目前一次只能一句,但你可以在外层脚本里循环调用,实现“批量任务”。
10. 贡献代码:三步成为 contributor
-
提 Issue 描述需求或 bug -
Fork 仓库,按 CONTRIBUTING.md 规范写代码 -
发 Pull Request,维护者会 review 并合并
11. 小结与下一步
读完本文,你应该已经:
-
明白 mobile-use 能解决什么问题 -
会选 Docker 还是手动安装 -
能写出第一条自然语言指令 -
知道如何换模型、如何贡献代码
下一步,不妨把日常最重复的三件事写成脚本,让手机替你跑。你会发现,原来“自动化”并不是工程师的专利,而是一句人话就能搞定的事。
参考资料
-
项目仓库:https://github.com/minitap-ai/mobile-use -
AndroidWorld 排行榜:https://docs.google.com/spreadsheets/d/1cchzP9dlTZ3WXQTfYNhh3avxoLipqHN75v1Tb86uhHo/edit?pli=1&gid=0#gid=0