如何让AI操作真实手机?Open-AutoGLM+ADB连接全步骤详解

1. 这不是科幻,是已经能跑通的真机自动化

你有没有想过,让AI像人一样“看”手机屏幕、“想”下一步该点哪、“动手”完成一整套操作?不是模拟器里的玩具,而是真正控制你手边那台安卓手机——打开App、输入文字、滑动页面、点击按钮、甚至处理验证码。这不是概念演示,也不是实验室Demo,而是智谱开源的Open-AutoGLM框架正在做的事。

它背后的核心能力来自AutoGLM-Phone:一个专为手机场景设计的视觉语言模型智能体(Phone Agent)。它不靠预设脚本,也不依赖固定UI结构,而是用多模态方式“理解”当前屏幕画面,再结合自然语言指令,实时推理、动态规划、精准执行。你说“打开小红书搜美食”,它会先识别首页图标,点击进入,再找搜索框,输入关键词,最后点搜索——全程自动,无需一行UI自动化代码。

更关键的是,它把“AI决策”和“设备控制”彻底解耦:视觉理解与任务规划在云端大模型完成,而点击、滑动、输入等动作,通过最成熟、最稳定的Android底层工具——ADB(Android Debug Bridge)下发到真实设备。这意味着,你不需要改App、不用越狱、不依赖特定厂商SDK,只要手机开了调试模式,就能被AI接管。

这篇文章不讲原理推导,不堆技术参数,只带你从零开始,把这套能力真正跑起来:本地电脑配好ADB,手机调好设置,控制端代码部署好,云端模型连得上,最后用一句大白话,让AI替你刷抖音、点关注、回消息。每一步都可验证,每一个命令都贴出来,遇到问题有明确排查路径。

2. 为什么是Open-AutoGLM?它解决了什么老难题

过去几年,手机自动化方案不少,但大多卡在三个地方:太脆弱、太封闭、太难用

  • 太脆弱:基于UI控件ID或坐标点的脚本,一旦App更新界面,整个流程就崩;截图比对方案又容易被阴影、字体、状态栏干扰。
  • 太封闭:很多商业方案只支持自家云服务或特定机型,无法本地部署,数据不出内网?做不到;想换模型?没接口。
  • 太难用:要写Python调用uiautomator2,要学ADB命令,要配环境变量,还要处理权限弹窗、输入法切换、网络超时……新手三天都搭不起来。

Open-AutoGLM直接绕开了这些坑:

  • 它用视觉语言模型(VLM)做“屏幕理解”,看到的就是用户看到的——图标、文字、按钮位置、当前状态,全部从像素里读出来。App怎么改版,它都能重新“认”。
  • 它把AI大脑(模型推理)和手脚(设备控制)分开。模型可以跑在你自己的GPU服务器上,ADB控制端完全本地运行,数据全程可控。
  • 它把复杂封装成一句话:“打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!”。你不需要知道“先按home键→再滑动→再点搜索图标→再输入文字→再点放大镜”,AI自己拆解、自己执行、自己校验结果。

更重要的是,它不是“全自动就完事了”的激进派。系统内置敏感操作确认机制:当检测到支付、删除、授权等高危动作时,会暂停并等待人工确认;遇到登录页、验证码弹窗这类AI暂时搞不定的环节,也能立刻交还控制权,让你手动输完再继续。这种“人在环路”的设计,让它既强大,又可靠。

3. 本地控制端搭建:从装ADB到连上真机

服务端(模型)我们先默认已部署好(后文会说明如何确认),现在聚焦本地电脑——这是你指挥AI的“指挥中心”。所有操作都在这里完成:连接手机、发送指令、接收反馈。

3.1 硬件与基础环境准备

你不需要高端配置,一台日常办公的电脑足矣:

  • 操作系统:Windows 10/11 或 macOS Monterey 及以上(Apple Silicon芯片需额外注意Python包兼容性,后文提示)
  • Python:强烈建议使用 Python 3.10(不是3.11或3.12,部分依赖库尚未完全适配)。可通过 python.org 下载安装,勾选“Add Python to PATH”。
  • 安卓设备:一部 Android 7.0(Nougat)及以上的真机或模拟器(推荐真机,体验最真实)。确保电量充足,最好接上充电线。
  • ADB 工具:这是整个链条的“神经末梢”,必须正确安装并加入系统路径。
ADB 安装与环境变量配置

Windows 用户

  1. Android SDK Platform-Tools 官网 下载最新 platform-tools-latest-windows.zip
  2. 解压到一个固定路径,例如 C:\adb
  3. Win + R 输入 sysdm.cpl → “高级”选项卡 → “环境变量” → 在“系统变量”中找到 Path → “编辑” → “新建” → 粘贴你解压的完整路径(如 C:\adb)→ 确定保存。
  4. 打开新命令提示符(CMD或PowerShell),输入 adb version。如果看到类似 Android Debug Bridge version 1.0.41 的输出,说明配置成功。

macOS 用户

  1. 同样下载 platform-tools-latest-darwin.zip,解压到 ~/Downloads/platform-tools(路径可自定义)。
  2. 打开终端,运行以下命令(将路径替换为你实际解压位置):
echo 'export PATH=$PATH:~/Downloads/platform-tools' >> ~/.zshrc
source ~/.zshrc
  1. 输入 adb version 验证。

小贴士:如果你用的是 Apple Silicon Mac(M1/M2/M3),某些旧版ADB可能报错。若 adb version 提示 command not foundbad CPU type,请务必下载带 darwin-arm64 后缀的版本,或使用 Homebrew 安装:brew install android-platform-tools

3.2 手机端关键设置:三步打通“任督二脉”

电脑配好了,手机才是真正的“执行者”。这三步设置缺一不可,且顺序不能乱:

  1. 开启开发者模式
    进入手机“设置” → “关于手机” → 连续快速点击“版本号”7次,直到屏幕弹出“您现在处于开发者模式”的提示。

  2. 开启USB调试
    返回“设置” → “系统” → “开发者选项”(或直接搜索“开发者选项”)→ 找到并开启“USB调试”。首次开启会弹出安全警告,勾选“始终允许”并点确定。

  3. 安装并启用 ADB Keyboard(关键!)
    这是让AI能“打字”的核心组件。

    • 去 GitHub Release 页面下载 ADBKeyboard.apk(选择最新版)。
    • 用电脑或浏览器传到手机,点击安装(如提示“禁止安装未知来源应用”,需在“设置”→“安全”中开启对应开关)。
    • 安装完成后,进入手机“设置” → “语言与输入法” → “当前输入法” → 将默认输入法切换为“ADB Keyboard”

    为什么必须这一步? 普通输入法在ADB命令下无法激活。ADB Keyboard 是一个纯ADB驱动的虚拟键盘,AI通过 adb shell input text "xxx" 命令就能直接向任何焦点控件输入文字,稳定度远超模拟触摸。

3.3 部署控制端代码:克隆、安装、验证

现在,本地环境和手机都已就绪,我们来部署Open-AutoGLM的控制端。

  1. 克隆仓库
    打开终端(Windows用CMD/PowerShell,macOS用Terminal),执行:
git clone https://github.com/zai-org/Open-AutoGLM
cd Open-AutoGLM
  1. 安装依赖
    确保你已激活Python 3.10环境,然后运行:
pip install -r requirements.txt
pip install -e .

注意-e . 表示“开发模式安装”,这样后续修改代码能立即生效,无需重复安装。

  1. 验证ADB连接
    用USB数据线将手机连接电脑。确保手机弹出“允许USB调试吗?”的提示,勾选“始终允许”并点确定。
    回到终端,输入:
adb devices

如果看到类似 ZY223456789 device 的输出(一串字母数字+device),恭喜,物理链路已通!如果显示 unauthorized,请检查手机是否点了“允许”;如果空白,重插USB线或换接口。

4. 设备连接实战:USB直连与WiFi远程双模式

ADB提供了两种主流连接方式:稳定可靠的USB直连,和灵活自由的WiFi无线连接。我们分别实操。

4.1 USB直连:新手首选,一步到位

这是最简单、延迟最低的方式,适合初次验证和日常调试。

  • 确保手机已通过USB连接,且 adb devices 显示 device 状态。
  • 你的设备ID就是 adb devices 输出的第一列内容(如 ZY223456789)。
  • 后续启动命令中的 --device-id 参数,就填这个ID。

4.2 WiFi远程连接:摆脱线缆,实现真·远程控制

当你需要在客厅沙发用笔记本控制卧室床头柜上的手机,或者在办公室电脑控制家里测试机时,WiFi模式就派上用场了。它分两步走,且必须先用USB完成初始化

  1. USB初始化TCP/IP端口
    手机仍用USB连接,终端执行:
adb tcpip 5555

你会看到 restarting in TCP mode port: 5555。这表示手机已准备好监听5555端口。

  1. 断开USB,用WiFi连接
    拔掉USB线。确保手机和电脑在同一局域网(比如都连着同一个路由器)。
    在手机“设置”→“关于手机”→“状态信息”里找到“IP地址”(通常是 192.168.x.x 格式)。
    终端执行(将 192.168.x.x 替换为你手机的实际IP):
adb connect 192.168.x.x:5555

如果返回 connected to 192.168.x.x:5555,即连接成功。再次运行 adb devices,应看到 192.168.x.x:5555 device

排错提示:如果提示 failed to connect to '192.168.x.x:5555',请检查:① 手机和电脑是否同网;② 手机IP是否正确(别错看成路由器IP);③ 路由器是否开启了AP隔离(关闭即可);④ 首次连接后,手机通知栏可能会弹出“允许USB调试”提示,点“允许”。

5. 启动AI代理:用一句话指挥真机

所有前置条件都已满足,现在进入最激动人心的环节:让AI真正“上手”操作你的手机。

5.1 命令行一键启动:最简实践

确保你已在 Open-AutoGLM 项目根目录下。执行以下命令(请严格替换括号内占位符):

python main.py \
  --device-id ZY223456789 \
  --base-url http://192.168.1.100:8800/v1 \
  --model "autoglm-phone-9b" \
  "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"

参数详解:

  • --device-id:填你 adb devices 看到的设备ID(USB)或 IP:端口(WiFi)。
  • --base-url:填你云端vLLM服务的地址。格式为 http://<服务器IP>:<端口>/v1。例如,若你的模型部署在内网服务器 192.168.1.100,映射端口为 8800,则填 http://192.168.1.100:8800/v1
  • --model:指定模型名称,目前官方提供 autoglm-phone-9b,后续可能有更多。
  • 最后的字符串:你的自然语言指令,必须用英文引号包裹,且尽量清晰具体。

执行后,你会看到终端滚动输出:

  • [INFO] Capturing screen... (AI正在截图分析当前界面)
  • [INFO] Planning action: CLICK on '抖音' icon (AI已识别图标并规划点击)
  • [INFO] Executing: adb shell input tap 500 1200 (执行点击命令)
  • [INFO] Waiting for new screen... (等待界面刷新)
  • ...(循环直至任务完成)

几秒后,你的手机屏幕上就会真实发生这一切:抖音App启动、搜索框被点击、文字被输入、搜索结果出现、目标博主头像被点击、关注按钮被按下。整个过程,你只需看着,无需动手。

5.2 Python API集成:嵌入你自己的项目

如果你希望把这个能力集成到自己的Web后台、桌面工具或自动化流水线中,Open-AutoGLM 提供了干净的Python API。

以下是一个完整、可运行的连接与操作示例:

from phone_agent.adb import ADBConnection, list_devices

# 创建ADB连接管理器
conn = ADBConnection()

# 尝试连接WiFi设备(替换为你的手机IP)
success, message = conn.connect("192.168.1.100:5555")
print(f"连接状态: {message}")

# 列出所有已连接设备
devices = list_devices()
for device in devices:
    print(f"设备ID: {device.device_id}, 连接类型: {device.connection_type.value}")

# (可选)为USB设备启用TCP/IP,方便后续转WiFi
# success, message = conn.enable_tcpip(5555)
# ip = conn.get_device_ip()
# print(f"设备IP: {ip}")

# 断开连接
conn.disconnect("192.168.1.100:5555")

这段代码展示了如何用代码方式管理ADB连接。它的价值在于:你可以把它作为模块,嵌入到Flask/FastAPI后端中,前端用户提交一句指令,后端就调用此API连接设备、调用Open-AutoGLM的推理接口,最终返回操作日志和截图。真正的“AI手机管家”雏形,就此诞生。

6. 常见问题排查:让每一次连接都稳稳当当

即使步骤都对,实操中也可能遇到“看似正常,实则卡住”的情况。以下是高频问题与直击要害的解决方案:

  • 问题:adb devices 显示 unauthorized,或根本无输出
    原因:手机未授权电脑的调试权限。
    解决:拔掉USB线,关闭手机开发者选项里的“USB调试”,再重新开启。重新连接,手机弹出授权框时,务必勾选“始终允许”并点确定。如果还不行,尝试换USB线或电脑USB口。

  • 问题:命令行运行 python main.py ... 后,卡在 Capturing screen... 不动
    原因:ADB截图命令失败,常见于手机未开启“USB调试”或ADB Keyboard未设为默认输入法。
    解决:手动执行 adb shell screencap -p /sdcard/screen.png && adb pull /sdcard/screen.png ./,看能否成功拉取截图。若失败,回头检查3.2节的三步设置。

  • 问题:AI执行了点击,但手机没反应,或点错了位置
    原因:手机屏幕分辨率与ADB截图分辨率不一致(尤其在某些定制ROM或开启“字体大小/显示大小”缩放时)。
    解决:在手机“设置”→“显示”中,将“字体大小”和“显示大小”都调至“默认”或“标准”。重启ADB:adb kill-server && adb start-server

  • 问题:模型返回乱码、空响应,或提示 Connection refused
    原因--base-url 地址错误,或云端服务未启动/防火墙拦截。
    解决:在浏览器中直接访问 http://<服务器IP>:<端口>/v1/models,应返回JSON格式的模型列表。如果打不开,检查:① 服务器vLLM进程是否在运行(ps aux | grep vllm);② 服务器防火墙是否放行了该端口(sudo ufw allow 8800);③ --base-url 是否漏了 /v1 后缀。

  • 问题:执行输入文字时,中文变成方块或乱码
    原因:ADB Keyboard 对中文支持需额外配置。
    解决:在手机“设置”→“语言与输入法”→“ADB Keyboard”设置中,开启“支持Unicode”或“启用中文输入”选项(不同版本名称略有差异)。

7. 总结:从“能用”到“好用”的下一步

到这里,你已经亲手完成了AI操控真机的全流程:从ADB环境配置、手机开发者设置、控制端部署,到用一句自然语言触发完整操作。这不是一个孤立的Demo,而是一套可扩展、可定制、可落地的技术栈。

它证明了一件事:AI Agent的“手”和“眼”,完全可以脱离模拟器,在真实世界中工作。Open-AutoGLM的价值,不仅在于它能做什么,更在于它怎么做的哲学——用最成熟的工业级工具(ADB)做执行,用最先进的多模态模型(VLM)做感知与决策,两者解耦,各司其职。

接下来,你可以轻松地:

  • 把它变成你的个人效率工具:每天自动整理微信收藏、定时抓取竞品价格、批量给通讯录好友发节日祝福;
  • 集成到企业内部系统:客服工单自动跳转App查订单、HR系统一键生成入职指引视频;
  • 甚至参与开源共建:为Open-AutoGLM贡献新的手机型号适配、优化截图策略、增加iOS支持(需配合其他工具链)。

技术的门槛,从来不在概念,而在第一步的“跑通”。你已经跨过了这道坎。现在,拿起你的手机,打开终端,输入那句属于你的指令——让AI,真正开始工作。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐