Docker Registry + Android device/emulator (USB-debugging)+ ghcr.io 容器镜像+ Node 18++ mobile-use+ ADBDocker化LLM Agent通过ADB操控Android手机完成自然语言任务
LLM解析自然语言为操作指令,mobile-use Agent调度ADB驱动Android UI自动化
方案简介
mobile-use 是一个开源的 AI Agent,能够用自然语言操控 Android 或 iOS 设备。用户只需输入指令,Agent 即可理解并与手机 UI 交互,完成从发送消息到复杂应用导航等任务。
该项目的核心定位是「让 LLM 充当手机操作的大脑」,通过把自然语言意图映射到 UI 层面的真实点击、滑动、输入,从而实现通用型手机自动化。它不局限于某一类 App,凡是有可访问性(Accessibility)树的应用都能被驱动。
适合的用户群体包括:
- 想要自动化重复手机操作(订票、抢券、批量填写)的个人用户
- 需要从 App 中结构化抓取数据的研究/数据分析师
- 评估或构建 On-device Agent 的研究者(项目方自称 AndroidWorld 榜单 100% 完成)
- 想在自己的应用里集成「说话即操作手机」能力的开发者(提供 SDK/MCP Server)
项目仍处于快速演进阶段,团队在 Discord 上活跃收集 issue 与建议。
亮点与能力
- 🗣️ 自然语言控制:用母语描述任务,Agent 解析后执行手机操作。
- 📱 UI 感知自动化:智能浏览 App 界面,依赖无障碍树驱动(注意:游戏类应用通常不暴露 Accessibility tree,因此效果有限)。
- 📊 数据抓取与结构化:从任意 App 抽取信息,按自然语言描述的格式输出(如 JSON)。
- 🔧 可扩展可定制:Agent 的多个节点可独立配置 LLM,官方支持 OpenAI、Google、xAI、OpenRouter、MiniMax 等多家提供商,也兼容任何 OpenAI-API 兼容服务(含本地 LLM)。
- 📲 多设备形态:支持物理 Android 手机(USB 调试)、Android 模拟器(Android Studio)、iOS 模拟器(macOS)。
- 🐳 Docker 一键启动:封装好的脚本只需一条命令即可拉起 Agent 容器,连接局域网内的 Android 设备。
- 🏆 基准领先:官方声明在 AndroidWorld 基准上达到 100% 完成率,位列榜首。
实施步骤
1. 准备环境变量
复制示例环境变量文件,并填入你的 LLM API Key:
cp .env.example .env
如需切换 LLM 提供商(默认 OpenAI),在 .env 中设置对应变量,例如 OPENAI_BASE_URL / OPENAI_API_KEY、使用 MiniMax 时设置 MINIMAX_API_KEY、使用 Anthropic Claude 时设置 ANTHROPIC_API_KEY、使用 Google Vertex AI 时配置 GOOGLE_APPLICATION_CREDENTIALS。
2. (可选)自定义 LLM 配置
为不同 Agent 节点指定不同模型或提供商:
cp llm-config.override.template.jsonc llm-config.override.jsonc
然后编辑 llm-config.override.jsonc,把对应节点 provider 设为 openai / minimax 等。
3. 连接 Android 设备
二选一:
- 物理手机:插入 USB 数据线,在「开发者选项」中开启 USB 调试
- 模拟器:启动 Android Studio 中的 Android Emulator
[!NOTE]
使用真机时,记得在手机上点击「同意」ADB 连接授权弹窗。
4. 一键启动(Docker 快速模式)
Linux / macOS:
chmod +x mobile-use.sh
bash ./mobile-use.sh \
"Open Gmail, find first 3 unread emails, and list their sender and subject line" \
--output-description "A JSON list of objects, each with 'sender' and 'subject' keys"
Windows(PowerShell):
powershell.exe -ExecutionPolicy Bypass -File mobile-use.ps1 `
"Open Gmail, find first 3 unread emails, and list their sender and subject line" `
--output-description "A JSON list of objects, each with 'sender' and 'subject' keys"
脚本会自动拉取 ghcr.io 上的 mobile-use 镜像,在容器内启动 Agent 并连接局域网内的 Android 设备执行任务。
使用与配置要点
日常使用方式
mobile-use 提供两种使用姿态:
- CLI 单次任务:在终端以一行命令描述任务,Agent 即时执行并返回结果。任务描述写在第一个位置参数里,期望的输出结构用
--output-description指定(典型用法就是要求返回 JSON)。 - SDK / MCP Server 集成:官方提供 SDK 与 MCP Server,可将 mobile-use 嵌入到自有应用或 AI 客户端中,让其成为可调用的工具。文档入口见
docs.minitap.ai。
验证 Agent 是否跑通
- 手机上能看到 App 被自动打开、点击、滚动等操作
- 终端会回显 Agent 思考过程与最终结果(按
--output-description格式化) - 跑通示例任务
Open Gmail, find first 3 unread emails...即视为成功
切换 / 调优 LLM
llm-config.override.jsonc 支持对 Agent 内部不同节点分别指定模型,便于把「视觉感知」与「规划决策」拆分到不同模型以平衡成本与效果。
注意事项与常见问题
常见问题(来自官方 Troubleshooting)
1. 找不到设备 IP(Could not get device IP)
脚本默认会探测手机常见 Wi-Fi 接口名,如果你的手机 Wi-Fi 接口名称不在内置列表中,需要先用 adb shell ip addr show up 查出实际接口名,并通过 --interface 显式传入。
2. Docker 内连不上 :5555
多半是宿主机/网络防火墙阻挡了到设备的 ADB 端口,官方表示「没有万能解法」,需用户自行排查网络策略。
3. 拉取 ghcr.io 镜像报 unauthorized
若你之前用 ghcr.io 拉过私有镜像可能存在过期 token,请执行 docker logout ghcr.io 后重试。
已知限制
- Docker 快速启动目前只支持 Android(物理机 + 模拟器)。
- 物理 iOS 设备暂不支持,只能在 macOS 上用 iOS Simulator。
- 游戏类应用由于不暴露 Accessibility tree,自动化效果有限。
- 手机必须与电脑处于同一 Wi-Fi 网络(Docker 模式通过 IP 连接)。
优缺点
- ✓ 支持多家LLM提供商灵活切换
- ✓ Docker一键启动部署门槛低
- ✕ Docker快速启动仅支持Android
- ✕ 游戏因无Accessibility tr
出处
本方案挖掘自开源项目 minitap-ai/mobile-use,方案内容与实施命令均来自其 README 原文。
本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。