Open-AutoGLM如何集成?与其他系统对接API方案
1. Open-AutoGLM – 智谱开源的手机端AI Agent框架
你有没有想过,让AI帮你操作手机?不是简单的语音助手,而是真正“看懂”屏幕、理解界面、自动点击滑动,像真人一样完成复杂任务。这就是Open-AutoGLM的核心能力。
它是智谱AI开源的一个基于视觉语言模型(VLM)的手机智能体框架,名字里的“AutoGLM”代表它背后驱动的是GLM系列大模型,“Phone”则明确了它的战场——安卓手机。通过结合多模态感知、意图理解与自动化执行,Open-AutoGLM 能把一句自然语言指令,比如“打开小红书搜美食”,转化成一系列精准的屏幕操作,全程无需人工干预。
更关键的是,它不仅仅是一个玩具项目,而是一个具备工程落地潜力的AI Agent框架。这意味着你可以把它集成进自己的系统里,用API调用的方式,实现远程控制、批量操作、自动化测试甚至客服辅助等场景。本文就带你搞清楚:怎么部署?怎么连接真机?怎么用API对接你的业务系统?
2. 核心架构解析:它是怎么“看”和“动”的?
在动手之前,先搞明白Open-AutoGLM是怎么工作的。理解了原理,集成时才能少踩坑。
2.1 多模态感知:让AI“看见”屏幕
传统自动化工具(如Appium)依赖控件ID或坐标,一旦界面改版就失效。而Open-AutoGLM不同,它用的是视觉语言模型。
每次执行操作前,系统会通过ADB抓取当前手机屏幕截图,然后把这张图+用户指令一起喂给云端的大模型。模型不仅能识别图中的文字、按钮、图标,还能理解它们之间的语义关系。比如,它知道“搜索框”长什么样,“关注”按钮通常出现在哪里,即使没有ID也能准确定位。
这就像是给AI配了一双眼睛,让它能像人一样“看图办事”。
2.2 ADB驱动:让AI“动手”操作
光看得懂还不行,还得会动。Open-AutoGLM通过ADB(Android Debug Bridge)来控制设备。
- 点击/滑动:通过
adb shell input tap/swipe发送触摸指令。 - 输入文字:使用一个叫ADB Keyboard的虚拟输入法,通过ADB命令发送文本,避免手动打字。
- 获取状态:通过
adb shell dumpsys window windows获取当前Activity和窗口信息,辅助判断页面状态。
所有这些操作都由AI根据对屏幕的理解,自主规划路径并执行。
2.3 安全机制:敏感操作不越界
完全自动化有风险。为此,系统内置了敏感操作确认机制。当检测到可能涉及隐私或资金的操作(如支付、删除账号),AI会暂停并等待人工确认。同时,在登录验证码等无法自动处理的场景,也支持“人工接管”,确保流程可控。
3. 本地控制端部署全流程
现在我们开始实战。假设你已经有一台云服务器跑好了vLLM服务(用于推理AutoGLM模型),接下来是在本地电脑部署控制端,连接真机,并调用云端AI。
3.1 硬件与环境准备
你需要准备以下几样东西:
- 本地电脑:Windows 或 macOS 均可
- Python环境:建议 3.10+
- 安卓设备:Android 7.0以上的真实手机或模拟器
- ADB工具:Android SDK Platform Tools
ADB安装与配置
Windows用户:
- 下载 Platform Tools
- 解压后,将文件夹路径添加到系统环境变量
Path中 - 打开命令行,输入
adb version,看到版本号即成功
macOS用户: 在终端执行:
export PATH=${PATH}:~/Downloads/platform-tools(请根据实际解压路径调整)
提示:可以把这行加到
.zshrc或.bash_profile中,避免每次重启终端都要重新设置。
3.2 手机端设置:开启调试权限
要让电脑控制手机,必须开启开发者权限。
开启开发者模式
进入“设置” → “关于手机” → 连续点击“版本号”7次,直到提示“您已进入开发者模式”。开启USB调试
返回设置主界面 → “开发者选项” → 开启“USB调试”。安装ADB Keyboard
- 下载 ADB Keyboard APK 并安装
- 进入“语言与输入法”设置 → 将默认输入法切换为“ADB Keyboard”
为什么需要这个?因为AI不能帮你打字。ADB Keyboard允许我们通过命令直接输入文本,是实现全自动化的关键一环。
3.3 部署Open-AutoGLM控制端
接下来,在本地电脑上拉取并安装控制代码。
# 1. 克隆仓库 git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM # 2. 安装依赖 pip install -r requirements.txt pip install -e .安装完成后,你就拥有了本地的“指挥中心”,它可以:
- 连接手机
- 抓取屏幕
- 调用云端AI模型
- 执行AI返回的操作指令
3.4 连接设备:USB vs WiFi
Open-AutoGLM支持两种连接方式,各有适用场景。
USB连接(推荐初学者)
最稳定的方式,适合调试阶段。
adb devices如果输出类似:
List of devices attached ABCDEF123 device说明设备已识别,可以继续。
WiFi远程连接(适合生产环境)
想摆脱数据线?可以用WiFi远程控制。
首次需用USB连接一次:
# 启用TCP/IP模式,端口5555 adb tcpip 5555断开USB后,用手机IP连接:
adb connect 192.168.x.x:5555之后只要在同一局域网,就能无线控制。这对远程调试、无人值守自动化非常有用。
4. 启动AI代理:从命令行到API调用
一切就绪,现在让AI接管手机。
4.1 命令行快速体验
在项目根目录运行:
python main.py \ --device-id ABCDEF123 \ --base-url http://123.45.67.89:8800/v1 \ --model "autoglm-phone-9b" \ "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"参数说明:
--device-id:通过adb devices获取的设备ID--base-url:你的云服务器地址和端口,必须能外网访问--model:指定使用的模型名称(需与vLLM服务中加载的一致)- 最后的字符串:你的自然语言指令
执行后,你会看到AI一步步分析屏幕、生成操作、执行点击,最终完成任务。整个过程就像在看一个机器人自己玩手机。
4.2 Python API集成:嵌入你的系统
如果你希望把这项能力集成进自己的平台(比如客服系统、自动化测试平台),就不能只靠命令行。Open-AutoGLM提供了清晰的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) ip = conn.get_device_ip() print(f"设备 IP: {ip}") # 断开连接 conn.disconnect("192.168.1.100:5555")这段代码展示了如何用程序化方式管理设备连接,非常适合做批量设备控制。
AI代理调用示例
虽然官方未提供完整的Agent调用封装,但你可以参考main.py的逻辑,构建自己的调用流程:
- 截图 →
adb exec-out screencap -p > screen.png - 编码图片 → base64
- 构造请求体 → 包含图片、指令、历史对话
- 调用vLLM API →
POST /v1/chat/completions - 解析响应 → 提取操作类型(tap, swipe, input等)和参数
- 执行操作 → 通过ADB发送指令
- 循环直到任务完成
建议:将这套流程封装成一个
PhoneAgentClient类,暴露一个简洁接口,如:client.run_task(device_id, "给微信好友张三发消息:今晚聚餐吗?")
这样你的其他系统只需调用这一行代码,就能完成复杂操作。
5. 常见问题与排查建议
实际部署中总会遇到各种问题,这里列出几个高频坑点及解决方案。
5.1 连接失败:adb devices 显示 unauthorized
原因:手机未授权电脑调试。
解决:检查手机是否弹出“允许USB调试?”的对话框,勾选“始终允许”并点击确定。
5.2 ADB频繁掉线(尤其WiFi模式)
原因:网络不稳定或手机休眠。
建议:
- 使用USB连接进行关键任务
- 在手机设置中关闭“休眠”或设置“永不休眠”
- 保持设备在同一局域网,避免信号干扰
5.3 模型无响应或返回乱码
可能原因:
- vLLM服务未正确加载模型
- 显存不足导致推理失败
max-model-len设置过小,截断了输出
检查项:
- 确认vLLM启动命令包含
-model zhipuai/autoglm-phone-9b - 检查GPU显存是否足够(9B模型建议至少16GB)
- 增加
--max-model-len 8192参数
5.4 文字输入失败
现象:该打字的地方没反应。
排查步骤:
- 确认已安装 ADB Keyboard
- 确认已在系统设置中将其设为默认输入法
- 测试命令:
adb shell am broadcast -a ADB_INPUT_TEXT --es msg "hello"是否能输入
6. 总结:不只是一个Demo,而是可集成的AI能力
Open-AutoGLM 不只是一个炫酷的开源项目,它展示了一种全新的交互范式:用自然语言指挥设备。更重要的是,它的设计是模块化的,完全可以作为组件集成进企业级系统。
通过本文的部署和API调用实践,你应该已经掌握了:
- 如何在本地搭建控制环境
- 如何连接真实手机设备
- 如何调用云端AI模型驱动自动化
- 如何用Python API实现系统级集成
未来你可以基于它构建:
- 自动化测试平台:用自然语言写测试用例,自动执行UI测试
- 客服辅助系统:坐席说一句“帮用户查订单”,AI自动操作APP查找
- 批量运营工具:自动完成应用商店评论、内容发布等重复操作
- 无障碍辅助:帮助视障用户通过语音操控手机
这才是AI Agent的真正价值——不止于对话,而是能动手做事。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。