手把手教你部署Open-AutoGLM,让AI替你点外卖
1. 引言
随着多模态大模型的快速发展,AI代理(Agent)正逐步从理论走向实际应用。Open-AutoGLM 是由智谱开源的一款基于视觉语言模型的手机端 AI Agent 框架,名为 AutoGLM-Phone。它能够通过 ADB(Android Debug Bridge)自动操控安卓设备,结合屏幕截图与自然语言理解能力,实现“你说指令,AI帮你操作”的智能体验。
例如,只需输入“打开小红书搜索美食”,系统即可自动解析意图、识别当前界面元素、规划点击路径,并完成整个操作流程。更进一步地,它可以执行复杂任务,如“在美团上点一份麦当劳巨无霸”。本文将带你从零开始,完整部署 Open-AutoGLM 控制端,连接真实设备,并实现自动化任务执行。
本教程属于实践应用类文章,重点在于工程落地和可复现性,涵盖环境配置、代码部署、设备连接、命令调用及常见问题排查,确保读者能快速上手并成功运行 AI 手机代理。
2. 环境准备与依赖安装
2.1 硬件与软件要求
为顺利部署 Open-AutoGLM,需准备以下软硬件环境:
- 操作系统:Windows 或 macOS(推荐使用 macOS/Linux 避免路径兼容问题)
- Python 版本:建议 Python 3.10 或以上版本
- 安卓设备:Android 7.0+ 的真机或模拟器
- ADB 工具:用于设备通信与控制
- 网络环境:本地电脑与云服务器之间可互通,防火墙开放对应端口
2.2 安装 ADB 调试工具
ADB 是 Android SDK 的核心组件,用于与设备建立连接。
Windows 安装步骤:
- 下载 Android Platform Tools 并解压。
- 将解压目录添加到系统
PATH环境变量中:Win + R→ 输入sysdm.cpl→ 高级 → 环境变量- 在“系统变量”中的
Path添加 ADB 解压路径
- 验证安装:
adb version输出类似Android Debug Bridge version 1.0.41表示安装成功。
macOS 安装方法:
在终端执行以下命令(假设 platform-tools 解压至 Downloads 目录):
export PATH=${PATH}:~/Downloads/platform-tools可将其写入.zshrc或.bash_profile实现永久生效。
3. 手机端设置与权限配置
3.1 开启开发者模式与 USB 调试
- 进入手机“设置” → “关于手机”
- 连续点击“版本号”7次,直到提示“您已进入开发者模式”
- 返回设置主界面 → “开发者选项” → 启用“USB 调试”
注意:部分厂商(如小米、华为)还需额外开启“OEM 解锁”或“USB 安装”权限。
3.2 安装 ADB Keyboard 输入法
由于 AI 无法直接调用标准输入法进行文本输入,必须使用专为 ADB 设计的虚拟键盘。
- 下载 ADB Keyboard APK 并安装到手机
- 进入“设置” → “语言与输入法” → “默认键盘” → 切换为
ADB Keyboard
安装后可通过以下命令测试输入:
adb shell am broadcast -a ADB_INPUT_TEXT --es msg "Hello_AI"若手机输入框出现 "Hello_AI",说明配置成功。
4. 部署 Open-AutoGLM 控制端
4.1 克隆项目仓库
在本地电脑创建工作目录并克隆官方仓库:
git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM当前测试基于
master分支,最后一次 commit hash 为c2fe957fc47302c1356a8c80d758efd4724ddb5f,后续更新可能影响兼容性。
4.2 创建虚拟环境并安装依赖
推荐使用虚拟环境隔离依赖:
python3 -m venv .venv source .venv/bin/activate # Linux/macOS # 或 .venv\Scripts\activate # Windows安装所需依赖:
pip install -r requirements.txt pip install -e .其中-e .表示以开发模式安装,便于后续修改源码调试。
4.3 验证模型服务连通性
假设你已在云服务器部署了 vLLM 提供的推理服务,地址为http://<server_ip>:8000/v1,可通过内置脚本验证连接:
python scripts/check_deployment_cn.py \ --base-url http://<server_ip>:8000/v1 \ --model autoglm-phone-9b预期输出应包含"Model is ready"和响应时间信息,表示模型服务正常。
若出现连接超时,请检查云服务器防火墙是否放行端口(如 8000),以及内网安全组策略。
5. 设备连接与远程控制
5.1 查看设备状态
确保手机通过 USB 连接电脑,执行:
adb devices正常输出如下:
List of devices attached 10.42.0.85:46581 device记录该设备 ID,后续用于指定目标设备。
5.2 使用 WiFi 进行无线连接(推荐)
长期运行建议使用无线 ADB,避免线缆干扰。
- 先通过 USB 连接,启用 TCP/IP 模式:
adb tcpip 5555- 断开 USB,使用 IP 地址连接:
adb connect 192.168.x.x:5555- 再次执行
adb devices确认连接状态。
注意:设备与电脑需处于同一局域网下。
5.3 Python API 方式管理连接
除了命令行,也可通过编程方式控制连接:
from phone_agent.adb import ADBConnection, list_devices # 创建连接管理器 conn = ADBConnection() # 连接远程设备 success, message = conn.connect("192.168.1.100:5555") print(f"连接状态: {message}") # 获取已连接设备列表 devices = list_devices() for device in devices: print(f"{device.device_id} - {device.connection_type.value}") # 可选:获取设备局域网 IP ip = conn.get_device_ip() print(f"设备 IP: {ip}") # 断开连接 conn.disconnect("192.168.1.100:5555")此方式适合集成进自动化系统或 Web 后台。
6. 启动 AI 代理并执行任务
6.1 命令行方式运行简单任务
启动主程序并下发自然语言指令:
python main.py \ --device-id 10.42.0.85:46581 \ --base-url http://<cloud_server_ip>:8000/v1 \ --model "autoglm-phone-9b" \ "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"参数说明:
--device-id:来自adb devices的设备标识--base-url:云上 vLLM 服务的公网访问地址--model:模型名称,固定为autoglm-phone-9b- 最后字符串:用户自然语言指令
执行过程中,AI 会周期性截屏、上传至模型、解析 UI 元素、生成动作(点击、滑动、输入等),最终完成任务。
6.2 处理首次运行报错:ADB Keyboard 检测问题
部分用户反馈首次运行时报错:
Error: ADB Keyboard not detected or not set as default.尽管已正确安装并设置默认输入法,但检测逻辑可能存在误判。临时解决方案是修改源码绕过检测:
编辑main.py文件第 127 行附近代码:
# 修改前 if not self._is_adb_keyboard_enabled(): raise RuntimeError("ADB Keyboard not detected...") # 修改后 # if not self._is_adb_keyboard_enabled(): # raise RuntimeError("ADB Keyboard not detected...") pass # 绕过检测提醒:此为临时方案,建议后续关注官方修复补丁。
6.3 执行复杂任务:点外卖实战
尝试更高阶任务:“在美团上点一份麦当劳巨无霸”。
python main.py \ --device-id 10.42.0.85:46581 \ --base-url http://<cloud_server_ip>:8000/v1 \ --model "autoglm-phone-9b" \ "在美团上点个麦当劳巨无霸"AI 将自动完成以下流程:
- 打开美团 App(若未安装则提示)
- 进入外卖模块
- 搜索“麦当劳”
- 进入店铺页查找“巨无霸汉堡”
- 加购并跳转结算页
- 提示用户手动支付(涉及敏感操作需人工确认)
整个过程耗时约 60–120 秒,取决于模型响应速度与设备性能。
7. 常见问题与排查建议
7.1 连接失败类问题
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
adb devices无设备显示 | USB 调试未开启 | 检查开发者选项 |
unauthorized设备 | 未授权调试 | 手机弹窗点击“允许” |
connection refused | 防火墙阻断 | 放行云服务器端口 |
failed to authenticate | ADB 密钥过期 | 删除~/.android/adbkey重新连接 |
7.2 模型服务相关异常
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 模型返回乱码或空响应 | 显存不足或 max-model-len 设置不当 | 调整 vLLM 启动参数,增加--max-model-len 8192 |
| 请求超时 | 推理延迟过高 | 升级 GPU 或降低 batch size |
| Tokenization 错误 | tokenizer 配置不匹配 | 确保使用与训练一致的 tokenizer |
7.3 AI 操作失败场景
| 场景 | 原因分析 | 应对策略 |
|---|---|---|
| 无法识别按钮文字 | 屏幕分辨率过高或字体模糊 | 缩小截图区域或增强对比度 |
| 输入中文失败 | ADB Keyboard 不支持中文 | 当前版本仅支持英文输入,中文需手动补全 |
| 循环操作无进展 | 模型陷入动作循环 | 设置最大步数限制(如--max-steps 20) |
8. 总结
本文详细介绍了如何从零部署 Open-AutoGLM 这一手机端 AI Agent 框架,实现了“用自然语言驱动手机操作”的完整链路。我们完成了以下关键步骤:
- 环境搭建:配置 ADB 工具链与 Python 开发环境
- 设备准备:开启开发者权限并安装 ADB Keyboard
- 代码部署:克隆仓库、安装依赖、验证服务连通性
- 设备连接:支持 USB 与 WiFi 两种方式,推荐无线连接
- 任务执行:通过命令行或 API 下发指令,AI 自动完成操作
- 问题排查:总结常见错误及其解决方案
Open-AutoGLM 的出现标志着手机自动化进入了“语义驱动”时代。虽然目前仍存在响应慢、中文输入受限等问题,但其开源属性和模块化设计为二次开发提供了广阔空间。未来可结合本地轻量化模型、动作缓存机制、GUI 元素索引优化等方式提升效率。
对于开发者而言,该框架不仅可用于个人效率工具开发,还可拓展至自动化测试、无障碍辅助、远程运维等多个领域。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。