news 2026/3/1 3:19:12

从GitHub克隆到运行:Open-AutoGLM完整部署记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从GitHub克隆到运行:Open-AutoGLM完整部署记录

从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 unauthorizedno devices/emulators found。老老实实用Windows CMD、PowerShell或macOS Terminal。

2.2 安卓手机:五步开通“被操控权”

这是最容易卡住的环节。很多用户卡在“adb devices 显示 offline”或“授权弹窗不出现”。按顺序操作,一步都不能跳:

  1. 开启开发者模式
    设置 → 关于手机 → 连续点击“版本号”7次(不是5次,不是10次,是7次),直到提示“您已处于开发者模式”。

  2. 开启USB调试
    返回设置主界面 → 系统 → 开发者选项 → 找到并开启USB调试
    部分华为/小米/OPPO机型还需额外开启:

    • “USB调试(安全设置)”
    • “USB安装”
    • “USB调试(认证)”(若弹出RSA密钥确认框,请勾选“始终允许”并点确定)
  3. 用原装USB线连接电脑
    充电宝线、蓝牙耳机线、Type-C转Lightning线——统统不行。必须是支持数据传输的原装线。插上后,手机通知栏应弹出“USB用于:文件传输”或“传输文件”,点击改为“文件传输(MTP)”。

  4. 安装 ADB Keyboard(关键!)
    Open-AutoGLM所有文本输入(搜索关键词、账号密码)都靠它完成。

    • 下载地址:https://github.com/senzhk/ADBKeyBoard/releases
      (找最新版ADBKeyboard_v1.5.apk
    • 手机安装该APK(需开启“未知来源应用安装”)
    • 设置 → 系统 → 语言与输入法 → 虚拟键盘 → 勾选ADB Keyboard
    • 返回上一级 → 默认键盘 → 切换为ADB Keyboard
  5. 最后验证: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,不是AutoGLMphone-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分钟开通)
  1. 访问 https://bigmodel.cn/ → 注册/登录
  2. 进入控制台 → API Key → 创建新Key(名称随意,如open-autoglm-dev
  3. 复制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等显卡,想完全离线运行:

  1. requirements.txtFor Model Deployment章节安装vLLM:
    pip install vllm
  2. 下载模型(约20GB):
    huggingface-cli download zai-org/AutoGLM-Phone-9B --local-dir ./models/AutoGLM-Phone-9B
  3. 启动服务(关键参数已精简,实测可用):
    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 string
    启动成功后,访问http://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_widthscreen_height为你的手机实际分辨率
BigModel API返回401 UnauthorizedAPI 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),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/25 15:34:16

如何提升Qwen2.5-0.5B响应质量?提示词工程实战

如何提升Qwen2.5-0.5B响应质量?提示词工程实战 1. 为什么小模型更需要好提示词? 你可能已经试过 Qwen2.5-0.5B-Instruct:把它装进树莓派、塞进旧笔记本、甚至在安卓手机上跑起来——5亿参数,1GB显存,32k上下文&#…

作者头像 李华
网站建设 2026/2/28 1:19:29

5分钟部署Paraformer语音识别,离线转写中文长音频超简单

5分钟部署Paraformer语音识别,离线转写中文长音频超简单 你有没有过这样的经历:录了一段30分钟的会议录音,想快速整理成文字稿,却卡在“找不到好用又不用联网的语音转文字工具”上?剪辑视频时反复听口播素材&#xff…

作者头像 李华
网站建设 2026/2/19 14:02:13

想做人像抠图?先试试这个预装环境的BSHM镜像

想做人像抠图?先试试这个预装环境的BSHM镜像 人像抠图这事,说简单也简单——一张照片,把人从背景里干净利落地“拎”出来;说难也真难——边缘毛发、透明纱衣、发丝细节,稍有不慎就是锯齿、灰边、鬼影。你可能试过Phot…

作者头像 李华
网站建设 2026/2/25 10:02:34

translategemma-12b-it效果展示:55种语言翻译实测体验

translategemma-12b-it效果展示:55种语言翻译实测体验 1. 这不是“能翻就行”的翻译模型,而是真正懂语境的跨语言助手 你有没有试过用翻译工具把一段带专业术语的医学报告翻成日语,结果满屏都是字面直译的生硬表达?或者把中文古…

作者头像 李华
网站建设 2026/2/24 3:06:13

EagleEye工业落地:某光伏组件厂利用EagleEye实现EL图像隐裂毫秒定位

EagleEye工业落地:某光伏组件厂利用EagleEye实现EL图像隐裂毫秒定位 1. 为什么光伏厂突然开始“抢着”部署视觉检测系统? 你可能想不到,一块看似普通的光伏组件,出厂前要经历至少7道人工目检——尤其是EL(电致发光&a…

作者头像 李华
网站建设 2026/2/25 10:47:04

批量生成营销图:Z-Image自动化脚本思路

批量生成营销图:Z-Image自动化脚本思路 你是否经历过这样的场景:运营同事凌晨发来消息:“明天一早要上新,20款商品主图3套朋友圈海报,能今晚出吗?” 设计师正在赶另一版方案,AI绘图工具点开又关…

作者头像 李华