简介:网页代理旨在让AI像人一样操作浏览器,自动完成订票、比价、信息检索等繁琐任务。本文系统梳理Web Agent的感知—推理—行动闭环范式,对比基于页面结构与基于视觉截图两条主流技术路线的差异,剖析开源系统在可复现性、可审计性与可改进性上的独特价值,并给出核心决策循环的示意实现与工程落地建议,帮助开发者快速理解并评估这一方向的实践路径。
订一张机票需要在多个页面之间来回跳转、反复填写表单;比价购物要打开十几个标签页逐一对比参数和价格;办理一项线上政务业务,则常常要在层层嵌套的菜单结构里摸索半天。这类任务的共同特征是:目标明确、流程标准,但步骤琐碎、耗时费力,且几乎每个人都要反复经历。
它们本质上都是“人 + 浏览器”的工作模式:人阅读屏幕、理解页面语义、做出决策、执行点击与输入。传统的机器人流程自动化(RPA)曾试图将这类流程交给机器,但其依赖预先编写的固定脚本,页面结构稍有变动就会失效,维护成本居高不下。多模态大模型的出现改变了这一局面:具备视觉理解与推理能力的模型,第一次让机器有可能以“类人”的方式面对任意网页——看截图、理解内容、决定动作。这正是网页代理(Web Agent)这一研究方向的核心动机。
一个典型的网页代理,工作方式可以类比为新入职的员工:接到一句任务描述,例如“帮我在菜谱网站上找一道三小时内能做完的炖菜食谱”,它便打开浏览器,观察当前屏幕,思考下一步该做什么,然后执行一个动作——点击搜索框、输入关键词、按下回车——接着观察新的屏幕,再思考、再操作,如此循环,直到找到答案并汇报结果。
形式化地看,这是一个部分可观测的序贯决策问题:
这个闭环的每一环——如何观测页面、如何推理决策、如何执行动作——都存在不同的技术路线选择,也构成了当前业界争论的焦点。
早期多数方案让模型读取页面的可访问性树(Accessibility Tree)。这是浏览器为屏幕阅读器等辅助技术生成的一种结构化描述,列出页面中所有元素及其角色、名称、状态与层级关系,类似于网页的“X光片”。模型基于这份文本决定操作哪个元素。
这条路线的优势很明显:信息密度高、语义精确,元素带有明确标识,定位误差小;相比原始 HTML,token 开销大幅降低;也无需处理像素级的坐标预测问题。
但它的局限同样突出:其一,它依赖页面暴露完整且规范的可访问性信息,而现实中大量网页的标注缺失、混乱甚至刻意隐藏;其二,动态渲染内容、画布绘图、复杂自定义组件难以被结构完整描述;其三,这种“透视式”感知与人类盯着屏幕操作的方式并不一致,模型在训练环境与真实环境之间的泛化能力受限;此外,结构文本中还可能被注入用户不可见的内容,带来提示注入的安全隐患。
另一条路线让模型完全依靠视觉理解网页:输入是屏幕截图的像素,输出是动作与坐标。这与普通人使用电脑的方式完全一致,也带来了天然的跨平台泛化能力——只要能渲染出来的界面,无论是网页、桌面应用还是移动端,都可以用同一套感知方式处理。
它的代价是对模型能力要求更高:模型必须具备精确的视觉定位能力,即看懂页面元素并输出可点击的坐标;对截图分辨率、页面缩放、弹窗遮挡等因素更敏感;面对长页面时,还需要滚动策略与跨步记忆机制配合。
两条路线并非互斥。实践中已有混合方案:以视觉为主感知通道,辅以结构信息校验关键元素的定位。选型的关键在于目标环境的可控性与泛化需求——若只面向少数内部系统,结构方案稳定高效;若要面向开放互联网中千奇百怪的页面,视觉路线的鲁棒性优势会更加明显。
当前不少面向消费者的网页代理产品是完全封闭的黑盒:训练数据、模型权重、决策逻辑均不公开,外界无从知晓它们如何训练、用了什么数据、遵循什么行为规则。这对科学研究而言是根本性障碍,可以概括为三点:
正因如此,把训练数据、模型权重、训练代码与评估工具全部公开的开源系统,在快速演进却缺乏透明度的 Agent 领域显得尤为珍贵。开源的意义不只是“免费可用”,而是让任何研究者都能复现每一处细节、在既有工作基础上增量改进、公开地审视其局限。一个完整的开源网页代理系统,通常应包含四部分:带标注的任务与轨迹数据(截图序列加动作序列)、基座与微调后的模型权重、覆盖数据构造到训练全流程的代码,以及标准化的评测任务集与自动评分工具。
下面的伪代码刻画了视觉驱动 Agent 的最小可运行骨架:
from dataclasses import dataclass@dataclassclass Action:name: str # click / type / scroll / navigate / donepayload: dict # 坐标、文本或最终答案def run_task(agent, browser, instruction: str, max_steps: int = 30):history = []obs = browser.screenshot() # 观测:当前屏幕截图for _ in range(max_steps):action = agent.decide(instruction, obs, history) # 推理:决定下一步if action.name == "done":return action.payload["answer"] # 任务完成,返回结果browser.execute(action) # 行动:执行点击/输入等history.append(action)obs = browser.screenshot() # 重新观测raise RuntimeError("超过最大步数限制")
工程上有几条经验值得注意:动作空间应保持最小完备,避免冗余动作增加决策难度;每步输出“先思考、后动作”的结构化结果,便于日志排查与失败归因;历史轨迹要做截断或摘要压缩,控制上下文长度与推理成本。
企业若要搭建自己的 Agent 服务,可以按通用云能力组合运行环境:以容器平台承载浏览器沙箱集群,实现任务隔离与弹性伸缩;截图与轨迹数据存入对象存储,便于回放与审计;通过消息队列解耦任务下发与执行;再接入日志服务与监控告警,持续跟踪成功率、步数分布与失败原因。以百度智能云为例,上述容器平台、对象存储、消息队列、日志服务等通用产品类目,均可直接用于组装这套基础设施,模型推理侧则可按需选择云端算力或私有化部署。
网页代理正在把“让人盯着屏幕做重复操作”这件事交给机器,而视觉驱动的技术路线让它第一次具备了面对任意页面的泛化潜力。相比封闭黑盒,数据、权重、代码、评估工具全面公开的开源范式,才是推动这一方向可持续进步的基石。对开发者而言,理解其决策循环、路线取舍与工程挑战,是评估和构建此类系统的第一步。