如何让AI操作真实手机?Open-AutoGLM+ADB连接全步骤详解
本文介绍了如何在星图GPU平台上自动化部署Open-AutoGLM – 智谱开源的手机端AI Agent框架镜像,实现AI对真实安卓手机的端到端操作。通过ADB连接与多模态视觉语言模型协同,可完成如‘打开抖音搜索并关注指定博主’等自然语言驱动的真机自动化任务,适用于智能测试、个人效率提升与RPA场景。
如何让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 用户:
- 去 Android SDK Platform-Tools 官网 下载最新
platform-tools-latest-windows.zip。 - 解压到一个固定路径,例如
C:\adb。 - 按
Win + R输入sysdm.cpl→ “高级”选项卡 → “环境变量” → 在“系统变量”中找到Path→ “编辑” → “新建” → 粘贴你解压的完整路径(如C:\adb)→ 确定保存。 - 打开新命令提示符(CMD或PowerShell),输入
adb version。如果看到类似Android Debug Bridge version 1.0.41的输出,说明配置成功。
macOS 用户:
- 同样下载
platform-tools-latest-darwin.zip,解压到~/Downloads/platform-tools(路径可自定义)。 - 打开终端,运行以下命令(将路径替换为你实际解压位置):
echo 'export PATH=$PATH:~/Downloads/platform-tools' >> ~/.zshrc
source ~/.zshrc
- 输入
adb version验证。
小贴士:如果你用的是 Apple Silicon Mac(M1/M2/M3),某些旧版ADB可能报错。若
adb version提示command not found或bad CPU type,请务必下载带darwin-arm64后缀的版本,或使用 Homebrew 安装:brew install android-platform-tools。
3.2 手机端关键设置:三步打通“任督二脉”
电脑配好了,手机才是真正的“执行者”。这三步设置缺一不可,且顺序不能乱:
-
开启开发者模式
进入手机“设置” → “关于手机” → 连续快速点击“版本号”7次,直到屏幕弹出“您现在处于开发者模式”的提示。 -
开启USB调试
返回“设置” → “系统” → “开发者选项”(或直接搜索“开发者选项”)→ 找到并开启“USB调试”。首次开启会弹出安全警告,勾选“始终允许”并点确定。 -
安装并启用 ADB Keyboard(关键!)
这是让AI能“打字”的核心组件。- 去 GitHub Release 页面下载 ADBKeyboard.apk(选择最新版)。
- 用电脑或浏览器传到手机,点击安装(如提示“禁止安装未知来源应用”,需在“设置”→“安全”中开启对应开关)。
- 安装完成后,进入手机“设置” → “语言与输入法” → “当前输入法” → 将默认输入法切换为“ADB Keyboard”。
为什么必须这一步? 普通输入法在ADB命令下无法激活。ADB Keyboard 是一个纯ADB驱动的虚拟键盘,AI通过
adb shell input text "xxx"命令就能直接向任何焦点控件输入文字,稳定度远超模拟触摸。
3.3 部署控制端代码:克隆、安装、验证
现在,本地环境和手机都已就绪,我们来部署Open-AutoGLM的控制端。
- 克隆仓库
打开终端(Windows用CMD/PowerShell,macOS用Terminal),执行:
git clone https://github.com/zai-org/Open-AutoGLM
cd Open-AutoGLM
- 安装依赖
确保你已激活Python 3.10环境,然后运行:
pip install -r requirements.txt
pip install -e .
注意:
-e .表示“开发模式安装”,这样后续修改代码能立即生效,无需重复安装。
- 验证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完成初始化:
- USB初始化TCP/IP端口
手机仍用USB连接,终端执行:
adb tcpip 5555
你会看到 restarting in TCP mode port: 5555。这表示手机已准备好监听5555端口。
- 断开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星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐



所有评论(0)