Open-AutoGLM云端部署教程:公网IP映射与防火墙设置指南
Open-AutoGLM 是智谱开源的轻量级手机端 AI Agent 框架,专为在资源受限设备上运行多模态智能体而设计。它不是传统意义上的大模型推理服务,而是一个“能看、会想、可操作”的端云协同系统——视觉语言模型理解屏幕,规划模块拆解任务,ADB 执行层真实点击滑动。真正让 AI 从“回答问题”走向“替你做事”。
AutoGLM-Phone 是这个框架的核心落地形态。它不依赖手机本地算力,而是将屏幕截图上传至云端模型分析,再把生成的操作指令(如“点击坐标(320,680)”、“输入文字‘咖啡’”)下发回设备执行。整个过程对用户完全透明:你只需说一句“打开小红书搜美食”,它就能自动解锁手机、启动App、输入关键词、点击搜索、滚动浏览——像一个不知疲倦的数字助手,安静地完成所有细节。
但要让这套流程跑通,关键不在手机,也不在模型本身,而在于云与端之间的稳定通信链路。很多开发者卡在最后一步:模型明明在服务器上跑起来了,本地控制端却连不上;或者指令发出去了,屏幕没反应,日志里只有一行“Connection refused”。这些问题90%都源于同一个被忽视的环节:公网IP映射配置不当,或云服务器防火墙未正确放行端口。本教程不讲模型原理,不堆参数调优,只聚焦一件事——手把手带你打通从云服务器到真机的完整通路。
1. 云服务器环境准备与模型服务启动
在开始端侧配置前,必须确保云端服务已就绪且对外可达。Open-AutoGLM 的云端部分本质是 vLLM 驱动的 API 服务,需先部署好推理后端。
1.1 基础环境检查
登录你的云服务器(推荐 Ubuntu 22.04 LTS),确认以下组件已安装:
# 检查 Python 版本(需 3.10+) python3 --version # 检查 CUDA(若使用 GPU) nvidia-smi # 检查 Docker(推荐容器化部署,避免环境冲突) docker --version注意:本教程默认你已通过
pip install vllm或docker run方式成功启动了 AutoGLM-Phone 模型服务,并监听在本地http://localhost:8000/v1。如果你尚未完成这步,请先参考官方 README 启动服务,确保curl http://localhost:8000/v1/models能返回模型列表。
1.2 端口映射与公网暴露
vLLM 默认只绑定127.0.0.1:8000,这意味着它仅接受本机请求,外部网络无法访问。要让本地电脑的控制端连上它,必须做两件事:修改监听地址 + 配置端口映射。
修改 vLLM 启动参数
启动命令中加入--host 0.0.0.0,使其监听所有网络接口:
# 示例:使用 vLLM 启动 AutoGLM-Phone-9b 模型 python -m vllm.entrypoints.openai.api_server \ --model zhipu/autoglm-phone-9b \ --tensor-parallel-size 1 \ --host 0.0.0.0 \ --port 8000 \ --max-model-len 8192 \ --enforce-eager此时服务已监听0.0.0.0:8000,但还不能直接从公网访问——云服务商(如阿里云、腾讯云)默认关闭所有入站端口,需手动放行。
配置云平台安全组规则
以阿里云为例(其他平台逻辑一致):
- 进入「云服务器 ECS」控制台 → 找到你的实例 → 点击「安全组」→ 「配置规则」
- 添加一条入方向规则:
- 授权策略:允许
- 协议类型:TCP
- 端口范围:
8000/8000(或你自定义的端口,如8800) - 授权对象:
0.0.0.0/0(开放给所有IP)或更安全的你的本地公网IP/32
切勿在生产环境长期开放0.0.0.0/0。开发调试阶段可临时使用,上线前务必限制为可信IP段。
验证端口是否真正可达
在本地电脑终端执行:
# 替换为你的云服务器公网IP和端口 telnet 123.56.78.90 8000 # 或使用 curl(需安装) curl -v http://123.56.78.90:8000/v1/models如果返回Connected to...或 JSON 响应,说明端口已通;若提示Connection refused或超时,则需回头检查:vLLM 是否加了--host 0.0.0.0?安全组是否生效?服务器本地防火墙(ufw/iptables)是否拦截?
2. 本地控制端部署与ADB连接配置
云端通了,下一步是让本地电脑成为“指挥中心”。它不运行模型,只负责截图上传、指令解析、ADB下发——轻量但关键。
2.1 ADB 工具安装与验证
ADB(Android Debug Bridge)是连接安卓设备的桥梁。无论 USB 还是 WiFi 模式,都依赖它。
- Windows:下载 platform-tools → 解压 → 将路径添加到系统环境变量
Path→ 打开 CMD 输入adb version,看到版本号即成功。 - macOS:终端执行:
# 使用 Homebrew(推荐) brew install android-platform-tools # 或手动下载后配置 PATH echo 'export PATH=$PATH:~/Downloads/platform-tools' >> ~/.zshrc source ~/.zshrc
验证:adb version应输出类似Android Debug Bridge version 1.0.41。
2.2 手机端必要设置
手机不是插上线就能用,需开启三重权限:
- 开发者模式:设置 → 关于手机 → 连续点击「版本号」7次 → 弹出“您现在处于开发者模式”。
- USB调试:设置 → 系统 → 开发者选项 → 开启「USB调试」→ 同时勾选「USB调试(安全设置)」(部分机型需要)。
- ADB Keyboard(关键!):
- 下载 ADB Keyboard APK → 安装到手机
- 设置 → 语言与输入法 → 当前键盘 → 切换为「ADB Keyboard」
为什么必须?AutoGLM-Phone 需通过 ADB 输入文字(如搜索关键词)。系统自带键盘无法被 ADB 控制,ADB Keyboard 是唯一能响应
adb shell input text命令的输入法。
2.3 设备连接方式选择与实操
两种连接方式,按稳定性排序:USB > WiFi。WiFi 适合远程调试,但易受路由器干扰;USB 稳定可靠,推荐首次部署使用。
USB 直连(推荐新手)
- 用原装数据线连接手机与电脑
- 手机弹出「允许 USB 调试吗?」→ 勾选「始终允许」→ 点击确定
- 终端执行:
出现adb devices # 正常输出示例: # List of devices attached # 1234567890abcdef devicedevice状态即连接成功。1234567890abcdef就是你的--device-id。
WiFi 远程连接(需先 USB 初始化)
- USB 连接手机并执行:
adb tcpip 5555 # 输出:restarting in TCP mode port: 5555 - 断开 USB 线,确保手机与电脑在同一 WiFi 下
- 查看手机 IP:设置 → WLAN → 点击当前网络 → 查看「IP 地址」(如
192.168.1.105) - 电脑终端执行:
成功后,adb connect 192.168.1.105:5555 # 输出:connected to 192.168.1.105:5555 adb devices # 应显示:192.168.1.105:5555 device--device-id即为192.168.1.105:5555。
3. Open-AutoGLM 控制端部署与指令调用
现在,云(模型服务)、端(手机)、控(本地电脑)三方已具备通信基础。接下来部署控制代码,发起第一次自然语言指令。
3.1 克隆仓库与安装依赖
在本地电脑(非服务器)执行:
# 克隆官方仓库 git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM # 创建虚拟环境(强烈推荐,避免包冲突) python3 -m venv venv source venv/bin/activate # macOS/Linux # venv\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt pip install -e .注意:requirements.txt中已包含adb-shell、Pillow、requests等核心依赖,无需额外安装。
3.2 构建完整调用命令
这是最关键的一步。命令中三个参数必须精准对应你的实际环境:
python main.py \ --device-id 1234567890abcdef \ # ← 你的设备ID(adb devices 查得) --base-url http://123.56.78.90:8000/v1 \ # ← 云服务器公网IP + 映射端口 --model "autoglm-phone-9b" \ # ← 模型名称,需与vLLM启动时一致 "打开小红书搜索美食"逐项核对清单:
--device-id:必须是adb devices输出的 ID,不能是手机型号或序列号--base-url:必须是http://<公网IP>:<端口>/v1,不能是内网IP(如192.168.x.x)或localhost--model:必须与 vLLM 启动时--model参数值完全一致(区分大小写)
小技巧:首次测试建议用最简指令,如"打开设置"。成功后再尝试复杂指令,避免因界面元素识别失败导致误判为连接问题。
3.3 Python API 方式调用(适合集成开发)
如果你计划将 AutoGLM-Phone 集成进自己的应用,而非仅用命令行,推荐使用其封装好的 Python API:
from phone_agent.adb import ADBConnection from phone_agent.agent import PhoneAgent # 1. 初始化 ADB 连接管理器 conn = ADBConnection() # 2. 连接设备(支持 USB ID 或 WiFi IP) success, msg = conn.connect("1234567890abcdef") # 或 "192.168.1.105:5555" print(f"连接结果: {msg}") # 3. 初始化 AI 代理(指向你的云服务) agent = PhoneAgent( base_url="http://123.56.78.90:8000/v1", # 云服务地址 model_name="autoglm-phone-9b", device_id="1234567890abcdef" ) # 4. 发送自然语言指令 result = agent.run("打开微信,给张三发消息:今天会议改到下午三点") print("执行结果:", result)此方式便于调试单步操作、捕获异常、记录日志,是工程化落地的首选。
4. 常见连接故障排查与防火墙深度配置
即使严格按步骤操作,仍可能遇到连接失败。以下是高频问题与根因解决方案,按优先级排序:
4.1 “Connection refused” 错误(最常见)
现象:运行main.py时抛出requests.exceptions.ConnectionError: Max retries exceeded...
根因:本地电脑无法建立 TCP 连接到云服务器端口。
排查路径:
- 在本地电脑执行
telnet <云IP> <端口>→ 若不通,问题在云服务器层 - 登录云服务器,执行
ss -tuln | grep :8000→ 若无输出,说明 vLLM 未监听0.0.0.0 - 若有输出,检查云平台安全组 → 是否放行该端口?
- 若安全组已放行,检查服务器本地防火墙:
# Ubuntu 默认使用 ufw sudo ufw status verbose # 若状态为 active,需放行端口 sudo ufw allow 8000
4.2 ADB 连接不稳定(WiFi 模式)
现象:adb devices偶尔显示offline,或指令执行一半中断
根因:WiFi 信号波动、路由器AP隔离、ADB daemon 重启失败
解决方案:
- 优先改用 USB 连接,排除网络干扰
- 若必须 WiFi,在手机端启用「保持 Wi-Fi 连接」(设置 → WLAN → 高级 → 保持 Wi-Fi 连接)
- 在电脑端定期重连:
adb kill-server && adb start-server adb connect 192.168.1.105:5555
4.3 模型返回乱码或空响应
现象:控制台打印出大量乱码字符,或result为空字符串
根因:vLLM 启动参数与客户端期望不匹配,尤其是max-model-len和--enforce-eager
解决方案:
- 确保 vLLM 启动时
--max-model-len≥ 8192(AutoGLM-Phone 输入上下文较长) - 添加
--enforce-eager参数,避免某些 GPU 上的图编译错误 - 检查
--tokenizer是否指定正确(官方镜像通常已内置,无需额外指定)
5. 安全加固建议:从开发到上线的平滑过渡
本教程以快速跑通为目标,但实际项目上线前,必须完成以下安全加固:
- 限制公网访问范围:将安全组授权对象从
0.0.0.0/0改为你的办公网络 IP 段(如203.208.100.0/24) - 启用反向代理与 HTTPS:在云服务器 Nginx 配置中,将
http://localhost:8000代理到https://your-domain.com/api,并配置 SSL 证书,避免明文传输敏感指令 - 添加 API 认证:修改
main.py或 vLLM 启动参数,加入--api-key your-secret-key,并在请求头中携带Authorization: Bearer your-secret-key - 禁用敏感 ADB 操作:在
phone_agent/adb.py中,对adb shell input keyevent、adb shell am start等高危命令增加白名单校验,防止恶意指令触发
安全不是附加功能,而是架构起点。AutoGLM-Phone 的强大在于自动化,而自动化带来的风险必须前置管控。
6. 总结:打通端云链路的关键三步
回顾整个部署流程,真正决定成败的并非模型多大、手机多新,而是三个看似简单却极易出错的环节:
- 云服务监听地址必须是
0.0.0.0,而非127.0.0.1—— 这是让服务“走出服务器”的第一步; - 云平台安全组与服务器本地防火墙必须双重放行端口—— 缺一不可,就像门禁卡和大门钥匙都要匹配;
--base-url必须使用公网IP,且--device-id必须来自adb devices实时输出—— 复制粘贴时多一个空格、少一个冒号,都会导致连接失败。
当你第一次看到手机屏幕自动亮起、App 自然打开、搜索框精准输入文字,那种“AI真的在替我做事”的震撼感,远超任何技术文档的描述。Open-AutoGLM 的价值,正在于它把前沿的多模态能力,压缩进一条清晰、可复现、可调试的端云流水线。而这条流水线的基石,就是今天你亲手配置的每一个端口、每一条防火墙规则、每一次adb connect。
现在,关掉教程,拿起你的手机,输入那句最想让它完成的指令——真正的智能,从你按下回车键的那一刻开始。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。