Open-AutoGLM成本优化案例:零显卡环境部署实操手册

1. 引言

想不想让AI帮你操作手机?比如,你随口说一句“帮我打开小红书,搜一下周末去哪玩”,AI就能自动完成解锁、打开App、搜索、浏览这一系列操作。这听起来像是科幻电影里的场景,但现在,借助智谱开源的Open-AutoGLM框架,这个想法已经可以落地了。

Open-AutoGLM,特别是其Phone Agent项目,就是一个能“看懂”手机屏幕并“动手”操作的AI智能助理。它通过视觉语言模型理解屏幕上显示的内容,再通过ADB(安卓调试桥)自动执行点击、滑动等操作,把我们的自然语言指令变成手机上的实际行动。

不过,运行这样一个强大的AI模型,通常需要昂贵的显卡(GPU)来提供算力,这成了很多个人开发者和中小团队尝试的门槛。今天,我要分享的,正是一个极具性价比的解决方案:如何在零显卡的普通云服务器上,成功部署并运行Open-AutoGLM的AI手机助手

本文将手把手带你走通整个流程,从云端模型服务的搭建,到本地电脑与手机的连接控制,最终实现用一句自然语言命令AI操作手机。我们追求的目标是:低成本、可实操、每一步都有结果

2. 项目核心:Phone Agent 是如何工作的?

在开始动手之前,我们花几分钟了解一下Phone Agent到底是怎么运转的。理解了原理,后面遇到问题你就能自己排查了。

你可以把Phone Agent想象成一个由“眼睛”、“大脑”和“手”组成的智能体:

  1. 眼睛(视觉感知):通过ADB实时获取手机屏幕截图。这个截图不是给人看的,是喂给“大脑”——视觉语言模型(VLM)的。
  2. 大脑(分析与规划):核心是一个名为autoglm-phone-9b的模型。它同时接收两种信息:你发出的文字指令(如“打开微信”)和“眼睛”传来的屏幕截图。模型需要完成多步思考:
    • 理解指令:你要我干什么?
    • 解析屏幕:当前手机屏幕上有什么?哪个是微信图标?
    • 规划动作:要完成“打开微信”,我需要先点击这里,再滑动那里...
    • 生成操作:将规划好的动作,转换成ADB能执行的命令,比如 tap(500, 800)(点击坐标500,800)。
  3. 手(执行操作):通过ADB连接,将“大脑”生成的点击、滑动等命令,真实地发送到你的安卓手机或模拟器上执行。

整个过程形成一个闭环:截图→分析→生成操作→执行→再截图→再分析...直到任务完成。系统还设计了安全机制,遇到登录、支付等敏感操作时会暂停,等待用户确认。

而我们本次部署的核心挑战在于,让这个强大的“大脑”在一个没有显卡的服务器上也能全速思考。解决方案就是利用 vLLM 这一高效的推理引擎,它能够优化模型在CPU上的运行效率,使其在成本低廉的云服务器上达到可用甚至流畅的速度。

3. 第一步:云端模型服务部署(零显卡服务器)

我们的主战场是一台没有独立显卡的云服务器。这里以性价比高的CPU型云服务器为例。

3.1 服务器准备与环境配置

首先,你需要准备一台云服务器。国内外主流云厂商(如阿里云、腾讯云、AWS Lightsail等)的入门级CPU实例通常就够用了,内存建议8GB或以上。

通过SSH连接到你的服务器,开始以下操作:

# 1. 更新系统包
sudo apt-get update && sudo apt-get upgrade -y

# 2. 安装必要的系统工具和Python环境
sudo apt-get install -y python3-pip python3-venv git curl

# 3. 创建项目目录并进入
mkdir -p ~/auto_glm && cd ~/auto_glm

# 4. 创建独立的Python虚拟环境(避免依赖冲突)
python3 -m venv venv
source venv/bin/activate  # 激活虚拟环境

3.2 安装与配置 vLLM (CPU版本)

接下来安装核心的模型推理引擎 vLLM。注意,我们需要安装支持CPU推理的版本。

# 安装支持CPU推理的vLLM。这是一个稍慢但稳定的安装方式。
pip install vllm --extra-index-url https://download.pytorch.org/whl/cpu

# 安装完成后,验证安装
python -c "import vllm; print('vLLM导入成功,版本:', vllm.__version__)"

3.3 下载与启动 AutoGLM-Phone 模型

vLLM 提供了一个命令行工具,可以非常方便地启动一个兼容OpenAI API格式的模型服务。

# 1. 使用 vLLM 启动模型服务。
# 这里我们启动智谱开源的 autoglm-phone-9b 模型。
# `--model` 参数指定模型,vLLM会自动从Hugging Face下载。
# `--api-key` 可以随意设置一个,用于简单的访问控制。
# `--port` 指定服务监听的端口,例如 8800。
# `--max-model-len` 限制模型处理的最大长度,对于CPU环境,设置小一些可以节省内存。
# `--disable-custom-all-reduce` 是CPU运行的必要参数。
# `--tensor-parallel-size 1` 表示使用单进程,适合CPU。

vllm serve autoglm/autoglm-phone-9b \
  --api-key token-abc123 \
  --port 8800 \
  --max-model-len 1024 \
  --disable-custom-all-reduce \
  --tensor-parallel-size 1

执行这个命令后,你会看到大量输出。请耐心等待,直到看到类似以下的日志,说明模型加载成功并开始服务:

INFO 07-10 14:30:15 llm_engine.py:197] Initializing an LLM engine (v0.5.2) with config: ...
INFO 07-10 14:30:15 model_runner.py:237] Loading model weights took 15.32 GB
INFO 07-10 14:30:16 llm_engine.py:404] Model autoglm/autoglm-phone-9b is ready on GPU:0.
Uvicorn running on http://0.0.0.0:8800 (Press CTRL+C to quit)

关键点说明:

  • 首次运行vLLM 会自动从网络下载模型文件(约10多GB),下载速度和服务器网络有关,请保持连接稳定。
  • 内存占用:该模型在CPU上运行需要约12-16GB内存。确保你的服务器内存足够,否则可能会因内存不足(OOM)而失败。
  • 服务地址http://0.0.0.0:8800 表示服务监听在本机所有网络接口的8800端口。你需要确保服务器的安全组或防火墙规则放行了8800端口的入站流量

3.4 验证云端服务

模型服务启动后,我们可以在服务器上简单测试一下它是否正常工作。

打开另一个SSH终端窗口,连接到同一台服务器,执行:

curl http://localhost:8800/v1/models

如果返回一个包含模型信息的JSON,例如 {"object":"list","data":[{"id":"autoglm/autoglm-phone-9b", ...}]},那么恭喜你,云端AI“大脑”已经成功上线!

现在,这个服务提供了一个标准的OpenAI兼容API。你可以通过 http://<你的服务器公网IP>:8800/v1/chat/completions 来访问它。记住这个地址,下一步本地控制端需要连接到这里。

4. 第二步:客户端与真机连接(本地电脑)

“大脑”在云端准备好了,现在我们需要在本地电脑配置“手”和“眼睛”,即控制端,并通过ADB连接安卓手机。

4.1 硬件与环境准备

  • 操作系统:Windows 10/11 或 macOS。
  • Python:建议安装 Python 3.10 或以上版本。
  • 安卓设备:一部Android 7.0以上的真实手机(推荐),或一个安卓模拟器(如MuMu模拟器、夜神模拟器)。
  • ADB工具:这是与安卓设备通信的桥梁。

安装ADB:

  • Windows:从官网下载platform-tools包,解压后,将其路径(例如 C:\platform-tools)添加到系统的Path环境变量中。打开命令提示符,输入 adb version 能显示版本号即成功。
  • macOS:可以通过Homebrew安装 brew install android-platform-tools,或在终端临时添加路径 export PATH=$PATH:~/Downloads/platform-tools(假设解压在该目录)。

4.2 手机端设置

要让电脑控制手机,需要在手机上开启几个开关:

  1. 开启开发者模式
    • 进入手机“设置” > “关于手机”。
    • 连续点击“版本号”7次左右,直到出现“您已处于开发者模式”的提示。
  2. 开启USB调试
    • 返回“设置”,找到新出现的“开发者选项”。
    • 打开“USB调试”开关。
  3. 安装ADB Keyboard(关键步骤)
    • 这是一个特殊的输入法,允许电脑通过ADB向手机输入文字。
    • 在手机浏览器中搜索并下载 ADBKeyboard.apk 文件进行安装。
    • 安装后,进入“设置” > “系统” > “语言与输入法” > “虚拟键盘”。
    • 启用“ADB Keyboard”,并将其设为“默认输入法”。

4.3 部署控制端代码 (Open-AutoGLM)

控制端是运行在你本地电脑上的Python程序,它负责连接云端“大脑”和本地手机。

# 1. 克隆Open-AutoGLM的代码仓库
git clone https://github.com/zai-org/Open-AutoGLM
cd Open-AutoGLM

# 2. 安装Python依赖包
pip install -r requirements.txt
# 以“可编辑”模式安装当前目录的包,方便后续修改
pip install -e .

4.4 连接安卓设备

确保手机用USB线连接电脑,或者手机和电脑在同一个WiFi网络下。

  • USB连接(最稳定)

    adb devices
    

    如果连接成功,你会看到类似 List of devices attached 和一行设备ID(如 abc123def device)。

  • WiFi连接(更灵活)

    # 先用USB线连接一次,开启无线调试端口
    adb tcpip 5555
    # 断开USB线,查看手机IP(通常在设置-关于手机-状态信息里)
    # 假设手机IP是 192.168.1.100
    adb connect 192.168.1.100:5555
    

    再次运行 adb devices,应该能看到通过IP连接的设备。

5. 第三步:启动AI代理,见证自动化

万事俱备,只欠指令。现在,让我们命令AI开始工作。

5.1 通过命令行运行

在本地电脑的 Open-AutoGLM 项目目录下,打开终端,运行以下命令:

python main.py \
  --device-id <你的设备ID> \
  --base-url http://<云服务器公网IP>:8800/v1 \
  --model "autoglm-phone-9b" \
  "打开抖音,搜索抖音号为'dycwo11nt61d'的博主并关注他!"

参数解释:

  • --device-id:填写 adb devices 命令列出的设备ID或IP地址(如 abc123def192.168.1.100:5555)。
  • --base-url:填写你在第三步搭建的云端模型服务地址。
  • 最后的字符串:就是你给AI下的自然语言指令。

运行命令后,你会看到程序开始运行:它先截取手机屏幕,发送到云端模型,模型返回操作指令(如“点击搜索框”),本地控制端再通过ADB执行点击...如此循环,直到任务完成或无法继续。整个过程会在终端打印出详细的日志。

5.2 通过Python API连接(更灵活)

如果你想集成到自己的脚本中,可以使用其Python API:

from phone_agent.adb import ADBConnection, list_devices

# 创建连接管理器
conn = ADBConnection()

# 连接远程设备(WiFi连接示例)
success, message = conn.connect("192.168.1.100:5555")
print(f"连接状态: {message}")

# 列出所有已连接的ADB设备
devices = list_devices()
for device in devices:
    print(f"设备ID: {device.device_id} - 类型: {device.connection_type.value}")

# 更多操作,如启用TCP/IP、获取设备IP等...
# success, message = conn.enable_tcpip(5555)
# ip = conn.get_device_ip()

6. 常见问题与排查指南

第一次部署很难一帆风顺,这里列出几个常见坑点:

  • 云端服务连接被拒绝
    • 检查:在本地电脑浏览器访问 http://<云服务器公网IP>:8800/v1/models
    • 解决:如果无法访问,99%是服务器安全组/防火墙没开8800端口。请登录云服务器控制台,配置安全组规则,允许0.0.0.0/0访问8800端口(仅用于测试,生产环境建议设置IP白名单)。
  • ADB设备找不到/离线
    • 检查:反复执行 adb devices
    • 解决:重新插拔USB线;在手机上撤销USB调试授权后重新连接;WiFi连接不稳定时,换用USB线。
  • 模型服务启动失败或内存不足
    • 现象vLLM serve 命令报错 KilledOOM
    • 解决:确认服务器内存是否足够(建议16GB+)。尝试在启动命令中加入 --max-model-len 512 进一步降低内存消耗。
  • AI执行动作错误(如点错地方)
    • 原因:模型对屏幕理解有偏差,或不同手机分辨率导致坐标计算错误。
    • 解决:这是当前技术的局限性。可以尝试将指令描述得更清晰,或等待模型后续迭代。

7. 总结

通过以上步骤,我们成功实现了一个零显卡、低成本的Open-AutoGLM手机AI助手完整部署。我们来回顾一下关键路径:

  1. 算力成本优化:利用 vLLM 引擎,我们将对显卡要求高的视觉语言模型,成功部署在了普通的CPU云服务器上,极大地降低了尝试门槛。
  2. 架构清晰分离:采用了“云端模型服务 + 本地控制执行”的架构。云端负责昂贵的AI推理,本地只负责轻量的设备控制和指令转发,结构灵活,便于维护。
  3. 流程完全贯通:从服务器环境配置、模型服务启动,到本地ADB连接、控制端安装,最后用自然语言驱动AI操作手机,形成了一个完整的闭环。

这个方案不仅适用于个人学习和体验,也为中小型团队探索AI自动化流程提供了一个可行的技术原型。你可以在此基础上,尝试更复杂的指令,如“把我的微信聊天记录截图并保存到相册”,或者将其集成到自动化测试、无障碍辅助等实际场景中。

技术的魅力在于将想象变为现实。现在,你的AI手机助手已经就绪,接下来,就看你如何指挥它了。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐