Open-AutoGLM笔记记录代理:灵感捕捉执行自动化部署
1. 引言
1.1 技术背景与核心价值
随着大模型技术的快速发展,AI Agent 正从理论探索走向实际落地。在移动端,用户每天面对大量重复性操作——打开应用、搜索内容、填写表单、关注账号等。这些任务虽然简单,但累积起来消耗了大量时间和注意力。如何让 AI 真正“动手”代替人类完成这些操作?Open-AutoGLM 的出现为此提供了可行路径。
Open-AutoGLM 是由智谱开源的一款面向手机端的 AI Agent 框架,基于 AutoGLM-Phone 构建,融合视觉语言理解与自动化控制能力,实现了从“感知”到“决策”再到“执行”的闭环。它不仅能理解自然语言指令,还能通过 ADB(Android Debug Bridge)直接操控安卓设备,真正实现“你说我做”。
该框架的核心创新在于将多模态大模型与移动设备控制系统深度集成,使得 AI 不再局限于回答问题,而是成为用户的“数字双手”,主动完成复杂交互流程。
1.2 应用场景与典型用例
Phone Agent 的应用场景广泛,涵盖日常使用、远程管理、测试自动化等多个领域:
- 生活助手:如“打开小红书搜索上海美食推荐并收藏前三条”
- 社交操作:如“进入抖音,搜索指定账号 dycwo11nt61d 并关注”
- 信息采集:自动截图、翻页、提取文本内容
- UI 自动化测试:替代传统脚本,动态识别界面元素并执行点击
- 远程协助:为家人或客户远程操作手机解决问题
其最大优势是无需开发插件或修改 App,仅通过屏幕图像和系统接口即可完成操作,具备极强的通用性和可扩展性。
2. 系统架构与工作原理
2.1 整体架构设计
Open-AutoGLM 的系统架构分为三层:客户端(控制端)、通信层(ADB)和服务端(AI 模型)。
+------------------+ +-------------------+ +--------------------+ | Local Computer | <---> | ADB Channel | <---> | Android Device | | (Open-AutoGLM) | | (USB/WiFi) | | (Phone Agent) | +------------------+ +-------------------+ +--------------------+ | ↑ ↓ | +------------------+ +------------------+ | Cloud Server |<----------------------------| Screen & Input | | (vLLM + AutoGLM) | HTTP API (OpenAI-like) | Events Capture | +------------------+ +------------------+- 用户在本地运行 Open-AutoGLM 控制脚本;
- 脚本通过 ADB 获取手机屏幕截图,并上传至云端模型;
- 云端 VLM(视觉语言模型)分析图像语义,结合自然语言指令进行任务规划;
- 模型返回操作指令(如点击坐标、滑动方向),由 ADB 在设备上执行;
- 循环迭代直至任务完成。
2.2 多模态感知与动作生成机制
系统采用“观察-思考-行动”(Observe-Thinking-Act)循环模式:
- Observe:每轮通过
adb shell screencap截取当前屏幕,压缩后发送至模型。 - Thinking:模型接收截图 + 用户指令,输出结构化动作序列(Action Plan)。
- Act:解析动作为 ADB 命令(如
input tap x y),执行后等待反馈。
关键组件包括:
- 视觉编码器:将屏幕图像转换为特征向量
- 语言解码器:生成下一步操作指令(JSON 格式)
- 动作空间定义:支持 tap、swipe、type、back、home 等基本操作
- 状态记忆模块:维护上下文,避免重复操作或死循环
例如,当用户输入“搜索某博主并关注”,模型会依次判断:
- 是否在抖音首页 → 否则启动 App
- 找到搜索框图标 → 定位坐标并点击
- 输入指定用户名 → 使用 ADB Keyboard 输入
- 查找目标账号卡片 → 点击进入主页
- 判断是否已关注 → 若未关注则点击“关注”按钮
整个过程完全基于视觉理解,不依赖任何 UI 层级信息(如 resource-id),因此具有高度泛化能力。
3. 本地部署与连接配置
3.1 硬件与环境准备
要成功部署 Open-AutoGLM,需确保以下软硬件条件满足:
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows / macOS(推荐 Linux 开发) |
| Python 版本 | 3.10 或以上 |
| 安卓设备 | Android 7.0+ 实机或模拟器 |
| ADB 工具 | platform-tools 最新版 |
| 网络环境 | USB 连接 或 同一局域网 WiFi |
注意:建议使用物理机而非虚拟机,以保证 ADB 稳定连接。
ADB 环境配置(Windows)
- 下载 Android SDK Platform Tools
- 解压至本地目录(如
C:\platform-tools) - 添加路径到系统环境变量:
Win + R→ 输入sysdm.cpl- “高级”选项卡 → “环境变量”
- 在“系统变量”中找到
Path,添加新项:C:\platform-tools
- 验证安装:
adb version应输出类似Android Debug Bridge version 1.0.41。
ADB 环境配置(macOS)
在终端执行以下命令(假设解压目录为~/Downloads/platform-tools):
export PATH=${PATH}:~/Downloads/platform-tools可将其写入.zshrc或.bash_profile实现永久生效:
echo 'export PATH=${PATH}:~/Downloads/platform-tools' >> ~/.zshrc source ~/.zshrc3.2 手机端设置步骤
开启开发者模式
- 进入“设置” → “关于手机”
- 连续点击“版本号”7次,直到提示“您已开启开发者模式”
启用 USB 调试
- 返回“设置”主菜单 → “开发者选项”
- 勾选“USB 调试”(部分机型还需确认授权弹窗)
安装 ADB Keyboard
- 下载 ADB Keyboard APK
- 安装后进入“语言与输入法”设置
- 将默认输入法切换为 “ADB Keyboard”
- 目的:允许通过 ADB 发送中文/英文文本输入
安全提示:请勿在公共电脑上长期开启 USB 调试,防止恶意设备窃取数据。
4. 控制端部署与设备连接
4.1 克隆与安装 Open-AutoGLM
在本地电脑执行以下命令:
# 克隆仓库 git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM # 安装依赖 pip install -r requirements.txt pip install -e .安装完成后,可通过python -c "import phone_agent; print(phone_agent.__version__)"验证是否成功导入。
4.2 设备连接方式
USB 连接(推荐用于调试)
- 使用数据线连接手机与电脑
- 手机弹出“允许 USB 调试?”时点击“确定”
- 执行命令查看设备状态:
adb devices预期输出:
List of devices attached ABCDEF1234567890 device若显示unauthorized,请重新插拔或重启 adb server:
adb kill-server adb start-serverWiFi 远程连接(适合远程控制)
首次需通过 USB 设置 TCP/IP 模式:
# 启用 TCP/IP 模式,端口 5555 adb tcpip 5555 # 断开 USB,使用 IP 连接(需在同一局域网) adb connect 192.168.x.x:5555其中192.168.x.x为手机 IP 地址,可在“设置 → WLAN → 当前网络详情”中查看。
连接成功后,即使断开 USB,仍可通过 WiFi 控制设备,极大提升灵活性。
5. 启动 AI 代理与任务执行
5.1 命令行方式启动
在项目根目录下运行主程序:
python main.py \ --device-id ABCDEF1234567890 \ --base-url http://192.168.1.100:8800/v1 \ --model "autoglm-phone-9b" \ "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"参数说明:
| 参数 | 说明 |
|---|---|
--device-id | 通过adb devices获取的设备 ID 或 IP:port |
--base-url | 云端 vLLM 服务地址(必须符合 OpenAI API 兼容格式) |
--model | 指定模型名称(需与服务端加载一致) |
| 最后字符串 | 用户自然语言指令 |
重要:
base-url必须指向运行了 vLLM + AutoGLM 模型的服务端,且开放对应端口。
5.2 Python API 方式调用
对于更复杂的集成需求,可使用 SDK 编程调用:
from phone_agent.adb import ADBConnection, list_devices # 创建连接管理器 conn = ADBConnection() # 连接远程设备 success, message = conn.connect("192.168.1.100:5555") print(f"连接状态: {message}") # 列出所有已连接设备 devices = list_devices() for device in devices: print(f"{device.device_id} - {device.connection_type.value}") # (可选)为 USB 设备启用 TCP/IP success, message = conn.enable_tcpip(5555) if success: ip = conn.get_device_ip() print(f"设备 IP: {ip}") # 断开连接 conn.disconnect("192.168.1.100:5555")此方式适用于构建 Web 控制台、自动化测试平台等高级应用。
6. 常见问题与优化建议
6.1 常见问题排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
adb devices无设备 | 未开启 USB 调试 | 检查开发者选项 |
| 显示 unauthorized | 未授权电脑 | 重新插拔并确认弹窗 |
| 连接被拒绝(connect fail) | 防火墙阻止端口 | 放行 5555 端口 |
| 模型响应慢或超时 | 网络延迟高 | 改用 USB 或优化带宽 |
| 输入中文乱码 | ADB Keyboard 未设为默认 | 检查输入法设置 |
| 操作失败/误触 | 屏幕分辨率适配问题 | 调整缩放比例或 ROI 区域 |
6.2 性能优化建议
- 降低截图分辨率:在不影响识别的前提下缩小图像尺寸,减少传输耗时
- 缓存历史画面:避免重复上传相同界面
- 增加重试机制:对关键操作(如点击登录)设置最多 3 次重试
- 启用敏感操作确认:涉及支付、删除等操作时暂停并提示人工干预
- 使用 SSD 存储模型:加快 vLLM 推理速度,减少首 token 延迟
7. 总结
7.1 技术价值回顾
Open-AutoGLM 代表了一种全新的 AI 交互范式:从被动问答转向主动执行。它依托 AutoGLM-Phone 的多模态理解能力,结合 ADB 实现真机自动化操作,构建了一个完整的“AI 手指”系统。无论是日常生活辅助还是企业级自动化测试,都展现出巨大潜力。
其核心优势在于:
- 零侵入性:无需 Root 或安装特殊权限
- 跨应用通用:基于视觉理解,适用于任意 App
- 自然语言驱动:普通用户也能轻松使用
- 远程可控:支持 WiFi 连接,便于远程运维
7.2 实践建议与未来展望
- 初学者建议:先从 USB 连接 + 简单指令开始,逐步熟悉流程
- 进阶用户:可自建 vLLM 服务,部署更大规模模型(如 13B+)
- 开发者方向:扩展动作类型(长按、双击)、支持多设备协同
- 安全增强:引入操作审计日志、权限分级机制
未来,随着端侧大模型的发展,此类 Agent 有望在本地完成推理,进一步提升响应速度与隐私安全性。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。