如何用Open-AutoGLM实现手机自动化?保姆级教程来了
你有没有想过,让AI替你点开App、搜索关键词、滑动页面、甚至完成关注操作?不是靠预设脚本,而是真正“看懂”屏幕、“听懂”指令、“想清楚”步骤,再动手执行——这不再是科幻电影里的桥段。Open-AutoGLM,由智谱开源的手机端AI Agent框架,正在把这件事变成现实。
它不依赖固定界面坐标,不靠硬编码规则,而是用视觉语言模型理解每一帧手机屏幕,结合大模型的推理能力规划动作序列,再通过ADB精准操控设备。一句话:你说人话,它办人事。
本文是一份零基础可上手、真机实测有效、问题排查到位的完整指南。无论你是刚接触ADB的新手,还是想快速验证AI手机助理能力的开发者,都能照着一步步跑通——从电脑环境配置,到手机设置,再到发出第一条自然语言指令,全程无断点。
我们不讲抽象架构,不堆技术术语,只聚焦“怎么连上”“怎么跑起来”“为什么报错”“怎么修好”。现在,就从你的本地电脑开始。
1. 环境准备:让电脑能“看见”并“控制”手机
在启动AI之前,必须先打通本地电脑与安卓设备之间的通信链路。这不是简单的USB插拔,而是一套标准化的调试通道配置。别担心,每一步我们都拆解清楚。
1.1 硬件与基础软件清单
- 操作系统:Windows 10/11 或 macOS Monterey 及以上(Linux同理,命令微调即可)
- Python版本:强烈建议使用Python 3.10(3.11+部分依赖存在兼容性问题,3.9以下则缺少关键特性)
- 安卓设备:Android 7.0(Nougat)及以上系统的真实手机或模拟器(推荐真机,因部分模拟器不支持ADB键盘输入)
- ADB工具包:Android SDK Platform-Tools(官方最新版,非第三方精简包)
注意:Open-AutoGLM的控制端运行在本地电脑,AI模型推理服务部署在云端(如你自己的vLLM服务器)。本地只负责截图、发送指令、执行ADB命令——轻量、安全、低延迟。
1.2 ADB环境变量配置(关键一步)
ADB命令必须能在任意终端中直接调用,否则后续所有操作都会卡在第一步。
Windows用户(图形化操作,零命令行压力)
- 前往 Android SDK Platform-Tools官网 下载ZIP包
- 解压到一个无中文、无空格的路径,例如
C:\adb - 按
Win + R输入sysdm.cpl→ “高级”选项卡 → “环境变量” - 在“系统变量”中找到
Path→ “编辑” → “新建” → 粘贴你解压的完整路径(如C:\adb) - 打开新的命令提示符(CMD或PowerShell),输入:
若显示类似adb versionAndroid Debug Bridge version 1.0.41,说明配置成功。
macOS用户(终端一行命令搞定)
打开 Terminal,执行以下命令(假设你将platform-tools解压到了~/Downloads/platform-tools):
echo 'export PATH=$PATH:~/Downloads/platform-tools' >> ~/.zshrc source ~/.zshrc adb version如果看到版本号,恭喜,ADB已就绪。
1.3 手机端三步设置:开启“被控制权”
手机不是插上线就能被操控的,它需要主动授权。这三步缺一不可,且顺序不能乱。
开启开发者模式
进入「设置」→「关于手机」→ 连续点击「版本号」7次 → 弹出“您现在处于开发者模式”提示。启用USB调试
返回「设置」→「系统」→「开发者选项」→ 找到并开启「USB调试」(部分品牌叫“USB调试(安全设置)”,一并开启)小技巧:开启后,首次连接电脑时手机会弹出“允许USB调试吗?”对话框,请勾选“始终允许”,避免每次重连都要确认。
安装并启用ADB Keyboard(解决文字输入难题)
Open-AutoGLM需要向App输入文字(比如搜索框里打“美食”),但标准ADBinput text命令在多数安卓版本上已被限制。ADB Keyboard是官方推荐的绕过方案。- 下载APK:ADB Keyboard GitHub Release(选择最新
.apk) - 用USB线传输到手机,或通过浏览器直接下载安装
- 安装完成后,进入「设置」→「语言与输入法」→「当前输入法」→ 切换为ADB Keyboard
- 验证:在任意文本框长按,若出现“选择输入法”菜单且ADB Keyboard在列表中,即成功。
- 下载APK:ADB Keyboard GitHub Release(选择最新
2. 控制端部署:把Open-AutoGLM“装”进你的电脑
控制端代码就是你和AI之间的“操作台”。它负责:截图上传给云端模型、接收AI返回的动作指令、调用ADB执行点击/滑动/输入等操作。整个过程全自动,你只需发一句指令。
2.1 克隆代码并安装依赖
打开终端(Windows用CMD/PowerShell,macOS用Terminal),依次执行:
# 1. 克隆官方仓库(注意:不是AutoGLM主库,是专为手机优化的Open-AutoGLM) git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM # 2. 创建虚拟环境(强烈推荐,避免依赖冲突) python -m venv venv source venv/bin/activate # macOS/Linux # venv\Scripts\activate # Windows # 3. 安装核心依赖(requirements.txt已适配最新版本) pip install --upgrade pip pip install -r requirements.txt # 4. 安装本项目为可编辑包(使phone_agent模块全局可用) pip install -e .提示:如果
pip install -r requirements.txt报错torch安装失败,请先手动安装对应CUDA版本的PyTorch(参考 pytorch.org),再重试。
2.2 设备连接验证:确保“手”能碰到“手机”
在执行任何AI指令前,必须确认ADB能稳定识别设备。这是最容易卡住的环节,我们分两种方式详解。
USB直连(最稳定,新手首选)
- 用原装数据线将手机连接电脑
- 手机弹出“允许USB调试”时,点“确定”
- 终端输入:
正常输出应为:adb devicesList of devices attached ABC123456789 devicedevice状态代表连接成功。若显示unauthorized,请检查手机是否点了“允许”;若为空,重启ADB服务:adb kill-server && adb start-server
WiFi远程连接(摆脱线缆,适合开发调试)
适用于手机与电脑在同一局域网(如都连着家里的WiFi)。需先用USB完成初始化:
# 1. USB连接后,开启设备TCP/IP模式 adb tcpip 5555 # 2. 拔掉USB线,查看手机IP(设置→关于手机→状态信息→IP地址) # 3. 用IP连接(替换192.168.x.x为你的手机真实IP) adb connect 192.168.1.100:5555验证连接:
adb devices # 应显示 192.168.1.100:5555 device常见失败原因:路由器隔离了设备间通信(关闭“AP隔离”)、手机IP变化(建议在路由器后台为手机分配静态IP)、防火墙拦截(临时关闭测试)。
3. 启动AI代理:发出你的第一条自然语言指令
现在,AI模型服务已在云端运行(如你已部署好vLLM,模型为autoglm-phone-9b),控制端代码已就位,设备连接已验证。万事俱备,只差一句“人话”。
3.1 命令行一键启动(最快上手)
在Open-AutoGLM项目根目录下,执行:
python main.py \ --device-id ABC123456789 \ --base-url http://192.168.1.200:8800/v1 \ --model "autoglm-phone-9b" \ "打开小红书,搜索‘川菜探店’,进入第一个笔记,点赞并收藏"参数说明:
--device-id:adb devices显示的设备ID(USB)或IP:端口(WiFi)--base-url:你云端vLLM服务的访问地址(格式必须是http://IP:PORT/v1)--model:模型名称,需与vLLM启动时注册的名称一致- 最后字符串:纯自然语言指令,无需任何格式,越像日常说话越好
成功运行后,你会看到:
- 终端实时打印:
[INFO] Capturing screenshot...→Uploading to model...→Model response: {'action': 'click', 'target': 'search_icon'}→Executing: adb shell input tap 500 1200 - 手机屏幕同步执行:自动解锁(如有)、打开小红书、点击搜索框、输入文字、点击搜索、滑动、点击、点赞……全程无需人工干预。
3.2 Python API调用(适合集成进自己的工具)
如果你希望把手机自动化嵌入到自己的Python脚本中,而非每次都敲命令,可以调用内置API:
from phone_agent.adb import ADBConnection, list_devices from phone_agent.agent import PhoneAgent # 1. 初始化ADB连接管理器 conn = ADBConnection() # 2. 连接设备(支持USB ID或WiFi IP) success, msg = conn.connect("ABC123456789") # 或 "192.168.1.100:5555" print(f"连接结果: {msg}") # 3. 初始化AI代理(指向你的云端模型) agent = PhoneAgent( base_url="http://192.168.1.200:8800/v1", model_name="autoglm-phone-9b" ) # 4. 发送指令(阻塞式,等待任务完成) result = agent.run("打开微信,给‘张三’发消息‘今天会议改到3点’") print(f"任务结果: {result['status']}") # success / failed这个API设计简洁:agent.run()接收字符串指令,返回结构化结果(含执行步骤、耗时、最终状态),便于日志记录与错误处理。
4. 实战效果与能力边界:它到底能做什么?
光跑通还不够,我们得知道它的“本事”和“底线”。以下是基于真实真机(小米13,Android 14)的实测总结,不吹不黑。
4.1 已验证的典型任务(全部一次成功)
| 场景 | 指令示例 | 关键能力体现 |
|---|---|---|
| App启动与导航 | “打开抖音,切换到‘朋友’页签” | 准确识别底部Tab栏图标,区分相似图标(如“朋友”vs“消息”) |
| 文字搜索 | “在淘宝搜‘无线降噪耳机’,按销量排序” | 理解搜索框位置、正确触发软键盘、输入中文、识别排序按钮 |
| 内容交互 | “打开知乎,搜索‘大模型入门’,点开高赞回答,复制第一段文字” | 多步动作规划(搜索→点击→滚动→长按→复制),跨App协作(复制后可粘贴到微信) |
| 表单填写 | “打开银行App,登录后转账给李四,金额500元” | 敏感操作拦截(自动暂停,等待人工确认),保障资金安全 |
4.2 当前能力边界(坦诚告知,避免踩坑)
- 不支持游戏内UI:王者荣耀、原神等OpenGL渲染界面无法截图识别(系统级限制)
- 复杂验证码需人工接管:当检测到数字+字母组合验证码图片时,AI会主动暂停,输出
请人工输入验证码并等待你通过ADB或手机操作完成 - 多窗口/悬浮窗干扰:若屏幕有微信悬浮窗、录屏提示条等,可能影响目标元素定位(建议执行前清理屏幕)
- 长文本输入延迟:输入超过20字中文时,ADB Keyboard偶有丢字,建议指令中避免超长搜索词,或分两次输入
值得强调:Open-AutoGLM的“智能”体现在动作规划层,而非单纯OCR。它能理解“第一个笔记”是指列表顶部,“点赞”是心形图标,“收藏”是书签图标——这种语义理解能力,远超传统自动化脚本。
5. 问题排查手册:90%的报错,这里都有解
部署过程中,你大概率会遇到这几个经典问题。我们按发生频率排序,并给出可立即执行的解决方案。
5.1 “Connection refused”(连接被拒)
现象:运行main.py时终端报错requests.exceptions.ConnectionError: HTTPConnectionPool(host='192.168.1.200', port=8800): Max retries exceeded with url: /v1/chat/completions
原因:本地控制端无法访问云端模型服务
速查三步:
- 在云端服务器上执行
curl http://localhost:8800/v1/models,确认vLLM服务本身正常 - 检查服务器防火墙:
sudo ufw status(Ubuntu)或sudo firewall-cmd --list-all(CentOS),确保8800端口开放 - 从本地电脑执行
telnet 192.168.1.200 8800(Windows需先启用Telnet客户端),若连接失败,说明网络不通,检查IP是否填错、路由器是否隔离、云服务器安全组是否放行
5.2 ADB设备显示“unauthorized”或不识别
现象:adb devices显示ABC123456789 unauthorized,或根本不出设备
根因:手机未授权电脑调试权限
解决:
- 拔掉USB线,关闭手机开发者选项中的“USB调试”,再重新开启
- 重新连接USB,务必在手机弹出授权框时点击“允许”(不是“仅充电”)
- 若仍无效,在电脑端执行
adb kill-server && adb start-server,再重连
5.3 模型返回乱码或空响应
现象:终端显示Model response: {'action': '', 'target': ''}或一堆符号
原因:vLLM服务启动参数与模型不匹配
关键检查项(启动vLLM时务必核对):
# 必须包含(以autoglm-phone-9b为例) --model /path/to/autoglm-phone-9b \ --tensor-parallel-size 1 \ --max-model-len 4096 \ # 必须≥4096,否则截断上下文 --dtype bfloat16 \ # 推荐,节省显存 --gpu-memory-utilization 0.95 # 显存占用率,避免OOM验证方法:访问
http://IP:8800/v1/models,检查返回JSON中max_model_len字段是否为4096。
6. 总结:你已经掌握了下一代手机自动化的核心钥匙
回顾整个流程,我们没有写一行Java/Kotlin代码,没有研究Android源码,甚至不需要了解什么是Transformer。你只是:
- 配置了一个通用调试工具(ADB)
- 安装了一个开源框架(Open-AutoGLM)
- 发出了一句自然语言指令
而AI完成了从“理解意图”到“感知界面”再到“执行动作”的全链条闭环。这背后是视觉语言模型对像素的解读能力,是大模型对人类指令的语义泛化能力,更是工程化落地的扎实封装。
Open-AutoGLM的价值,不在于它能替代所有手机操作,而在于它把“自动化”的门槛,从程序员降到了普通用户。市场运营人员可以用它批量生成竞品App截图报告,产品经理可以用它快速验证新功能路径,甚至长辈也能用语音指令让AI帮他们订外卖——只要那句指令足够清晰。
下一步,你可以尝试:
- 将指令来源换成语音识别(接入Whisper),实现真正的“动口不动手”
- 把任务结果回传到飞书/钉钉,构建自动化工作流
- 用
--log-level DEBUG查看每一步截图与模型思考过程,理解AI如何“做决定”
技术终将隐形,体验才是主角。当你不再需要记住“adb shell input tap X Y”,而是说一句“帮我看看快递到哪了”,那一刻,AI才真正住进了你的生活。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。