前言
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:启用开发者选项
-
开启开发者模式
- 进入「设置」→「关于手机」
- 连续点击「版本号」约 7-10 次
- 会提示「您已处于开发者模式」
-
验证开发者选项
- 进入「设置」→「系统」→「开发者选项」
- 确保可以看到各种调试选项
步骤 2:启用 USB 调试
-
打开 USB 调试
- 进入「设置」→「系统」→「开发者选项」
- 找到「USB 调试」选项并勾选
-
配置 USB 调试选项(推荐)
- 勾选「USB 调试(安全设置)」
- 勾选「通过 USB 安装应用」
- 勾选「USB 配置」
不同品牌特殊说明:
- 小米/MIUI:需要在「开发者选项」里找到「USB 调试(安全设置)」并单独勾选
- 华为/EMUI:可能需要在「设置」→「系统和更新」→「开发者选项」中启用
- 三星:One UI 中开发者选项位置可能不同
步骤 3:连接手机到电脑
-
使用 USB 数据线连接
- 使用原装或高质量数据线
- 确保数据线支持数据传输(非仅充电)
-
验证连接
bash
# 检查设备连接状态
adb devices
# 应显示类似:
# List of devices attached
# device_id device
# 如果无设备,尝试:
# 1. 更换 USB 端口
# 2. 重新插拔数据线
# 3. 在手机上确认 USB 调试授权对话框
- 授权调试
- 首次连接时,手机会弹出「允许 USB 调试吗?」对话框
- 勾选「始终允许来自这台计算机的 USB 调试」
- 点击「确定」
步骤 4:安装并配置 ADB Keyboard
- 下载 ADB Keyboard
bash
# 使用 adb 安装
adb shell pm install -r /path/to/ADBKeyboard.apk
# 或让脚本自动安装(首次运行时会自动处理)
-
启用 ADB Keyboard
- 进入「设置」→「系统」→「语言和输入法」
- 找到「ADB Keyboard」并启用
- 设为默认输入法(可选但推荐)
-
验证 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
- 访问 智谱开放平台
- 注册账号并登录
- 进入「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)
六、参考与延伸阅读
官方文档
- 官方 GitHub 仓库 :Open-AutoGLM GitHub(含完整参数说明和最新更新)
- 智谱开放平台文档 :AutoGLM-Phone 使用指南
社区资源
- B 站实战教程 :云 GPU + 双卡优化教程
- CSDN 昇腾开源专区 :详细部署流程
- Eslzzyl 博客 :本地实测笔记
相关技术
- vLLM 官方文档 :高性能推理框架
- ADB 官方文档 :Android Debug Bridge
- OpenAI API 兼容性 :API 参考文档