Open-AutoGLM接入流程:本地+云端协同操作
Open-AutoGLM不是简单的手机控制工具,而是一套真正意义上的“视觉-语言-动作”闭环智能体框架。它让AI第一次具备了像人一样“看屏幕、想步骤、动手做”的完整能力。本文不讲抽象概念,只聚焦一件事:如何在你自己的电脑和手机上,把这套系统跑起来,并让它听懂你的自然语言指令,自动完成真实任务。无论你是刚接触ADB的新手,还是想快速验证AI手机能力的开发者,这篇实操指南都会带你从零完成本地与云端的协同部署。
1. 理解核心协作逻辑:为什么是“本地+云端”?
Open-AutoGLM的运行不是单机软件,而是一个清晰分工的协同系统。理解这个分工,是避免后续配置踩坑的关键。
1.1 三端角色明确:谁负责什么?
- 你的手机(执行端):只负责“被看”和“被操作”。它提供实时屏幕画面(截图),并接收ADB命令执行点击、滑动、输入等动作。所有敏感操作(如支付)默认暂停等待人工确认,安全由你掌控。
- 你的本地电脑(控制端):只负责“连接”和“转发”。它通过ADB与手机建立稳定通道,同时作为客户端调用云端模型API。它不运行大模型,因此对本地显卡无要求,一台普通笔记本即可胜任。
- 云服务器(智能端):只负责“思考”和“决策”。它运行AutoGLM-Phone-9B多模态大模型,接收手机截图和你的自然语言指令,理解当前界面状态,规划出下一步最合理的操作(比如“点击搜索框”、“输入‘火锅’”、“滑动到第三项”),再将结构化动作指令返回给本地电脑执行。
这种设计带来三大实际好处:第一,手机无需ROOT或越狱,兼容性极强;第二,本地电脑轻量化,告别显存焦虑;第三,模型能力可随时升级,用户端零更新。
1.2 与纯本地方案的本质区别
很多教程会教你把整个模型部署在本地GPU上。这看似“完全自主”,但代价巨大:18GB模型文件、12GB以上显存、漫长的启动时间。而Open-AutoGLM的云端智能端,意味着你只需一次部署,所有设备共享同一套最新能力。你今天在Mac上跑通的指令,明天换一台Windows电脑,只要连上同一个云服务,效果完全一致。这不是妥协,而是工程上的务实选择。
2. 本地准备:让电脑成为可靠的“指挥官”
这一步的目标很明确:让你的电脑能稳稳地“看见”手机屏幕,并能准确地“指挥”它。所有操作都围绕ADB展开,没有玄学,只有清晰的验证点。
2.1 ADB环境:不是安装,而是“打通任督二脉”
ADB不是装上就能用的软件,它是一条需要双向认证的数据通道。很多失败源于“单向通畅”。
- Windows用户:下载platform-tools后,务必在“系统环境变量”中添加路径,而非用户变量。验证时打开全新的命令提示符窗口,执行
adb version。如果报错“不是内部或外部命令”,说明环境变量未生效,重启命令行是最快解法。 - macOS用户:执行
export PATH=$PATH:~/Downloads/platform-tools后,必须运行source ~/.zshrc(或~/.bash_profile)才能使新路径生效。直接在当前终端执行echo $PATH,确认输出中包含你的platform-tools路径。
关键验证点:
adb version成功后,立即执行adb devices。此时应显示空列表(List of devices attached)。这表示ADB服务已启动,就等设备接入——这是健康状态,不是错误。
2.2 手机设置:三个动作,缺一不可
开发者模式只是起点,真正的控制权在以下三个设置里:
- USB调试(必须开启):这是ADB通信的总开关。开启后,首次用数据线连接电脑,手机屏幕会弹出“允许USB调试吗?”对话框,务必勾选“始终允许”,然后点击确定。这是防止每次重连都需手动确认的关键。
- 无线调试(WiFi控制前提):进入“设置 > 开发者选项 > 无线调试”,开启开关。下方会显示一个IP地址和端口(如
192.168.1.100:5555),这就是你后续远程连接的地址。 - ADB Keyboard(中文输入基石):这是最容易被忽略的一步。仅安装APK不够,必须进入“设置 > 系统 > 语言和输入法 > 虚拟键盘”,找到“ADB Keyboard”并启用它。之后,在任何需要输入文字的场景(如搜索框),长按输入框,选择“输入法”切换为ADB Keyboard。没有这一步,AI发出的“输入‘美食’”指令将无法执行。
2.3 连接方式选择:USB是黄金标准,WiFi是进阶体验
- USB连接(推荐新手首选):即插即用,延迟最低,稳定性最高。连接后执行
adb devices,输出应为<device_id> device。如果显示unauthorized,请检查手机是否点了“允许”;如果显示为空,尝试更换USB线或接口。 - WiFi连接(适合固定办公场景):需先用USB线连接一次,执行
adb tcpip 5555,然后断开USB,再执行adb connect <手机IP>:5555。成功后adb devices会显示<手机IP>:5555 device。注意:手机和电脑必须在同一局域网,且路由器未开启AP隔离功能。
3. 云端部署:启动你的“AI大脑”
这一步在云服务器(或你自己的高性能PC)上进行,目标是让AutoGLM-Phone-9B模型以OpenAI兼容API的形式对外提供服务。我们跳过复杂的Docker编排,直击最简启动命令。
3.1 模型获取:国内用户请走ModelScope高速通道
模型文件约18GB,下载速度决定成败。
国内用户(强烈推荐):
git clone https://www.modelscope.cn/ZhipuAI/AutoGLM-Phone-9B.gitModelScope镜像在国内访问极快,通常10分钟内即可完成。
国际用户:
git lfs install git clone https://huggingface.co/zai-org/AutoGLM-Phone-9B
验证完整性:进入
AutoGLM-Phone-9B目录,执行ls -la。你应该能看到config.json、pytorch_model.bin、tokenizer.json等核心文件。如果只有.gitattributes,说明git-lfs未正确安装或未执行git lfs pull。
3.2 启动服务:一行命令,一个端口
vLLM是当前最高效的多模态推理引擎。启动命令需严格匹配以下参数,尤其是--max-model-len和--mm_processor_kwargs,它们直接关系到AI能否正确解析长截图。
Linux/macOS启动脚本(start.sh):
python3 -m vllm.entrypoints.openai.api_server \ --served-model-name autoglm-phone-9b \ --model ./AutoGLM-Phone-9B \ --port 8000 \ --max-model-len 25480 \ --mm-encoder-tp-mode data \ --mm_processor_cache_type shm \ --mm_processor_kwargs '{"max_pixels":5000000}' \ --chat-template-content-format string \ --limit-mm-per-prompt '{"image":10}'Windows启动脚本(start.bat):
python -m vllm.entrypoints.openai.api_server ^ --served-model-name autoglm-phone-9b ^ --model ./AutoGLM-Phone-9B ^ --port 8000 ^ --max-model-len 25480 ^ --mm-encoder-tp-mode data ^ --mm_processor_cache_type shm ^ --mm_processor_kwargs "{\"max_pixels\":5000000}" ^ --chat-template-content-format string ^ --limit-mm-per-prompt "{\"image\":10}"
启动成功标志:终端输出中出现Uvicorn running on http://0.0.0.0:8000,且后续无红色报错。此时,你的“AI大脑”已在http://<服务器IP>:8000/v1地址上待命。
防火墙提醒:云服务器用户,请务必在安全组中放行
8000端口。本地测试用户,确保Windows Defender或Mac防火墙未阻止Python进程。
4. 控制端集成:让本地电脑“说人话”,让云端AI“听懂并行动”
这是整个流程的枢纽。我们将Open-AutoGLM项目作为本地控制中枢,它负责采集手机截图、调用云端API、解析返回的动作指令、再通过ADB执行。
4.1 项目克隆与依赖安装:四行命令搞定
git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM pip install -r requirements.txt pip install -e .pip install -e .是关键。它以“开发模式”安装项目,意味着你后续修改代码(如phone_agent/config/prompts.py中的系统提示词),无需重新安装即可生效。
4.2 首次运行:用一条命令验证全链路
现在,我们用最简单的指令,完成一次端到端验证。请确保:
- 手机已通过USB或WiFi连接,
adb devices能列出设备; - 云服务器上的vLLM服务正在运行;
- 你已将
--base-url替换为云服务器的真实IP和端口(例如http://192.168.1.100:8000/v1)。
python main.py \ --device-id <你的设备ID或IP:5555> \ --base-url http://<云服务器IP>:8000/v1 \ --model "autoglm-phone-9b" \ "打开设置"预期结果:几秒后,终端会打印出类似以下内容:
💭 思考过程: 当前在桌面,需要打开设置应用 执行动作: {"action": "Launch", "app": "设置"} 动作执行成功: 已启动设置应用同时,你的手机屏幕上,设置APP应已自动打开。
如果失败,请按此顺序排查:
adb devices是否有设备?无则检查USB/WiFi连接;curl http://<云服务器IP>:8000/v1/models是否返回JSON?无则检查vLLM服务及防火墙;- 终端报错
Connection refused?检查--base-url中的IP和端口是否拼写正确。
4.3 Python API:为自动化脚本注入灵魂
命令行适合快速测试,而Python API才是构建复杂工作流的利器。下面是一个可直接运行的脚本,它会自动完成“打开微信,给指定联系人发消息”的全过程:
from phone_agent import PhoneAgent from phone_agent.model import ModelConfig # 配置指向你的云服务 model_config = ModelConfig( base_url="http://192.168.1.100:8000/v1", # 替换为你的云服务器地址 model_name="autoglm-phone-9b", ) # 创建智能体实例 agent = PhoneAgent(model_config=model_config) # 执行任务(这里会自动处理截图、调用API、执行ADB) result = agent.run("打开微信,给张三发送消息'你好,今天忙吗?'") print(f"任务结果: {result}")将此代码保存为wechat_demo.py,在Open-AutoGLM目录下运行python wechat_demo.py。你会发现,AI不仅会打开微信,还会自动查找“张三”,点击进入聊天窗口,并准确输入那句问候语。这才是AI Agent的价值:它把一系列离散的、需要人工判断的操作,封装成了一个原子化的、可编程的函数调用。
5. 实战进阶:从“能用”到“好用”的关键技巧
部署成功只是开始。要让Open-AutoGLM真正融入你的工作流,以下技巧必不可少。
5.1 敏感操作接管:安全不是功能,而是默认行为
当AI即将执行支付、删除联系人、清除缓存等高风险操作时,它不会擅自行动。系统会自动暂停,并在你的本地终端打印出清晰的确认提示:
需要确认: 即将向美团支付订单金额38.5元,是否继续? 请输入 (y/n):你可以选择y让AI继续,或n手动接管。这个机制是硬编码在框架里的,无需额外配置。它确保了AI永远是你的助手,而非替代者。
5.2 提升成功率:给AI一点“思考时间”
在真实环境中,APP启动、网络加载、动画过渡都需要时间。AI的“思考”是瞬时的,但“执行”需要等待。在main.py中,你可以轻松增加全局等待时间:
# 在main.py顶部找到或添加以下配置 import time # ... 其他导入 ... # 在agent.run()调用前,插入等待 time.sleep(1) # 等待1秒,确保APP完全加载 result = agent.run("...")对于更复杂的任务,建议在关键步骤间加入time.sleep(2),这比反复调试“为什么AI点错了”要高效得多。
5.3 自定义系统提示:让AI更懂你的领域
打开phone_agent/config/prompts.py,你会看到SYSTEM_PROMPT变量。这是AI的“人设说明书”。如果你想让它成为一位专业的电商导购,可以这样改写:
SYSTEM_PROMPT = """ 你是一位资深的手机电商购物助手,专注于淘宝、京东、拼多多平台。你的任务是帮用户以最优性价比买到心仪商品。 请严格遵守: 1. 所有搜索必须使用中文关键词,禁止拼音或英文。 2. 排序优先级:销量 > 价格 > 评分。 3. 对于价格区间查询,必须主动筛选并展示符合范围的商品。 4. 遇到促销活动(如满减、优惠券),必须明确告知用户节省金额。 """修改后,再次运行python main.py ...,你会发现AI在处理购物指令时,思路更聚焦,反馈更专业。
6. 常见问题速查:90%的问题,答案就在这里
| 问题现象 | 根本原因 | 一键解决方案 |
|---|---|---|
adb devices显示unauthorized | 手机未授权电脑的USB调试 | 断开USB,关闭手机开发者选项,再重新开启并连接,手机上务必点“允许” |
Connection refused错误 | 云服务器IP/端口错误,或防火墙拦截 | 用curl http://<IP>:8000/v1/models在本地电脑测试;检查云服务器安全组 |
| AI识别屏幕后,执行动作明显“点偏了” | 手机屏幕分辨率与模型训练分辨率不匹配 | 在main.py中,找到截图相关代码,强制将截图缩放到1080x1920再上传 |
| 中文输入框无法输入文字 | ADB Keyboard未启用或未设为默认 | 进入手机“设置 > 语言和输入法”,将“ADB Keyboard”设为默认输入法 |
| 模型服务启动后,内存占用飙升至100% | --max-model-len参数过大,超出显存 | 将--max-model-len 25480改为--max-model-len 12740,重启服务 |
7. 总结:你已经拥有了一个可编程的“数字分身”
回顾整个流程,你完成了一件了不起的事:你没有编写一行AI模型代码,却成功部署了一个能理解视觉、解析语言、执行动作的完整智能体系统。这背后是Open-AutoGLM精巧的架构设计——它把最复杂的模型推理交给云端,把最可靠的设备控制留给本地ADB,把最灵活的业务逻辑交给你用Python定义。
你现在可以做的,远不止“打开抖音搜美食”。你可以写一个脚本,每天早上8点自动打开天气APP,截图并发送到你的企业微信;可以写一个程序,批量为小红书笔记点赞并评论;甚至可以集成到你的CI/CD流水线中,让AI自动完成APP的UI回归测试。
技术的终极价值,从来不是炫技,而是把人从重复劳动中解放出来,去专注那些真正需要创造力和判断力的事情。而Open-AutoGLM,正是这样一把钥匙。
--- > **获取更多AI镜像** > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。