跳转至

多模态Agent:从GUI自动化到具身智能的感知、推理与行动

多模态Agent是现代AI从“感知理解”走向“自主行动”的前沿范式。它需要将视觉、语言、环境状态等信息统一起来,进行推理、规划并最终输出可执行的动作。以下深入剖析多模态Agent在GUI、Web、具身智能等场景中的核心架构、关键技术及挑战。

image.png


多模态 Agent 在 GUI 自动化操作中,如何理解屏幕并生成正确的动作?

GUI自动化要求Agent像人一样“看”屏幕截图,理解界面元素布局和功能,然后输出精确的点击、拖拽、输入等操作。其技术栈通常包含视觉编码-语义理解-动作生成三阶段。

1.1 屏幕感知:将像素转化为结构化语义

核心技术方案:

查看内嵌表格

主流实践:SoM结合多模态LLM是目前工业界最常用方案。例如,用UI检测模型(如YOLO微调)提取所有可交互元素,框出并编号,生成标注后的截图。LLM看到标注截图后,输出“点击[14]”或“在[5]输入‘Hello’”,后处理层将ID映射为真实坐标并执行。

1.2 从理解到动作:动作空间的抽象

GUI动作需要标准化为模型可输出的格式。典型动作空间定义为:

{
  "action": "CLICK" | "TYPE" | "SCROLL" | "SWIPE" | "LONG_PRESS" | "BACK",
  "element_id": 14,           // 对应SoM标注的ID
  "text": "input content",   // 用于TYPE动作
  "coordinate": [x, y],      // 备选:直接坐标
  "direction": "up" | "down" // 用于SCROLL/SWIPE
}

动作生成的两种范式:

  • 端到端生成:将当前截图、历史操作序列、用户目标作为prompt,直接让LLM输出结构化动作JSON。

  • 分离式生成:LLM输出高层次意图(“打开设置”),再由一个轻量级执行模块匹配底层UI坐标。

1.3 错误恢复与自适应

GUI Agent常因弹窗、网络延迟、意外界面跳转而执行失败。鲁棒方案需在每一轮动作后重新截屏作为新的视觉观察,形成“观察-动作-再观察”的闭环。若动作执行后界面无预期变化(如弹窗未关闭),Agent可检测到异常并自动重试或改用替代策略。此即ReAct范式在视觉GUI中的直接应用。


Web Agent 使用 HTML 和屏幕截图作为输入,如何设计融合方案?

Web Agent拥有比App更丰富的输入:HTML DOM提供结构化语义和层级关系,截图提供视觉外观和布局信息。融合两者能结合“精确元素定位”与“视觉上下文理解”。

2.1 融合架构

image.png

2.2 HTML的结构化对齐

关键挑战:如何让LLM将视觉patch与HTML中的具体元素建立关联?

主要方法:

查看内嵌表格

2.3 Web Agent的特有挑战

  • 动态内容:页面可能异步加载,初始HTML不完整。Agent需持续观察并等待关键元素出现。

  • 巨量DOM:一个复杂网页可能有数千个DOM节点。必须进行剪枝:仅保留可交互元素(a, button, input, select等),或将层级压缩为摘要。

  • 跨域泛化:不同网站的HTML结构和视觉风格差异极大。SoM方案可屏蔽底层HTML差异,仅依赖视觉标记,泛化能力更强。


具身智能中,多模态模型如何结合视觉、语言和机器人状态来完成指令?

具身智能要求机器人在物理世界中执行任务,输入包括:RGB-D图像、语言指令、本体感觉(关节角度、末端位姿、力矩)、触觉等。输出是底层动作序列或高层动作基元。

3.1 多模态输入融合

融合流水线:

  1. 视觉编码:使用CNN或ViT处理RGB/深度图像,提取场景中的物体、障碍物、目标物体位姿。

  2. 语言编码:用LLM将自然语言指令解析为任务目标和约束(如“拿起桌子上红色的杯子,注意不要碰到花瓶”)。

  3. 状态编码:关节角度等低维连续信号通过MLP投影为token,与视觉和语言token一同送入Transformer。

  4. 跨模态交互:在Transformer内部通过自注意力融合,使得视觉感知与语言目标对齐(如定位指令中的“红色杯子”)。

3.2 动作输出:从语言到控制

具身Agent的动作输出可以是语言描述、动作基元、或连续关节角度。分为两个层级:

层级一:高层任务规划 LLM输出动作基元序列,如[导航到桌子, 抓取红色杯子, 移动到厨房, 放下]。每个基元由低级控制器执行。

层级二:低层控制命令

直接输出关节角度或末端速度。常用策略:

  • 行为克隆(BC):从人类遥操作数据中学习状态->动作的映射。

  • 强化学习(RL):在模拟器中训练策略网络,多模态信息作为state输入,输出连续动作。

  • 基于语言的模型预测控制:LLM生成中间关键点(如目标物体的抓取点坐标),再通过运动规划器求解关节轨迹。

3.3 代表性架构:RT-2 (Google)

RT-2将机器人控制抽象为“视觉-语言-动作”token序列的生成问题。它将机器人动作(如末端位移增量)离散化为token,与视觉和文本token拼接,让LLM自回归地预测动作token。这证明了通用大模型+少量具身微调即可实现强大的泛化能力。


如何为多模态 Agent 设计规划能力?视觉信息如何参与 ReAct 或 Plan-and-Execute?

规划是多模态Agent完成长程任务的核心。视觉信息在规划的不同阶段扮演着“环境感知者”和“步骤校验者”的双重角色。

4.1 ReAct 模式下的视觉参与

ReAct(Reasoning + Acting)让Agent交替进行“思考-行动-观察”。在多模态中,每次观察都是一张新截图或场景照片。

Round 1:
  Thought: 我需要找到设置图标。当前屏幕主界面上,底部导航栏右侧有一个齿轮图标。
  Action: 点击[齿轮图标, id=5]
  Observation: (新截图) 进入了设置页面,顶部有“设置”标题。
Round 2:
  Thought: 已进入设置,我需要找到“Wi-Fi”选项。
  Action: 滚动列表向下
  Observation: (新截图) 列表滚动,出现了“Wi-Fi”项。
Round 3:
  Thought: 找到了“Wi-Fi”,点击进入。
  Action: 点击[Wi-Fi, id=12]
  ...

视觉的关键作用:

  • 在Thought阶段,LLM需要描述当前界面并推理下一步目标元素的位置。

  • Observation阶段提供客观反馈,LLM据此调整下一步规划。

4.2 Plan-and-Execute 模式下的视觉参与

Plan-and-Execute先制定完整计划,再逐步执行。视觉在计划阶段参与程度可分两级:

静态视觉规划:仅根据初始场景照片生成整体计划。例如,看到一张厨房照片,生成步骤清单:“1.取出冰箱里的鸡蛋 2.打蛋 3.开火 4.炒蛋”。优点是快速,缺点是缺乏中间反馈,计划可能因环境动态变化而失效。

动态视觉重规划:每执行一步后,用新观察更新计划。可以维护一个“计划栈”和“当前环境状态摘要”,在每步后由LLM评估执行结果,必要时修订后续计划。这是更鲁棒的方式,结合了ReAct的反馈优势和Plan的全局结构。

4.3 视觉规划的一种特殊形式:“将视觉目标转化为子目标”

对于导航类任务,Agent可以从地图照片或第一视角图像中提取关键路标作为子目标序列。例如,根据室内地图规划路径:起点 → 走廊尽头 → 左转 → 蓝色房门。视觉定位模块在每个子目标处进行确认,实现闭环。


多模态 Agent 如何实现“视觉规划”:比如从一张厨房照片推理出烹饪步骤。

从静态厨房照片推理烹饪步骤,本质是从视觉场景中提取语义知识,并将其与任务知识图谱结合,生成有序的操作序列。

5.1 技术流程

image.png

厨房照片 ──► 物体检测 (冰箱、灶台、锅、食材)
          ──► 场景图构建 (空间关系、物体状态)
          ──► 知识检索 (烹饪菜谱库、常识)
          ──► LLM 推理 (将检测到的物体与菜谱匹配,生成步骤)
          ──► 输出烹饪步骤

5.2 关键步骤详解

第一步:精细视觉理解

使用开放词汇检测模型(如Grounding DINO)和属性识别模型,不仅要识别物体类别,还要识别其状态。例如:“冰箱门关闭”、“鸡蛋在冰箱内”、“灶台处于关闭状态”。OCR可以提取调料瓶标签。

第二步:任务假设与匹配

根据检测到的食材和工具,推断用户可能想做的菜肴。如果没有明确指令,Agent可以假设:“有鸡蛋、番茄、葱 → 可能要做番茄炒蛋”。这一步利用LLM的常识推理。

第三步:步骤生成与排序

结合菜谱知识(可从向量数据库检索),LLM生成步骤:

  1. 从冰箱取出鸡蛋和番茄。

  2. 清洗番茄并切块。

  3. 打散鸡蛋。

  4. 打开灶台,放锅,加油。

  5. 炒鸡蛋,盛出。

  6. 炒番茄,加入鸡蛋,调味。

第四步:可执行性校验

将每一步所需的前置条件(如鸡蛋已在碗中)与当前视觉状态进行比对。若初始照片中鸡蛋还在冰箱里,则步骤0应为“打开冰箱”。这种“状态感知的规划”使计划更切实际。

5.3 与具体执行的桥梁

输出的步骤是文本,需要下游的具身执行系统或人来执行。对于Agent来说,可进一步将步骤分解为更细粒度的动作基元。视觉规划的价值在于将复杂的多步推理前置到感知阶段,减少了试错成本。


在 Web Agent 中,如何将 HTML DOM 树和屏幕截图这两种模态进行结构化对齐?

HTML和截图是对同一界面的两种不同模态描述,结构化对齐的目标是让模型知道DOM中的每个元素对应截图上的哪个视觉区域,从而既可以理解语义结构,又能进行精确空间定位。

6.1 对齐实现方式

查看内嵌表格

6.2 实际部署的混合方案

生产环境中最可靠的是“SoM + DOM剪枝 + 坐标”的组合:

  1. DOM剪枝与增强:仅保留可交互元素,生成精简HTML序列。为每个元素添加idtextbbox属性。

  2. 截图标注:基于DOM元素的bbox在截图上绘制SoM标记。

  3. 输入到LLM:将标注后的截图和附带ID的精简HTML一起输入LLM。

  4. 动作输出:LLM通过引用元素ID输出动作,无需预测坐标。

这种方法将视觉-文本对齐问题外化到了前端预处理,LLM专注于高层理解和决策,简洁且鲁棒。


多模态 Agent 调用工具时,能否让工具直接返回视觉结果,再让 Agent 分析?

完全可以,且这是多模态Agent扩展感知边界的重要方式。 工具不再局限于返回文本结果,而是可以将截图、渲染图、检索到的图片等视觉信息直接返回给Agent,形成“视觉观察-工具执行-视觉反馈”的闭环。

7.1 应用场景举例

查看内嵌表格

7.2 技术实现

Agent在调用工具时,在请求中指定返回格式为imagemixed。工具执行后将截图以Base64编码或URL形式返回。Agent的视觉编码器对返回的图片编码,作为新一轮视觉token,与任务上下文一起输入LLM推理下一步。

优化技巧:

  • 对工具返回的图片可进行适当压缩或降分辨率,控制视觉token数量。

  • 在prompt中明确区分“原始用户图像”和“工具返回图像”,避免混淆。

  • 对于多轮工具调用,维护一个视觉历史缓存,仅保留最近几次的关键视觉结果。

这种能力让Agent从“被动观察者”升级为“主动获取信息的探索者”,是通向自主完成复杂真实任务的关键一步。


如何让多模态 Agent 具备“反思”能力:执行动作后,观察视觉反馈并判断是否成功。

反思是多模态Agent鲁棒性的核心。它需要在每一动作后,利用新的视觉观察来评估动作效果,并在失败时调整策略。

8.1 反思的工作流

image.png

8.2 判断是否成功的视觉证据

Agent可以检查以下视觉信号:

  • 预期元素出现/消失:点击“设置”后,截图中是否出现设置页面的标志性元素(如“设置”标题)。

  • 界面变化检测:通过前后截图的结构相似度(SSIM)或特征差异,判断是否有明显变化。如果执行点击后截图几乎未变,说明点击可能未生效。

  • 文本内容核对:OCR提取当前界面文本,检查是否包含预期的关键词。

  • 弹窗或错误提示检测:是否有意外的弹窗、报错信息或加载菊花,这些是异常的视觉信号。

8.3 失败恢复策略

当反思模块判断动作失败后,Agent进入“异常处理”子流程:

  1. 取消意外弹窗:如果检测到广告或权限请求弹窗,尝试点击关闭或拒绝。

  2. 重试当前动作:如果是网络加载延迟导致的超时,等待并重试。

  3. 返回上一级:如果进入了错误的页面,执行返回操作。

  4. 重新规划:如果连续失败,放弃当前计划,根据最新的视觉状态重新全局规划。

实现方式:反思逻辑可以集成在ReAct循环中。LLM在生成下一动作前,需要先输出一段“反思”文本:“前一步点击了[14],但界面并未跳转,可能因为网络延迟。我将等待2秒后再重试。”然后执行重试动作。


多模态 Agent 中,如何构建一个包含多种视觉工具的工具箱,并自动路由?

多模态Agent需要能够按需调用不同的视觉专家模型来完成具体子任务。这需要工具抽象、能力描述和智能路由。

9.1 视觉工具箱的设计

查看内嵌表格

9.2 工具路由机制

方法一:LLM函数调用(Function Calling)

在prompt中描述每个工具的用途、输入参数和输出格式。LLM根据当前任务需求,自动生成调用哪个工具的函数调用JSON。例如:“我需要读取这个按钮上的文字,调用OCR工具,输入参数为区域[100,200,300,250]”。

方法二:轻量级路由器

训练一个小型分类器,输入LLM的当前隐藏状态或文本摘要,输出最适合的工具。比LLM路由更快,但灵活性略低。

方法三:基于意图的多级路由

先由LLM解析出高层意图(如“识别文字”、“定位物体”),再由规则引擎路由到具体工具。这减少了LLM对工具细节的依赖。

路由决策的关键考量:

  • 精度与速度权衡:简单的OCR直接本地执行,复杂场景理解调用云端大模型。

  • 工具优先级:当多个工具都能完成同一任务时,根据历史成功率或延迟自动选择最优工具。

  • 容错与降级:如果首选工具失败,自动路由到备选工具。


具身智能中,多模态模型如何输出低层控制命令(如机械臂关节角度),而不仅仅是语言?

从多模态感知到连续控制命令,目前有四条主要技术路径:

10.1 技术路径对比

查看内嵌表格

10.2 扩散策略 (Diffusion Policy) 详解

这是目前具身智能中最受关注的低层控制方案。它不依赖语言中介,直接学习从视觉观察到动作的映射。

流程:

  1. 观察(图像+关节状态)通过视觉编码器和状态编码器编码为条件特征。

  2. 将随机噪声作为动作序列的初始猜测。

  3. 扩散模型UNet以条件特征为指导,逐步去噪,生成平滑、连续的动作序列(如未来20步的关节角度)。

  4. 执行生成动作序列的前几步,然后根据新观察重新生成,形成滚动时域控制。

优势:能捕捉多模态的动作分布(如向左或向右绕过障碍物均可),生成的动作平滑自然,适合复杂的接触式操作任务。


多 Agent 协作的多模态场景:一个 Agent 负责看,一个负责画,它们如何通信?

在多Agent协作中,各Agent可以分别拥有不同的模态感知或生成能力,通过结构化的通信协议交换信息,共同完成单一Agent无法完成的任务。

11.1 场景举例:视觉理解Agent + 图像生成Agent

任务:用户上传一张房间照片,要求“按照这个风格重新设计客厅布局,并画出效果图”。

协作流程:

  1. 视觉理解Agent:接收房间照片,进行场景解析(检测家具、识别风格、测量空间关系),输出结构化描述。

  2. 文本通信:视觉Agent将描述打包为JSON发送给生成Agent。内容包含:风格标签(“现代简约”)、保留元素(“L型灰色沙发”)、替换/添加元素(“添加绿植”)、布局约束(“电视墙在落地窗对面”)。

  3. 图像生成Agent:接收JSON和可选的原图(用于img2img保持结构),生成多张设计方案效果图。

  4. 迭代优化:视觉Agent再次分析生成的效果图,检查布局是否合理、风格是否一致,给出修改建议(“茶几太大,缩小20%”),生成Agent再次修改。

11.2 通信协议设计

查看内嵌表格

11.3 通信效率优化

由于视觉数据(图片、特征图)体积大,直接传输低效。优化手段:

  • 传输特征而非像素:视觉Agent输出CLIP等语义特征向量,生成Agent基于特征生成,而非重新分析原图。

  • 增量传输:对于局部修改,仅传输修改区域的坐标和新特征,其余保持不变。

  • 共享视觉缓存:多个Agent共享一个视觉特征缓存池,减少重复编码。


如何评估多模态 Agent 的性能?除了任务完成率,还有什么指标?

多模态Agent的评估比传统NLP任务更复杂,因为它同时涉及感知、推理和物理动作。需要多维度、分层次的评估体系。

12.1 评估指标体系

查看内嵌表格

12.2 评估环境

  • 静态基准:如Mobile-Env, WebArena, MiniWob。提供标准化任务和自动评判。

  • 动态在线评估:在真实应用或网站上进行测试,更真实但成本高。

  • 仿真环境:具身智能中用SAPIEN、Isaac Sim等模拟器,可重置、可量化。

12.3 构建诊断性子集

评估不仅要看总分,还要按任务类型(导航、填写表单、购物)、难度(步骤数)、视觉复杂度(简单界面vs密集元素)等分层统计,形成能力雷达图,精确定位Agent短板。


训练多模态 Agent 时,如何从失败的视觉轨迹中学习?能否使用逆强化学习?

失败的视觉轨迹是珍贵的学习信号。通过分析失败,可以教会模型什么不该做,以及如何从错误中恢复。

13.1 从失败中学习的方法

方法一:偏好学习(DPO/RLHF)

收集成功和失败的视觉轨迹对。对于同一初始任务,成功轨迹作为chosen,失败轨迹作为rejected。用DPO训练模型,使其更倾向于生成成功的动作序列。失败轨迹中的错误步骤起到了“负样本”的作用。

方法二:逆强化学习 (IRL)

IRL可以从专家演示中推断奖励函数,但也可扩展至失败演示。通过失败轨迹,IRL可以学习到哪些状态-动作会导致任务失败,从而将这些状态赋予低奖励。结合成功和失败轨迹,IRL能学到更精细的奖励模型,引导强化学习策略避开危险区域。

方法三:反思数据微调

将失败轨迹与“事后反思”配对。人类标注员或强模型观看失败轨迹,为每一步错误标注原因和正确的替代动作。形成“错误观察→错误动作→正确反思→修正动作”的训练数据。Agent微调后能学会在类似错误发生前自我纠正。

13.2 视觉轨迹的回放与标注

视觉轨迹包含屏幕截图序列和动作序列。回放工具需要支持逐帧浏览,并能在关键帧上标注错误类型(如“目标定位错误”、“过早执行”、“遗漏前置步骤”)。利用视觉界面的帧差异,可以更直观地定位失败点。


多模态 Agent 在真实世界中面临的最大工程挑战是什么?如视觉输入延迟、非结构化环境。

真实世界对多模态Agent的挑战远超实验室环境。最大的工程挑战集中在实时性、不确定性和系统鲁棒性三方面。

14.1 视觉输入延迟与实时性

问题表现:

  • 从摄像头采集、编码、推理到输出动作,总延迟可能超过200ms。对于实时控制(如无人机避障、机械臂动态抓取),延迟意味着碰撞风险。

  • 网络传输云端推理产生额外延迟,离线部署又受限于边缘算力。

应对策略:

  • 边缘端轻量模型+云端强模型协同:视觉编码在本地完成,LLM推理可卸载到云端。本地缓存高频动作策略。

  • 预测性补偿:对延迟期间的物体运动做卡尔曼滤波预测,动作指令提前补偿。

  • 异步流水线:摄像头采集、视觉编码、动作生成在不同线程/流上并行,减少等待。

14.2 非结构化环境的不确定性

问题表现:

  • 光照剧烈变化、物体被遮挡、背景杂乱、摄像头抖动,导致视觉识别频繁失败。

  • 真实物体的形状、纹理与训练数据差异巨大。

应对策略:

  • 多模态冗余感知:融合RGB、深度、红外、触觉等多模态,降低单点失效风险。

  • 域随机化训练:在模拟器中大量渲染随机光照、纹理、相机位姿的图像,提升模型鲁棒性。

  • 在线自适应:基于当前环境的少量无标签数据,快速微调视觉编码器的BN层或使用Test-Time Adaptation。

14.3 系统鲁棒性与长期运行

问题表现:

  • 内存泄漏、GPU显存碎片、传感器老化等,导致长时间运行后性能退化甚至崩溃。

  • 意外情况(如被用户突然打断、硬件故障)下需要安全停机。

应对策略:

  • 健康监控与自动重启:实时监控帧率、延迟、内存占用,异常时触发告警或自动重启。

  • 优雅降级:当算力不足时,自动切换到低精度模型或降低动作频率,而非直接宕机。

  • 看门狗与安全策略:独立于主AI的安全模块,当检测到关节力矩超限或接近碰撞时,强制切断动力。

真实世界的多模态Agent不是纯粹的算法问题,而是一个复杂的系统工程,需要算法工程师、硬件工程师和系统运维专家紧密协作,才能在不确定性的海洋中稳健航行。