WebAgent 原理:让 AI 像人一样操作浏览器完成订票
WebAgent 原理:让 AI 像人一样操作浏览器完成订票
元数据
- 标题:WebAgent 原理:让 AI 像人一样理解、交互、订票——从认知架构到生产级落地的全链路解析
- 关键词:WebAgent, 具身AI, 大语言模型(LLM), 浏览器自动化, 任务规划, 多模态理解, DOM树解析, 航空票务预订
- 摘要:本文从「人完成Web任务的认知链条」这一第一性原理出发,深度解构WebAgent的核心技术栈——包括具身交互架构、任务分层与零样本规划、多模态HTML解析与视觉对齐、LLM驱动的策略执行与反馈闭环。同时,以航空票务预订(跨站、多约束、多步骤、易出错的经典Web任务)为贯穿性案例,完成从需求分析、架构设计、核心算法实现(DOM匹配、任务规划器、策略微调提示词框架)到生产级系统(环境配置、API封装、异常处理、性能优化)的全流程构建。文章还提供了多维度对比(传统自动化vs WebAgent、单模态vs多模态WebAgent、开源闭源WebAgent框架)、行业发展时间线、前沿研究方向(长任务多代理协作、个性化记忆增强、隐私保护具身交互)以及实战最佳实践,力求让不同技术背景的读者(入门级学习者、中级开发者、高级架构师)都能获得具有深度和落地性的价值。
1. 概念基础
核心概念
1.1.1 WebAgent的精准定义
WebAgent是一种具身人工智能(Embodied AI) 系统,它以大语言模型(LLM)或视觉-语言模型(VLM)为决策核心,以标准Web浏览器(Chrome、Firefox、Edge等)的开发者工具协议(DevTools Protocol, CDP)或自动化框架(Playwright、Selenium、Puppeteer)为具身交互接口,能够自主接收自然语言任务指令→理解Web界面的语义与结构→分解与规划任务步骤→生成并执行交互动作(点击、输入、滚动、切换标签等)→通过DOM解析/屏幕截图获取环境反馈→修正行为直至任务完成或终止。
不同于传统的脚本式Web自动化工具(需开发者预先硬编码DOM元素选择器、动作序列、业务逻辑分支),WebAgent具备泛化性、零样本/少样本学习能力、自然语言交互能力、自适应能力——这意味着它能处理未见过的Web界面、任务的细微变体、甚至完全新的Web任务类型,仅需依赖LLM的世界知识与推理能力,以及VLM(若使用)的视觉-语义对齐能力。
1.1.2 人完成Web任务的认知链条:WebAgent的第一性原理
本文的所有技术推导均基于**「模拟人类Web用户的完整认知-交互-反馈闭环」** 这一核心假设——这是第一性原理思考的起点。我们将这一链条拆解为7个核心阶段:
- 指令理解阶段:接收并解析自然语言任务(如“帮我订一张明天从北京首都机场T2到上海虹桥机场T1的经济舱机票,预算不超过1200元,尽量选国航或东航,起飞时间在上午9点到11点之间,座位靠窗”),识别出任务目标(预订符合约束的机票)、核心约束条件(时间、出发地/目的地、价格、航司、座位偏好)、隐含约束条件(需登录个人账号、需选择支付方式、默认选最快或最便宜?需明确但部分可通过世界知识推断)。
- 知识检索阶段:调用世界知识(如北京首都机场T2的国际/国内航班分布、上海虹桥机场T1的常用航司、常用订票网站的入口与业务流程)和历史交互记忆(若有,如之前的账号密码缓存、常用支付方式、偏好的订票网站优先级),缩小任务执行的初始搜索空间。
- 环境感知阶段:
- 结构感知:通过浏览器DOM树解析,获取当前页面的所有可交互元素(按钮、输入框、下拉框、链接)及其语义标签、属性值、文本内容、位置坐标。
- 视觉感知(可选但对复杂Web界面至关重要):截取当前页面的屏幕截图,识别元素的视觉特征(颜色、大小、形状、图标、排版)、页面布局结构(头部导航、搜索栏、结果列表、侧边栏)、视觉提示(红色的“登录”按钮、蓝色的“搜索”按钮、高亮的“经济舱”选项)。
- 任务分解与规划阶段:将整体任务分解为子任务树(如“打开常用订票网站→输入身份信息登录→设置出发地/目的地/时间/航司/价格约束→搜索机票→筛选符合约束的结果→选择具体航班→确认座位→填写乘机人信息→选择支付方式→完成支付→获取订单号”),并为子任务树生成可执行的动作序列模板,同时考虑子任务的依赖关系、可并行性(如可以同时打开携程、去哪儿两个网站对比价格)、容错性(如登录失败时可选择验证码登录或忘记密码)。
- 策略执行阶段:根据当前页面的感知结果,从动作序列模板中选择下一步最优动作,并将动作映射为浏览器可执行的具体指令(如“点击DOM中text='登录’且class='header-login-btn’的元素”或“点击屏幕截图中坐标为(1200, 50)且颜色为#ff4400的图标区域”)。
- 环境反馈评估阶段:执行完动作后,获取新的环境感知结果(DOM树变化、URL变化、页面状态提示(如“登录成功”弹窗、“搜索中”加载动画、“没有符合约束的航班”提示)),并评估动作是否有效:
- 若有效:继续执行下一个动作。
- 若无效(如点击的元素不存在、输入框无法聚焦、搜索超时):分析失败原因(元素选择器错误、页面加载未完成、网络错误、权限不足),并修正策略(如更换元素选择器、等待页面加载、刷新页面、尝试不同的子任务路径)。
- 任务终止与总结阶段:
- 若任务完成(如获取到订单号并截图):生成任务完成报告(包含订单号、航班信息、价格、支付方式等)。
- 若任务失败(如尝试了所有子任务路径仍无法完成):生成任务失败报告(包含失败步骤、失败原因、已完成的子任务)。
WebAgent的所有技术模块,本质上都是对人类Web用户这7个认知阶段的算法化模拟——这是理解WebAgent原理的核心钥匙。
问题背景
1.2.1 传统Web自动化的局限性
在WebAgent出现之前,Web自动化主要依赖脚本式工具(如Selenium、Playwright、Puppeteer、AutoHotkey)和低代码/无代码自动化工具(如UiPath、Automation Anywhere、Blue Prism、 Zapier)。这些工具虽然在标准化、重复性、大批量的Web任务(如数据爬取、表单批量填写、报表自动化生成)场景下表现优异,但存在以下不可逾越的局限性:
- 泛化性差:
- 脚本式工具需要开发者为每个具体的Web界面、每个具体的任务变体编写硬编码的DOM元素选择器、动作序列、业务逻辑分支——Web界面的任何微小变化(如按钮的class属性从
search-btn改为find-flights-btn、搜索栏的位置从顶部移到左侧)都会导致脚本失效。 - 低代码/无代码自动化工具虽然降低了开发门槛,但本质上仍然是可视化的脚本式工具——需要用户通过拖拽的方式指定元素、动作序列、业务逻辑分支,同样缺乏泛化性。
- 脚本式工具需要开发者为每个具体的Web界面、每个具体的任务变体编写硬编码的DOM元素选择器、动作序列、业务逻辑分支——Web界面的任何微小变化(如按钮的class属性从
- 零样本/少样本学习能力缺失:
- 传统自动化工具无法处理未见过的Web界面、未见过的任务类型——如果需要处理新的任务,必须重新编写或配置脚本。
- 自然语言交互能力缺失:
- 传统自动化工具的输入是结构化的配置文件或可视化拖拽的流程,无法直接接收自然语言任务指令——用户需要将自然语言任务转换为机器可理解的结构化形式,这大大增加了使用门槛。
- 自适应能力缺失:
- 传统自动化工具缺乏环境反馈评估与策略修正能力——如果执行过程中出现意外情况(如页面加载超时、验证码出现、网络错误、元素被遮挡),脚本会直接崩溃或停滞,无法自主处理。
- 复杂多约束任务处理能力不足:
- 对于跨站、多约束、多步骤、易出错的复杂Web任务(如航空票务预订、酒店预订、电商购物比价并下单、政务服务办理),传统自动化工具的开发成本极高、维护成本极高、成功率极低——因为需要处理大量的业务逻辑分支、异常情况、跨站交互。
1.2.2 大语言模型(LLM)/视觉-语言模型(VLM)的爆发
2022年11月OpenAI发布ChatGPT以来,大语言模型(LLM)/视觉-语言模型(VLM) 技术迎来了爆发式发展——涌现出了GPT-3.5、GPT-4、GPT-4o、Claude 3 Opus/Sonnet/Haiku、Gemini 1.5 Pro/Ultra、Llama 2/3、Qwen 2/3、InternLM 2.5等一系列性能强大的模型。这些模型具备以下核心能力,为WebAgent的实现提供了技术基础:
- 强大的自然语言理解(NLU)能力:能够准确识别自然语言任务指令中的任务目标、核心约束条件、隐含约束条件。
- 强大的世界知识与推理能力:具备丰富的Web知识(如常用订票网站的入口与业务流程、HTML标签的语义)、常识知识(如“经济舱通常比头等舱便宜”、“起飞时间在上午9点到11点之间的航班通常被称为‘早班机’”)、逻辑推理能力(如“如果今天是202X年X月X日,那么明天就是202X年X月X+1日”、“如果国航和东航都有符合约束的航班,那么优先选择国航(如果用户有偏好)”)。
- 强大的代码生成能力:能够根据DOM树解析结果或屏幕截图(若使用VLM),生成浏览器自动化框架(Playwright、Selenium、Puppeteer)的可执行代码片段。
- 强大的视觉-语义对齐能力(VLM专属):能够识别屏幕截图中的视觉元素、页面布局结构、视觉提示,并将其与DOM树解析结果进行对齐——这对于处理没有明确语义标签的Web元素(如自定义图标按钮)、动态变化的Web元素(如加载后的结果列表项)、视觉主导的Web界面(如游戏网站、电商网站的商品详情页)至关重要。
- 强大的上下文窗口与长文本处理能力:能够处理长任务的交互历史、长页面的DOM树解析结果、长屏幕截图(如GPT-4o的上下文窗口可达128K tokens,Gemini 1.5 Pro可达1M tokens,Llama 3 70B可达128K tokens)。
1.2.3 浏览器自动化框架的成熟
近年来,浏览器自动化框架(Playwright、Selenium、Puppeteer)技术也越来越成熟——其中,Playwright因其跨浏览器支持(Chrome、Firefox、Edge、Safari)、跨平台支持(Windows、MacOS、Linux)、自动等待机制、内置设备模拟、内置网络拦截、多标签页/上下文支持、DevTools Protocol原生支持、API简洁易用等优势,成为了WebAgent开发的首选框架。这些成熟的浏览器自动化框架,为WebAgent提供了稳定、高效、易用的具身交互接口。
问题描述
1.3.1 技术问题空间
基于对人类Web用户认知链条的分析和对传统Web自动化局限性的总结,WebAgent需要解决以下核心技术问题:
- 具身交互架构设计问题:如何设计一个模块化、可扩展、可复用的具身交互架构,将LLM/VLM决策核心、浏览器具身交互接口、环境感知模块、任务规划模块、策略执行模块、反馈评估模块、记忆模块有机地结合在一起?
- 自然语言指令理解与约束提取问题:如何准确地从自然语言任务指令中提取出结构化的任务目标、核心约束条件、隐含约束条件,并将其转换为机器可理解的形式?
- 环境感知问题:
- 单模态环境感知:如何高效地解析DOM树,提取出可交互元素的语义标签、属性值、文本内容、位置坐标,并过滤掉不可交互元素(如图片、文本块、广告)?
- 多模态环境感知:如何将DOM树解析结果与屏幕截图进行视觉-语义对齐,提高元素选择的准确性和鲁棒性?
- 任务分解与规划问题:
- 零样本任务分解:如何让LLM/VLM在没有见过类似任务的情况下,将整体任务分解为合理的子任务树?
- 子任务依赖关系与容错性处理:如何处理子任务的依赖关系(如必须先登录才能搜索机票)、可并行性(如可以同时打开携程和去哪儿两个网站)、容错性(如登录失败时可选择验证码登录)?
- 策略执行与动作映射问题:如何根据当前页面的感知结果,从动作序列模板中选择下一步最优动作,并将动作映射为浏览器可执行的具体指令(如Playwright的
click()、fill()、scroll()、wait_for_selector()方法)? - 环境反馈评估与策略修正问题:
- 环境反馈提取:如何从DOM树变化、URL变化、页面状态提示、屏幕截图变化中提取出有效的环境反馈?
- 动作有效性评估:如何评估执行的动作是否有效?
- 失败原因分析与策略修正:如果动作无效,如何分析失败原因,并修正策略?
- 记忆增强问题:
- 短期记忆:如何存储和利用当前任务的交互历史(如之前选择的网站、之前输入的信息、之前失败的步骤)?
- 长期记忆:如何存储和利用用户的历史交互记录(如之前的账号密码、常用支付方式、偏好的订票网站优先级)?
- 异常处理与鲁棒性问题:如何处理常见的Web异常情况(如页面加载超时、验证码出现、网络错误、元素被遮挡、权限不足)?
- 性能优化问题:如何优化WebAgent的执行速度(如减少DOM树解析的时间、减少LLM/VLM的调用次数、提高元素选择的准确性)、成本(如使用成本更低的LLM/VLM模型、减少LLM/VLM的调用次数)、成功率(如提高策略修正的有效性、提高异常处理的鲁棒性)?
1.3.2 应用场景问题空间
除了技术问题之外,WebAgent还需要解决以下应用场景问题:
- 隐私保护问题:WebAgent需要访问用户的个人账号、密码、支付信息、浏览历史等敏感数据——如何保护这些敏感数据的安全?
- 合规性问题:WebAgent的行为需要符合Web服务的使用条款(如Robots协议、反爬虫协议)和法律法规(如GDPR、CCPA、数据安全法)——如何确保WebAgent的行为合规?
- 可解释性问题:WebAgent的决策过程通常是黑盒化的(因为LLM/VLM的决策过程是不可解释的)——如何让用户理解WebAgent的决策过程(如为什么选择这个网站、为什么选择这个航班、为什么点击这个按钮)?
- 个性化问题:不同的用户有不同的偏好(如偏好的订票网站、偏好的航司、偏好的座位、偏好的支付方式)——如何让WebAgent根据用户的偏好提供个性化的服务?
- 长任务协作问题:对于非常复杂的长任务(如规划一次跨国旅行:预订机票、预订酒店、预订景点门票、规划行程路线、预订租车),单个WebAgent可能无法高效完成——如何让多个WebAgent(如机票预订Agent、酒店预订Agent、行程规划Agent)协作完成?
问题解决的核心思路
1.4.1 整体解决思路
本文的整体解决思路是**「以人类Web用户的认知链条为核心,以模块化、可扩展的具身交互架构为基础,以LLM/VLM为决策核心,以Playwright为具身交互接口,以多模态环境感知为辅助,以记忆增强为支撑,以异常处理与鲁棒性优化为保障」**——构建一个能够像人一样理解、交互、完成Web任务的WebAgent系统。
1.4.2 贯穿性案例:航空票务预订
为了让读者更好地理解WebAgent的原理和实现,本文选择**「跨站、多约束、多步骤、易出错的经典Web任务——航空票务预订」** 作为贯穿性案例——从需求分析、架构设计、核心算法实现到生产级系统构建,全程围绕这一案例展开。
边界与外延
1.5.1 WebAgent的边界
WebAgent虽然具有强大的泛化性、零样本/少样本学习能力、自然语言交互能力、自适应能力,但它也有明确的边界:
- 技术边界:
- WebAgent只能处理基于标准Web技术(HTML、CSS、JavaScript)构建的Web界面——无法处理原生应用界面、游戏界面、加密货币钱包界面(除非钱包提供了Web界面)。
- WebAgent的性能和成功率高度依赖LLM/VLM的性能——如果使用性能较差的LLM/VLM模型,WebAgent的执行速度会很慢、成功率会很低。
- WebAgent的元素选择准确性高度依赖DOM树的语义化程度——如果Web界面的DOM树语义化程度很低(如大量使用
<div>和<span>标签而没有使用<button>、<input>、<a>等语义标签),单模态WebAgent的元素选择准确性会很低,需要使用多模态WebAgent。
- 应用边界:
- WebAgent无法处理需要人类主观判断的Web任务(如“帮我选一张最好看的风景照”、“帮我写一篇符合我风格的博客文章”)——除非任务指令中明确了主观判断的标准。
- WebAgent无法处理需要物理操作的Web任务(如“帮我打印一份文件”、“帮我把文件扫描到电脑里”)——除非有配套的硬件设备和软件接口。
- WebAgent的行为需要符合Web服务的使用条款和法律法规——如果Web服务明确禁止使用自动化工具,WebAgent不能使用。
1.5.2 WebAgent的外延
WebAgent的外延非常广泛,它可以与其他技术结合,扩展其应用范围:
- 与多代理协作技术结合:构建多WebAgent协作系统,完成非常复杂的长任务(如跨国旅行规划、企业级业务流程自动化)。
- 与知识图谱技术结合:增强WebAgent的知识检索能力和推理能力,提高其处理复杂多约束任务的能力。
- 与强化学习(RL)技术结合:让WebAgent通过与Web环境的交互学习,优化其策略,提高其执行速度和成功率。
- 与个性化推荐技术结合:增强WebAgent的个性化能力,根据用户的偏好提供个性化的服务。
- 与隐私保护技术结合:如联邦学习、差分隐私、同态加密,保护用户的敏感数据安全。
2. 概念结构与核心要素组成
概念结构
WebAgent的概念结构可以分为三层:
- 交互层(Interaction Layer):负责WebAgent与外部世界(用户、Web浏览器、Web服务器)的交互——包括自然语言交互接口(接收用户的自然语言任务指令,生成任务完成/失败报告)、浏览器具身交互接口(通过Playwright/CDP与Web浏览器交互)。
- 核心层(Core Layer):是WebAgent的“大脑”和“心脏”——包括决策核心(LLM/VLM)、环境感知模块、任务规划模块、策略执行模块、反馈评估模块。
- 支撑层(Support Layer):为核心层提供支撑——包括记忆模块、知识检索模块、异常处理模块、性能优化模块。
WebAgent的概念结构可以用下面的Mermaid ER实体关系图表示:
核心要素组成
WebAgent的核心要素包括11个,每个要素都有其明确的功能和作用:
2.2.1 自然语言交互接口(Natural Language Interface, NLI)
- 功能:
- 接收用户的自然语言任务指令。
- 对自然语言任务指令进行初步预处理(如去除无关字符、拼写纠错、语法纠错)。
- 将初步预处理后的自然语言任务指令传递给任务规划模块。
- 接收反馈评估模块或任务规划模块生成的任务完成/失败报告。
- 将任务完成/失败报告转换为自然语言形式,返回给用户。
- 作用:是WebAgent与用户之间的“桥梁”,降低了WebAgent的使用门槛。
2.2.2 浏览器具身交互接口(Browser Embodied Interface, BEI)
- 功能:
- 启动、管理、关闭Web浏览器实例(如Chrome、Firefox、Edge)。
- 通过Playwright/CDP与Web浏览器交互,发送具体的自动化指令(如点击、输入、滚动、切换标签、等待页面加载)。
- 通过Playwright/CDP从Web浏览器获取环境信息(如DOM树、屏幕截图、URL、页面状态、HTTP请求/响应)。
- 处理Web浏览器的状态变化(如页面加载完成、弹窗出现、标签页切换)。
- 作用:是WebAgent与Web环境之间的“桥梁”,提供了稳定、高效、易用的具身交互能力。
2.2.3 决策核心(Decision Core, DC)
- 功能:
- 接收任务规划模块传递的结构化任务和子任务树。
- 接收环境感知模块传递的环境感知结果。
- 接收反馈评估模块传递的评估结果。
- 利用LLM/VLM的世界知识、推理能力、代码生成能力,进行任务分解与规划的修正、下一步最优动作的选择、动作指令的生成、失败原因的分析、策略的修正。
- 将修正后的子任务树传递给任务规划模块。
- 将动作指令传递给策略执行模块。
- 作用:是WebAgent的“大脑”,负责所有的决策工作。
2.2.4 环境感知模块(Environment Perception Module, EPM)
- 功能:
- 接收决策核心的环境感知请求。
- 向浏览器具身交互接口发送DOM树/屏幕截图/状态变化的获取请求。
- 对获取到的DOM树进行预处理(如去除注释、去除广告、去除不可交互元素、提取可交互元素的关键信息)。
- 对预处理后的DOM树进行语义化增强(如为没有明确语义标签的元素添加语义标签、为元素添加更详细的描述信息)。
- (可选)对获取到的屏幕截图进行视觉元素识别和页面布局分析。
- (可选)将语义化增强后的DOM树与视觉元素识别结果进行视觉-语义对齐。
- 将环境感知结果(语义化增强后的DOM树、视觉-语义对齐结果、URL、页面状态)传递给决策核心。
- 作用:是WebAgent的“眼睛”,负责感知Web环境的信息。
2.2.5 任务规划模块(Task Planner, TP)
- 功能:
- 接收自然语言交互接口传递的初步预处理后的自然语言任务指令。
- 向知识检索模块发送世界知识/历史记忆的获取请求。
- 向决策核心发送任务分解与规划的请求,并传递初步预处理后的自然语言任务指令和世界知识/历史记忆。
- 接收决策核心传递的子任务树。
- 对子任务树进行验证(如检查子任务的依赖关系是否合理、检查子任务是否覆盖了所有的约束条件)。
- 向记忆模块发送子任务树的存储请求。
- 向决策核心传递验证后的子任务树。
- (可选)根据子任务的可并行性,生成并行子任务执行计划。
- 作用:是WebAgent的“参谋长”,负责任务的分解与规划。
2.2.6 策略执行模块(Strategy Executor, SE)
- 功能:
- 接收决策核心传递的动作指令。
- 对动作指令进行验证(如检查动作是否合法、检查目标元素是否存在于环境感知结果中)。
- 将验证后的动作指令转换为Playwright/CDP的具体自动化指令。
- 向浏览器具身交互接口发送具体自动化指令。
- 向记忆模块发送交互历史的存储请求(包括动作指令、执行时间、执行结果)。
- 作用:是WebAgent的“手脚”,负责执行决策核心生成的动作指令。
2.2.7 反馈评估模块(Feedback Evaluator, FE)
- 功能:
- 接收决策核心的反馈评估请求。
- 向记忆模块发送交互历史的获取请求。
- 向浏览器具身交互接口发送新的环境信息的获取请求。
- 对比执行动作前的环境信息和执行动作后的环境信息,提取环境反馈(如DOM树变化、URL变化、页面状态提示、屏幕截图变化)。
- 评估执行的动作是否有效(如是否点击了正确的元素、是否输入了正确的信息、是否完成了子任务)。
- 分析动作无效的原因(如元素选择器错误、页面加载未完成、网络错误、权限不足、元素被遮挡)。
- 向决策核心传递评估结果(包括动作是否有效、环境反馈、失败原因(如果有))。
- 如果检测到常见的Web异常情况,向异常处理模块发送异常信号。
- 如果所有子任务都已完成,生成任务完成报告,传递给自然语言交互接口。
- 如果尝试了所有修正策略仍无法完成任务,生成任务失败报告,传递给自然语言交互接口。
- 作用:是WebAgent的“评审员”,负责评估动作的有效性,并生成任务完成/失败报告。
2.2.8 记忆模块(Memory Module, MM)
- 功能:
- 短期记忆(Short-Term Memory, STM):
- 存储当前任务的交互历史(包括子任务树、环境感知结果、动作指令、执行时间、执行结果、评估结果)。
- 存储当前任务的临时信息(如之前输入的乘机人信息、之前选择的航班信息、之前的验证码)。
- 短期记忆的容量有限,通常只存储最近的N次交互(如最近的50次交互)或当前任务的所有交互,任务完成后短期记忆会被清空(或保存到长期记忆中)。
- 长期记忆(Long-Term Memory, LTM):
- 存储用户的历史交互记录(如之前的账号密码、常用支付方式、偏好的订票网站优先级、偏好的航司、偏好的座位)。
- 存储WebAgent的历史经验(如之前成功/失败的任务案例、之前有效的/无效的策略)。
- 长期记忆的容量无限,通常存储在数据库(如SQLite、MySQL、PostgreSQL、MongoDB)或向量数据库(如ChromaDB、Pinecone、Weaviate)中——向量数据库用于存储语义化的历史经验,以便WebAgent可以快速检索到相关的历史经验。
- 向其他模块(任务规划模块、决策核心、策略执行模块、反馈评估模块)提供记忆的存储/读取接口。
- 短期记忆(Short-Term Memory, STM):
- 作用:是WebAgent的“记忆库”,负责存储和利用交互历史和历史经验。
2.2.9 知识检索模块(Knowledge Retrieval Module, KRM)
- 功能:
- 接收任务规划模块或决策核心的知识检索请求。
- 从世界知识库(如Wikipedia、Wikidata、CommonCrawl、自建的Web知识图谱)中检索相关的世界知识。
- 从记忆模块的长期记忆中检索相关的历史记忆。
- 对检索到的世界知识和历史记忆进行过滤和排序(如按相关性排序、按时间排序)。
- 将过滤和排序后的知识传递给任务规划模块或决策核心。
- 作用:是WebAgent的“图书馆”,负责提供世界知识和历史记忆。
2.2.10 异常处理模块(Exception Handler, EH)
- 功能:
- 接收反馈评估模块发送的异常信号。
- 识别异常的类型(如页面加载超时、验证码出现、网络错误、元素被遮挡、权限不足、元素不存在)。
- 根据异常的类型,生成修正策略建议(如页面加载超时→等待更长时间/刷新页面、验证码出现→调用OCR识别验证码/调用第三方验证码识别服务/请求用户帮助、元素被遮挡→滚动页面/关闭弹窗/等待遮挡元素消失)。
- 将修正策略建议传递给决策核心。
- (可选)如果尝试了所有修正策略建议仍无法处理异常,向自然语言交互接口发送请求用户帮助的信号。
- 作用:是WebAgent的“医生”,负责处理常见的Web异常情况。
2.2.11 性能优化模块(Performance Optimization Module, POM)
- 功能:
- DOM树解析优化:
- 只解析DOM树的可交互部分,过滤掉不可交互部分(如图片、文本块、广告)。
- 使用增量DOM树解析(只解析DOM树的变化部分),减少DOM树解析的时间。
- LLM/VLM调用优化:
- 使用提示词工程(如Few-Shot Prompting、Chain-of-Thought Prompting、ReAct Prompting、Self-Consistency Prompting),提高LLM/VLM的推理准确性,减少LLM/VLM的调用次数。
- 使用模型蒸馏(如将GPT-4o蒸馏为成本更低的GPT-3.5 Turbo或开源模型),降低LLM/VLM的调用成本。
- 使用上下文窗口压缩(如只传递环境感知结果的关键部分、只传递交互历史的关键部分),减少LLM/VLM的上下文窗口使用量,降低成本,提高速度。
- 元素选择优化:
- 使用多模态元素选择(结合DOM树解析结果和屏幕截图),提高元素选择的准确性和鲁棒性,减少元素选择错误的次数,从而减少LLM/VLM的调用次数。
- 使用元素选择器缓存(缓存之前成功选择的元素的选择器),提高元素选择的速度。
- 并行执行优化:
- 根据子任务的可并行性,使用多标签页/多上下文并行执行子任务,提高WebAgent的执行速度。
- 自动等待优化:
- 使用Playwright的自动等待机制(如
wait_for_selector()、wait_for_load_state()、wait_for_function()),避免不必要的等待时间,提高WebAgent的执行速度。
- 使用Playwright的自动等待机制(如
- DOM树解析优化:
- 作用:是WebAgent的“优化师”,负责优化WebAgent的执行速度、成本、成功率。
3. 概念之间的关系
概念核心属性维度对比
为了让读者更好地理解WebAgent核心要素之间的差异,我们从功能定位、核心能力、输入、输出、依赖关系、优先级这6个维度对它们进行对比:
| 核心要素 | 功能定位 | 核心能力 | 输入 | 输出 | 依赖关系 | 优先级 |
|---|---|---|---|---|---|---|
| 自然语言交互接口(NLI) | 用户交互桥梁 | 自然语言理解(初步)、自然语言生成 | 用户的自然语言任务指令、任务完成/失败报告(结构化) | 初步预处理后的自然语言任务指令、任务完成/失败报告(自然语言) | 任务规划模块、反馈评估模块 | 高 |
| 浏览器具身交互接口(BEI) | Web环境交互桥梁 | 浏览器管理、自动化指令发送、环境信息获取 | LLM/VLM生成的动作指令(转换后的)、DOM树/屏幕截图/状态变化的获取请求 | DOM树、屏幕截图、URL、页面状态、HTTP请求/响应、自动化指令执行结果 | Web浏览器、Playwright/CDP | 高 |
| 决策核心(DC) | 大脑,所有决策工作 | 任务分解与规划、动作选择、策略修正、推理 | 结构化任务、子任务树、环境感知结果、评估结果、修正策略建议 | 修正后的子任务树、动作指令、任务分解/规划/动作选择/策略修正的理由 | 任务规划模块、环境感知模块、反馈评估模块、异常处理模块、知识检索模块、记忆模块 | 最高 |
| 环境感知模块(EPM) | 眼睛,感知Web环境信息 | DOM树预处理、语义化增强、视觉元素识别、视觉-语义对齐 | DOM树/屏幕截图/状态变化的获取请求、DOM树、屏幕截图、URL、页面状态 | 语义化增强后的DOM树、视觉-语义对齐结果、环境感知摘要 | 浏览器具身交互接口、决策核心 | 高 |
| 任务规划模块(TP) | 参谋长,任务分解与规划 | 任务分解请求、子任务树验证、并行计划生成 | 初步预处理后的自然语言任务指令、世界知识/历史记忆、修正后的子任务树 | 结构化任务、任务分解与规划请求、验证后的子任务树、并行子任务执行计划 | 自然语言交互接口、知识检索模块、决策核心、记忆模块 | 高 |
| 策略执行模块(SE) | 手脚,执行动作指令 | 动作指令验证、自动化指令转换、交互历史存储 | 动作指令、环境感知结果(用于验证) | 验证后的自动化指令、交互历史(存储请求) | 决策核心、浏览器具身交互接口、记忆模块 | 高 |
| 反馈评估模块(FE) | 评审员,评估动作有效性 | 环境反馈提取、动作有效性评估、失败原因分析、任务报告生成 | 反馈评估请求、交互历史、执行动作前的环境信息、执行动作后的环境信息 | 评估结果、异常信号、任务完成/失败报告(结构化) | 决策核心、记忆模块、浏览器具身交互接口、异常处理模块、自然语言交互接口 | 高 |
| 记忆模块(MM) | 记忆库,存储和利用记忆 | 短期记忆管理、长期记忆管理、记忆存储/读取 | 记忆存储请求(子任务树、交互历史、临时信息、历史经验)、记忆读取请求 | 记忆读取结果(子任务树、交互历史、临时信息、历史经验) | 所有其他模块 | 中 |
| 知识检索模块(KRM) | 图书馆,提供知识 | 知识检索、知识过滤、知识排序 | 知识检索请求 | 过滤和排序后的世界知识/历史记忆 | 任务规划模块、决策核心、世界知识库、记忆模块的长期记忆 | 中 |
| 异常处理模块(EH) | 医生,处理异常情况 | 异常类型识别、修正策略建议生成 | 异常信号 | 修正策略建议、请求用户帮助的信号 | 反馈评估模块、决策核心、自然语言交互接口(可选) | 中 |
| 性能优化模块(POM) | 优化师,优化性能 | DOM树解析优化、LLM/VLM调用优化、元素选择优化、并行执行优化、自动等待优化 | 所有核心模块的性能优化请求、DOM树、环境感知结果、交互历史、子任务树 | 性能优化后的结果、性能优化建议 | 所有其他模块 | 低 |
概念联系的ER实体关系图
(已在第2.1节展示,此处省略重复内容)
概念交互关系图
WebAgent的核心要素之间的交互关系可以用下面的Mermaid流程图表示:
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)