新手必看:Open-AutoGLM本地部署避坑全记录
1. 这不是普通AI,而是一个会“用手机”的智能体
你有没有想过,让AI像人一样点开APP、滑动屏幕、输入文字、点击按钮?不是调API,不是写脚本,而是真正理解界面、规划动作、执行操作——就像你亲手在操作一样。
Open-AutoGLM 就是这样一个框架。它不是云端黑盒服务,也不是只能回答问题的聊天机器人;它是智谱开源的手机端AI Agent,核心能力是:
看懂你的手机屏幕(截图+OCR+布局理解)
听懂你的自然语言指令(比如“帮我把微信里昨天那条带图片的消息转发给张三”)
自己动手完成整套操作(通过ADB自动点击、滑动、输入、返回)
更关键的是:它支持完全本地私有化部署——模型跑在你租的云GPU上,控制逻辑在你本地电脑,手机连在你桌上。数据不上传、指令不外泄、行为全可控。
但现实很骨感:官方文档写得简洁,实际部署时却卡在ADB授权、USB映射、环境变量、模型加载失败……一环断,全盘停。本文不讲原理、不堆参数,只聚焦一件事:让你第一次运行就成功,少走3小时弯路。
下面所有步骤,都来自真实踩坑后的整理。每一步都标出“为什么必须这么做”,而不是“照着做就行”。
2. 部署前必须搞清的三件事
2.1 它到底在哪儿跑?架构拆解一句话说清
Open-AutoGLM 是典型的分离式架构,不是单机软件,而是三端协同:
- 手机端:只负责“被操作”。它提供屏幕画面(截图)、接收点击/输入指令(ADB)、显示结果。不需要装模型,也不需要联网。
- 本地电脑端:运行控制程序(
main.py或basic_demo.py),负责把你的指令发给服务器、接收模型响应、再转成ADB命令发给手机。 - 云服务器端:运行大模型推理服务(vLLM + AutoGLM-Phone-9B),负责“思考”——理解截图、解析意图、生成操作步骤。这才是真正吃显存的部分。
重点提醒:很多人误以为“代码克隆完就能跑”,结果卡在Connection refused——其实是忘了启动云服务器上的模型服务,或者没配对--base-url地址。
2.2 你不需要买服务器,但必须选对云平台
别被“本地部署”四个字误导。这里的“本地”,是指控制端在你电脑上,不是指整个系统都在你笔记本跑。AutoGLM-Phone-9B 是一个9B参数的视觉语言模型,最低需要32GB显存(A100或RTX 4090级别)才能流畅加载。
我们推荐用AutoDL,原因很实在:
- 不用自己买GPU服务器,按小时付费,部署测试完关机,花不了15元;
- 内置SSH隧道工具,能一键把云主机的USB口“映射”到你本地电脑,解决ADB跨网络难题;
- 镜像预装PyTorch+CUDA,省去环境编译痛苦。
其他平台(如Vast.ai、RunPod)也能用,但USB映射需手动配置adb reverse,对新手极不友好。
2.3 手机不是越新越好,而是越“听话”越好
Android 12+ 的手机,常因系统级限制导致ADB异常:
- 某些品牌(华为、小米)默认关闭“USB调试(安全设置)”,不勾选就始终显示
unauthorized; - Android 13+ 引入更严格的输入法权限,ADB Keyboard 必须在“已启用输入法”列表中,且设为默认,否则AI发不出文字;
- 模拟器(如BlueStacks、MuMu)基本不可用——它们的截图分辨率不标准、坐标系错乱、ADB响应延迟高。
推荐真机:Redmi Note 12 / iQOO Neo6 / 一加 Ace 2(Android 11~12,开发者选项完整,USB线兼容性好)
❌ 避免:华为Mate系列(EMUI限制多)、三星S23(One UI调试开关藏得深)、所有模拟器
3. 本地电脑端:控制中枢的搭建与验证
3.1 ADB安装不是“装完就行”,而是“装对路径+配对权限”
很多教程只说“下载ADB”,但没告诉你:Windows下必须把platform-tools目录加进系统PATH,macOS下必须让export命令永久生效。否则adb devices永远报“command not found”。
Windows 正确做法:
- 下载 platform-tools_r34.0.5-windows.zip(别用旧版);
- 解压到固定路径,例如
C:\adb; - Win+R → 输入
sysdm.cpl→ “高级” → “环境变量” → 在“系统变量”里找到Path→ “编辑” → “新建” → 粘贴C:\adb; - 重启CMD窗口(重要!旧窗口PATH未刷新)→ 输入
adb version,看到版本号即成功。
macOS 正确做法:
- 解压后进入Terminal,执行:
echo 'export PATH=$PATH:~/Downloads/platform-tools' >> ~/.zshrc source ~/.zshrc- 关闭并重开Terminal →
adb version验证。
验证小技巧:插上手机后,
adb devices输出应为xxxxxx device(不是unauthorized)。如果显示offline,拔掉USB线,关掉手机“开发者选项”,再重新开启一次。
3.2 Open-AutoGLM 控制端代码:克隆、安装、测试三步闭环
不要直接pip install open-autoglm—— 官方未发布PyPI包,必须从源码安装。
# 1. 克隆仓库(注意:用HTTPS,不用SSH,避免权限问题) git clone https://github.com/zai-org/Open-AutoGLM.git cd Open-AutoGLM # 2. 创建干净虚拟环境(Python 3.10是硬性要求,3.11+会报错) python3.10 -m venv venv source venv/bin/activate # macOS/Linux # venv\Scripts\activate # Windows # 3. 安装依赖(清华源加速,跳过超时) pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ # 4. 安装本项目(-e 表示可编辑模式,后续改代码立即生效) pip install -e .验证是否安装成功:
在Open-AutoGLM/目录下运行
python -c "from phone_agent.adb import ADBConnection; print('导入成功')"无报错即通过。
3.3 连接手机的两种方式:USB直连 vs WiFi无线,选哪个?
| 方式 | 适用场景 | 优点 | 缺点 | 命令 |
|---|---|---|---|---|
| USB直连 | 首次调试、稳定性优先 | 延迟低、连接稳、无需IP配置 | 需要USB线、占用电脑接口 | adb devices |
| WiFi ADB | 多设备管理、远程办公 | 无线自由、可同时连多台 | 首次需USB配对、WiFi不稳定易掉线 | adb tcpip 5555→adb connect 192.168.x.x:5555 |
新手强烈建议从USB开始。WiFi ADB看似方便,但一旦adb connect失败,排查网络、防火墙、手机IP变化等,耗时远超USB。
4. 云服务器端:模型服务的启动与联调
4.1 为什么不能跳过这一步?——没有它,控制端只是个“哑巴”
本地电脑的main.py只是“传话员”。它把手机截图和你的指令打包发给云服务器,等模型返回“下一步该点哪里”,再转成ADB命令。如果云服务器没跑模型服务,控制端会一直卡在Connecting to http://...
官方推荐用 vLLM 启动,命令如下(在AutoDL云主机中执行):
# 进入工作目录 cd ~/autoglm # 启动vLLM服务(关键参数不能少) CUDA_VISIBLE_DEVICES=0 python -m vllm.entrypoints.api_server \ --model ZhipuAI/AutoGLM-Phone-9B \ --tokenizer ZhipuAI/AutoGLM-Phone-9B \ --dtype bfloat16 \ --max-model-len 8192 \ --tensor-parallel-size 1 \ --port 8000 \ --host 0.0.0.0必须检查的三个点:
--model路径必须是ModelScope上的ID(不是本地路径),vLLM会自动下载;--max-model-len 8192是硬性要求,低于此值会导致长指令截断;--host 0.0.0.0让服务监听所有IP,否则本地电脑无法访问。
启动成功后,浏览器打开http://<云服务器IP>:8000/docs,能看到Swagger API文档,说明服务已就绪。
4.2 本地控制端如何正确对接云服务?
main.py的--base-url参数,格式必须是:http://<云服务器公网IP>:8000/v1
常见错误:
- ❌
http://localhost:8000/v1(本地电脑访问自己的8000端口,但模型不在本地) - ❌
http://192.168.1.100:8000/v1(这是云主机内网IP,本地电脑无法直连) - ❌
https://...(vLLM默认HTTP,加S会报错)
正确做法:
- 在AutoDL控制台,找到云主机详情页,复制“公网IP”;
- 确保云主机安全组放行
8000端口(TCP); - 命令中写死:
--base-url http://123.56.78.90:8000/v1
5. 手机端:让AI真正“看见”和“操作”的最后一步
5.1 ADB Keyboard 不是“装了就行”,而是“启用+设为默认”
这是90%新手失败的根源。ADB Keyboard APK安装后,必须:
- 进入手机「设置」→「语言和输入法」→「当前键盘」→「选择键盘」;
- 找到「ADB Keyboard」并勾选;
- 返回上一级,点「默认键盘」→ 选择「ADB Keyboard」。
验证方法:
在任意输入框(如微信搜索栏)长按,弹出“输入法”菜单,确认「ADB Keyboard」在顶部且有蓝点。
如果没启用,input text "hello"命令会静默失败,控制端日志毫无提示。
5.2 屏幕解锁:AI不会帮你输密码,所以请关掉
AutoGLM 默认假设手机处于“已解锁”状态。它能模拟滑动解锁,但无法识别和输入锁屏密码(涉及系统级权限,安卓禁止)。
正确做法:
手机「设置」→「安全」→「屏幕锁定方式」→ 改为「无」或「滑动」。
注意:测试完记得改回,保障隐私。
5.3 截图权限:某些品牌需额外授权
小米、OPPO等手机,系统相册会拦截ADB截图请求,导致adb shell screencap返回空图。
🔧 解决方案:
- 打开手机「设置」→「应用设置」→「特殊应用权限」→「无障碍」;
- 找到「ADB」或「Android Debug Bridge」,开启权限;
- 或临时用
adb shell input keyevent KEYCODE_POWER唤醒屏幕后再截图。
6. 第一次成功运行:从指令到动作的完整链路
现在,所有环节都已打通。我们用一条最简单的指令验证全流程:
python main.py \ --device-id 1234567890ABCDEF \ # adb devices输出的ID --base-url http://123.56.78.90:8000/v1 \ --model "autoglm-phone-9b" \ "打开计算器,输入1+1,点击等于"你将看到:
- 终端打印:
[INFO] Capturing screen...→Sending to model...→Received action: TAP(200, 300) - 手机屏幕:自动亮起 → 打开计算器APP → 点击数字1 → 点击+号 → 点击1 → 点击= → 显示结果2
如果卡在某一步:
- 卡在
Capturing screen:检查ADB连接、手机是否黑屏、截图权限; - 卡在
Sending to model:检查云服务器IP、端口、防火墙; - 卡在
Received action但手机无反应:检查ADB Keyboard是否启用、手机是否锁屏。
7. 那些没人告诉你的“幽灵问题”与解法
7.1 模型加载一半卡住,显存显示只用了10GB?
这是vLLM的典型现象。它在初始化KV Cache时会预分配显存,但进度条不显示。耐心等待3-5分钟,只要nvidia-smi显示显存占用稳定在30GB+,就是正常加载中。强行Ctrl+C会损坏缓存,需重启服务。
7.2adb devices显示设备,但python main.py报Device not found?
因为main.py默认使用adb -s <id>指定设备,而你的设备ID含冒号(如192.168.1.100:5555),Python的subprocess会将其解析为URL。
解法:在命令中加--device-id参数,明确指定ID。
7.3 中文指令识别不准,总把“微信”听成“微X”?
AutoGLM-Phone-9B 的Tokenizer对中文分词较敏感。避免用模糊简称:
- ❌ “打开微X搜美食” → “打开微信APP,搜索‘川菜’”
- ❌ “点那个红的” → “点击屏幕右下角红色购物车图标”
指令越具体(APP名+动作+目标元素),成功率越高。
8. 总结:部署成功的三个确定性信号
当你看到以下三点同时出现,说明Open-AutoGLM已在你手中真正跑通:
- 信号一:云服务器终端显示
INFO: Uvicorn running on http://0.0.0.0:8000,且nvidia-smi显存占用≥30GB; - 信号二:本地电脑
adb devices输出device,且python -c "import adb; print('OK')"无报错; - 信号三:手机屏幕在指令发出后3秒内开始自动操作,终端同步打印
TAP(x,y)或INPUT("text")日志。
这不是一个玩具项目,而是一个可扩展的AI自动化基座。接下来,你可以:
- 把
examples/basic_demo.py改成批量处理脚本,让AI帮你一天刷100个APP; - 结合OCR结果,在截图中定位“立即支付”按钮,实现全自动下单;
- 用
phone_agent模块封装成Web API,让非技术同事也能用自然语言指挥手机。
真正的智能,不在于它多能说,而在于它多能做。现在,轮到你让它开始做事了。
--- > **获取更多AI镜像** > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。