用自然语言让手机自己动起来:mobile-use 完全入门指南

“Hey,帮我打开 Gmail,把未读邮件的发件人和主题整理成表格。”一句话,手机真的照做了。


1. mobile-use 是什么?

一句话版本:
mobile-use 是一个开源 AI 代理,能让你像跟朋友说话一样,用自然语言命令 Android 或 iOS 设备完成任何 App 操作。

它背后的大语言模型会“看懂”你的指令,然后像真人一样点按、滑动、输入文字,最终把结果结构化地交还给你。


2. 为什么值得一试?

痛点 传统方法 mobile-use 的做法
想批量备份微信聊天记录 手动截屏、复制、粘贴 一句话指令,自动滚屏并导出 JSON
每天统计 5 个 App 的日活数据 打开每个 App 截图、OCR、填表 发一句话,手机自己跑完 5 个 App,把数据汇总
父母不会用智能机 远程视频指导 把指令写成一句中文,他们照着念,手机自动完成

3. 核心能力拆解

  1. 自然语言控制
    支持中文、英文等多语言,直接说“打开支付宝,给张三转 100 元并备注午饭”即可。

  2. UI 感知自动化
    不靠坐标,不靠像素,而是通过 AI 理解界面元素,遇到改版也能适应。

  3. 数据抓取与结构化
    把任何 App 里的可见信息抽取成 JSON、CSV、Markdown 等格式。

  4. 可插拔 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 收集匿名数据,按 Yn 即可。

常见问题 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 点自动给老板发日报邮件。
做法:

  1. 用系统定时任务 crontab 触发脚本
  2. 指令里包含:

    • 打开企业微信 → 进入汇报 → 截图
    • 打开邮箱 → 新建邮件 → 上传截图 → 发送
  3. 输出确认 JSON,脚本校验 "status":"sent" 即退出。

8. 自定义大模型:换“大脑”只需两步

  1. 复制模板

    cp llm-config.override.template.jsonc llm-config.override.jsonc
    
  2. 编辑 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

  1. 提 Issue 描述需求或 bug
  2. Fork 仓库,按 CONTRIBUTING.md 规范写代码
  3. 发 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