从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+
    推荐用pyenvMiniconda管理环境,避免污染系统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),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值