Open-AutoGLM开发调试技巧:实时查看屏幕截图与操作流

1. 背景与核心价值

1.1 Open-AutoGLM:智谱开源的手机端AI Agent框架

Open-AutoGLM 是由智谱AI推出的开源项目,旨在构建一个可在真实手机设备上运行的多模态AI智能体(Agent)系统。该框架基于视觉语言模型(VLM),结合Android Debug Bridge(ADB)实现对安卓设备的自动化控制,使AI能够“看懂”屏幕内容并执行用户以自然语言下达的任务指令。

其核心创新在于将大模型的语义理解能力与移动端操作执行深度融合,形成“感知-决策-执行”的闭环流程。例如,当用户输入“打开小红书搜索美食推荐”,系统会自动解析意图、识别当前界面元素、规划点击路径,并通过ADB完成一系列滑动、点击和输入操作,最终达成目标。

这一技术为自动化测试、无障碍辅助、数字员工等场景提供了极具潜力的技术基础。

1.2 Phone Agent 的工作逻辑与架构优势

Phone Agent 是基于 AutoGLM 构建的完整智能助理框架,具备以下关键特性:

  • 多模态感知:利用视觉语言模型对手机屏幕截图进行语义理解,识别按钮、文本、布局结构。
  • 自然语言驱动:支持用日常语言描述复杂任务,无需编写脚本或代码。
  • 自动化执行:通过 ADB 发送模拟触摸、滑动、输入等指令,实现全链路自动化。
  • 安全机制:内置敏感操作确认机制,在涉及支付、权限申请等场景时暂停并提示人工介入。
  • 远程调试支持:可通过WiFi连接设备,实现跨网络的远程控制与开发调试。

整个系统的运行流程如下:

  1. 用户输入自然语言指令;
  2. 模型调用云端推理服务解析意图;
  3. 定期抓取设备屏幕截图作为上下文输入;
  4. 视觉语言模型分析界面状态,生成下一步动作(如点击某坐标或输入文本);
  5. 动作通过 ADB 下发至设备执行;
  6. 循环迭代直至任务完成。

这种设计使得开发者可以在不接触物理设备的情况下完成大部分调试工作,极大提升了开发效率。

2. 开发环境搭建与设备连接

2.1 硬件与软件准备清单

在开始使用 Open-AutoGLM 前,需确保本地开发环境满足以下条件:

类别 要求
操作系统 Windows 或 macOS
Python 版本 3.10+
安卓设备 Android 7.0 及以上版本
ADB 工具 已安装并配置环境变量

ADB(Android Debug Bridge)是连接PC与安卓设备的核心工具,用于发送命令、获取日志和截屏。

Windows 配置步骤:
  1. 下载 Android SDK Platform Tools 并解压。
  2. 打开“系统属性” → “高级” → “环境变量”。
  3. 在“系统变量”中找到 Path,添加 ADB 解压目录路径(如 C:\platform-tools)。
  4. 打开命令行,执行 adb version 验证是否成功。
macOS 配置方法:
# 假设 platform-tools 解压在 Downloads 目录下
export PATH=${PATH}:~/Downloads/platform-tools

可将上述命令写入 .zshrc.bash_profile 实现永久生效。

2.2 手机端设置指南

为确保 ADB 正常通信,需在安卓设备上启用相关功能:

  1. 开启开发者模式
    进入“设置” → “关于手机” → 连续点击“版本号”7次,直到提示“您已进入开发者模式”。

  2. 启用 USB 调试
    返回“设置”主菜单 → “开发者选项” → 开启“USB 调试”。

  3. 安装 ADB Keyboard 输入法

    • 从官方渠道下载 ADBKeyboard.apk 并安装。
    • 进入“设置” → “语言与输入法” → “默认键盘” → 切换为 ADB Keyboard。
    • 此输入法允许通过 ADB 命令直接输入文字,避免依赖物理键盘或第三方输入法。

注意:部分国产厂商(如华为、小米)可能限制 ADB 权限,建议关闭“USB调试安全设置”或授权当前电脑。

2.3 控制端代码部署

在本地电脑克隆并安装 Open-AutoGLM 控制端:

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

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

此过程会安装必要的库,包括 adbutilsPillow(图像处理)、requests(API调用)以及与vLLM兼容的客户端接口。

3. 设备连接方式详解

3.1 USB 连接方式(推荐用于调试)

最稳定的方式是通过USB线连接设备:

adb devices

正常输出应类似:

List of devices attached
R58RA9NHB3D    device

若显示 unauthorized,请检查手机是否弹出“允许USB调试?”对话框,并点击“允许”。

3.2 WiFi 远程连接(适用于无物理线缆场景)

对于远程调试或批量设备管理,可使用WiFi连接:

# 第一步:通过USB连接后开启TCP/IP模式
adb tcpip 5555

# 第二步:断开USB,使用IP地址连接
adb connect 192.168.x.x:5555

其中 192.168.x.x 为手机在同一局域网下的IP地址,可通过“设置”→“WLAN”→当前网络详情查看。

连接成功后,即使拔掉USB线,仍可通过无线方式持续通信。

提示:首次必须通过USB激活 tcpip 模式,之后每次重启设备需重新执行。

4. 启动AI代理与任务执行

4.1 命令行方式启动任务

在 Open-AutoGLM 根目录下运行主程序:

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

参数说明:

参数 说明
--device-id 通过 adb devices 获取的设备标识符
--base-url 云端vLLM服务的公网访问地址(如 http://123.45.67.89:8800/v1
--model 指定使用的模型名称,需与服务端注册一致
最后字符串 用户自然语言指令

该命令将触发以下流程:

  • 抓取初始屏幕截图;
  • 将截图 + 指令发送至云端模型;
  • 接收模型返回的操作动作(如“点击[搜索框]”);
  • 执行ADB命令;
  • 循环更新画面,直到任务完成。

4.2 使用 Python API 进行远程连接与管理

除了命令行,Open-AutoGLM 提供了完整的 Python API,便于集成到其他系统中:

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")

该API可用于自动化设备发现、状态监控、动态切换连接模式等高级场景。

5. 实时查看屏幕截图与操作流

5.1 截图获取机制与可视化调试

在调试过程中,实时查看屏幕截图是定位问题的关键手段。Open-AutoGLM 默认会在每轮推理前调用 adb exec-out screencap -p > screen.png 获取当前画面。

手动获取截图命令:

adb exec-out screencap -p > current_screen.png

你也可以编写一个简单的监控脚本,定时保存截图:

import time
from adbutils import adb

def monitor_screen(device_id, interval=2):
    d = adb.device(device_id)
    counter = 0
    while True:
        img = d.screenshot()
        img.save(f"screenshots/screen_{counter:04d}.png")
        print(f"已保存截图 {counter}")
        time.sleep(interval)
        counter += 1

# 使用示例
monitor_screen("R58RA9NHB3D")

配合 main.py 输出的动作日志,可以重建完整的操作轨迹,便于复盘失败案例。

5.2 日志分析与操作流追踪

每次模型决策都会生成结构化日志,典型输出如下:

[Step 1] 当前界面检测到:首页、推荐、消息、我
[Action] 点击坐标 (540, 2000) -> 打开“我”
[Step 2] 检测到登录按钮
[Action] 输入用户名 "test_user" 和密码 "****"
[Step 3] 点击“登录”
...

建议将日志与截图按时间戳命名存储,形成“视频式”调试回放能力。

此外,可通过修改 config.yaml 启用更详细的日志级别:

debug:
  enable_screenshot_save: true
  log_action_sequence: true
  show_model_prompt: true

这有助于分析模型是否误解了界面元素或生成了错误动作。

6. 常见问题排查与优化建议

6.1 连接类问题及解决方案

问题现象 可能原因 解决方案
adb devices 无设备 未开启USB调试 检查开发者选项
显示 unauthorized 未授权电脑 在手机端确认授权弹窗
adb connect 失败 IP错误或防火墙拦截 检查网络连通性,关闭防火墙
连接后频繁断开 WiFi信号弱 改用USB连接或优化网络环境

6.2 模型响应异常处理

问题表现 排查方向 建议措施
模型返回乱码 编码格式不匹配 检查API返回Content-Type与解析逻辑
无响应或超时 vLLM服务未启动或显存不足 查看服务端日志,调整 max-model-len 和 GPU资源分配
动作不合理 上下文理解偏差 提高截图分辨率,优化prompt工程
重复操作循环 缺乏终止判断 添加最大步数限制或结果验证模块

6.3 性能优化建议

  1. 提升截图质量:确保截图清晰可读,必要时裁剪无关区域。
  2. 减少延迟:使用局域网内高性能服务器部署vLLM,降低API往返耗时。
  3. 缓存历史状态:避免重复上传相同界面,提高推理效率。
  4. 增加动作校验:执行点击后验证界面变化,防止误操作累积。

获取更多AI镜像

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

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐