BrowserBC 技术解读:让 Web Agent 照着人类作业抄的方案
项目概述:一个让 Agent 学会用浏览器的方案
BrowserBC 是 Einsia AI 旗下 Navers Lab 最近开源的一个项目,解决的核心问题很简单:怎么让 AI Agent 更高效地使用浏览器完成任务。
现在的 AI Agent 越来越强,但让它操作浏览器还是个麻烦事。每次让 Agent 去一个没去过的网站,它都得从零开始探索——点这里试试、点那里试试,效率很低,还经常出错。
BrowserBC 的思路很巧妙:把人类操作浏览器的过程录下来,用 LLM 转写成自然语言的"技能卡",然后 Agent 照着技能卡执行。
一句话总结:人类点一遍,Agent 就能跑通。
这个方案在 WebArena-Hard 等基准测试上效果明显,任务成功率从 60% 提升到了 81%,而且支持跨模型迁移——大模型录制的技能,小模型也能用。
现有 Web Agent 方案的核心痛点
要让 Agent 操作浏览器,现在主流有几种方案,但都有明显的问题:
方案一:API 对接
- 原理:调用网站开放的 API 接口
- 问题:大量网站根本没有 API,也不会专门给 Agent 开放接口
方案二:视觉识别
- 原理:让多模态模型看截图,识别页面元素
- 问题:坐标很脆弱,页面布局稍微变一下就失效
方案三:DOM 选择器
- 原理:用 CSS/XPath 定位页面元素
- 问题:网站一更新,DOM 结构变了,选择器就挂了,维护成本高
方案四:脚本回放
- 原理:录制操作序列,然后回放
- 问题:绑定特定的页面状态,换个网站或换个页面就跑不通
这些方案有个共同的痛点:技能和执行耦合在一起。录下来的操作依赖具体的页面状态、具体的 DOM 结构、具体的坐标位置,换个环境就不行了。
BrowserBC 的解法
BrowserBC 的核心思路是把技能和执行解耦:
- 技能用自然语言描述("在搜索框输入城市名"),而不是代码("点击 #search-box > input")
- Agent 执行时根据当前页面灵活调整,而不是死板地按脚本走
这样做的好处:
- 不绑定具体页面结构:页面改了,只要语义没变,技能还能用
- 跨模型兼容:大模型录的技能,小模型也能执行
- 人类可审核:自然语言,非技术人员也能看懂和修改
BrowserBC 的设计思路:录制-转写-执行三步范式
BrowserBC 的设计分三步走:录制 → 转写 → 执行。
第一步:录制
人类在浏览器里正常操作,系统把过程记录下来。但不是把所有东西都录下来,关键是只保留语义信息,丢掉脆弱的细节。
不保留的东西:
- 精确的像素坐标(x=342, y=518)
- CSS 选择器(#search-box > div > input)
- XPath(/html/body/div[2]/form/input)
- 临时 DOM ID、登录态 Cookie、密码、Token
保留的东西:
- 元素的语义描述("搜索输入框"、"提交按钮")
- 操作的意图("输入目的地城市"、"点击搜索")
- 页面的状态变化("搜索结果已加载")
这个思路很聪明——丢掉的是容易变的东西,留下的是稳定的语义。
第二步:转写(核心创新)
这一步是 BrowserBC 最有意思的地方:用 LLM 把录制的操作轨迹,转写成自然语言描述的技能卡。
举个例子,人类在预订网站搜索民宿的操作,转写后的技能卡大概长这样:
技能名称:搜索住宿
步骤1:定位搜索输入框,输入目的地城市名称
- 验证:输入框显示正确的城市名
- 异常处理:如果搜索框不可见,检查是否需要先关闭弹窗
步骤2:选择入住日期和退房日期
- 验证:日期已显示在表单中
- 异常处理:如果日期不可选(已满),尝试前后一天
步骤3:选择入住人数
- 验证:人数已正确显示
- 异常处理:如果人数选择器为下拉框,点击展开后选择
步骤4:点击搜索按钮
- 验证:页面跳转到搜索结果页,显示多个结果
- 异常处理:如果无结果,尝试调整日期或人数
步骤5:按评分排序,选择评分最高的选项
- 验证:已进入详情页
- 异常处理:如果最高评分不可订,选次高评分
成功标准:
- 搜索结果页面已加载
- 至少显示3个可选住宿
- 最终选择了评分>=4.5的选项
适用场景:
- 任何支持搜索的预订网站
- 目的地、日期、人数可变
注意看——这不是代码,是自然语言。这意味着:
- 不绑定任何编程语言或框架
- 不依赖任何具体的 DOM 结构
- 任何 LLM 都能读懂
- 人都能审核和修改
第三步:执行
Agent 拿到技能卡后,在真实页面上执行任务。
关键点:技能卡是参考指南,不是死板脚本。Agent 会根据当前页面的实际情况灵活调整。
比如技能卡说"点击搜索按钮",但页面上搜索按钮的位置变了,Agent 能通过语义理解找到它,而不是靠固定的坐标或选择器。如果某个步骤失败了(比如日期不可选),Agent 会按技能卡里的异常处理建议尝试替代方案。
技能图:让技能库可控扩张
BrowserBC 不只是单条技能卡,而是把技能组织成图结构(Skill Graph)。
技能分三层:
- 基础技能层:click_button、fill_form、submit_form 等原子操作
- 组合技能层:search_accommodation、book_flight 等由多个基础技能组合而成
- 高级技能层:cross_site_comparison、multi_step_approval 等复杂流程
当新技能加入时,系统会自动计算语义向量,找到相似技能建立关联,识别组合关系。这样技能库可以持续扩张而不会变成一团乱麻。
基准测试验证:成功率提升 20%+
两个基准测试的数据:
WebArena-Hard:
- 基线成功率:60.5%(156/258)
- 注入技能后:81.4%(210/258)
- 提升 +20.9%
ClawBench(更严格,用的是真实线上网站,页面会变化):
- 基线成功率:32.9%(50/152)
- 注入技能后:68.4%(104/152)
- 提升 +35.5%
几个关键发现:
- 技能让成功率几乎翻倍——ClawBench 上提升尤其明显
- 有技能时 Agent 更快完成任务——步数更少,不瞎摸索
- 技能支持跨模型迁移——大模型录制的技能,小模型也能用
- 技能不依赖记忆——ClawBench 的页面会变化,排除了"靠背答案"的可能
与主流 Web 自动化方案的对比
| 维度 | BrowserBC | Browser Use | Playwright | Selenium |
|---|---|---|---|---|
| 定位 | 技能蒸馏框架 | 浏览器自动化库 | 自动化测试工具 | 自动化测试工具 |
| 操作定义 | 自然语言技能卡 | 代码/函数调用 | 代码脚本 | 代码脚本 |
| 页面变化适应 | 语义级适应 | 选择器级 | 选择器级 | 选择器级 |
| 跨模型迁移 | 支持 | 不支持 | N/A | N/A |
| 技能复用 | 技能图管理 | 无 | 无 | 无 |
| 上手门槛 | 低(自然语言) | 中(Python) | 中 | 高 |
BrowserBC 的核心区别在于:它不是在"怎么写自动化脚本"这个层面做文章,而是在"怎么让 Agent 学会操作"这个层面解决问题。
对 Agent 开发者的启发与思考
作为一个正在学 Agent 开发的 Java 后端,BrowserBC 给了我几个比较深的启发:
1. Web Agent 的新思路
以前做 Web 自动化,思路是"怎么写脚本"。BrowserBC 提供了另一种思路:"怎么让 Agent 学会操作"。
如果你的项目里有用到浏览器自动化(爬虫、RPA、自动测试),这种"录制→转写→执行"的范式值得关注。特别是需要跨多个网站工作的场景,技能卡的复用价值很大。
2. 自然语言作为中间层的价值
BrowserBC 用自然语言做技能的载体,看似"不精确",实际解决了几个问题:
- 跨模型兼容:任何 LLM 都能读懂,不被某个模型绑定
- 人类可审核:非技术人员也能看懂和修改
- 泛化能力强:不绑定具体实现细节
在做 Agent 开发时,不是所有东西都需要精确到代码级别。有时候自然语言的模糊性反而是优势——它让系统更灵活、更鲁棒。
3. 技能复用是规模化的关键
单个技能解决单个问题,但技能多了怎么管理?BrowserBC 用"技能图"来组织技能,支持语义检索和组合复用。
如果你的 Agent 需要处理大量不同类型的任务,这种组织方式值得参考。不然技能库大了之后,检索和管理都会成为问题。
4. 可以关注的方向
- 结合 Spring AI 做 Java 侧的集成:BrowserBC 主要是 Python 实现,Java 生态目前还没有类似的成熟方案
- 用 pgvector 存储技能向量:做语义检索,找到最相关的技能
- 多 Agent 协作场景:浏览器 Agent 可以作为其中一个 specialized agent,和其他 Agent 协作
典型应用场景
- Web 自动化测试:录制测试流程,转成技能卡,后续自动执行
- 跨站数据采集:不同网站结构不同,但语义层面的操作可以复用
- 内容发布自动化:多平台发布,技能卡适配不同平台
- RPA 场景:传统 RPA 靠脚本维护成本高,BrowserBC 靠语义,维护更简单
总结
BrowserBC 的核心贡献是提出了"录制-转写-执行"的三步范式,把人类操作蒸馏成自然语言技能卡,让 Web Agent 不用再从零探索。
对开发者来说,这个项目最大的价值不是具体的技术实现,而是设计思路:
- 用自然语言做中间层,解耦技能和执行
- 用技能图组织技能,支持规模化复用
- 利用 LLM 的语义理解,替代脆弱的选择器定位
参考资料:
更多推荐




所有评论(0)