Open-AutoGLM实战教程:Python API远程调用AI代理详细步骤
1. 什么是Open-AutoGLM?手机端AI Agent的全新打开方式
Open-AutoGLM 是智谱开源的一套面向移动端的 AI Agent 框架,专为在真实手机设备上运行智能助理任务而设计。它不是简单的文本模型封装,而是一个融合视觉理解、意图解析、动作规划与设备操控的完整闭环系统。
你可能用过各种大模型聊天工具,但它们大多停留在“说”的层面;而 Open-AutoGLM 的核心价值在于——它能真正“做”事。比如你对它说一句:“帮我把微信里昨天收到的那张发票截图发到邮箱”,它就能自动打开微信、定位聊天记录、长按识别图片、复制文字、打开邮箱 App、粘贴内容并发送。整个过程无需你点一下屏幕,也不需要写一行自动化脚本。
这个能力背后,是 AutoGLM-Phone 框架的多模态协同:它通过摄像头或屏幕截图实时感知当前界面(视觉输入),结合自然语言指令(文本输入),用视觉语言模型理解“这是什么页面”“按钮在哪”“当前状态如何”,再用推理模型规划“下一步该点哪、滑哪里、输什么”,最后通过 ADB(Android Debug Bridge)精准执行点击、滑动、输入等操作。
更关键的是,它支持真机远程控制——你不用把手机插在本地电脑上,只要手机和服务器在同一局域网,甚至通过公网连接,就能让远在千里之外的 AI 为你操作手机。这为测试、教学、无障碍辅助、批量设备管理等场景打开了实实在在的可能性。
2. 环境准备:从零搭建本地控制端
要让 Open-AutoGLM 在你的电脑上跑起来,不需要高性能显卡,也不需要复杂编译。整个控制端完全基于 Python,轻量、干净、开箱即用。我们分三步走:装好 ADB、配好手机、拉下代码。
2.1 安装并配置ADB工具
ADB 是 Android 系统的调试桥接工具,也是 Open-AutoGLM 控制手机的“手”。无论你用 Windows 还是 macOS,都需要先让它在命令行里随时可用。
Windows 用户:
- 去 Android SDK Platform-Tools 官网 下载最新版 ZIP 包;
- 解压到一个固定路径,比如
C:\adb; - 按
Win + R输入sysdm.cpl→ “高级”选项卡 → “环境变量” → 在“系统变量”中找到Path→ 点击“编辑” → “新建” → 粘贴你解压的路径(如C:\adb); - 打开新终端窗口,输入
adb version,看到版本号就说明成功了。
macOS 用户:
- 同样下载 ZIP 包,解压到
~/Downloads/platform-tools(或其他你喜欢的位置); - 打开 Terminal,运行以下命令(只需执行一次):
echo 'export PATH=$PATH:~/Downloads/platform-tools' >> ~/.zshrc source ~/.zshrc- 输入
adb version验证是否生效。
小提示:如果你用的是 M 系列 Mac,下载时注意选带
arm64标识的版本,避免兼容问题。
2.2 手机端设置:三步打开“被操控权限”
手机不是插上线就能被控制的,它得先“同意”。这个过程只需要三步,5 分钟搞定:
- 开启开发者模式:进入「设置」→「关于手机」→ 连续点击「版本号」7 次,直到弹出“您现在处于开发者模式”的提示;
- 启用 USB 调试:返回「设置」→「系统」→「开发者选项」→ 找到并开启「USB 调试」;
- 安装 ADB Keyboard(关键!):
- 去 GitHub 搜索
adb-keyboard,下载最新 APK(如adb-keyboard-v1.0.0.apk); - 用文件管理器安装;
- 进入「设置」→「语言与输入法」→「虚拟键盘」→ 把「ADB Keyboard」设为默认输入法。
为什么必须装这个?因为 Open-AutoGLM 有时需要向 App 输入文字(比如搜索框),而标准输入法会弹出软键盘遮挡界面。ADB Keyboard 是纯后台输入,不干扰 UI,是稳定自动化的基石。
- 去 GitHub 搜索
2.3 克隆并安装控制端代码
现在本地环境和手机都准备好了,我们来部署真正的“指挥中心”:
# 1. 克隆官方仓库(推荐使用 HTTPS) 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. 安装依赖(含核心模块 phone_agent) pip install -r requirements.txt pip install -e .这一步完成后,你的电脑就拥有了完整的控制能力:连接设备、截图、识别界面、发送指令、读取反馈——全部封装在phone_agent这个 Python 包里,后续所有操作都围绕它展开。
3. 设备连接:USB 与 WiFi 两种方式实测对比
Open-AutoGLM 支持两种连接方式:传统 USB 直连,以及更灵活的 WiFi 远程连接。我们分别说明怎么用、有什么区别、什么场景该选哪个。
3.1 USB 连接:最稳、最快、新手首选
这是最简单可靠的入门方式。只需一根数据线,手机和电脑物理相连:
# 查看是否识别到设备 adb devices正常输出类似:
List of devices attached ZY322FDQJL device其中ZY322FDQJL就是你的设备 ID,后面启动代理时要用到。如果显示unauthorized,请在手机上弹出的授权框里点“允许”。
优势:延迟低(<100ms)、稳定性高、无需网络配置
❌ 局限:必须插线、无法远程、多设备管理稍麻烦
3.2 WiFi 连接:真·远程操控,开发测试利器
当你想把手机放在桌上不动,或者需要批量控制几台设备,WiFi 方式就派上大用场了。它分两步:先用 USB 开启 TCP/IP 模式,再断开 USB,用 IP 连接。
# 第一步:用 USB 连接时,开启设备的 TCP/IP 服务(端口 5555) adb tcpip 5555 # 第二步:拔掉 USB 线,确保手机和电脑在同一 WiFi 下 # 查看手机 IP(可在「设置」→「关于手机」→「状态信息」里找,或用 adb shell ip addr) adb connect 192.168.1.100:5555如果看到connected to 192.168.1.100:5555,就成功了。之后adb devices会显示:
192.168.1.100:5555 device优势:摆脱线缆束缚、支持多设备并行、方便 CI/CD 集成、适合长期值守
注意:首次必须用 USB 开启 tcpip;WiFi 不稳定时可能掉线;部分企业网络会屏蔽 5555 端口
实测小技巧:用
adb shell ip addr | grep "inet "快速查手机 IP;如果连不上,试试adb kill-server && adb start-server重启服务。
4. Python API 调用详解:不只是命令行,更是可编程的 AI 助理
Open-AutoGLM 不仅提供开箱即用的命令行工具,更把所有能力封装成清晰、简洁的 Python API。这意味着你可以把它嵌入自己的项目、Web 后端、自动化流水线,甚至做成一个带 UI 的桌面应用。
我们以phone_agent.adb模块为核心,逐行拆解常用操作。
4.1 基础连接管理:像操作数据库一样管理设备
from phone_agent.adb import ADBConnection, list_devices # 创建全局连接管理器 conn = ADBConnection() # 连接指定设备(支持 IP:port 或 device_id) success, message = conn.connect("192.168.1.100:5555") print(f"连接状态: {message}") # 成功时输出 "Connected successfully" # 列出所有已连接设备(USB/WiFi 混合显示) devices = list_devices() for device in devices: print(f"{device.device_id} - {device.connection_type.value}") # 输出示例:192.168.1.100:5555 - wifi / ZY322FDQJL - usb # 断开连接 conn.disconnect("192.168.1.100:5555")这个ADBConnection类就像一个“设备路由器”,统一处理不同连接类型的初始化、心跳保活、异常重连。你不需要关心底层是 USB 还是 WiFi,API 层完全一致。
4.2 截图与屏幕理解:让 AI 看懂你正在看什么
所有智能操作的前提,是 AI 能准确理解当前屏幕。Open-AutoGLM 提供了便捷的截图接口,并自动适配不同分辨率:
from phone_agent.adb import ADBConnection conn = ADBConnection() conn.connect("192.168.1.100:5555") # 截取当前屏幕,保存为 PNG 并返回字节流(可用于上传给 VLM) screenshot_bytes = conn.screenshot() # 或直接保存到本地文件 with open("screen.png", "wb") as f: f.write(screenshot_bytes) # 获取设备基本信息(用于适配模型输入尺寸) info = conn.get_device_info() print(f"分辨率: {info.width}x{info.height}, DPI: {info.dpi}")实际项目中,你通常会把
screenshot_bytes和用户指令一起发给云端的 AutoGLM-Phone 模型,由它完成“看图说话+动作规划”的全过程。
4.3 远程指令执行:把自然语言变成真实操作
这才是最酷的部分——你写的每一行 Python,都在驱动真实的手机动作:
from phone_agent.adb import ADBConnection conn = ADBConnection() conn.connect("192.168.1.100:5555") # 1. 模拟点击坐标(x, y),单位为像素 conn.tap(500, 1200) # 点击屏幕中部偏下位置 # 2. 模拟滑动(起点→终点,带持续时间) conn.swipe(500, 1500, 500, 800, duration_ms=300) # 从下往上滑 # 3. 输入文字(自动切换到 ADB Keyboard) conn.input_text("小红书美食攻略") # 4. 按下返回键 conn.press_back() # 5. 启动指定 App(通过包名) conn.launch_app("com.xingin.xhs") # 小红书包名这些方法全部基于 ADB shell 命令封装,但比直接调os.system("adb shell input tap ...")更安全、更易错、更易维护。更重要的是,它们可以和你的业务逻辑无缝组合——比如“当检测到支付成功页面时,自动截图并发送邮件”。
5. 启动 AI 代理:命令行快速验证 vs Python 深度集成
现在硬件、环境、API 全部就绪,是时候让 AI 真正接管手机了。我们提供两种启动方式,对应不同需求。
5.1 命令行一键运行:5 秒验证效果
这是最快看到成果的方式。回到你克隆的Open-AutoGLM目录,执行:
python main.py \ --device-id 192.168.1.100:5555 \ --base-url http://192.168.1.200:8800/v1 \ --model "autoglm-phone-9b" \ "打开小红书搜索美食"参数说明:
--device-id:你的手机设备 ID 或 WiFi 地址(用adb devices查);--base-url:指向你部署好的云端模型服务(vLLM 或 FastChat),格式为http://IP:PORT/v1;--model:模型名称,需和服务端注册名一致;- 最后字符串:任意自然语言指令,支持中文。
你会看到终端实时打印:
- 当前界面截图分析结果
- AI 解析出的意图(如“用户想在小红书 App 中搜索关键词‘美食’”)
- 规划的动作序列(“1. 启动小红书;2. 点击搜索框;3. 输入‘美食’;4. 点击搜索按钮”)
- 每一步执行的日志(“tap at (320, 180)”)
适合:快速验证、演示汇报、日常调试
❌ 不适合:嵌入系统、批量任务、需要自定义流程逻辑
5.2 Python 深度集成:构建你自己的 AI 手机工作流
如果你要做一个“每日自动整理微信收藏”的工具,或者“监控电商价格变动并截图告警”的系统,就需要用 Python 把整个链路串起来:
from phone_agent.adb import ADBConnection import requests import time # 1. 连接设备 conn = ADBConnection() conn.connect("192.168.1.100:5555") # 2. 截图并发送给云端模型 screenshot = conn.screenshot() response = requests.post( "http://192.168.1.200:8800/v1/chat/completions", json={ "model": "autoglm-phone-9b", "messages": [ {"role": "user", "content": [ {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{base64.b64encode(screenshot).decode()}"}}, {"type": "text", "text": "请帮我打开微信,进入‘文件传输助手’,查找今天收到的 PDF 文件并转发给张三"} ]} ] } ) # 3. 解析模型返回的动作指令(简化示意) actions = response.json()["choices"][0]["message"]["content"] for action in actions.split("\n"): if action.startswith("tap "): x, y = map(int, action.split()[1:]) conn.tap(x, y) time.sleep(1) elif action.startswith("input "): text = action.split(" ", 1)[1] conn.input_text(text) time.sleep(0.5)这个例子展示了真正的工程化思路:截图 → 上传 → 模型推理 → 解析结构化动作 → 执行。每一步都可控、可日志、可重试、可监控。
6. 常见问题与避坑指南:少走三天弯路
在实际部署中,90% 的问题都集中在连接、权限和配置三类。以下是高频问题的直给解决方案。
6.1 ADB 连接失败:设备不显示、unauthorized、offline
| 现象 | 原因 | 解决方案 |
|---|---|---|
adb devices无输出 | USB 调试未开启,或 USB 线不支持数据传输 | 换根线,检查手机是否弹出“允许 USB 调试”弹窗并勾选“始终允许” |
显示unauthorized | 手机未授权电脑 | 拔插 USB,重新弹窗授权;或adb kill-server && adb start-server |
显示offline | ADB 服务异常或设备休眠 | adb reconnect;或重启手机 ADB:adb shell stop && adb shell start |
6.2 模型无响应或乱码:服务端配置陷阱
- 现象:
main.py卡住,或返回一堆乱码、空 JSON - 原因:vLLM 启动时
--max-model-len设置过小(如 2048),而 AutoGLM-Phone 的上下文很长;或--gpu-memory-utilization过高导致 OOM - 解决:启动 vLLM 时务必加参数:
python -m vllm.entrypoints.api_server \ --model zai-org/autoglm-phone-9b \ --tensor-parallel-size 1 \ --max-model-len 8192 \ --gpu-memory-utilization 0.9 \ --port 8800
6.3 操作失败:点不到、输不出、App 打不开
- 点不到:检查
conn.get_device_info()返回的分辨率,确认你计算的坐标在屏幕范围内;部分全面屏手机有虚拟导航栏,y 坐标需减去导航栏高度(约 100px); - 输不出:确认 ADB Keyboard 已设为默认输入法;尝试
conn.input_text("test")单独测试; - App 打不开:用
adb shell pm list packages | grep keyword查包名,避免拼错;部分国产 ROM 需手动开启“允许后台启动”权限。
7. 总结:从命令行玩具到生产级 AI 手机助理
Open-AutoGLM 不只是一个炫技的 Demo,它是一套真正可落地的手机端 AI Agent 工程框架。通过这篇教程,你应该已经掌握了:
- 如何在 Windows/macOS 上零门槛配置 ADB 与手机通信;
- 如何用 USB 或 WiFi 两种方式稳定连接真机;
- 如何用
phone_agent.adb模块编写可复用、可测试的 Python 控制逻辑; - 如何将自然语言指令转化为真实屏幕操作,并与云端大模型协同;
- 如何排查连接、模型、执行三大类典型问题。
它的价值不仅在于“让 AI 操作手机”,更在于提供了一种新的交互范式:你不再需要学习 App 的操作路径,只需说出目标,AI 就会理解、规划、执行、验证。这对老年人数字鸿沟、视障人士辅助、客服工单自动处理、APP 自动化测试等领域,都有直接的现实意义。
下一步,你可以尝试:
- 把
main.py改造成 Web API,用 Flask 暴露/control接口; - 结合 OCR 和语音识别,实现“拍图问问题+自动操作”闭环;
- 用
adb logcat抓取 App 日志,让 AI 根据错误信息自动修复操作流程。
技术没有边界,但落地需要脚手架。Open-AutoGLM,就是你跨出第一步最趁手的那把锤子。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。