AutoGLM-Phone云端部署:模型服务与控制端分离方案
1. 背景与架构设计
1.1 Open-AutoGLM 框架概述
Open-AutoGLM 是由智谱开源的手机端 AI Agent 框架,旨在通过多模态理解与自动化操作能力,实现自然语言驱动的智能设备交互。该框架基于视觉语言模型(VLM)构建,能够感知手机屏幕内容、解析用户意图,并结合 ADB(Android Debug Bridge)完成自动点击、滑动、输入等操作。
其核心优势在于将复杂的 UI 自动化任务转化为“感知-规划-执行”闭环流程。用户只需用自然语言描述目标,如“打开小红书搜索美食”,系统即可自动识别当前界面元素、推理下一步动作并执行完整操作链。
1.2 系统架构:模型服务与控制端分离
在实际部署中,AutoGLM-Phone采用模型服务与控制端分离的架构设计:
- 云端运行大模型服务:负责图像理解、指令解析和动作规划。
- 本地运行控制端:负责设备连接、截图获取、指令下发和状态同步。
这种架构的优势包括:
- 降低本地资源消耗:无需在本地部署大模型,节省显存与算力。
- 提升响应效率:通过轻量级 API 调用实现快速推理反馈。
- 支持远程调试与多设备管理:可通过网络统一调度多个设备。
整个系统的数据流如下:
- 控制端从手机截取屏幕图像;
- 将图像与用户指令打包发送至云端模型服务;
- 云端模型返回解析结果与建议操作;
- 控制端执行对应 ADB 命令并循环验证效果。
2. 云端模型服务部署
2.1 部署环境要求
为确保 AutoGLM-Phone 模型高效运行,推荐使用具备以下配置的云服务器:
- GPU:NVIDIA A100 或以上(至少 40GB 显存)
- CPU:16 核以上
- 内存:64GB+
- 存储:SSD 100GB+(用于缓存模型权重)
- 操作系统:Ubuntu 20.04 LTS
- Python 版本:3.10+
所需软件依赖:
- Docker / NVIDIA Container Toolkit(可选但推荐)
- vLLM ≥ 0.4.0
- FastAPI + Uvicorn(作为推理接口)
2.2 模型服务启动步骤
目前官方提供autoglm-phone-9b模型,基于 vLLM 进行高性能推理服务部署。
步骤一:拉取并运行容器镜像(推荐方式)
docker run -d \ --gpus all \ -p 8800:8000 \ --name autoglm-vllm \ ghcr.io/zai-org/autoglm-phone-vllm:latest \ --model zai-org/autoglm-phone-9b \ --tensor-parallel-size 1 \ --max-model-len 4096 \ --dtype half \ --gpu-memory-utilization 0.95注意:若显存不足,可尝试调整
--max-model-len至 2048 或启用--enforce-eager减少内存开销。
步骤二:验证服务可用性
curl http://<your-server-ip>:8800/v1/models预期返回包含autoglm-phone-9b的模型信息。
步骤三:开放防火墙端口
确保云服务商安全组规则允许外部访问映射端口(如 8800),否则本地控制端无法连接。
3. 本地控制端部署与设备连接
3.1 硬件与环境准备
| 组件 | 要求 |
|---|---|
| 操作系统 | Windows / macOS / Linux |
| Python | 3.10+ |
| 安卓设备 | Android 7.0+ 手机或模拟器 |
| ADB 工具 | platform-tools 最新版 |
ADB 安装与配置
Windows 用户:
- 下载 Android SDK Platform Tools 并解压。
- 将解压路径添加到系统环境变量
Path中。 - 打开命令行输入
adb version验证是否成功。
macOS 用户:
export PATH=${PATH}:~/Downloads/platform-tools adb version建议将上述export命令写入.zshrc或.bash_profile实现永久生效。
3.2 手机端设置
开启开发者选项与 USB 调试
- 进入设置 → 关于手机 → 版本号,连续点击 7 次以开启“开发者模式”。
- 返回设置主菜单,进入开发者选项,启用USB 调试。
- 当首次连接电脑时,手机会弹出授权提示,请点击“允许”。
安装 ADB Keyboard(关键组件)
由于 AutoGLM-Phone 需要自动输入文本(如搜索关键词),必须安装专用输入法:
- 下载 ADB Keyboard APK 并安装。
- 进入设置 → 语言与输入法 → 默认键盘,切换为ADB Keyboard。
- 在输入场景中选择该输入法以激活。
提示:此输入法不支持中文直接输入,需通过 ADB 发送 Unicode 字符串实现。
3.3 部署 Open-AutoGLM 控制代码
克隆仓库并安装依赖
git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM pip install -r requirements.txt pip install -e .推荐使用虚拟环境(venv 或 conda)避免依赖冲突。
3.4 设备连接方式
USB 连接(稳定首选)
- 使用 USB 数据线连接手机与电脑。
- 执行命令查看设备状态:
adb devices输出应类似:
List of devices attached ABCDEF1234567890 device其中ABCDEF1234567890即为设备 ID。
WiFi 远程连接(适用于远程调试)
- 先通过 USB 连接设备,开启 TCP/IP 模式:
adb tcpip 5555- 断开 USB,使用 IP 地址连接:
adb connect 192.168.x.x:5555注意:设备与电脑需处于同一局域网下。可通过
adb shell ifconfig wlan0获取设备 IP。
4. 启动 AI 代理与任务执行
4.1 命令行方式启动任务
在项目根目录下运行:
python main.py \ --device-id ABCDEF1234567890 \ --base-url http://<cloud-server-ip>:8800/v1 \ --model "autoglm-phone-9b" \ "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"参数说明:
--device-id:通过adb devices获取的设备标识。--base-url:云端 vLLM 服务地址,格式为http://IP:PORT/v1。- 最后字符串:用户的自然语言指令。
系统将自动开始循环执行以下流程:
- 截图 → 2. 上传至云端 → 3. 获取动作建议 → 4. 执行 ADB 操作 → 5. 判断是否完成
4.2 使用 Python API 实现远程控制
对于需要集成进其他系统的场景,可使用内置 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}") # 在 USB 设备上启用 TCP/IP success, message = conn.enable_tcpip(5555) if success: ip = conn.get_device_ip() print(f"设备 IP: {ip}") # 断开连接 conn.disconnect("192.168.1.100:5555")该 API 支持:
- 多设备管理
- 动态 IP 获取
- 异常重连机制
- 输入事件模拟(tap/swipe/type)
5. 安全机制与人工干预
5.1 敏感操作确认机制
为防止误操作造成风险(如支付、删除应用等),AutoGLM-Phone 内置了敏感行为拦截策略:
- 当模型检测到可能涉及隐私或资金的操作时,会暂停执行并等待人工确认。
- 可通过配置文件定义敏感关键词(如“付款”、“转账”、“卸载”)。
例如,在config.yaml中添加:
sensitive_keywords: - payment - transfer - uninstall - delete account触发后,程序将输出提示:
[WARNING] Sensitive action detected: "Proceed to payment". Manual confirmation required.5.2 登录与验证码场景处理
面对图形验证码、短信验证等非结构化输入场景,系统支持两种应对策略:
- 自动跳过 + 通知用户:模型识别到验证码界面后停止执行,并推送提醒。
- 人工接管模式:用户手动完成验证后,继续交由 AI 执行后续步骤。
可通过 CLI 参数启用通知回调:
python main.py \ --device-id ... \ --on-hold-callback "notify_user('Verification needed')"6. 常见问题排查与优化建议
6.1 连接类问题
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
adb devices无设备显示 | 未开启 USB 调试 | 检查开发者选项 |
unauthorized状态 | 未授权电脑 | 手机端点击“允许调试” |
connection refused | 防火墙阻断 | 开放云服务器端口 |
timeout | WiFi 不稳定 | 改用 USB 连接 |
6.2 模型服务异常
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 返回乱码或空响应 | max-model-len 设置过小 | 调整至 4096 |
| OOM 错误 | 显存不足 | 启用--enforce-eager或换用更大显存 GPU |
| 响应延迟高 | 批处理过大 | 设置--max-num-seqs=1 |
6.3 性能优化建议
- 使用 SSD 存储模型缓存:减少加载时间。
- 限制并发请求数:避免 GPU 上下文频繁切换。
- 定期清理 adb 缓存:
adb kill-server && adb start-server - 关闭不必要的后台应用:减少屏幕干扰元素。
7. 总结
7.1 方案价值回顾
本文详细介绍了AutoGLM-Phone在云端部署下的完整实践路径,重点实现了模型服务与控制端的物理分离。这一架构不仅降低了终端设备的计算压力,还提升了模型推理的稳定性与可扩展性。
核心亮点包括:
- 基于 vLLM 的高性能模型服务部署;
- 支持 USB 与 WiFi 双模式设备连接;
- 提供 CLI 与 Python API 两种调用方式;
- 内建安全机制与人工接管流程。
7.2 应用前景展望
该方案特别适用于以下场景:
- 移动端自动化测试;
- 用户行为模拟与数据分析;
- 无障碍辅助工具开发;
- 跨平台 RPA 流程编排。
未来随着多模态模型能力增强,AutoGLM-Phone 有望进一步支持更复杂的应用导航、跨 App 协作与长期记忆规划。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。