用Python调用Open-AutoGLM API?远程控制实战教程
1. 引言
1.1 业务场景描述
在移动应用自动化测试、智能客服系统、AI助手开发等场景中,传统脚本化操作面临维护成本高、适配性差的问题。随着多模态大模型的发展,基于自然语言指令驱动的手机自动化成为可能。Open-AutoGLM 作为智谱开源的手机端 AI Agent 框架,能够通过视觉理解与 ADB 控制实现拟人化操作,极大降低了自动化流程的开发门槛。
本文将聚焦于如何使用 Python 调用 Open-AutoGLM 提供的远程 API 接口,完成从环境搭建到实际任务执行的完整实践路径,帮助开发者快速构建可远程控制的智能手机代理系统。
1.2 痛点分析
现有手机自动化方案普遍存在以下问题:
- 脚本依赖强:需预先编写 XPath 或 ID 定位逻辑,界面变更即失效;
- 跨应用难:难以处理涉及多个 App 的复杂任务流(如“从微信跳转淘宝下单”);
- 交互能力弱:无法理解图文混排内容或动态弹窗;
- 部署不灵活:本地运行限制了设备管理规模。
而 Open-AutoGLM 借助视觉语言模型(VLM)和 ADB 协议,实现了以自然语言为输入、自动解析屏幕并生成操作序列的能力,有效解决了上述痛点。
1.3 方案预告
本教程将详细介绍以下内容:
- 如何配置本地控制端环境;
- 使用 USB 和 WiFi 两种方式连接安卓设备;
- 部署 Open-AutoGLM 控制代码;
- 通过命令行和 Python API 两种方式调用远程服务;
- 实现一个完整的“搜索并关注抖音号”自动化案例;
- 常见问题排查建议。
2. 技术方案选型
2.1 可选方案对比
| 方案 | 技术栈 | 自然语言支持 | 远程控制 | 多模态理解 | 开源状态 |
|---|---|---|---|---|---|
| Appium + Selenium | UI Automator | ❌ | ✅(需额外封装) | ❌ | ✅ |
| Tasker + Auto.js | JavaScript 脚本 | ❌ | ❌ | ❌ | ✅ |
| Open-AutoGLM | VLM + ADB | ✅ | ✅ | ✅ | ✅ |
| Google Pixel Agent(实验版) | Proprietary | ✅ | ✅ | ✅ | ❌ |
可以看出,Open-AutoGLM 是目前唯一同时具备自然语言驱动、多模态感知、远程调试能力和完全开源特性的手机自动化框架,特别适合需要低代码、高泛化能力的 AI Agent 场景。
2.2 为什么选择 Open-AutoGLM
- 语义理解能力强:基于 GLM-4.5V 视觉模型,能识别按钮文本、图标含义及上下文关系;
- 无需修改 App:纯外部操控,适用于任意第三方应用;
- 支持复杂任务规划:可自动拆解多步骤指令,如“打开小红书 → 搜索美食 → 点赞前三篇笔记”;
- 内置安全机制:敏感操作需人工确认,防止误触;
- 远程调试友好:支持 WiFi ADB,便于集群化管理设备。
3. 环境准备与设备连接
3.1 硬件与软件要求
- 操作系统:Windows 10+/macOS Monterey+
- Python 版本:建议 3.10 或以上
- 安卓设备:Android 7.0+ 手机或模拟器(推荐真机)
- ADB 工具包:Android SDK Platform Tools
注意:确保电脑与手机处于同一局域网,若使用远程服务器还需开放对应端口。
3.2 ADB 环境配置
Windows 配置步骤:
- 下载
platform-tools并解压至本地目录(如C:\adb)。 - 打开“系统属性” → “高级” → “环境变量”。
- 在“系统变量”中找到
Path,点击编辑,添加 ADB 解压路径。 - 打开命令提示符,输入:
adb version输出类似Android Debug Bridge version 1.0.41表示安装成功。
macOS 配置方法:
在终端执行以下命令(假设解压路径为~/Downloads/platform-tools):
export PATH=${PATH}:~/Downloads/platform-tools可将其写入.zshrc或.bash_profile文件实现永久生效。
4. 手机端设置
4.1 开启开发者选项
进入手机“设置” → “关于手机” → 连续点击“版本号”7次,直到提示“您已开启开发者模式”。
4.2 启用 USB 调试
返回设置主界面 → “开发者选项” → 开启“USB 调试”。
安全提示:请仅在可信电脑上授权调试,避免数据泄露。
4.3 安装 ADB Keyboard
该输入法允许通过 ADB 发送文本,解决部分 App 不响应虚拟点击的问题。
- 下载 ADB Keyboard APK 并安装。
- 进入“语言与输入法”设置 → 将默认输入法切换为ADB Keyboard。
5. 部署 Open-AutoGLM 控制端
5.1 克隆项目仓库
在本地终端执行:
git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM5.2 安装依赖
pip install -r requirements.txt pip install -e .若出现依赖冲突,建议使用虚拟环境:
python -m venv venv source venv/bin/activate # Linux/macOS # 或 venv\Scripts\activate # Windows6. 设备连接方式详解
6.1 USB 连接(推荐用于调试)
- 使用数据线连接手机与电脑。
- 手机弹出“允许USB调试?”对话框时,点击“允许”。
- 在终端运行:
adb devices预期输出:
List of devices attached 1234567890ABCDEF device记录设备 ID(如1234567890ABCDEF),后续用于连接。
6.2 WiFi 远程连接(生产环境首选)
适用于无物理连线的远程控制场景。
步骤一:通过 USB 启动 TCP/IP 模式
adb tcpip 5555此命令让设备监听 5555 端口。
步骤二:断开 USB,使用 IP 连接
先获取手机 IP 地址(可在“设置”→“WLAN”中查看),然后执行:
adb connect 192.168.x.x:5555再次运行adb devices应显示:
List of devices attached 192.168.x.x:5555 device此后即可拔掉数据线,实现无线控制。
7. 启动 AI 代理并执行任务
7.1 命令行方式调用
假设你的云服务器公网 IP 为203.0.113.10,映射端口为8800,设备 ID 为192.168.1.100:5555,执行以下命令:
python main.py \ --device-id 192.168.1.100:5555 \ --base-url http://203.0.113.10:8800/v1 \ --model "autoglm-phone-9b" \ "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"参数说明:
--device-id:ADB 设备标识,可通过adb devices获取;--base-url:远程 vLLM 服务地址,格式为http://<IP>:<port>/v1;--model:指定使用的模型名称;- 最后字符串为自然语言指令。
提示:首次运行会拉取模型缓存,后续速度更快。
7.2 使用 Python API 实现远程控制
更灵活的方式是通过编程接口集成到自有系统中。
示例代码:设备连接与状态查询
from phone_agent.adb import ADBConnection, list_devices # 创建 ADB 连接管理器 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")示例代码:发送自然语言指令
from phone_agent.client import PhoneAgentClient # 初始化客户端 client = PhoneAgentClient( base_url="http://203.0.113.10:8800/v1", model="autoglm-phone-9b", device_id="192.168.1.100:5555" ) # 发送指令 instruction = "打开小红书,搜索‘周末露营好去处’,点赞第一条笔记" response = client.run(instruction) # 输出执行结果 print("执行日志:") for step in response['steps']: print(f"- {step['action']} -> {step['status']}")关键优势:该方式可嵌入 Web 后端、定时任务或 RPA 流程中,实现全自动调度。
8. 实战案例:自动化社交媒体运营
8.1 场景需求
某新媒体团队希望每天自动完成以下任务:
- 打开抖音 → 搜索指定账号 → 关注;
- 打开小红书 → 搜索关键词 → 收藏前两篇笔记;
- 记录每次操作是否成功。
8.2 完整实现代码
import time from phone_agent.client import PhoneAgentClient from typing import List, Dict class SocialMediaBot: def __init__(self, base_url: str, model: str, device_id: str): self.client = PhoneAgentClient(base_url=base_url, model=model, device_id=device_id) def follow_douyin_account(self, uid: str) -> bool: instruction = f"打开抖音,搜索抖音号 {uid},进入主页并点击关注按钮" return self._execute_with_retry(instruction, max_retries=3) def collect_xiaohongshu_posts(self, keyword: str, count: int = 2) -> bool: instruction = f"打开小红书,搜索'{keyword}',浏览结果页,收藏前{count}篇笔记" return self._execute_with_retry(instruction, max_retries=3) def _execute_with_retry(self, instruction: str, max_retries: int) -> bool: for i in range(max_retries): try: result = self.client.run(instruction) if result.get('success'): print(f"✅ 成功执行: {instruction[:30]}...") return True else: print(f"⚠️ 第{i+1}次失败: {result.get('error')}") except Exception as e: print(f"❌ 异常: {str(e)}") time.sleep(5) print("❌ 最终失败") return False # 配置参数 BASE_URL = "http://203.0.113.10:8800/v1" MODEL_NAME = "autoglm-phone-9b" DEVICE_ID = "192.168.1.100:5555" # 启动机器人 bot = SocialMediaBot(BASE_URL, MODEL_NAME, DEVICE_ID) # 执行任务 bot.follow_douyin_account("dycwo11nt61d") bot.collect_xiaohongshu_posts("城市骑行路线")8.3 运行效果说明
- 模型会自动识别 App 图标并启动;
- 在搜索框中通过 ADB Keyboard 输入目标内容;
- 分析页面结构,定位“关注”或“收藏”按钮并点击;
- 返回每一步的操作日志,便于监控与审计。
9. 常见问题与优化建议
9.1 常见问题排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| ADB 连接失败 | 防火墙阻止、USB 调试未开启 | 检查设备授权、重启 ADB 服务 |
| 模型无响应 | 服务端未启动或端口未映射 | 确认 vLLM 服务正常运行,检查--host 0.0.0.0参数 |
| 操作乱码或错位 | 屏幕分辨率适配问题 | 更新至最新版 Open-AutoGLM,支持动态缩放 |
| 输入失败 | ADB Keyboard 未设为默认 | 重新设置输入法并在设置中启用 |
9.2 性能优化建议
- 使用 SSD 存储模型缓存:加快图像编码与推理速度;
- 限制最大上下文长度:设置
max-model-len=4096避免显存溢出; - 启用批量处理:对相似任务合并请求,降低通信开销;
- 定期清理设备缓存:避免长时间运行导致内存泄漏。
10. 总结
10.1 实践经验总结
通过本次实践,我们验证了 Open-AutoGLM 在真实场景下的可用性与灵活性。其核心价值在于:
- 自然语言驱动:大幅降低自动化脚本编写门槛;
- 远程可控性强:支持 WiFi ADB,适合设备集群管理;
- 多模态理解准确:能应对复杂 UI 变化,鲁棒性优于传统方案;
- 易于集成扩展:提供清晰的 Python API,便于二次开发。
10.2 最佳实践建议
- 优先使用 WiFi 连接:提升部署灵活性,减少物理依赖;
- 加入异常重试机制:网络波动可能导致单步失败,应设计容错逻辑;
- 敏感操作人工复核:如支付、删除等动作建议增加确认环节;
- 定期更新模型权重:关注官方 GitHub 动态,获取性能改进。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。