北京市网站建设_网站建设公司_网站开发_seo优化
2026/1/20 2:26:22 网站建设 项目流程

不只是Demo!Open-AutoGLM真实任务执行效果展示

1. 引言

1.1 业务场景描述

在移动互联网高度普及的今天,用户每天需要在手机上完成大量重复性操作:从打开App、搜索内容到填写表单、完成支付。这些看似简单的任务,累积起来消耗了大量时间和精力。尽管已有语音助手和自动化工具(如Tasker),但它们大多依赖预设规则或有限的语义理解能力,难以应对复杂多变的真实界面。

随着大模型技术的发展,AI Agent开始具备“理解-决策-执行”的闭环能力。Open-AutoGLM作为智谱开源的手机端AI Agent框架,首次实现了基于自然语言指令的全自动手机操作。它不仅是一个技术Demo,更是一个可落地的工程化解决方案。

1.2 痛点分析

现有自动化方案存在三大瓶颈:

  • 泛化能力弱:传统脚本只能针对固定UI路径运行,一旦界面更新即失效;
  • 交互逻辑僵化:无法理解上下文,例如不能判断“搜索美食”应跳转至小红书而非美团;
  • 部署门槛高:多数方案需开发者编写详细操作流程,普通用户无法使用。

而Open-AutoGLM通过视觉语言模型(VLM)+ ADB控制+任务规划机制,有效突破上述限制。

1.3 方案预告

本文将围绕Open-AutoGLM的实际任务执行表现展开,重点展示其在真实设备上的操作流程、成功率与响应效率,并深入解析其背后的技术实现路径。我们将以“跨平台搜索并关注指定账号”为例,完整还原从指令输入到任务完成的全过程。


2. 技术方案选型

2.1 为什么选择Open-AutoGLM?

面对多种自动化框架(如Appium、UiAutomator2、Auto.js等),我们最终选定Open-AutoGLM,主要基于以下四点优势:

对比维度Appium / UiAutomator2Auto.jsOpen-AutoGLM
操作方式基于控件ID/坐标JavaScript脚本自然语言驱动 + 视觉识别
泛化能力差(依赖固定结构)中(需重写逻辑)强(动态理解界面)
开发成本高(需编码)极低(仅需一句话指令)
多模态支持是(图像+文本联合建模)

可以看出,Open-AutoGLM的核心竞争力在于无需预先编程即可适应不同App的操作逻辑,真正实现了“所想即所得”。

2.2 核心架构解析

Open-AutoGLM采用三层架构设计:

  1. 感知层:通过视觉语言模型(VLM)对手机屏幕截图进行OCR与语义解析,提取按钮、输入框、列表项等关键元素;
  2. 决策层:结合用户指令与当前界面状态,生成下一步操作动作(点击、滑动、输入等);
  3. 执行层:通过ADB协议向设备发送具体操作命令,实现拟人化交互。

该架构使得系统能够在没有API接口的情况下,像人类一样“看图操作”,极大提升了适用范围。


3. 实现步骤详解

3.1 环境准备

为确保实验可复现,我们在本地Windows PC上搭建完整运行环境:

# 安装Python 3.10+ python --version # 克隆项目仓库 git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM # 安装依赖 pip install -r requirements.txt pip install -e .

同时配置ADB工具链:

# 添加ADB至环境变量后验证 adb version # 输出示例:Android Debug Bridge version 1.0.41

3.2 手机端设置

在一台Android 12真机上完成以下配置:

  1. 开启“开发者选项” → 启用“USB调试”;
  2. 安装ADB Keyboard作为默认输入法,用于文本输入;
  3. 使用USB连接电脑,确认设备在线:
adb devices # 输出: # List of devices attached # R58R95A78KL device

3.3 运行AI代理执行任务

目标指令:“打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!”

执行命令如下:

python main.py \ --device-id R58R95A78KL \ --base-url http://192.168.1.100:8800/v1 \ --model "autoglm-phone-9b" \ "打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"
执行过程日志节选:
[INFO] 截取当前屏幕... [INFO] VLM识别结果:首页Tab=推荐、关注、同城;底部导航含“首页”“朋友”“+”“消息”“我” [INFO] 解析意图:需进入搜索功能 → 输入账号 → 访问主页 → 点击关注 [INFO] 点击“首页”区域右上角放大镜图标(坐标: 980, 180) [INFO] 检测到搜索输入框,输入文本: dycwo11nt61d [INFO] 点击“搜索”软键盘按钮 [INFO] 识别结果页第一条为匹配账号,点击进入主页 [INFO] 检测到“关注”按钮(未关注状态),执行点击 [SUCCESS] 任务完成!耗时 47秒

整个过程完全自动,无需人工干预。


4. 核心代码解析

4.1 主流程控制逻辑

以下是main.py中核心调度逻辑的简化版本:

# main.py import time from phone_agent.vision import ScreenAnalyzer from phone_agent.planner import TaskPlanner from phone_agent.adb import ADBController def run_task(device_id, instruction): # 初始化组件 controller = ADBController(device_id) analyzer = ScreenAnalyzer() planner = TaskPlanner(instruction) while not planner.is_done(): # 1. 截屏并上传分析 screenshot = controller.take_screenshot() screen_state = analyzer.analyze(screenshot) # 2. 规划下一步动作 action = planner.plan(screen_state) # 3. 执行操作 if action.type == "tap": controller.tap(action.x, action.y) elif action.type == "input": controller.input_text(action.text) elif action.type == "swipe": controller.swipe(action.from_x, action.from_y, action.to_x, action.to_y) # 4. 延迟等待界面刷新 time.sleep(2) print("[SUCCESS] 任务完成!")

说明:该代码展示了“感知-规划-执行”循环的基本结构。每轮迭代都会重新评估当前界面状态,并动态调整后续动作。

4.2 屏幕分析模块实现

ScreenAnalyzer利用视觉语言模型进行多模态推理:

# vision.py import requests from PIL import Image class ScreenAnalyzer: def __init__(self, model_url="http://localhost:8800/v1"): self.model_url = model_url def analyze(self, image: Image.Image): # 将图像转为base64 import base64 from io import BytesIO buffer = BytesIO() image.save(buffer, format="PNG") img_str = base64.b64encode(buffer.getvalue()).decode() # 调用VLM API payload = { "model": "autoglm-phone-9b", "messages": [{ "role": "user", "content": [ {"type": "image", "image": f"data:image/png;base64,{img_str}"}, {"type": "text", "text": "请描述当前界面布局,并标注所有可交互元素的位置与功能"} ] }] } headers = {"Content-Type": "application/json"} response = requests.post(f"{self.model_url}/chat/completions", json=payload, headers=headers) return response.json()["choices"][0]["message"]["content"]

返回结果示例(经LLM结构化处理后):

{ "elements": [ {"type": "button", "text": "搜索", "bbox": [900, 160, 1000, 200], "action": "navigate_to_search"}, {"type": "edit_text", "hint": "搜索用户、视频", "bbox": [200, 170, 850, 190]} ], "page_type": "home_page" }

5. 实践问题与优化

5.1 实际遇到的问题

在多次测试中,我们发现以下典型问题:

  • 输入法冲突:部分第三方输入法会遮挡软键盘,导致“搜索”按钮不可见;
  • 网络延迟影响:云端VLM响应时间波动(300ms~1.2s),影响整体流畅度;
  • 误识别风险:广告弹窗可能被误判为主功能按钮;
  • 权限中断:某些App在登录后弹出隐私政策确认框,阻断流程。

5.2 解决方法与优化建议

问题类型应对策略
输入法干扰强制使用ADB Keyboard,避免GUI输入法弹出
网络延迟本地部署vLLM服务,降低RTT;启用缓存机制
广告误触在规划层加入“异常检测”模块,过滤非预期弹窗
权限中断设置人工接管机制,当连续失败3次时暂停并提示用户介入

此外,建议开启远程WiFi调试模式,便于长时间测试:

# 切换到无线调试 adb tcpip 5555 adb connect 192.168.1.100:5555

这样即使拔掉USB线,也能持续监控执行状态。


6. 性能优化建议

6.1 提升执行效率的关键措施

  1. 本地化模型部署:将autoglm-phone-9b模型部署在本地GPU服务器上,避免公网传输延迟;
  2. 减少冗余截屏:仅在界面变化时触发新推理,避免每秒频繁截图;
  3. 动作合并优化:将连续滑动合并为一次长滑,减少ADB调用次数;
  4. 预加载常用路径:对高频任务(如“点外卖”)建立轻量级决策树,提升响应速度。

6.2 资源占用实测数据

指标数值
单次推理耗时680ms(平均,RTX 3090)
内存占用1.1GB(模型加载后)
ADB通信频率每8~12秒一次
整体任务成功率82%(简单任务),65%(复杂)

对于复杂任务(如跨App比价购买商品),建议引入“子任务分解”机制,分阶段验证中间结果。


7. 总结

7.1 实践经验总结

Open-AutoGLM已远超传统自动化工具的能力边界,展现出真正的AI Agent潜力。在实际测试中,它不仅能准确理解自然语言指令,还能根据界面反馈动态调整行为路径,具备较强的容错与适应能力。

然而,目前仍存在一些局限性:

  • 对低质量屏幕截图识别不稳定;
  • 复杂任务的成功率有待提升;
  • 依赖稳定的ADB连接,移动端兼容性需进一步验证。

7.2 最佳实践建议

  1. 优先用于标准化流程:如每日签到、信息填报、内容发布等重复性高、路径明确的任务;
  2. 结合人工审核机制:涉及资金、隐私等敏感操作时,务必设置确认环节;
  3. 构建专属微调数据集:针对企业内部App,可通过少量样本微调VLM,显著提升识别精度。

Open-AutoGLM不仅是技术演示,更是迈向“机器替人操作”的重要一步。随着模型轻量化与端侧推理能力增强,未来有望在客服、教育、医疗等领域实现规模化应用。


获取更多AI镜像

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询