当前位置: 首页 > news >正文

放弃封装,回归裸金属: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

http://www.jsqmd.com/news/780121/

相关文章:

  • ngx_disable_accept_events
  • 认知神经科学研究报告【20260034】
  • 基于.NET 8与GPT的自动化博客写作工具:从原理到部署实践
  • 圜 全域数学终章:观测者效应的几何起源与万物理论封顶
  • 分布式支付数据一致性:从单机到多机、从 2PC 到 TCC 全链路解析
  • 量子计算在计算化学中的核心价值与技术解析
  • 2025届毕业生推荐的降重复率网站横评
  • WSL2环境下配置RTX 5060显卡并编译llama.cpp详细教程
  • KESvsOracle:90%开发者都踩过的WHERE执行顺序坑
  • Open WebUI:自托管AI对话平台部署与深度配置指南
  • 本地AI输入法助手inputGPT:无缝集成大模型到系统输入层
  • OpenClaw本地化部署:构建Claude Code桥梁实现AI智能体零成本调用
  • 全域数学(GM)体系终极逻辑闭环综述
  • IBM Director 3.1架构解析与企业级系统管理实践
  • 嵌入式Linux开发实战:优化与挑战解析
  • 干货!万字长文解析 Agent 框架中的上下文管理策略
  • Payload CMS深度解析:代码优先的无头CMS架构与实战指南
  • Claudian:轻量级Python客户端,高效调用Claude API的实践指南
  • Alpine Linux容器镜像:网络调试与健康检查的轻量级解决方案
  • 基于AgentClub框架的智能体开发实战:从模块化设计到生产部署
  • AI文档结构化:用提示词引擎将非结构化文本转化为检索优化知识对象
  • Cursor AI与.NET开发集成:MCP协议构建与测试助手实战指南
  • LLM应用会话管理:从原理到实践,构建可靠对话记忆系统
  • ARMv6 SIMD指令集优化嵌入式开发实战
  • 从调参黑盒到一目了然:我是如何用Optuna Dashboard可视化并优化我的PyTorch模型训练的
  • 2026年薪最高的AI岗位TOP10:会用AI的人,已经领先一代人
  • 保姆级教程:用PlatformIO给合宙ESP32C3驱动1.8寸ST7735屏幕(附完整配置代码)
  • Arm Neoverse V3AE调试寄存器架构与实战解析
  • 用Zig重写LLM推理引擎:性能提升20%的底层优化实践
  • Godot 4实现N64复古像素风格:着色器技术深度解析