从 ADB 到 AutoGLM,从手机到浏览器,深入理解 AI 如何"看懂"并"操控"图形界面
GUI Agent
从 ADB 到 AutoGLM,从手机到浏览器,深入理解 AI 如何"看懂"并"操控"图形界面
一个公式理解 GUI Agent
无论是手机、浏览器还是桌面,所有 GUI Agent 都遵循同一个核心循环
🔄 截图 → 理解 → 决策 → 执行 → 循环
视觉感知层
通过截图获取当前界面状态,视觉语言模型(VLM)识别 UI 元素、按钮、输入框、文字等内容
规划决策层
理解用户意图,将复杂任务拆解为步骤,根据当前界面状态决定下一步操作
工具执行层
将决策转化为具体操作指令,通过 ADB / Playwright / 系统 API 执行点击、滑动、输入等动作
这个范式的核心价值在于:不依赖任何 App 的内部 API,纯粹通过"看"界面来操作。这意味着它可以适用于任何图形界面,包括那些没有开放 API 的封闭系统。
ADB:Android 的"后门"
Android Debug Bridge 是 Google 官方提供的调试工具,也是手机 Agent 的执行基础
什么是 ADB?
ADB(Android Debug Bridge)是 Android 开发者调试工具,允许电脑通过 USB 或 WiFi 与手机通信,执行各种操作命令
能做什么?
模拟人手操作:点击、滑动、长按、输入文字、按物理键(返回、Home)、截图、录屏、安装应用等
如何开启?
手机进入开发者模式(连续点击版本号 7 次),开启 USB 调试,用数据线连接电脑即可
# 检查已连接设备 adb devices # 点击屏幕坐标 (500, 800) adb shell input tap 500 800 # 滑动:从 (100,500) 滑到 (100,100) adb shell input swipe 100 500 100 100 # 输入文字(仅支持英文) adb shell input text "hello" # 按返回键 adb shell input keyevent KEYCODE_BACK # 按 Home 键 adb shell input keyevent KEYCODE_HOME # 截图并保存到电脑 adb shell screencap /sdcard/screenshot.png adb pull /sdcard/screenshot.png
ADB 本身是"盲"的,只能执行命令(如点击坐标 500,800),但不知道那个位置是什么。这就是为什么需要 VLM 来"看"屏幕——ADB 是手,VLM 是眼睛和大脑。
| AutoGLM 操作 | 对应 ADB 命令 | 说明 |
|---|---|---|
Tap |
adb shell input tap x y |
点击指定坐标 |
Swipe |
adb shell input swipe x1 y1 x2 y2 |
从起点滑到终点 |
Long Press |
adb shell input swipe x y x y 1000 |
原地滑动1秒实现长按 |
Type |
adb shell am broadcast -a ADB_INPUT_TEXT |
通过 ADB Keyboard 输入中文 |
Back |
adb shell input keyevent KEYCODE_BACK |
按返回键 |
Home |
adb shell input keyevent KEYCODE_HOME |
回到桌面 |
Launch |
adb shell monkey -p 包名 ... |
启动应用 |
Open-AutoGLM 深度解析
智谱 AI 开源的手机 Agent 框架,让 AI 像人一样操作手机
📐 AutoGLM 架构设计
AutoGLM-Phone-9B 是一个 9B 参数的视觉语言模型,需要约 20GB 显存。它运行在服务器或云端,手机只是被控端,只需开启 USB 调试和安装 ADB Keyboard。
<!-- 模型的输出包含思考过程和动作指令 --> <think> 当前在系统桌面,需要先启动小红书应用 </think> <answer> do(action="Launch", app="小红书") </answer> <!-- 下一步 --> <think> 小红书已打开,现在需要点击搜索框 </think> <answer> do(action="Tap", element=[500, 100]) </answer>
关键技术洞察
规划(Planning)和定位(Grounding)需要分离优化——规划追求灵活性,定位追求准确性,两者有不同的训练目标
性能表现
在 AndroidLab 上达到 36.2% 成功率,在常用中文 App 上达到 89.7% 成功率,支持 50+ 款主流应用
本质是 Function Calling
Tap、Swipe 等操作就像给 LLM 定义的 Tools,模型决定调用哪个工具和参数,Agent 代码负责执行
三大 GUI Agent 场景
同一个核心范式,不同的执行层实现
📱 手机 Agent
Android / iOS / 鸿蒙
🌐 浏览器 Agent
Chrome / Firefox / WebKit
🖥️ 桌面 Agent
Windows / macOS / Linux
| 对比项 | 手机 Agent | 浏览器 Agent | 桌面 Agent |
|---|---|---|---|
| 截图方式 | adb screencap | page.screenshot() | 系统截图 API |
| 元素定位 | 纯视觉 + 坐标 | DOM / 选择器 / 视觉 | 纯视觉 + 坐标 |
| 点击执行 | adb shell input tap | element.click() | pyautogui.click() |
| 中文输入 | 需要 ADB Keyboard | 原生支持 | 系统输入法 |
| 安全性 | 需开发者权限 | 相对安全 | 建议沙盒环境 |
开源项目一览
GUI Agent 领域的主要开源项目和工具
📱 手机端
🌐 浏览器端
🖥️ 桌面端
🔧 底层工具
核心要点回顾
统一范式
所有 GUI Agent 都遵循「截图 → VLM 理解 → 输出动作 → 执行 → 循环」的核心模式
工具抽象
Tap、Click、Type 等操作本质是给模型定义的 Tools,类似 Function Calling
分层架构
VLM 在云端负责理解和决策,Agent 代码在本地负责截图和执行
场景适配
手机用 ADB,浏览器用 Playwright,桌面用 PyAutoGUI,执行层可替换
未来方向
端侧模型、多模态融合、安全机制是 GUI Agent 的重要演进方向
现在你已经理解了 GUI Agent 的核心原理!可以从 Open-AutoGLM(手机)或 Browser-Use(浏览器)开始实践,体验 AI 操控图形界面的魅力。