news 2026/5/9 1:52:20

放弃封装,回归裸金属:Browser Use 给所有Agent开发者上的沉痛一课

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
放弃封装,回归裸金属:Browser Use 给所有Agent开发者上的沉痛一课

前言

最近两年 AI 浏览器代理彻底爆火。

市面上绝大多数浏览器框架,都在做一模一样的事情:

  • 封装click/type/scroll操作
  • 手写 DOM 解析器、元素定位器
  • 层层抽象,给大模型提供极简接口
  • 自己写一堆异常捕获、页面崩溃重试、超时处理

人类过度封装、过度干预、过度抽象,反而限制了大模型本身的能力。

1. 我们曾经犯的错:既封装大模型,又封装工具

1.1 第一层错:给 LLM 套抽象壳

很早之前 Browser Use 发过一篇文章:不要给大模型过度包装框架。

当时团队意识到:不要用厚重的代码结构约束大模型,要给它最大的行动空间。

1.2 第二层错:手动封装浏览器操作

几乎所有自动化开发者都有这个通病:

觉得原生 CDP 太难、太繁琐、坑太多,于是自己封装一层又一层工具。

早年 Browser Use 同样如此:

  • 手写几千行 DOM 解析器
  • 封装元素索引、页面判断、交互函数
  • 基于 Playwright 再套一层业务壳

现在回头看,全部是无用代码。

每一个你手动写的 click、type、upload,都是给大模型增加的枷锁。

大模型经过海量训练,本身就懂底层协议,反而要适配人类写的劣质封装。

2. 彻底推翻:为什么要直接裸用 CDP?

这里说一句所有爬虫、自动化开发者都要记住的真话:

现在的大模型,天生就懂 CDP。

训练数据里塞满了:

  • Page.navigate
  • DOM.querySelector
  • Runtime.evaluate

它见过无数 Chrome 调试协议、无数浏览器报错、无数网页异常。

而我们开发者,非要自作聪明,给它套一层 Playwright、套一层自己封装的工具。

2.1 裸 CDP 带来的三大碾压级优势

① 原生支持复杂页面

跨域 iframe、Shadow DOM,传统框架各种兼容报错。

CDP 直连浏览器内核,直接穿透层级,不需要任何适配代码。

② 天然反爬、无痕特征

框架自动化特征太重,而原生 CDP 是 Chrome 自身和自身通信。

指纹、检测、风控通过率碾压所有封装框架。

③ 粒度无限细

可以直接下发鼠标物理坐标事件,连 Azure 后台那种魔改嵌套页面都能精准操作。

3. 最扎心反思:我们为什么要替模型屏蔽错误?

以前 Browser Use 团队有一个非常典型的错误认知:

CDP 底层太复杂,模型不需要懂,我们帮它处理异常。

于是他们写了大量看门狗服务:

  • 标签页崩溃捕获
  • 渲染进程 OOM 处理
  • GPU 进程异常重启
  • 目标解绑重连

每一种异常,手写一套处理逻辑。

维护成本爆炸,代码臃肿不堪。

后来他们发现一个极其讽刺的事实:

大模型本来就懂这些报错。

它看过几十万条 Chrome 崩溃日志、社区排错帖子。

只要你把原始报错丢给它,它自己就能重连、重试、修复上下文。

人类写的异常处理,远不如大模型原生判断聪明。

4. 封神架构:600 行代码,吊打几万行框架

抛弃所有冗余封装后,Browser Harness 最终只剩下四个文件,总代码不到 600 行

  • run.py(13行):极简执行入口,预加载依赖

  • helpers.py(192行):极薄 CDP 封装,允许模型自行修改

  • daemon.py(220行):维持 Websocket 长连接

  • SKILL.md:给模型的能力说明文档

整个架构只有一条逻辑:

除了浏览器本身,上层所有代码都允许大模型自己改。

5. 真正的黑科技:自修复 Harness,模型自己补代码

这是整篇文章最震撼我的地方。

传统框架:缺一个功能 → 开发者手动更新代码、发版本、部署。

Browser Harness:缺一个功能 →大模型自己写

5.1 真实案例:自动补全上传函数

团队忘记写文件上传方法。

Agent 执行任务遇到上传按钮,检测到helpers.py没有对应函数。

它自己:

  1. 读取源码
  2. 分析 CDP 原生上传指令
  3. 手写一个upload_file()
  4. 重新执行任务

研发人员是看 Git Diff 才发现模型自己加了代码。

5.2 智能超限处理:自动分块上传

模型写完上传函数后,遇到 12MB 大文件。

它检测到 CDP 单包大小限制,自主改成分片上传逻辑

没有任何人提示、没有任何预设代码。

6. 写在最后

以前我做自动化、写爬虫、开发 Agent,总想着:

我要把接口写死、流程写死、逻辑写死,越严谨越好。

看完这篇文章我彻底改观:

在大模型面前,人类严谨的代码,全是冗余束缚。

最好的架构,不是写更多代码。

而是敢于删代码、敢于放权、敢于把底层原始能力,赤裸裸交给 AI。

如果你也在做 AI Agent、浏览器自动化、爬虫开发,强烈建议记住这句话:

不要包装工具,不要束缚模型。删代码,回归裸金属,才是未来。

附加资源

开源地址:https://github.com/browser-use/browser-harness

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 1:45:29

年会活动背景设计:将核心信息精准置入安全区

🎉 年会活动背景设计:将核心信息精准置入安全区一场令人印象深刻的年会或活动,其视觉门面——背景板——至关重要。它不仅是合影的华丽幕布,更是信息高效传达的第一阵地。如何将主标题、副标题、时间、地点这些不可或缺的要素&…

作者头像 李华
网站建设 2026/5/9 1:42:53

ARM TLB管理机制与不可预测行为约束解析

1. ARM TLB管理机制深度解析 TLB(Translation Lookaside Buffer)是现代处理器内存管理单元(MMU)的核心组件,负责缓存虚拟地址到物理地址的转换结果。在ARM架构中,TLB管理涉及复杂的多级缓存结构和一致性协议…

作者头像 李华
网站建设 2026/5/9 1:42:25

东方博宜OJ 1013:一个六位数 ← 需要找规律的循环

​【题目来源】 https://oj.czos.cn/p/1013 【题目描述】 有一个六位数,其个位数字 7 ,现将个位数字移至首位(十万位),而其余各位数字顺序不变,均后退一位,得到一个新的六位数,假如…

作者头像 李华