Open-AutoGLM使用全记录:从连接失败到成功执行
1. 项目背景与核心价值
你有没有想过,有一天只要说一句话,手机就能自动帮你完成一系列操作?比如:“打开小红书搜美食”,然后它自己启动App、输入关键词、滑动浏览结果——整个过程完全不需要你动手。这听起来像科幻片的场景,现在通过Open-AutoGLM已经可以实现了。
Open-AutoGLM 是由智谱开源的一个手机端 AI Agent 框架,基于 AutoGLM 构建,专为移动端任务自动化设计。它的核心能力是结合视觉语言模型(VLM)和 ADB 控制技术,实现“看懂屏幕 + 自动操作”的闭环。用户只需用自然语言下达指令,系统就能理解当前界面、规划操作路径,并一步步执行点击、滑动、输入等动作。
这个框架特别适合以下几类人群:
- 经常需要重复操作手机的人(如运营、测试)
- 想体验AI如何接管设备的极客玩家
- 希望研究多模态Agent工作原理的技术爱好者
本文将带你完整走一遍从环境搭建、连接调试到最终成功运行的全过程,重点解决我在实操中遇到的几个典型问题,尤其是那个让人抓狂的“连接失败”错误。
2. 环境准备:软硬件清单与基础配置
2.1 所需软硬件一览
| 类别 | 要求 |
|---|---|
| 电脑系统 | Windows / macOS(推荐macOS) |
| Python版本 | 3.10+(建议使用虚拟环境) |
| 手机设备 | Android 7.0以上真机或模拟器 |
| 核心工具 | ADB(Android Debug Bridge) |
| 网络环境 | 同一局域网(WiFi连接时必需) |
2.2 安装ADB并验证连通性
ADB是整个流程的“桥梁”。没有它,AI再聪明也指挥不了你的手机。
Windows 用户安装步骤:
- 下载 Android SDK Platform Tools
- 解压后进入
platform-tools文件夹 - 右键“此电脑” → 属性 → 高级系统设置 → 环境变量
- 在“系统变量”中的
Path添加该目录路径 - 打开命令行输入:
adb version如果返回类似Android Debug Bridge version 1.0.41,说明安装成功。
macOS 用户快速配置:
export PATH=${PATH}:~/Downloads/platform-tools你可以把这行加到.zshrc或.bash_profile中永久生效。
3. 手机端设置:开启开发者权限与输入法切换
很多人卡在第一步,不是因为代码有问题,而是手机没设置对。
3.1 开启开发者选项
路径:设置 → 关于手机 → 连续点击“版本号”7次 → 输入密码确认 → 提示“您已进入开发者模式”
3.2 启用USB调试
路径:设置 → 开发者选项 → 找到“USB调试” → 勾选启用
连接电脑后,手机会弹出“允许USB调试吗?”对话框,务必点击“允许”,并且勾选“始终允许”。
3.3 安装ADB Keyboard(关键!)
这是很多人忽略但极其重要的一步。
默认输入法无法通过ADB发送文本,必须使用专门的ADB Keyboard。
- 下载地址:GitHub Release
- 安装APK后,在手机“语言与输入法”中将其设为默认输入法
否则你会发现:AI能识别界面、能规划操作,但在需要打字的地方直接卡住!
4. 部署控制端代码:克隆项目与依赖安装
一切准备就绪,开始部署本地控制程序。
4.1 克隆仓库并安装依赖
git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM强烈建议创建一个独立的Python虚拟环境:
python -m venv venv source venv/bin/activate # Linux/macOS # 或 venv\Scripts\activate # Windows然后安装依赖:
pip install -r requirements.txt pip install -e .注意最后一条命令中的-e .,表示以可编辑模式安装,方便后续修改调试。
5. 设备连接方式详解:USB vs WiFi
5.1 USB连接(最稳定)
插上数据线后运行:
adb devices正常输出应为:
List of devices attached ABCDEF1234567890 device只要看到device而不是unauthorized或空列表,就说明连接成功。
常见问题:出现
unauthorized?原因是手机未授权电脑。拔掉重连,确保弹窗出现时点击“允许”。
5.2 WiFi远程连接(更灵活)
无线连接更适合长期运行或远程调试。
第一步:先用USB连接,开启TCP/IP模式
adb tcpip 5555第二步:断开USB,用IP连接
先查手机IP地址(设置 → 关于手机 → 状态信息 → IP地址),然后:
adb connect 192.168.1.100:5555再次运行adb devices,应该能看到设备在线。
注意:部分路由器会限制设备间通信,若连接失败,请检查是否开启了“客户端隔离”功能。
6. 启动AI代理:命令行调用实战
终于到了最关键的一步——让AI接管手机!
6.1 准备云端模型服务
Open-AutoGLM本身只是一个“控制器”,真正的“大脑”是部署在服务器上的视觉语言模型。你需要提前在云主机上启动vLLM服务。
启动命令如下:
python3 -m vllm.entrypoints.openai.api_server \ --served-model-name autoglm-phone-9b \ --allowed-local-media-path / \ --mm-encoder-tp-mode data \ --mm_processor_cache_type shm \ --mm_processor_kwargs '{"max_pixels":5000000}' \ --max-model-len 25480 \ --chat-template-content-format string \ --limit-mm-per-prompt '{"image":10}' \ --model zai-org/AutoGLM-Phone-9B \ --port 8000启动成功后,可通过http://<公网IP>:8000/v1访问API。
安全提示:请配合Nginx反向代理 + HTTPS + 认证机制使用,避免暴露在公网。
6.2 本地执行AI指令
回到本地终端,运行:
python main.py \ --device-id ABCDEF1234567890 \ --base-url http://123.45.67.89:8000/v1 \ --model "autoglm-phone-9b" \ "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"参数说明:
--device-id:来自adb devices的设备ID--base-url:云服务器的API地址- 最后的字符串:你要下达的自然语言指令
7. 故障排查:那些让我熬夜的坑
7.1 连接被拒绝?检查防火墙!
最常见的问题是:明明服务跑起来了,本地却连不上。
原因通常是云服务器防火墙未开放端口。
解决方案:
- 登录云平台控制台
- 找到安全组规则
- 添加入方向规则:允许TCP协议,端口8000(或其他你指定的)
测试是否通了:
curl http://123.45.67.89:8000/health返回{"status":"ok"}表示服务正常。
7.2 ADB频繁掉线?换USB试试
WiFi连接虽然方便,但稳定性远不如USB。特别是在执行长时间任务时,容易因网络波动中断。
建议:
- 初次测试一律用USB线连接
- 成熟后再切WiFi进行远程控制
7.3 模型乱码或无响应?检查vLLM参数
我曾遇到AI一直输出乱七八糟的动作,比如“点击坐标(0,0)”、“输入”,根本无法执行。
排查发现是--max-model-len设置过小,导致上下文截断,模型看不懂历史。
正确设置应为:
--max-model-len 25480同时确保:
--allowed-local-media-path / --limit-mm-per-prompt '{"image":10}'这些参数决定了模型能否正确接收截图和处理多轮交互。
7.4 输入失败?确认ADB Keyboard已启用
如果你发现AI总是在“输入内容”这一步卡住,大概率是输入法问题。
请回到手机设置,确认两点:
- ADB Keyboard 是否已安装
- 是否已在“语言与输入法”中设为默认
可以在终端手动测试输入:
adb shell input text "hello"如果屏幕上没反应,那就是输入法没配好。
8. Python API进阶用法:集成到自己的项目
除了命令行,Open-AutoGLM也支持编程调用,便于集成到自动化脚本或Web服务中。
8.1 创建代理实例
from phone_agent import PhoneAgent from phone_agent.model import ModelConfig # 配置模型连接 model_config = ModelConfig( base_url="http://123.45.67.89:8000/v1", model_name="autoglm-phone-9b", ) # 初始化代理 agent = PhoneAgent(model_config=model_config)8.2 执行任务并获取结果
result = agent.run("打开淘宝搜索无线耳机") print(result.final_answer) # 输出最终反馈8.3 支持人工接管的敏感操作
对于涉及隐私的操作(如登录、支付),框架内置了暂停机制:
result = agent.run("登录我的微博账号", require_confirmation=True)此时AI会在关键步骤停下来,等待人工确认后再继续。
9. 实际效果展示:一次完整的任务执行
以“打开美团搜火锅店”为例,AI的实际行为流程如下:
- 截图分析当前桌面,识别出“美团”图标位置
- 发送点击事件打开App
- 等待首页加载完成,再次截图判断UI结构
- 找到搜索框并点击
- 通过ADB Keyboard输入“火锅”
- 点击搜索按钮
- 滑动浏览结果页
- 返回总结:“已为您在美团中搜索‘火锅’,共显示20家店铺。”
整个过程约45秒,完全无需人工干预。
小技巧:首次运行建议开启
--verbose参数,查看每一步的推理日志,有助于理解AI是如何“思考”的。
10. 总结:从失败到成功的经验提炼
经过多次尝试和踩坑,我把整个流程的关键点总结成一张表,帮助你少走弯路。
| 环节 | 易错点 | 解决方案 |
|---|---|---|
| ADB连接 | unauthorized | 授权弹窗要点“允许” |
| 输入失败 | 默认输入法不对 | 必须使用ADB Keyboard |
| 模型无响应 | vLLM参数错误 | 检查max-model-len和allowed-local-media-path |
| 远程连接不通 | 防火墙未放行 | 开放对应端口 |
| WiFi不稳定 | 断连频繁 | 优先使用USB调试 |
Open-AutoGLM 不只是一个玩具项目,它展示了多模态AI Agent在真实设备上的落地可能性。虽然目前还存在一些局限(如复杂页面识别不准、耗电量大等),但其架构设计清晰、扩展性强,非常适合二次开发。
未来你可以基于它做很多事情:
- 批量自动化测试App
- 构建个人数字助理
- 研究AI决策链路与可解释性
最重要的是,这一切都建立在一个开源、透明、可控的基础上。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。