Open-AutoGLM部署卡在ADB?Windows/macOS配置全流程详解
Open-AutoGLM 是智谱开源的轻量级手机端AI Agent框架,专为在真实移动设备上运行多模态智能助理而设计。它不是云端玩具,而是能真正“看见”手机屏幕、“理解”界面元素、“动手”点击滑动的实体化AI助手。当你对它说“打开小红书搜美食”,它不会只生成一段文字回复——它会调用视觉语言模型分析当前界面,规划操作路径,再通过ADB精准执行点击、输入、返回等动作,全程无需人工干预。
AutoGLM-Phone 与 Phone Agent 其实是同一技术栈下的不同命名表达:前者强调框架底座,后者突出终端形态。核心能力高度一致——以多模态VLM为“眼睛”感知屏幕,以LLM为“大脑”理解指令并规划动作,以ADB为“双手”操控设备。整个流程闭环发生在本地控制端+云端推理服务之间:你的电脑负责图像采集、指令解析和ADB调度;云服务器专注大模型推理,返回结构化操作指令。这种分离架构既保障了响应速度,又规避了手机端部署大模型的硬件瓶颈。而所有这一切的起点,就是——ADB连通。
但现实很骨感:90%的新手卡在第一步:ADB不通。设备列表为空、连接被拒绝、权限弹窗不出现、WiFi调试反复断开……别急,这不是你不行,是Android调试生态本身就有门槛。本文不讲原理,不堆参数,只给你一条从零到跑通的清晰路径——覆盖Windows与macOS双平台,每一步都标注常见坑点与绕过方案,连“adb version报错”这种基础问题都给你拆解清楚。
1. ADB环境搭建:Windows与macOS双平台实操指南
ADB(Android Debug Bridge)是Android开发的基石工具,也是Open-AutoGLM控制手机的唯一通道。它不是插件,而是一套独立命令行程序,必须正确安装并纳入系统路径,否则adb devices永远返回空。下面分平台说明,关键步骤加粗提示。
1.1 Windows系统:四步搞定环境变量
很多教程让你“下载SDK Platform-Tools”,但实际只需最精简的ADB二进制包。推荐直接从Android官网下载最新版ZIP(如platform-tools-latest-windows.zip),解压后得到adb.exe、fastboot.exe等文件。
重点不是下载,而是让系统认出它:
- 解压到固定路径:例如
C:\adb。避免中文路径或空格(如C:\Program Files\adb会失败)。 - 打开系统环境变量设置:
- 按
Win + R,输入sysdm.cpl→ 回车 - 切换到“高级”选项卡 → 点击“环境变量”按钮
- 按
- 编辑系统Path变量:
- 在“系统变量”区域,找到并双击
Path - 点击“新建” → 粘贴你解压的完整路径,例如
C:\adb - 务必确认路径末尾没有反斜杠
\(C:\adb\是常见错误)
- 在“系统变量”区域,找到并双击
- 验证是否生效:
- 关闭所有已打开的命令行窗口
- 新开一个CMD或PowerShell → 输入
adb version - 正确输出应类似
Android Debug Bridge version 1.0.41
常见失败原因:
- 未重启命令行窗口(环境变量修改需新会话生效)
- 路径含空格或中文(Windows对路径敏感)
- 错误添加到“用户变量”而非“系统变量”(导致部分工具无法调用)
1.2 macOS系统:一行命令永久生效
macOS用户更简单,但容易忽略“永久生效”这个关键点。临时添加PATH只在当前终端有效,而Open-AutoGLM需要全局可调用。
正确做法(适配zsh默认shell):
# 1. 解压ADB到常用目录,例如 ~/Downloads/platform-tools # 2. 编辑shell配置文件(zsh用户为 ~/.zshrc,bash用户为 ~/.bash_profile) nano ~/.zshrc在文件末尾新增一行(不要删原有内容):
export PATH="$HOME/Downloads/platform-tools:$PATH"保存并重载配置:
# 按 Ctrl+O 保存,Ctrl+X 退出 nano source ~/.zshrc # 验证 adb version常见失败原因:
- 编辑了错误的配置文件(macOS Catalina后默认zsh,非bash)
- 忘记执行
source命令(修改后不重载,PATH仍无效)- 路径写错:
~/Downloads中的~是用户主目录缩写,不能写成/Users/yourname/Downloads(虽等效但易出错)
2. 手机端深度设置:不止USB调试,还有三处关键开关
ADB连通≠功能可用。很多用户adb devices能看到设备,却在运行Open-AutoGLM时卡在“无法获取屏幕截图”或“输入法切换失败”。这是因为Android对自动化操作有层层防护,必须手动解除。
2.1 开启开发者模式与USB调试(基础必做)
这是所有操作的前提,但细节决定成败:
开启开发者模式:
设置 → 关于手机 → 连续点击“版本号”7次 → 输入锁屏密码 → 提示“您现在处于开发者模式”验证:返回设置首页,应能看到“开发者选项”条目
启用USB调试:
设置 → 开发者选项 → 找到“USB调试” →开启开关注意:部分国产手机(华为、小米、OPPO)在此处还有“USB调试(安全设置)”二级开关,必须一并开启,否则ADB只能识别设备,无法执行命令
2.2 安装ADB Keyboard:解决所有输入类指令
Open-AutoGLM要执行“搜索美食”“输入账号密码”等操作,必须能向手机发送文本。Android原生不支持ADB直接输入中文,需借助第三方输入法。
正确安装流程:
- 下载 ADB Keyboard APK(推荐v1.3+,兼容Android 12+)
- 用USB线连接手机与电脑 → 在电脑端执行:
adb install adbkeyboard.apk - 手机上进入:设置 → 语言与输入法 → 虚拟键盘 →勾选“ADB Keyboard”
- 返回上一级 → 点击“默认键盘” → 选择“ADB Keyboard”作为当前输入法
关键验证:
- 断开USB线,用WiFi连接后,执行
adb shell input text "test"- 若手机输入框出现
test字样,说明ADB Keyboard工作正常- 若无反应,检查是否遗漏“设为默认键盘”这一步(仅勾选不启用无效)
2.3 授权ADB调试:一次点击,永久信任
首次用USB连接时,手机屏幕会弹出“允许USB调试吗?”对话框。必须勾选“始终允许”,再点确定。否则每次重启ADB或重连设备,都会重新弹窗,而Open-AutoGLM脚本无法处理这种交互式弹窗,直接卡死。
验证方式:
- 执行
adb devices,设备ID后应显示device(而非unauthorized)- 若显示
unauthorized,说明授权失败,需重新插拔USB并完成授权
3. 控制端部署:从克隆代码到启动代理的完整链路
环境就绪后,控制端部署本身非常轻量。Open-AutoGLM设计为“最小依赖”,所有复杂计算交给云端,本地只做图像采集、指令编排与ADB调度。
3.1 克隆仓库与安装依赖
# 克隆官方仓库(国内用户建议加 --depth 1 加速) git clone --depth 1 https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM # 创建虚拟环境(强烈推荐,避免包冲突) python -m venv venv source venv/bin/activate # macOS/Linux # venv\Scripts\activate # Windows CMD # venv\Scripts\Activate.ps1 # Windows PowerShell(需先执行 Set-ExecutionPolicy RemoteSigned) # 安装核心依赖 pip install -r requirements.txt pip install -e .注意事项:
requirements.txt中opencv-python-headless是关键依赖,用于截取手机屏幕。若安装失败,可单独执行pip install opencv-python-headless-e .表示“开发模式安装”,使本地修改代码后无需重复安装即可生效
3.2 设备连接验证:USB与WiFi双模式实测
在运行任何AI指令前,必须确保ADB能稳定通信。以下命令请逐条执行并确认输出:
USB直连(推荐新手首选)
# 1. 查看设备列表 adb devices # 正确输出示例: # List of devices attached # 1234567890ABCDEF device # 2. 截图测试(验证屏幕采集能力) adb shell screencap -p /sdcard/screen.png adb pull /sdcard/screen.png ./screen.png # 检查当前目录下是否生成 screen.png 文件,用图片查看器打开确认内容清晰 # 3. 输入法测试(验证ADB Keyboard) adb shell input text "hello" # 手机当前输入框应出现 helloWiFi远程连接(适合长期使用)
USB线缆易松动,WiFi更稳定。但需先用USB完成初始配置:
# 1. USB连接状态下,开启设备TCP/IP模式 adb tcpip 5555 # 2. 断开USB线,确保手机与电脑在同一WiFi网络 # 3. 查找手机IP(手机设置 → WLAN → 点击当前网络 → 查看IP地址) # 4. 连接WiFi设备 adb connect 192.168.1.100:5555 # 成功提示:connected to 192.168.1.100:5555 # 5. 后续可直接用此IP连接,无需USB adb devices # 应显示 192.168.1.100:5555 deviceWiFi连接失败排查:
- 手机IP是否为局域网IP(192.168.x.x 或 10.x.x.x)?公网IP无法直连
- 路由器是否开启AP隔离(企业网络常见)?需关闭才能设备互访
- 防火墙是否拦截5555端口?macOS用户可临时关闭防火墙测试
4. 启动AI代理:命令行与Python API双路径详解
当adb devices稳定显示设备,且截图/输入测试通过,就到了最激动人心的环节:让AI接管你的手机。
4.1 命令行一键启动(最快上手)
python main.py \ --device-id 1234567890ABCDEF \ --base-url http://192.168.1.200:8800/v1 \ --model "autoglm-phone-9b" \ "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"参数详解(务必按需替换):
--device-id:从adb devices输出中复制的设备ID(USB)或IP:端口(WiFi)--base-url:云服务器地址,格式为http://<服务器IP>:<端口>/v1。例如你用vLLM部署在阿里云ECS,映射端口8800,则填http://47.98.100.50:8800/v1--model:模型名称,需与云服务器部署的模型名严格一致(区分大小写)- 最后字符串:你的自然语言指令,引号不可省略
成功标志:
- 终端输出
Connecting to device...→Capturing screenshot...→Sending to LLM...→Executing action: tap(120, 340)- 手机屏幕自动执行对应操作(如点击搜索框、输入文字、点击关注)
4.2 Python API集成(适合嵌入自有项目)
如果你需要将Phone Agent能力集成到自己的应用中,而非仅用命令行,phone_agent.adb模块提供了简洁API:
from phone_agent.adb import ADBConnection, list_devices # 初始化连接管理器 conn = ADBConnection() # 连接指定设备(支持USB ID或WiFi IP) success, message = conn.connect("192.168.1.100:5555") print(f"连接状态: {message}") # success=True 表示连接成功 # 获取所有已连接设备信息 devices = list_devices() for device in devices: print(f"设备ID: {device.device_id}, 类型: {device.connection_type.value}") # (可选)为USB设备启用WiFi调试 if "usb" in str(devices[0].connection_type): success, msg = conn.enable_tcpip(5555) ip = conn.get_device_ip() print(f"设备WiFi IP: {ip}") # 执行单次操作(示例:点击坐标) conn.tap(120, 340) # 断开连接 conn.disconnect("192.168.1.100:5555")实用技巧:
ADBConnection对象可复用,不必每次新建tap(x, y)、swipe(x1,y1,x2,y2)、input_text("text")等方法直接映射ADB命令,无需拼接字符串- 错误处理已内置,
success返回布尔值,message包含详细错误信息(如“设备未响应”“截图超时”)
5. 故障排除手册:95%的问题都在这五类里
部署过程中遇到问题?先别重装,对照以下高频场景快速定位:
5.1 ADB设备列表为空(List of devices attached)
- 现象:
adb devices只显示标题,无设备 - 根因与解法:
- USB线问题:换一根数据线(充电线可能不支持数据传输)
- 驱动未安装:Windows需安装手机厂商USB驱动(华为HiSuite、小米Mi PC Suite)
- Android版本限制:Android 11+ 默认禁用ADB over network,必须用USB首次授权
5.2 连接成功但无法截图(screencap: Permission denied)
- 现象:
adb shell screencap报错权限不足 - 根因与解法:
- 开发者选项中未开启“USB调试(安全设置)”(华为/小米特有)
- 手机厂商限制:部分品牌(如vivo)需在“开发者选项”中额外开启“OEM解锁”
5.3 指令执行卡住,无任何日志输出
- 现象:运行
main.py后光标闪烁,无后续打印 - 根因与解法:
- 云服务器URL错误:检查
--base-url是否可被本地电脑访问(在浏览器打开http://IP:端口/health应返回{"status":"ok"}) - 模型未加载:云服务器端vLLM日志是否显示
Loaded model?若卡在Loading model,检查显存是否足够(9B模型需≥12GB VRAM)
- 云服务器URL错误:检查
5.4 AI执行错误操作(点错位置、输错文字)
- 现象:手机执行了与指令不符的动作
- 根因与解法:
- 屏幕分辨率不匹配:Open-AutoGLM默认适配1080p,若手机为2K屏,需在
config.yaml中修改screen_width和screen_height - ADB Keyboard未设为默认:再次检查手机“语言与输入法”设置
- 屏幕分辨率不匹配:Open-AutoGLM默认适配1080p,若手机为2K屏,需在
5.5 WiFi连接频繁断开
- 现象:
adb connect成功,但几分钟后adb devices显示offline - 根因与解法:
- 手机休眠:开启开发者选项中的“不锁定屏幕”和“保持唤醒状态”
- WiFi节能:在手机设置中关闭“WLAN休眠策略”(各品牌路径不同,搜索“WLAN高级设置”)
6. 总结:从ADB连通到AI接管,你只差这六步
回顾整个流程,Open-AutoGLM的部署难点从来不在代码本身,而在于打通“人-电脑-手机-云端”这四层物理与逻辑链路。我们梳理出最精简、最防错的六步通关路径:
- ADB环境落地:Windows配Path、macOS改zshrc,
adb version是唯一验收标准 - 手机深度授权:开发者模式 + USB调试 + USB调试(安全设置) + ADB Keyboard设为默认,四者缺一不可
- 连接双重验证:
adb devices看设备在线,adb shell screencap看截图可用,二者全通才算连接稳固 - 控制端轻量部署:
git clone→pip install→pip install -e .,三行命令完成本地准备 - 云端地址对齐:
--base-url必须是云服务器可被本地访问的地址,不是localhost也不是内网IP - 指令启动即验:首条指令选简单任务(如“打开设置”),避免复杂语义干扰初期验证
走到这一步,你已拥有了一个真正的手机AI助理。它不依赖App Store审核,不消耗手机本地算力,所有智能都来自云端,所有操作都经你授权。下一步,你可以尝试让它自动整理微信聊天记录、批量下载小红书笔记、甚至帮你抢演唱会门票——而这一切,都始于那个看似简单的adb devices命令。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。