Open-AutoGLM 部署指南:本地大模型控制 Android 手机自动化

前言

Open-AutoGLM 是一个创新的开源项目,它将本地/服务器上的大语言模型与 Android 手机的自动化控制相结合,实现了基于自然语言指令的智能设备操作。通过结合 vLLM/SGlang 高性能推理框架和 ADB 远程调试协议,该项目为开发者和技术爱好者提供了一个强大的平台,可以轻松构建和部署跨设备的智能自动化应用。

本指南旨在为用户提供完整的 Open-AutoGLM 部署流程,从硬件系统要求到具体安装步骤,再到常见问题排查和进阶技巧,帮助您快速上手并充分利用这一技术。无论您是希望在本地 PC 上部署小规模测试环境,还是在服务器上搭建生产级应用,本指南都将为您提供详细的指导和最佳实践。

一、整体架构

Open-AutoGLM 采用「本地 PC/服务器运行大模型 + ADB 远程控制 Android 手机」的架构:

scss 复制代码
┌──────────────┐     HTTP/OpenAI API    ┌─────────────┐
│  vLLM/SGlang │◄──────────────────────►│ phone_agent │
│ (模型推理)   │                        │ (PythonSDK) │
└──────────────┘                        └──────┬──────┘
                                               │ ADB (USB/Wi-Fi)
                                               ▼
                                        Android 手机/模拟器

架构说明

  • 推理端:在本地 GPU 服务器上运行 vLLM 或 SGlang,提供与大模型对话的 OpenAI 兼容 API
  • 控制端:phone_agent 通过 HTTP API 与推理端通信,使用 ADB 协议控制手机
  • 设备端:Android 手机通过 ADB 接收指令,执行自动化操作

二、硬件 & 系统要求

2.1 推理端(服务器/PC)

最低配置

  • GPU :CUDA 12+ 兼容显卡(推荐 ≥40 GB 显存)
    • NVIDIA RTX 3090/4090(24GB)
    • NVIDIA A100(40GB)
    • 或其他 CUDA 12+ 兼容显卡
  • 内存:≥64 GB RAM
  • 存储:≥100 GB 可用空间(用于模型缓存)
  • 操作系统:Ubuntu 20.04+ / CentOS 7+ / Windows 10+ / macOS 12+

推荐配置(用于生产环境):

  • GPU:双卡 A100 80GB 或四卡 4090
  • 内存:128 GB RAM
  • 存储:≥500 GB NVMe
  • 网络:千兆网卡以上

2.2 控制端(操作电脑)

  • 操作系统:Windows 10+ / macOS 12+ / Linux 任意发行版
  • Python:3.10+(推荐使用 conda 或 pyenv 管理)
  • ADB:Android Platform Tools 1.x.x
  • 可选工具
    • scrcpy(屏幕镜像,实时观察手机操作)
    • Android Studio(用于调试和开发者选项)

2.3 设备端(Android 手机/模拟器)

  • 系统版本:Android 7.0+(推荐 Android 10+)
  • 开发者选项:已启用
  • USB 调试:已开启
  • 输入法:需安装 ADB Keyboard
  • 网络:可选 Wi-Fi 调试(端口 5555)

三、本地安装详细步骤

3.1 安装基础依赖环境

步骤 1:检查 Python 版本

bash 复制代码
# 检查 Python 版本(需要 ≥3.10)
python --version
python3 --version

# 如果未安装 Python 3.10+,请先安装
# Ubuntu/Debian:
sudo apt update && sudo apt install python3.10 python3.10-venv python3.10-distutils

# CentOS/RHEL:
sudo yum install python3.10 python3.10-pip python3.10-devel

# Windows: 下载安装 python.org
# macOS: 使用 Homebrew
brew install python@3.10

注意事项

  • 建议使用 conda 创建虚拟环境以避免依赖冲突
  • Windows 用户需确保长路径支持(启用 fsutil behavior set disablelastaccess 1

步骤 2:克隆仓库

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

# 查看分支信息
git branch -a
git log --oneline -5

目录结构说明

bash 复制代码
Open-AutoGLM/
├── main.py              # 主程序入口
├── requirements.txt     # Python 依赖
├── scripts/             # 辅助脚本
│   ├── check_deployment_cn.py  # 部署检查
│   └── ...
├── src/                 # 源代码
├── models/              # 模型存储目录
└── README.md            # 官方文档

步骤 3:创建 Python 虚拟环境(推荐)

bash 复制代码
# 使用 conda 创建环境
conda create -n autoglm python=3.10 -y
conda activate autoglm

# 或使用 venv
python3 -m venv autoglm_env
source autoglm_env/bin/activate  # Linux/macOS
# autoglm_env\Scripts\activate    # Windows

步骤 4:安装运行时依赖

bash 复制代码
# 升级 pip
pip install --upgrade pip

# 安装基础依赖
pip install -r requirements.txt

# 安装 Open-AutoGLM 本身(开发模式)
pip install -e .

# 验证安装
python -c "import phone_agent; print('phone-agent/Open-AutoGLM 安装成功')"

依赖说明

  • vllm:高性能模型推理框架
  • openai:OpenAI API 客户端
  • adbutils:ADB 设备管理
  • pillow:图像处理
  • numpy:数值计算
  • requests:HTTP 请求

3.2 配置 ADB 调试环境

步骤 1:下载 Android Platform Tools

方式 A:直接下载

bash 复制代码
# 创建目录
mkdir -p ~/android-sdk/platform-tools
cd ~/android-sdk

# 下载 platform-tools(Linux/macOS)
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip

# 解压
unzip platform-tools-latest-linux.zip

方式 B:使用 SDK Manager

bash 复制代码
# 安装 Android SDK Command-line Tools
wget https://dl.google.com/android/repository/commandlinetools-latest-linux.zip
unzip commandlinetools-latest-linux.zip -d ~/android-sdk

步骤 2:配置环境变量

Linux(~/.bashrc 或 ~/.zshrc)

bash 复制代码
export ANDROID_HOME=$HOME/android-sdk
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin

Windows(系统属性 -> 环境变量)

perl 复制代码
变量名:ANDROID_HOME
变量值:C:\Users\YourName\android-sdk

Path 添加:
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\emulator
%ANDROID_HOME%\tools
%ANDROID_HOME%\tools\bin

macOS(~/.zshrc)

bash 复制代码
export ANDROID_HOME=~/android-sdk
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin

步骤 3:验证 ADB 安装

bash 复制代码
# 检查 ADB 版本
adb version

# 应显示类似:
# Android Debug Bridge version 1.x.x
# Version 31.0.1 etc.

# 测试 ADB 连接
adb devices
# 应显示:List of devices attached(无设备是正常的)

常见问题

  • 如果提示 command not found,请检查环境变量是否正确配置
  • Windows 用户可能需要安装 Android USB 驱动

3.3 手机端准备

步骤 1:启用开发者选项

  1. 开启开发者模式

    • 进入「设置」→「关于手机」
    • 连续点击「版本号」约 7-10 次
    • 会提示「您已处于开发者模式」
  2. 验证开发者选项

    • 进入「设置」→「系统」→「开发者选项」
    • 确保可以看到各种调试选项

步骤 2:启用 USB 调试

  1. 打开 USB 调试

    • 进入「设置」→「系统」→「开发者选项」
    • 找到「USB 调试」选项并勾选
  2. 配置 USB 调试选项(推荐)

    • 勾选「USB 调试(安全设置)」
    • 勾选「通过 USB 安装应用」
    • 勾选「USB 配置」

不同品牌特殊说明

  • 小米/MIUI:需要在「开发者选项」里找到「USB 调试(安全设置)」并单独勾选
  • 华为/EMUI:可能需要在「设置」→「系统和更新」→「开发者选项」中启用
  • 三星:One UI 中开发者选项位置可能不同

步骤 3:连接手机到电脑

  1. 使用 USB 数据线连接

    • 使用原装或高质量数据线
    • 确保数据线支持数据传输(非仅充电)
  2. 验证连接

bash 复制代码
# 检查设备连接状态
adb devices

# 应显示类似:
# List of devices attached
# device_id    device

# 如果无设备,尝试:
# 1. 更换 USB 端口
# 2. 重新插拔数据线
# 3. 在手机上确认 USB 调试授权对话框
  1. 授权调试
    • 首次连接时,手机会弹出「允许 USB 调试吗?」对话框
    • 勾选「始终允许来自这台计算机的 USB 调试」
    • 点击「确定」

步骤 4:安装并配置 ADB Keyboard

  1. 下载 ADB Keyboard
bash 复制代码
# 使用 adb 安装
adb shell pm install -r /path/to/ADBKeyboard.apk

# 或让脚本自动安装(首次运行时会自动处理)
  1. 启用 ADB Keyboard

    • 进入「设置」→「系统」→「语言和输入法」
    • 找到「ADB Keyboard」并启用
    • 设为默认输入法(可选但推荐)
  2. 验证 ADB Keyboard

bash 复制代码
# 测试输入
adb shell input text "Hello World"

# 应该能在手机上看到文本输入

3.4 下载并启动模型

Open-AutoGLM 支持多种模型部署方式,根据您的硬件情况选择合适的方式。

方式 A:本地 vLLM 部署(推荐,需要 GPU)

步骤 1:安装 vLLM

bash 复制代码
# 安装 vLLM(支持 CUDA 12+)
pip install vllm

# 验证安装
pip show vllm 或 vllm --version

步骤 2:下载模型

bash 复制代码
# 创建模型目录
mkdir -p models/autoglm-phone-9b

# 下载模型(约 20GB)
# 方式 1:使用 HuggingFace CLI
huggingface-cli download zai-org/AutoGLM-Phone-9B \
  --local-dir models/autoglm-phone-9b \
  --local-dir-use-symlinks False

# 方式 2:使用 git clone
git clone https://huggingface.co/zai-org/AutoGLM-Phone-9B \
  models/autoglm-phone-9b

步骤 3:启动 vLLM 服务器

bash 复制代码
# 基础启动命令
python3 -m vllm.entrypoints.openai.api_server \
  --served-model-name autoglm-phone-9b \
  --model models/autoglm-phone-9b \
  --port 8000 \
  --host 0.0.0.0

# 推荐的生产环境配置
python3 -m vllm.entrypoints.openai.api_server \
  --served-model-name autoglm-phone-9b \
  --allowed-local-media-path / \
  --mm-encoder-tp-mode data \
  --mm_processor_cache_type shm \
  --mm_processor_kwargs '{"max_pixels":5000000}' \
  --max-model-len 25480 \
  --chat-template-content-format string \
  --limit-mm-per-prompt '{"image":10}' \
  --model models/autoglm-phone-9b \
  --port 8000 \
  --host 0.0.0.0 \
  --tensor-parallel-size 1 \
  --max-num-seqs 256 \
  --max-num-batched-tokens 8192

参数说明

  • --served-model-name:服务名称,用于 API 调用
  • --model:模型本地路径或 HuggingFace ID
  • --port:API 服务端口
  • --host:监听地址,0.0.0.0 表示所有网卡
  • --mm-encoder-tp-mode:多模态编码器张量并行模式
  • --max-model-len:最大序列长度
  • --tensor-parallel-size:张量并行大小(单卡=1,双卡=2)

步骤 4:验证模型服务

bash 复制代码
# 使用官方检查脚本
python scripts/check_deployment_cn.py \
  --base-url http://localhost:8000/v1 \
  --model autoglm-phone-9b

# 或使用 curl 直接测试
curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "autoglm-phone-9b",
    "messages": [
      {"role": "user", "content": "你好,请介绍一下自己"}
    ],
    "temperature": 0.7,
    "max_tokens": 512
  }'

预期输出

erlang 复制代码
✅ 模型服务正常
思考:我需要:1. 先启动京东...

方式 B:使用云端 API(无本地 GPU)

如果您没有本地 GPU,可以使用智谱开放平台的 API。

步骤 1:注册并获取 API Key

  1. 访问 智谱开放平台
  2. 注册账号并登录
  3. 进入「API 密钥」页面获取 API Key

步骤 2:使用 API 部署

bash 复制代码
# 直接使用 main.py,指定云端 API
python main.py \
  --base-url https://open.bigmodel.cn/api/paas/v4 \
  --model autoglm-phone-9b \
  --api-key YOUR_API_KEY_HERE

环境变量配置(可选):

bash 复制代码
export OPENAI_API_KEY=YOUR_API_KEY_HERE
export OPENAI_BASE_URL=https://open.bigmodel.cn/api/paas/v4

3.5 验证完整部署

测试 1:模型推理测试

bash 复制代码
# 创建测试脚本 cat test_model.py
python << 'EOF'
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="dummy"  # 本地部署可使用任意密钥
)

response = client.chat.completions.create(
    model="autoglm-phone-9b",
    messages=[
        {"role": "user", "content": "你好,请简单介绍一下自己"}
    ],
    temperature=0.7,
    max_tokens=256
)

print("模型回复:", response.choices[0].message.content)
EOF

python test_model.py

测试 2:ADB 设备测试

bash 复制代码
# 测试 ADB 连接
adb devices

# 测试输入
adb shell input text "测试输入"

# 测试截图
adb shell screencap -p /sdcard/screenshot.png
# 拉取截图到电脑
adb pull /sdcard/screenshot.png ./screenshot.png

测试 3:完整集成测试

bash 复制代码
# 交互模式测试
python main.py \
  --base-url http://localhost:8000/v1 \
  --model autoglm-phone-9b

# 在提示符后输入测试命令
> 打开计算器,计算 123+456
> 打开微信,给"文件传输助手"发送"你好"

四、常见问题与排查

症状 可能原因 详细处理办法
adb devices 无设备 1. 数据线仅充电 2. 驱动未装 3. 调试未开 1. 更换数据线为数据传输线 2. Windows: 安装 Android USB 驱动 3. 确认开发者选项和 USB 调试已开启
模型启动 OOM 1. 显存不足 2. 共享内存未配置 1. 减小 --max-model-len(如改为 8192) 2. 使用 4bit/8bit 量化 3. 增加 --mm_processor_cache_type 配置
截图黑屏 1. 应用处于隐私页面 2. 支付页面 3. 截图权限被拒 1. Agent 会自动请求人工接管 2. 手动操作后继续自动化 3. 检查手机截图权限设置
文本输入无效 1. 未启用 ADB Keyboard 2. 输入法配置错误 1. 在手机设置-输入法中勾选 ADB Keyboard 2. 重启输入法服务 3. 确认 ADB Keyboard 有默认权限
Wi-Fi 远程 ADB 失败 1. 防火墙阻拦 5555 端口 2. 手机和电脑不在同一网段 1. 放行 5555 端口(Windows 防火墙、macOS 防火墙) 2. 确保设备在同一 Wi-Fi 网络 3. 改用 USB 连接
vLLM 启动失败 1. CUDA 版本不兼容 2. 模型路径错误 3. 依赖缺失 1. 检查 CUDA 版本(需要 12+) 2. 确认模型路径正确 3. 重新安装 vllm 和相关依赖
模型推理无响应 1. API 地址错误 2. 模型未正确加载 3. 请求超时 1. 检查 --base-url 和端口 2. 查看启动日志 3. 增加 --max-num-seqs 配置

详细排查步骤

问题 1:ADB 连接问题

bash 复制代码
# 1. 检查 USB 数据线
# 尝试更换 USB 端口和数据线

# 2. 重置 ADB
adb kill-server
adb start-server
adb devices

# 3. 检查手机端授权
# 手机上应该弹出"允许 USB 调试"对话框

# 4. 强制重新连接
adb disconnect
adb connect 127.0.0.1:5555  # 如果使用 Wi-Fi

问题 2:显存不足

bash 复制代码
# 检查显存使用
nvidia-smi

# 调整 vLLM 参数
python3 -m vllm.entrypoints.openai.api_server \
  --model models/autoglm-phone-9b \
  --port 8000 \
  --max-model-len 8192 \        # 减小序列长度
  --mm_processor_kwargs '{"max_pixels":2000000}' \  # 减小图像处理分辨率
  --quantization awq \           # 使用 AWQ 量化(如果支持)
  --tensor-parallel-size 1       # 单卡运行

问题 3:模型加载失败

bash 复制代码
# 检查模型文件完整性
ls -lh models/autoglm-phone-9b/
# 应该看到 config.json, pytorch_model.bin 等文件

# 重新下载模型
rm -rf models/autoglm-phone-9b
huggingface-cli download zai-org/AutoGLM-Phone-9B \
  --local-dir models/autoglm-phone-9b \
  --local-dir-use-symlinks False

# 检查模型格式
file models/autoglm-phone-9b/pytorch_model.bin

五、进阶技巧

5.1 使用 Wi-Fi 远程调试(无需 USB)

通过 Wi-Fi 连接可以摆脱数据线束缚,更适合长期运行。

步骤 1:手机端开启 Wi-Fi 调试

bash 复制代码
# 在手机上执行(通过 adb shell)
adb shell settings put global adb_wifi_enabled 1

# 或在手机端开启 TCP/IP 模式
adb tcpip 5555

步骤 2:电脑端连接

bash 复制代码
# 查看手机 IP 地址(手机上执行)
adb shell netcfg | grep wlan0

# 电脑端连接
adb connect 192.168.1.100:5555

# 验证连接
adb devices

步骤 3:运行 Open-AutoGLM

bash 复制代码
python main.py \
  --base-url http://localhost:8000/v1 \
  --model autoglm-phone-9b \
  --device-id 192.168.1.100:5555

注意事项

  • 确保手机和电脑在同一 Wi-Fi 网络
  • 防火墙需放行 5555 端口
  • 连接可能不如 USB 稳定

5.2 多 GPU 张量并行

对于多卡服务器,可以使用张量并行大幅降低显存占用。

配置示例(双卡 A100 80GB)

bash 复制代码
python3 -m vllm.entrypoints.openai.api_server \
  --served-model-name autoglm-phone-9b \
  --model models/autoglm-phone-9b \
  --port 8000 \
  --host 0.0.0.0 \
  --tensor-parallel-size 2 \        # 使用 2 张卡
  --mm-encoder-tp-mode data \       # 多模态编码器也使用数据并行
  --max-model-len 25480 \
  --mm_processor_kwargs '{"max_pixels":5000000}' \
  --chat-template-content-format string \
  --limit-mm-per-prompt '{"image":10}'

效果

  • 显存占用降低约 50%
  • 推理速度提升约 30-50%
  • 适合 80GB+ 的大模型

四卡配置

bash 复制代码
--tensor-parallel-size 4 \
--mm-encoder-tp-mode data \

5.3 量化与低成本部署

选项 1:使用 llama.cpp

bash 复制代码
# 编译 llama.cpp
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make LLAMA_CUBLAS=1

# 下载 GGUF 格式模型
# (需要等待官方发布或自行转换)

# 运行
./main -m model.gguf -p "你好"

选项 2:使用 4bit/8bit 量化

bash 复制代码
# vLLM 自动量化(如果支持)
python3 -m vllm.entrypoints.openai.api_server \
  --model models/autoglm-phone-9b \
  --port 8000 \
  --quantization awq \    # 或 exllama, marlin 等
  --max-model-len 8192

量化效果对比

方案 显存占用 推理速度 准确率下降
FP16 ~20 GB 基准 -
INT8 ~10 GB +20% <1%
INT4 ~5 GB +40% 2-5%

5.4 使用屏幕镜像(scrcpy)

实时观察手机操作,便于调试和展示。

安装 scrcpy

bash 复制代码
# Ubuntu/Debian
sudo apt install scrcpy

# Windows
winget install Gsquared.Scrcpy

# macOS
brew install scrcpy

启动镜像

bash 复制代码
# 基础启动
scrcpy

# 高级选项
scrcpy --max-size=1920  # 限制分辨率
scrcpy --bit-rate=8M    # 限制码率
scrcpy --lock-video=landscape  # 锁定横屏

与 Open-AutoGLM 配合使用

bash 复制代码
# 终端 1:启动模型
python3 -m vllm.entrypoints.openai.api_server --model models/autoglm-phone-9b --port 8000 &

# 终端 2:启动 scrcpy
scrcpy &

# 终端 3:运行 Open-AutoGLM
python main.py --base-url http://localhost:8000/v1 --model autoglm-phone-9b

5.5 批量任务执行

创建任务脚本,批量执行自动化任务。

创建任务文件 tasks.txt

arduino 复制代码
打开微信,给"文件传输助手"发送"你好"
打开支付宝,查看余额
打开淘宝,搜索"iPhone 15"

批量执行脚本

python 复制代码
import subprocess

def run_task(command):
    print(f"执行任务: {command}")
    result = subprocess.run(
        ["python", "main.py"] + command.split(),
        capture_output=True,
        text=True
    )
    print(result.stdout)
    return result.returncode == 0

with open("tasks.txt", "r", encoding="utf-8") as f:
    for line in f:
        task = line.strip()
        if task:
            run_task(task)

六、参考与延伸阅读

官方文档

社区资源

相关技术

相关推荐
湘-枫叶情缘5 小时前
BIZBOK®指南入门教案:框架全景理解与知识地图构建
架构
踏浪无痕5 小时前
自定义 ClassLoader 动态加载:不重启就能加载新代码?
后端·面试·架构
踏浪无痕5 小时前
别重蹈我们的覆辙:脚本引擎选错的两年代价
后端·面试·架构
狂胤6 小时前
告别“CV工程师”:手把手教你设计一套 B 端低代码 DSL
架构
喷火龙8号6 小时前
JWT 认证方案深度对比:单 Token 扩展刷新 vs 双 Token 验证
后端·设计模式·架构
黑客思维者6 小时前
XGW-9000系列高端新能源电站边缘网关硬件架构设计
网络·架构·硬件架构·嵌入式·新能源·计算机硬件·电站
leafff1236 小时前
一文了解:智能体大模型LangChain 和 Dify有什么区别?
人工智能·架构·langchain
测试人社区-小明7 小时前
从前端体验到后端架构:Airbnb全栈SDET面试深度解析
前端·网络·人工智能·面试·职场和发展·架构·自动化
码界奇点7 小时前
基于微服务架构的分布式量化交易系统设计与实现
分布式·微服务·架构·车载系统·毕业设计·源代码管理