写作现场:2025 年 2 月 25 日。 Browser Use 0.1.40 将网页操作建立在一组短生命周期元素引用上。模型不直接消费完整 HTML,而是读取经过筛选的 DOM 视图,并用本轮生成的数字索引规划动作。关键安全性质不是 selector 永久稳定,而是页面变化后旧引用会失效,剩余动作应停止并重新规划。

页面模型与批量动作执行

DOM 服务遍历当前页面,保留可见、可交互或有信息价值的节点,生成紧凑表示:

[12]<input placeholder="Search">
[13]<button>搜索</button>
[14]<a>下一页</a>

highlight_index 不是网页原生 ID。系统同时维护 selector_map,把本轮数字映射回实际 DOM 节点。该压缩层减少脚本、样式和重复容器占用的上下文,使模型处理“可行动页面”而非原始文档。

Agent 每轮读取浏览器状态,生成一组 actions,再由 controller.multi_act 顺序执行。批量动作减少每次点击都重新调用模型的延迟,但也引入 stale reference:输入、提交和点击结果可能跨越 DOM mutation,后续索引不再指向模型规划时看到的元素。

这类引用应被视为 capability with lease。它只在特定页面快照和短时间窗口内有效,不能跨导航、动态列表更新或虚拟 DOM 重排长期保存。

Mutation Fence 与高风险副作用

multi_act 在批次开始时保存相关节点的分支路径 hash。前一个动作执行后,如果后续动作仍依赖索引,系统重新读取页面;发现新分支结构时便停止剩余动作,把新状态交给下一轮模型。这个 mutation fence 不证明目标元素身份,只证明旧结构已经不足以支撑继续执行。

历史节点匹配会综合父路径、属性和 XPath,在新页面寻找最可能的对应元素。它能够容忍局部变化,但属于 best effort:相似按钮可能具有相同结构,网站改版会改变路径,虚拟列表还可能复用同一 DOM 节点展示另一条数据。

因此,购买、转账、删除和发布等动作不能只依赖 selector 恢复。更完整的提交协议应包括:

解析候选元素
→ 生成操作摘要
→ 重新读取对象、金额与目标账户
→ 策略或人工确认
→ 使用 operation ID 提交
→ 保存外部结果收据

索引缺失、元素不可交互或动作失败时,controller 将错误写入本步 observation,由模型基于新页面重规划,而不是静默点击一个近似节点。这种显式失败比“自愈 selector”更可审计,但当前循环仍不是持久工作流:进程退出后,登录态、未完成请求和已发生副作用不能仅靠 transcript 恢复。

Browser Use 适合处理缺少 API、流程分散的运营与研究任务。其工程价值不应只由任务成功率衡量,还应记录每一步看到的页面快照、元素解析依据、mutation 检测、确认过程和最终副作用。浏览器 Agent 的可靠性首先取决于何时拒绝使用过期引用。

版本与源码

信息边界:本文写于 2025 年 2 月 25 日,只描述当日代码中的 DOM 索引、selector map 与分支变化检查,不把后来版本的序列化和安全机制提前写入。