Browser Harness ♞

来源: https://github.com/browser-use/browser-harness

日期: 2026-05-05

评分: ⭐⭐⭐⭐⭐

一句话版本

Browser Harness 是一个极简的浏览器控制工具(不到 600 行 Python),让 AI 代理(如 Claude Code、Codex)通过 Chrome 的原生调试协议(CDP)直接、无中介地操控你的浏览器。它的核心理念和普通 AI 浏览器框架完全相反:不给 AI 预定义任何点击/输入/滚动函数,让 AI 自己写需要的东西

基本信息

这是什么?

Browser Harness 是一个"自我修复的浏览器控制系统"。它通过一条 WebSocket 直连 Chrome,让 AI 代理直接用原生的 Chrome DevTools Protocol (CDP) 命令操控浏览器。不是又一个包装好的框架——而是一个让 AI 能自己编写操控逻辑的工具。

架构


Chrome / Browser Use Cloud → CDP WebSocket → daemon.py → IPC → run.py

两种浏览器连接方式

1. Way 1(真实浏览记录):勾选 chrome://inspect/#remote-debugging 的复选框,用你平时用的 Chrome 配置文件,继承所有登录态、插件

2. Way 2(隔离环境):启动 Chrome 时加 --remote-debugging-port=9222 参数,使用独立的配置文件,无弹窗干扰

3. 云浏览器:Browser Use Cloud 免费层(无需信用卡),内置反检测、代理、验证码识别

核心哲学:Agent Harness 的苦涩教训

这个项目建立在一篇深度博客《The Bitter Lesson of Agent Harnesses》的核心理念之上:

> "不要包装 LLM。也不要包装它的工具。你的辅助函数(helpers)本身就是抽象——删掉它们。让 AI 自己写需要的东西。"

传统框架的做法:

Browser Harness 的反直觉做法:

自我修复循环


Agent 需要上传文件
  → 发现 helpers.py 中没有 upload_file()
  → 搜索 helpers.py,确认缺失
  → 写入 upload_file() 函数(使用 DOM.setFileInputFiles)
  → 运行成功

这个循环不是硬编码的。AI 只是自然地把"缺函数"当成"修 import 错误"来处理。

实际案例

场景过程
**文件上传**遇到 ``,发现无现成函数,自己写了一个 DOM.setFileInputFiles 封装
**大文件分块上传**上传 12MB 文件时发现 CDP WebSocket 有 ~10MB 限制,自动切换成分块上传模式
**Gusto 员工生日导入日历**导航到员工页面 → 从 DOM 提取生日 → 创建 Google Calendar 事件
**Azure 管理面板**Azure 的 iframe 套 iframe 架构,用坐标点击(Input.dispatchMouseEvent)在合成器层级穿透

与我们项目的关联

这个项目对我们有几个直接的意义:

1. Browser Use 在思考方式上的演进是一个路线图信号:从"写复杂的框架给 AI 用"到"让 AI 自己写工具"——这种思路转变对任何 AI 工具链设计都有参考价值

2. SKILL.md 模式:Browser Harness 的核心文件之一就是 SKILL.md,告诉 AI 如何使用它——和我们自己团队使用的 skill 架构异曲同工

3. 自我修复的 Web 代理概念:如果我们需要让 AI 代理操纵任何网页,Browser Harness 的"不到 600 行"和"AI 自己写 helper"的设计比传统的 Playwright/Selenium 框架灵活得多

4. Domain Skills 社区:AI 运行后自动生成的站点技能文件,可以共享给社区——和我们的 skill 分享理念一致

评分

维度分数说明
创新性⭐⭐⭐⭐⭐与主流框架完全相反的哲学,但被实践验证有效
代码简洁度⭐⭐⭐⭐⭐不到 600 行核心代码,没有多余的抽象层
实用性⭐⭐⭐⭐⭐实际案例证明了在复杂场景下的可用性
文档质量⭐⭐⭐⭐⭐README + install.md + SKILL.md 结构清晰
与我们契合度⭐⭐⭐⭐和我们的 skill 体系理念一致,可直接借鉴

思考

"不要包装 LLM,也不要包装它的工具"——这句话值得反复琢磨。如果 Browser Harness 证明了什么,那就是:AI 不需要你替它想好每一步该怎么做,你需要做的是移除所有障碍,然后相信它能搞定。

这也是第一个真正意义上实践了"The Bitter Lesson"(Richard Sutton 的经典文章,核心理念是让计算自己去学习,而不是用人类知识去约束它)的 AI 工具项目。不是概念层面,而是在代码层面——删到只剩一条 WebSocket 直通 Chrome,剩下的让 AI 自己写。