通过USB或网络使用GPT‑4o视觉控制真实Android手机,执行打开应用、输入、点击和自动化脚本等任务。
自动自动控制器是一项面向实际任务的技能,主要用于将旧的Android手机插入到您的Mac/ PC;现在您的AI助手可以使用它;
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
将你的旧 Android 手机接入 Mac/PC。现在,你的 AI 助手即可操控它。
抽屉里躺着一台闲置的 Android 手机?将其连接至任意运行 OpenClaw 的设备——无论是你的网关(如 Mac Mini)、树莓派(Raspberry Pi)或其他兼容设备。你的 AI 现在可以打开应用、点击按钮、输入文字,并在真实手机上完成各类任务:叫一辆出租车、下单外卖、查看银行 App —— 凡是你用拇指能做的事,它都能代劳。
AI Agent 通过截图获取手机屏幕画面,据此决定需点击、输入或滑动的位置,并借助 ADB 执行对应操作。底层采用 DroidRun 框架,结合 GPT-4o Vision 进行视觉理解与决策。
┌─────────────┐ screenshots ┌──────────────┐ ADB commands ┌─────────────┐ │ GPT-4o │◄─────────────────│ DroidRun │──────────────────►│ Android │ │ Vision │─────────────────►│ Agent │◄──────────────────│ Phone │ │ │ tap/type/swipe │ │ screen state │ │ └─────────────┘ └──────────────┘ └─────────────┘
Android 手机通过 USB 直接接入 OpenClaw 网关设备(如 Mac Mini 或树莓派)。无需任何网络配置。
[Gateway Machine] ──USB──► [Android Phone]
Android 手机接入 Mac Mini、树莓派或任意 OpenClaw 节点设备;网关通过网络远程控制该节点,进而操控手机。
[Gateway] ──network──► [Mac Mini / Pi node] ──USB──► [Android Phone]
在节点模式下,需通过 TCP/WiFi 启用 ADB 连接,使节点可转发命令。
在你的 Android 手机上执行以下操作:
# 通过 USB 连接手机后执行: pip install -r requirements.txt adb devices # 验证设备是否识别成功 — 若提示授权,请在手机端确认
export OPENAI_API_KEY="sk-..." python scripts/run-task.py "打开设置并启用深色模式"
仅此而已。脚本会自动处理所有前置操作:唤醒屏幕、解锁设备、保持屏幕常亮,并执行你指定的任务。
python scripts/run-task.py "为前往机场叫一辆 Uber" python scripts/run-task.py "为明天早上 6 点设置闹钟" python scripts/run-task.py "在 PhonePe 中查看我的银行余额" python scripts/run-task.py "打开 Google 地图,导航至最近的咖啡店"
python scripts/run-task.py "向妈妈发送一条 WhatsApp 消息,告知我将迟到" python scripts/run-task.py "读取我最新的短信内容" python scripts/run-task.py "打开 Telegram 并检查未读消息"
python scripts/run-task.py "打开 Amazon,搜索价格低于 2000 卢比的无线耳机" python scripts/run-task.py "将牛奶和面包加入 Instamart 购物车"
python scripts/run-task.py "打开 Google 日历,查看明天的日程安排" python scripts/run-task.py "在 Google Keep 中新建一条笔记:购买杂货"
python scripts/run-task.py "在 Spotify 上播放我的 Discover Weekly 歌单" python scripts/run-task.py "打开 YouTube,搜索 lo-fi 学习音乐"
python scripts/run-task.py "启用深色模式" python scripts/run-task.py "连接我家的 WiFi 网络" python scripts/run-task.py "启用请勿打扰模式" python scripts/run-task.py "关闭蓝牙"
python scripts/run-task.py "截取一张屏幕截图" python scripts/run-task.py "打开相机并拍摄一张照片" python scripts/run-task.py "清除全部通知"
| 变量 | 是否必需 | 说明 |
|---|---|---|
OPENAI_API_KEY |
是 | GPT-4o Vision 所需的 API 密钥 |
ANDROID_SERIAL |
否 | 设备序列号。若仅连接一台设备,则自动检测 |
ANDROID_PIN |
否 | 用于自动解锁的手机 PIN/密码。若未设置,则跳过解锁步骤 |
DROIDRUN_TIMEOUT |
否 | 任务超时时间(单位:秒,默认值为 120) |
安装 ADB:
# macOS brew install android-platform-tools # Ubuntu/Debian sudo apt install android-tools-adb # Windows # 从 https://developer.android.com/tools/releases/platform-tools 下载
通过 USB 连接手机并验证:
./scripts/connect.sh usb
在手机上安装 DroidRun Portal APK:
adb install droidrun-portal.apk安装 Python 依赖:
pip install -r requirements.txt
在节点设备(Mac Mini、树莓派等)上,通过 USB 连接手机并启用 WiFi ADB:
adb tcpip 5555 adb connect:5555
从网关设备连接至节点的 ADB:
# 若使用 SSH 隧道: ssh -L 15555::5555 user@node-ip export ANDROID_SERIAL="127.0.0.1:15555" # 或直接使用 WiFi(同一局域网内): ./scripts/connect.sh wifi
照常运行任务 —— 脚本将依据 ANDROID_SERIAL 环境变量所指向的目标执行操作。
必须在手机上安装并运行 DroidRun Portal APK。该应用提供无障碍服务,使 DroidRun 能够读取屏幕内容并交互 UI 元素。
scripts/run-task.py — 主执行脚本# 基础用法 python scripts/run-task.py "你的任务描述" # 带参数用法 python scripts/run-task.py --timeout 180 "从 Play Store 安装 Spotify" python scripts/run-task.py --model gpt-4o "打开 Chrome 并搜索天气" python scripts/run-task.py --no-unlock "截取一张屏幕截图" python scripts/run-task.py --serial 127.0.0.1:15555 "查看通知" python scripts/run-task.py --verbose "打开设置"
可用参数:
| 参数 | 说明 |
|---|---|
goal |
任务描述(位置参数,必需) |
--timeout |
超时时间(单位:秒;默认为 120,或由 DROIDRUN_TIMEOUT 环境变量指定) |
--model |
指定使用的 LLM 模型(默认为 gpt-4o) |
--no-unlock |
跳过自动解锁步骤 |
--serial |
设备序列号(默认为 ANDROID_SERIAL 环境变量值,或自动检测) |
--verbose |
输出详细调试日志 |
scripts/connect.sh — 连接建立与状态验证./scripts/connect.sh # 自动检测 USB 设备 ./scripts/connect.sh usb # 显式启用 USB 模式 ./scripts/connect.sh wifi 192.168.1.100 # 启用 WiFi/TCP 模式
scripts/screenshot.sh — 截图工具(基于 ADB screencap,稳定可靠)DroidRun 内置截图功能在部分设备上可能失败。该脚本可绕过 DroidRun,直接通过 ADB 获取 PNG 格式截图。
# 默认保存至 /tmp/android-screenshot.png ./scripts/screenshot.sh # 指定设备序列号与输出路径 ./scripts/screenshot.sh 127.0.0.1:15555 /tmp/a03.png
也可通过 Python 脚本调用:
python scripts/run-task.py --screenshot --serial 127.0.0.1:15555 --screenshot-path /tmp/a03.png
scripts/status.sh — 设备状态查询./scripts/status.sh # 输出示例: # 📱 Device: Samsung Galaxy A03 (SM-A035F) # 🤖 Android: 11 (API 30) # 🔋 Battery: 87% # 📺 Screen: ON (unlocked) # 🔌 Connection: USB # 📦 DroidRun Portal: installed (v0.5.5)
adb kill-server && adb start-server--verbose 参数可查看 Agent 当前看到的屏幕内容./scripts/connect.sh usb,再运行 ./scripts/connect.sh wifi adb shell getevent -l,随后依次点击每个数字键adb shell input text ANDROID_PIN 环境变量设置 PIN(切勿硬编码到代码中)请使用专用测试设备,切勿使用主用手机。
核心原则: 将已连接的手机视为“AI 专用工作设备”。不要保留个人账号登录态,不要在其上存储任何密钥或敏感信息。如果你不愿把一部已解锁的手机亲手交给陌生人,就不要将这项能力赋予它。
MIT — 详见 LICENSE 文件