Open-AutoGLM任务执行流程拆解,AI是如何思考的
@TOC
1. 引言:当AI开始“看”和“操作”手机
在传统的人机交互模式中,用户需要手动点击、滑动、输入来完成手机上的任务。而随着大模型与多模态技术的发展,一种全新的交互范式正在兴起——用自然语言指挥AI代理自动完成手机操作。
Open-AutoGLM 是由智谱AI开源的手机端AI Agent框架,其核心项目 AutoGLM-Phone 能够通过视觉语言模型理解屏幕内容,并借助 ADB(Android Debug Bridge)实现对安卓设备的自动化控制。用户只需说一句:“打开小红书搜索美食”,系统就能自动解析意图、识别界面元素、规划操作路径并执行点击、滑动、输入等动作,全程无需人工干预。
本文将深入拆解 Open-AutoGLM 的任务执行全流程,揭示 AI 是如何“思考”的——从接收指令到完成任务,每一步背后的技术逻辑与工程实现。
2. 系统架构概览
2.1 整体架构组成
Open-AutoGLM 的运行依赖于三个关键组件的协同工作:
- 客户端(Control Client):部署在本地电脑或服务器上,负责连接设备、捕获屏幕、发送指令。
- AI 模型服务(Model Server):提供视觉语言推理能力,接收屏幕截图和用户指令,输出下一步操作建议。
- 安卓设备(Target Device):被控手机,通过 ADB 接收操作命令并反馈状态。
三者之间的数据流如下:
用户指令 → 客户端 → 屏幕截图 + 指令 → 模型服务 → 操作决策 → ADB 命令 → 手机执行整个过程形成一个闭环控制系统,在每次迭代中不断感知、决策、执行,直到任务完成。
2.2 核心技术栈
| 组件 | 技术 |
|---|---|
| 视觉理解 | 多模态大模型(AutoGLM-Phone-9B) |
| 设备控制 | ADB 协议(USB/WiFi) |
| 输入模拟 | ADB Keyboard |
| 模型推理 | vLLM / SGLang / ModelScope API |
| 通信协议 | OpenAI 兼容 RESTful API |
3. 任务执行生命周期详解
Open-AutoGLM 的任务执行遵循一个标准的“感知-规划-行动”循环。我们以一条典型指令为例进行拆解:
“打开抖音,搜索抖音号为 dycwo11nt61d 的博主并关注他!”
该任务涉及多个应用跳转、UI识别、文本输入和按钮点击,完整流程可分为以下几个阶段。
3.1 阶段一:初始化与环境准备
在任务启动前,系统需完成以下准备工作:
设备连接
- 使用
adb devices或adb connect <IP>:5555确认设备在线。 - 获取设备分辨率、Android 版本等基本信息,用于后续坐标映射。
- 使用
ADB Keyboard 启用
- 将默认输入法切换为 ADB Keyboard,确保可通过 ADB 发送文本输入命令:
adb shell ime set com.android.adbkeyboard/.AdbIME
- 将默认输入法切换为 ADB Keyboard,确保可通过 ADB 发送文本输入命令:
启动主程序
- 运行
main.py,传入设备ID、模型服务地址和用户指令。
- 运行
python main.py \ --device-id 192.168.1.100:5555 \ --base-url http://localhost:8000/v1 \ --model "autoglm-phone-9b" \ "打开抖音..."此时系统进入任务执行主循环。
3.2 阶段二:屏幕感知与多模态输入构建
每一轮决策前,系统首先执行“感知”步骤:
截取当前屏幕
adb exec-out screencap -p > screen.png输出为一张 PNG 图像,作为视觉输入。
获取辅助信息
- 当前包名(
adb shell dumpsys window windows \| grep mCurrentFocus) - 界面层次结构(可选,通过 UI Automator 获取)
- 当前包名(
构建多模态 Prompt将以下信息打包成模型输入:
- 用户原始指令
- 上下文历史(已执行的操作)
- 当前屏幕图像(Base64 编码)
- 可选的元数据(如应用名称、时间戳)
示例 prompt 结构:
{ "messages": [ { "role": "user", "content": [ {"type": "text", "text": "请根据当前界面继续执行:打开抖音搜索指定博主并关注"}, {"type": "image_url", "image_url": "data:image/png;base64,..."} ] } ], "model": "autoglm-phone-9b" }3.3 阶段三:模型推理与操作决策生成
模型服务接收到请求后,执行以下处理:
3.3.1 视觉-语言联合理解
AutoGLM-Phone-9B 是一个专为移动端GUI操作优化的多模态模型,具备以下能力:
- UI元素识别:识别按钮、输入框、图标、标题栏等常见组件。
- 语义理解:结合上下文理解“搜索”、“关注”等动词的操作含义。
- 空间定位:输出目标区域的归一化坐标(x, y),便于映射到实际像素。
3.3.2 操作类型分类
模型输出格式为结构化 JSON,包含操作类型和参数:
{ "action": "tap", "coordinates": [0.78, 0.23], "description": "点击首页底部的‘发现’标签" }支持的操作类型包括:
| 操作 | 参数说明 |
|---|---|
tap | 归一化坐标 (x, y) |
swipe | 起点(x1,y1),终点(x2,y2),持续时间(ms) |
type | 要输入的文本字符串 |
press_back | 无参数,返回上一页 |
wait | 等待若干秒再继续 |
finish | 任务已完成 |
3.3.3 决策合理性校验
系统会对模型输出进行安全过滤:
- 若操作位于敏感区域(如支付按钮、隐私设置),触发确认机制。
- 对重复操作、无效路径进行去重和中断判断。
- 设置最大步数限制(默认 20 步),防止无限循环。
3.4 阶段四:ADB指令执行与反馈
客户端收到模型输出后,将其转换为具体的 ADB 命令并执行:
示例 1:点击操作
# 将归一化坐标转为像素(假设分辨率为 1080x2340) x = int(0.78 * 1080) = 842 y = int(0.23 * 2340) = 538 adb shell input tap 842 538示例 2:文本输入
# 使用 ADB Keyboard 输入 adb shell am broadcast -a ADB_INPUT_TEXT --es msg "dycwo11nt61d"示例 3:滑动操作
adb shell input swipe 540 2000 540 500 300 # 快速上滑执行完成后,系统等待 1–2 秒让界面刷新,然后重新截屏,进入下一轮循环。
3.5 阶段五:任务终止条件判断
系统在以下任一条件下结束任务:
模型返回
finish操作- 表示任务已成功完成,例如:“已成功关注目标用户”。
达到最大尝试次数
- 默认最多执行 20 步,避免陷入死循环。
检测到错误状态
- 如应用崩溃、页面加载失败、长时间无变化。
用户主动中断
- Ctrl+C 终止进程。
任务结束后,系统输出执行日志,记录每一步的操作、耗时和结果。
4. 关键技术细节剖析
4.1 多模态输入的空间对齐机制
由于模型输出的是归一化坐标(0~1范围),而 ADB 需要绝对像素值,因此必须进行精确的坐标映射。
公式如下:
$$ x_{pixel} = x_{norm} \times width \ y_{pixel} = y_{norm} \times height $$
此外,还需考虑不同设备的状态栏高度和导航栏遮挡问题。系统通过dumpsys display获取有效显示区域,避免误触系统UI。
4.2 模型提示工程设计
为了让模型更准确地理解任务,系统采用分层提示策略:
你是一个手机智能助手,请根据用户的自然语言指令和当前屏幕截图, 决定下一步最合适的操作。可选操作包括:tap, swipe, type, press_back, wait, finish。 注意事项: 1. 所有坐标均为归一化(0~1),原点在左上角。 2. 输入文本使用 type 操作。 3. 如果无法继续,请返回 wait 并描述原因。 4. 成功完成任务后返回 finish。 当前任务:打开抖音搜索指定博主并关注 历史操作:[{"action":"launch","app":"com.ss.android.ugc.aweme"}]这种结构化提示显著提升了模型的决策一致性。
4.3 敏感操作防护机制
为保障用户隐私与安全,系统内置双重保护:
关键词拦截
- 检测“付款”、“转账”、“删除账号”等高风险词汇,暂停执行并提示用户确认。
人工接管模式
- 在登录、验证码输入等场景,自动退出自动化流程,交由用户手动操作。
可通过配置文件开启/关闭此功能:
security: enable_confirmation: true sensitive_keywords: - 支付 - 验证码 - 登录 - 删除5. 实际运行案例分析
我们以一条复杂指令为例,观察完整的执行轨迹:
“打开京东,搜索‘iPhone 15’,加入购物车,并跳过登录。”
| 步骤 | 模型输出 | ADB 执行 | 状态 |
|---|---|---|---|
| 1 | launch com.jingdong.app.mall | adb shell monkey -p com.jingdong.app.mall -c android.intent.category.LAUNCHER 1 | ✅ |
| 2 | tap [0.5, 0.1](顶部搜索框) | input tap 540 234 | ✅ |
| 3 | type "iPhone 15" | am broadcast -a ADB_INPUT_TEXT --es msg "iPhone 15" | ✅ |
| 4 | tap [0.9, 0.1](搜索按钮) | input tap 972 234 | ✅ |
| 5 | tap [0.3, 0.4](第一个商品) | input tap 324 936 | ✅ |
| 6 | tap [0.5, 0.8](加入购物车) | input tap 540 1872 | ⚠️ 跳转至登录页 |
| 7 | press_back | input keyevent BACK | ✅ |
| 8 | finish | —— | 🎉 任务完成 |
可以看到,当遇到登录拦截时,AI选择退回而非强行操作,体现了良好的容错能力。
6. 总结
Open-AutoGLM 展示了现代AI Agent在移动端的强大潜力。通过对“感知→决策→执行”闭环的精细化设计,它实现了从自然语言到自动化操作的无缝转化。
6.1 技术价值总结
- 多模态融合:结合视觉与语言理解,真正实现“看得懂、做得对”。
- 工程落地性强:基于成熟的 ADB 协议,兼容绝大多数安卓设备。
- 安全性设计周全:敏感操作确认、人工接管机制保障用户隐私。
- 远程可控性好:支持 WiFi 连接,适用于远程调试与无人值守场景。
6.2 应用前景展望
未来,此类技术可广泛应用于:
- 无障碍辅助:帮助视障人士操作手机。
- 自动化测试:替代传统脚本,实现智能化UI测试。
- 数字员工:在电商、客服等领域执行标准化任务。
- 智能家居中枢:统一控制多个App实现场景联动。
随着模型轻量化和边缘计算的发展,这类AI Agent有望直接部署在手机端,实现完全离线运行。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。