Open-AutoGLM免配置部署:Docker镜像快速启动实操手册

想不想让AI帮你操作手机?比如你随口说一句“帮我打开小红书搜一下美食”,它就能自动解锁屏幕、找到App、输入关键词、浏览结果,整个过程一气呵成。听起来像是科幻电影里的场景,但现在,通过智谱开源的Open-AutoGLM框架,这个想法已经变成了现实。

Open-AutoGLM,特别是其核心应用Phone Agent,是一个能“看懂”手机屏幕并“动手”操作的AI智能助理。它不再只是一个聊天机器人,而是一个能真正执行任务的数字助手。今天,我们不谈复杂的理论,也不搞繁琐的环境配置,就带你用最简单、最省心的方式——Docker镜像,快速把它跑起来,亲眼看看AI是如何接管你手机的。

1. 认识你的AI手机管家:Open-AutoGLM

在动手之前,我们先花几分钟了解一下,我们即将部署的这个“家伙”到底能干什么。

1.1 什么是Phone Agent?

简单来说,Phone Agent是一个基于视觉语言模型(VLM)的AI手机智能助理。它的核心能力可以概括为两点:

  1. 看懂屏幕:它能像人眼一样,理解手机屏幕上显示的是什么。是微信聊天界面,还是抖音视频流?屏幕上有个“搜索”按钮,还是“发送”图标?它都能识别。
  2. 动手操作:看懂之后,它能通过ADB(安卓调试桥)这个工具,模拟人的点击、滑动、输入等操作,去执行任务。

它的工作流程非常直观:你用自然语言下指令 -> AI解析你的意图 -> AI观察当前手机屏幕 -> AI规划下一步该点哪里或输入什么 -> AI通过ADB执行操作 -> 循环直到任务完成。

例如,你下达指令:“打开支付宝,查看余额宝收益。” Phone Agent会依次执行:唤醒手机、解锁、找到支付宝图标并点击、进入App后识别界面元素、找到“余额宝”入口并点击、最后读取并理解屏幕上显示的收益信息。

1.2 为什么选择Docker部署?

传统部署AI应用,常常需要面对各种依赖冲突、环境配置、版本匹配的“玄学”问题。一个“pip install”可能就会耗费你半天时间。

Docker镜像部署的优势就在于免配置、可移植、环境隔离。我们把运行Phone Agent所需的一切——Python环境、深度学习框架、模型文件、依赖库——全部打包进一个集装箱(镜像)。你只需要一条命令,就能把这个集装箱完整地、无污染地运行在你的服务器或电脑上,无需关心底层系统环境。

接下来,我们就开始这个“开箱即用”的旅程。

2. 服务端部署:一键启动AI大脑

Phone Agent的架构分为两部分:服务端控制端。服务端是AI大脑,负责运行庞大的视觉语言模型,进行屏幕理解和任务规划;控制端则是小脑和手,负责连接手机并执行具体操作。

我们首先在云服务器或本地高性能电脑(最好有GPU)上部署服务端。

2.1 准备工作

确保你的部署机器满足以下要求:

  • 操作系统:Linux(如Ubuntu 20.04/22.04),这是服务器最常见且兼容性最好的环境。
  • 显卡:推荐具有至少16GB显存的NVIDIA GPU(如RTX 4090, A100等)。模型本身很大,需要足够的显存来加载和运行。
  • 驱动:已安装NVIDIA显卡驱动。
  • Docker:确保已安装Docker和NVIDIA Container Toolkit(让Docker容器能使用GPU)。

安装NVIDIA Container Toolkit的命令通常如下:

# 添加包仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

2.2 拉取并运行Docker镜像

这是最核心的一步。我们使用集成了模型和vLLM高性能推理框架的预置镜像。

# 1. 拉取Docker镜像(镜像较大,请耐心等待)
docker pull csdnpractices/autoglm-phone-9b:latest

# 2. 运行容器
docker run -d --gpus all \
  --name autoglm-phone \
  -p 8800:8000 \
  csdnpractices/autoglm-phone-9b:latest \
  --model /app/models/autoglm-phone-9b \
  --served-model-name autoglm-phone-9b \
  --max-model-len 8192

命令参数解释:

  • -d:后台运行容器。
  • --gpus all:将宿主机的所有GPU资源分配给容器。
  • --name autoglm-phone:给容器起个名字,方便管理。
  • -p 8800:8000:端口映射。将容器内部的8000端口(vLLM服务端口)映射到宿主机的8800端口。你可以通过http://你的服务器IP:8800来访问服务。
  • 最后的--model等参数是传递给vLLM引擎的,告诉它加载哪个模型以及一些推理配置。

2.3 验证服务是否正常

运行后,等待1-2分钟让模型完全加载。然后通过以下命令检查服务状态:

# 查看容器日志,确认模型加载成功
docker logs autoglm-phone

# 使用curl测试API接口是否就绪
curl http://localhost:8800/v1/models

如果看到返回了模型信息(JSON格式),恭喜你,AI大脑已经成功启动并在8800端口待命了。

3. 客户端与控制端配置:连接你的手机

服务端(大脑)在云端跑起来了,现在我们需要在本地电脑上配置控制端(小脑和手),并通过ADB让AI能够控制我们真实的安卓手机。

3.1 环境与工具准备

  • 本地电脑:Windows / macOS / Linux 均可。
  • Python:建议安装Python 3.10或以上版本。
  • 安卓设备:一部Android 7.0以上的手机(或模拟器),用于被控制。
  • ADB工具:这是与安卓设备通信的桥梁。

安装与配置ADB:

  • Windows/macOS:从Android开发者官网下载“Platform-Tools”压缩包,解压到一个你喜欢的目录。
  • 配置环境变量(以Windows为例)
    1. 右键“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
    2. 在“系统变量”中找到Path,点击“编辑”。
    3. 点击“新建”,将你解压platform-tools文件夹的完整路径添加进去(例如C:\Users\YourName\platform-tools)。
    4. 打开命令提示符(CMD)或PowerShell,输入adb version,如果显示版本号则配置成功。
  • macOS/Linux:可以在终端中,通过进入platform-tools目录来直接使用./adb,或者同样将其路径加入PATH环境变量。

3.2 手机端设置

要让电脑控制手机,需要在手机上打开几个“开关”。

  1. 开启开发者模式

    • 进入手机“设置” -> “关于手机”。
    • 连续点击“版本号”7次,直到出现“您已处于开发者模式”的提示。
  2. 开启USB调试

    • 返回“设置”,现在你会看到多了一个“开发者选项”。
    • 进入“开发者选项”,找到并开启“USB调试”。
  3. 安装ADB Keyboard(关键步骤)

    • 这是一个特殊的输入法,允许电脑通过ADB直接向手机输入文本,对于AI执行“搜索”等需要打字的操作至关重要。
    • 在手机浏览器中搜索并下载ADB Keyboard的APK文件进行安装。
    • 安装后,进入手机“设置” -> “系统” -> “语言与输入法” -> “虚拟键盘”。
    • 找到“ADB Keyboard”并启用它。
    • 在“默认输入法”中,将其切换为“ADB Keyboard”。

3.3 部署控制端代码

控制端代码包含了连接AI服务、驱动ADB的核心逻辑。

# 1. 从GitHub克隆Open-AutoGLM项目代码到本地
git clone https://github.com/zai-org/Open-AutoGLM
cd Open-AutoGLM

# 2. 安装项目所需的Python依赖包
pip install -r requirements.txt
# 以“可编辑”模式安装当前目录的包,方便后续开发调试
pip install -e .

3.4 连接你的手机

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

  • USB连接(最稳定): 在电脑终端执行:

    adb devices
    

    如果连接成功,你会看到类似 List of devices attached 和一行设备ID,状态为 device。记下这个设备ID。

  • WiFi连接(更灵活)

    # 首先用USB线连接一次,开启网络调试端口
    adb tcpip 5555
    # 拔掉USB线,使用手机的IP地址进行无线连接
    # 手机的IP可以在“设置”->“关于手机”->“状态信息”里找到
    adb connect 192.168.1.100:5555  # 请替换为你的手机IP
    

    再次运行 adb devices,你应该能看到一个以IP地址开头的设备。

4. 见证奇迹:启动你的AI手机管家

万事俱备,只欠东风。现在,让我们给AI下达第一个指令。

4.1 通过命令行运行

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

python main.py \
  --device-id <你的设备ID> \
  --base-url http://<云服务器IP>:8800/v1 \
  --model "autoglm-phone-9b" \
  "打开抖音,搜索用户‘科技美学’并关注他!"

参数说明:

  • --device-id:填写你在adb devices中看到的设备ID,例如emulator-5554192.168.1.100:5555
  • --base-url:填写你步骤2.2中部署的服务端地址。8800是我们在-p 8800:8000映射的端口。
  • --model:模型名称,与服务端启动时指定的--served-model-name保持一致。
  • 最后的字符串:就是你用自然语言给AI下的命令。

运行命令后,请保持手机屏幕亮起且处于解锁状态。你会看到鼠标指针(或代表点击的小圆圈)在手机屏幕上自动移动、点击、输入,就像有一个隐形人在操作一样,直到完成你交代的任务。

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

如果你想集成到自己的脚本中,或者进行更复杂的控制,可以使用Python API:

from phone_agent.adb import ADBConnection, list_devices

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

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

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

# 如果你想将一个已通过USB连接的设备切换到WiFi模式
# success, message = conn.enable_tcpip(5555) # 在设备上开启TCP/IP端口
# ip = conn.get_device_ip() # 获取设备IP
# print(f"设备IP地址: {ip}")

# 任务完成后,断开连接
conn.disconnect(device_ip)

5. 常见问题与排错指南

第一次运行难免会遇到一些小问题,这里汇总了一些常见情况及其解决方法。

  • 问题:运行docker run命令时提示--gpus参数错误。

    • 解决:这通常意味着NVIDIA Container Toolkit没有正确安装或Docker服务未重启。请回头仔细检查步骤2.1,并确保执行了sudo systemctl restart docker
  • 问题:服务端启动后,客户端连接时提示“连接被拒绝”或超时。

    • 解决
      1. 检查服务端:在服务器上运行 curl http://localhost:8800/v1/models,确认服务本身是否正常。
      2. 检查防火墙:这是最常见的原因。确保你的云服务器安全组/防火墙规则已经放行了8800端口的入站流量。例如,在阿里云、腾讯云控制台进行设置。
      3. 检查IP和端口:确认--base-url参数中的IP地址是服务器的公网IP,且端口号正确。
  • 问题:adb devices列表为空,或设备状态为unauthorized

    • 解决
      1. 重新插拔USB线,并在手机弹出的“允许USB调试吗?”对话框中勾选“始终允许”,然后点击“确定”。
      2. 进入手机“开发者选项”,尝试关闭再重新打开“USB调试”。
      3. 如果是WiFi连接,确保adb tcpip 5555成功执行,且IP地址无误。
  • 问题:AI执行任务时卡住,或者操作逻辑混乱(比如不停点击同一个地方)。

    • 解决
      1. 模型理解偏差:复杂的指令可能超出当前模型的理解能力。尝试将指令拆解得更简单、更明确。例如,将“帮我订一份外卖”改为“打开美团外卖App,点击美食分类”。
      2. 屏幕内容识别失败:确保手机屏幕亮度足够,当前界面没有被其他弹窗遮挡。某些动态内容(如自动滚动的视频流)也可能干扰识别。
      3. 检查服务端日志:运行 docker logs autoglm-phone 查看是否有显存不足(OOM)或其他错误。如果显存不足,你可能需要在docker run命令中调整--max-model-len参数为一个更小的值(如4096),但这可能会影响模型处理长指令的能力。

6. 总结

通过以上步骤,我们完成了一个完整的Open-AutoGLM Phone Agent部署闭环:从在云端服务器一键拉起承载AI模型的Docker服务,到在本地电脑配置好连接手机的控制端,最终用一句自然语言指令,驱动AI完成了对手机的真实操作。

这个过程展示了Docker技术如何极大地简化了复杂AI应用的部署门槛。你无需纠结于CUDA版本、PyTorch依赖,只需一条docker run命令,就获得了一个完整、可用的AI手机助理环境。

现在,你可以尽情发挥想象力,给你的AI助理派发更多任务了:让它帮你整理相册、自动签到打卡、收集商品信息比价,甚至编写简单的自动化测试脚本。Open-AutoGLM为我们打开了一扇通往下一代人机交互的大门,而这一切,从一个免配置的Docker镜像开始。


获取更多AI镜像

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

更多推荐