从GitHub克隆到运行:Open-AutoGLM完整部署记录
1. 这不是另一个“AI手机概念”,而是一个能真正点开App的智能体
你有没有试过,对着手机说一句“帮我订一杯附近星巴克的冰美式”,然后它自己打开外卖App、选门店、加冰、下单、付款?听起来像科幻片——但Open-AutoGLM让这件事离现实只差一次git clone。
这不是演示视频里的剪辑效果,也不是限定场景的Demo。它是智谱AI开源的Phone Agent框架,一个能在真实安卓设备上完成端到端操作的AI智能体:看懂屏幕、理解意图、规划动作、点击滑动、输入文字、甚至在遇到验证码时主动喊你“来接管一下”。
它不依赖云端截图上传+人工标注反馈的慢循环,而是通过ADB直连设备,每秒截屏、实时推理、即时执行——整个过程像一个熟练的真人手指在操作,只是更快、更准、不知疲倦。
本文不讲论文、不画架构图,只做一件事:带你从零开始,把Open-AutoGLM跑起来,让它第一次为你打开抖音、搜索博主、完成关注。每一步都经过实测,所有命令可直接复制粘贴,所有坑我都替你踩过了。
2. 环境准备:三台设备,四个确认项
别被“AI”二字吓住——Open-AutoGLM对本地电脑的要求极低。它本身不训练模型,也不跑大参数视觉编码器,真正的“大脑”在服务端(你可以用智谱BigModel API,也可以自己搭vLLM)。你的本地电脑只负责“眼睛”(截屏)、“手”(ADB指令)和“传话筒”(转发请求)。
我们先理清三类设备角色:
- 你的本地电脑(Windows/macOS/Linux):运行控制端代码,连接手机,发送指令
- 你的安卓手机(Android 7.0+):被操控的“执行终端”,需开启调试权限
- 模型服务端(云服务器 or 本地GPU机器):提供
autoglm-phone-9b推理能力,返回操作决策
2.1 本地电脑:装好这四样,就齐了
- Python 3.10+
推荐用pyenv或Miniconda管理环境,避免污染系统Python。验证命令:
python --version # 应输出 3.10.x 或更高- ADB 工具(必须)
下载地址:https://developer.android.com/tools/releases/platform-tools
解压后,将platform-tools/目录路径加入系统PATH: - Windows:
系统属性 → 高级 → 环境变量 → 系统变量 → Path → 新建,填入解压路径 - macOS/Linux:在
~/.zshrc或~/.bashrc中添加:export PATH="$PATH:/path/to/platform-tools"
验证:终端输入adb version,应显示版本号(如Android Debug Bridge version 1.0.41)
Git
用于克隆仓库。Mac用xcode-select --install,Windows下载Git for Windows一个能联网的浏览器
后面要访问智谱BigModel控制台申请API Key,或下载ADB Keyboard APK——没错,这个环节真得手动点几下。
小提醒:不要用WSL或Docker Desktop内置的Linux子系统跑ADB控制端。ADB需要直接访问USB设备驱动,WSL2对USB支持不稳定,极易出现
device unauthorized或no devices/emulators found。老老实实用Windows CMD、PowerShell或macOS Terminal。
2.2 安卓手机:五步开通“被操控权”
这是最容易卡住的环节。很多用户卡在“adb devices 显示 offline”或“授权弹窗不出现”。按顺序操作,一步都不能跳:
开启开发者模式
设置 → 关于手机 → 连续点击“版本号”7次(不是5次,不是10次,是7次),直到提示“您已处于开发者模式”。开启USB调试
返回设置主界面 → 系统 → 开发者选项 → 找到并开启USB调试
部分华为/小米/OPPO机型还需额外开启:- “USB调试(安全设置)”
- “USB安装”
- “USB调试(认证)”(若弹出RSA密钥确认框,请勾选“始终允许”并点确定)
用原装USB线连接电脑
充电宝线、蓝牙耳机线、Type-C转Lightning线——统统不行。必须是支持数据传输的原装线。插上后,手机通知栏应弹出“USB用于:文件传输”或“传输文件”,点击改为“文件传输(MTP)”。安装 ADB Keyboard(关键!)
Open-AutoGLM所有文本输入(搜索关键词、账号密码)都靠它完成。- 下载地址:https://github.com/senzhk/ADBKeyBoard/releases
(找最新版ADBKeyboard_v1.5.apk) - 手机安装该APK(需开启“未知来源应用安装”)
- 设置 → 系统 → 语言与输入法 → 虚拟键盘 → 勾选ADB Keyboard
- 返回上一级 → 默认键盘 → 切换为ADB Keyboard
- 下载地址:https://github.com/senzhk/ADBKeyBoard/releases
最后验证:
adb devices必须返回device$ adb devices List of devices attached 8A2X123456789ABC device如果显示
unauthorized,请检查第2步是否漏掉“始终允许”;如果显示offline,请重插USB线并重启手机ADB(adb kill-server && adb start-server)。
3. 克隆、安装、配置:三行命令走完前端部署
现在,你的电脑和手机已建立信任关系。接下来,把控制端代码拉下来,装好依赖,就等发号施令。
3.1 克隆仓库并进入目录
git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM注意:仓库名是
Open-AutoGLM,不是AutoGLM或phone-agent。拼错会404。
3.2 安装Python依赖(两个pip命令缺一不可)
pip install -r requirements.txt pip install -e .requirements.txt包含运行时依赖(adbutils,Pillow,requests等)-e .表示以“开发模式”安装本项目,让python main.py能直接导入phone_agent模块
验证安装:运行python -c "import phone_agent; print('OK')",无报错即成功。
3.3 配置模型服务地址:两种选择,推荐第一种
Open-AutoGLM本身不包含大模型,它需要调用一个符合OpenAI API格式的LLM服务。你有两个选择:
| 方案 | 优点 | 缺点 | 推荐指数 |
|---|---|---|---|
| A. 智谱BigModel API(推荐新手) | 无需GPU,免部署,5分钟可用,中文优化好 | 需注册账号、申请API Key、有调用额度限制 | |
| B. 自行部署vLLM(适合有GPU用户) | 完全私有,响应快,可定制模型 | 需NVIDIA GPU(显存≥16GB),下载20GB模型,配置复杂 |
▶ 方案A:用智谱BigModel(3分钟开通)
- 访问 https://bigmodel.cn/ → 注册/登录
- 进入控制台 → API Key → 创建新Key(名称随意,如
open-autoglm-dev) - 复制Key(形如
sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
运行命令时,加上这两个参数即可:
--base-url https://open.bigmodel.cn/api/paas/v4 \ --apikey "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ --model "autoglm-phone"模型名注意:BigModel平台用的是
autoglm-phone(非autoglm-phone-9b),这是官方API层统一命名。
▶ 方案B:自建vLLM服务(进阶用户)
如果你有A10/A100/V100等显卡,想完全离线运行:
- 按
requirements.txt中For Model Deployment章节安装vLLM:pip install vllm - 下载模型(约20GB):
huggingface-cli download zai-org/AutoGLM-Phone-9B --local-dir ./models/AutoGLM-Phone-9B - 启动服务(关键参数已精简,实测可用):
启动成功后,访问python3 -m vllm.entrypoints.openai.api_server \ --model ./models/AutoGLM-Phone-9B \ --served-model-name autoglm-phone-9b \ --port 8000 \ --max-model-len 25480 \ --limit-mm-per-prompt '{"image":10}' \ --mm-encoder-tp-mode data \ --chat-template-content-format stringhttp://localhost:8000/v1/models应返回JSON,含autoglm-phone-9b。
4. 第一次运行:让AI帮你关注一个抖音博主
万事俱备。现在,给它下达第一条自然语言指令——我们选一个有明确结果、易验证、且带输入动作的典型任务:“打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!”
4.1 获取设备ID
先确认你的设备在线:
adb devices # 输出类似:8A2X123456789ABC device复制前面那串字母数字组合(如8A2X123456789ABC),这就是你的--device-id。
4.2 执行命令(以BigModel API为例)
在Open-AutoGLM/目录下,运行:
python main.py \ --device-id 8A2X123456789ABC \ --base-url https://open.bigmodel.cn/api/paas/v4 \ --apikey "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ --model "autoglm-phone" \ "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"命令拆解:
--device-id:告诉Agent“操控哪台手机”--base-url+--apikey:告诉Agent“大脑在哪,怎么进门”- 最后字符串:就是你对AI说的人话,不需要加引号外的任何修饰词,越像日常说话越好
4.3 观察执行过程(Verbose模式默认开启)
你会看到终端滚动输出,类似这样:
[INFO] Connected to device: 8A2X123456789ABC [INFO] Capturing screen... (saved to /tmp/screen.png) [INFO] Sending request to LLM... [INFO] LLM response: {"thought":"用户想关注特定抖音号。首先需要打开抖音App。","action":"LAUNCH_APP","app_name":"com.ss.android.ugc.aweme"} [INFO] Executing LAUNCH_APP: com.ss.android.ugc.aweme [INFO] Capturing screen... (saved to /tmp/screen_1.png) [INFO] LLM response: {"thought":"抖音已启动,首页有搜索框。下一步点击搜索框。","action":"TAP","x":540,"y":120} [INFO] Executing TAP at (540, 120) ... [INFO] LLM response: {"thought":"已输入抖音号,点击搜索按钮。","action":"TAP","x":1000,"y":120} [INFO] LLM response: {"thought":"搜索结果页出现目标博主。点击进入其主页。","action":"TAP","x":540,"y":420} [INFO] LLM response: {"thought":"博主主页有‘关注’按钮。点击关注。","action":"TAP","x":540,"y":800} [INFO] Task completed successfully.成功标志:
- 手机屏幕自动亮起 → 抖音App启动 → 顶部搜索框被点击 → 键盘弹出 → 输入
dycwo11nt61d→ 点击搜索 → 进入博主主页 → 点击“关注”按钮 - 终端最后一行显示
Task completed successfully.
如果中途卡住(比如停在“等待搜索框出现”),大概率是:
- 手机分辨率非1080p(Agent默认适配1080x1920,高刷屏或挖孔屏需微调坐标)
- 抖音版本过新,UI元素位置偏移(可临时切回旧版APK)
- ADB Keyboard未设为默认输入法(检查手机设置)
5. 进阶用法:不只是命令行,还能嵌入你的脚本
main.py是交互入口,但Open-AutoGLM真正强大的地方在于它的Python API设计——你可以把它当成一个函数库,无缝集成到自己的自动化流程中。
5.1 一行代码封装Agent
from phone_agent import PhoneAgent from phone_agent.model import ModelConfig # 配置模型服务 model_config = ModelConfig( base_url="https://open.bigmodel.cn/api/paas/v4", model_name="autoglm-phone", api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ) # 初始化Agent(自动连接设备) agent = PhoneAgent(model_config=model_config, device_id="8A2X123456789ABC") # 直接调用,返回结构化结果 result = agent.run("打开小红书搜美食") print(f"状态: {result.status}") print(f"耗时: {result.duration:.1f}s") print(f"执行步骤: {len(result.steps)} 步")5.2 处理敏感操作:当AI要输密码时,让它“喊你一声”
有些任务涉及隐私,比如登录微信。Open-AutoGLM内置了on_human_intervention回调机制:
def ask_for_permission(task_desc: str, screenshot_path: str) -> bool: print(f" AI需要人工介入:{task_desc}") print(f" 当前屏幕截图已保存至:{screenshot_path}") print(" 请手动操作完成后,输入 y 继续,n 中止...") return input().strip().lower() == "y" agent = PhoneAgent( model_config=model_config, device_id="8A2X123456789ABC", on_human_intervention=ask_for_permission # 注册回调 ) result = agent.run("登录微信账号")此时,当Agent识别到“密码输入框”或“短信验证码页面”,会暂停执行、保存当前截图、打印提示,并等待你输入y才继续——安全与自动化,不再二选一。
5.3 批量任务:写个for循环,让AI帮你刷10个App
tasks = [ "打开美团搜火锅", "打开淘宝搜无线耳机", "打开高德地图查公司路线", "打开网易云音乐播周杰伦" ] for i, task in enumerate(tasks, 1): print(f"\n--- 任务 {i}/{len(tasks)}: {task} ---") result = agent.run(task) if result.status == "success": print(f" 完成,耗时 {result.duration:.1f}s") else: print(f"❌ 失败:{result.error}") time.sleep(3) # 每次任务后休息3秒,避免过热6. 故障排查:90%的问题,都在这五个检查点
部署中最常遇到的错误,我按发生频率排序,并给出一句话解决方案:
| 现象 | 根本原因 | 一句话解决 |
|---|---|---|
adb devices显示unauthorized | 手机未点“允许USB调试”弹窗 | 拔掉USB线→重启手机→重新连接→立刻在手机上点“允许” |
终端报错ConnectionRefusedError: [Errno 111] Connection refused | 模型服务没起来,或URL/端口填错 | 检查vLLM是否在运行;用浏览器访问http://localhost:8000/v1/models看能否返回JSON |
| AI一直说“正在等待搜索框”,但手机没反应 | ADB Keyboard未启用为默认输入法 | 设置 → 语言与输入法 → 默认键盘 → 切换为ADB Keyboard |
| 执行到“点击”步骤就卡住,屏幕无变化 | 设备分辨率非1080x1920,坐标偏移 | 在config.yaml中修改screen_width和screen_height为你的手机实际分辨率 |
BigModel API返回401 Unauthorized | API Key过期或复制错误 | 重新登录bigmodel.cn,创建新Key,用鼠标双击复制,勿手打 |
终极技巧:加
--verbose参数看详细日志,加--debug保存每一步截图到./debug/目录,问题定位快10倍。
7. 总结:你刚刚部署的,是一个“手机操作系统级”的AI
回看这一路:
你配置了ADB,让电脑认出了手机;
你装好了控制端,让Python能截屏、能发指令;
你连上了模型服务,让AI能“看见”屏幕、“听懂”人话、“想出”下一步;
最后,你敲下一行命令,看着手机自己打开App、输入文字、点击关注——整个过程没有一行Selenium脚本,没有一个XPath定位,只有自然语言。
Open-AutoGLM的价值,不在于它多快或多准,而在于它把AI从“回答问题”的层面,拉到了“执行任务”的层面。它不替代你思考,而是成为你手指和眼睛的延伸。
下一步,你可以:
- 用它批量测试App兼容性(自动遍历所有Tab)
- 搭配定时任务,每天早8点自动打开健康App打卡
- 集成到企业IT系统,新员工入职时自动配置邮箱、钉钉、内部Wiki
它不是一个玩具,而是一把钥匙——打开了“AI原生手机应用”的第一道门。
--- > **获取更多AI镜像** > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。