====== Browser Harness:让 AI Agent 直接操控浏览器的极简方案 ====== Browser Harness 是一个开源的浏览器操控工具,由 [[https://browser-use.com|Browser Use]] 团队开发,核心理念是摒弃传统浏览器自动化框架的封装层,让 LLM Agent 直接通过 Chrome DevTools Protocol(CDP)操控浏览器,并在运行过程中自我完善。项目创建于 2026 年 4 月,仅两个多月就在 GitHub 上获得超过 16,000 颗星,反映了开发者社区对「薄封装、高自由度」Agent 工具链的强烈需求。(([[https://github.com/browser-use/browser-harness|browser-harness GitHub 仓库]])) ===== 核心理念:The Bitter Lesson of Agent Harnesses ===== 2025 年,Browser Use 团队发表了一篇颇有影响力的文章《[[https://browser-use.com/posts/bitter-lesson-agent-frameworks|The Bitter Lesson of Agent Frameworks]]》,指出不应用抽象层包裹 LLM,而应给 Agent 最大的行动空间。但团队随后意识到,他们自己的工具——即使摒弃了复杂框架——依然在用 %%click()%%、%%type()%%、%%scroll()%% 等 helper 函数限制 Agent。(([[https://browser-use.com/posts/bitter-lesson-agent-harnesses|The Bitter Lesson of Agent Harnesses - Browser Use Blog, 2026-04-19]])) 每一层 wrapper 都是你在替模型做决定。Agent 在训练阶段已经见过数以百万计的 CDP 调用——%%Page.navigate%%、%%DOM.querySelector%%、%%Runtime.evaluate%%——它「知道」如何直接与浏览器对话。 由此诞生了 Browser Harness 的原则:**不给 Agent 封装好的 API,只给它一个 WebSocket 连接和修改自己工具链的能力。** ===== 架构:四个文件,不到 600 行 ===== Browser Harness 的核心极其精简,仅由四个文件组成:(([[https://github.com/browser-use/browser-harness|browser-harness README]]))(([[https://browser-use.com/posts/bitter-lesson-agent-harnesses#four-files|The Bitter Lesson of Agent Harnesses - Four Files]])) - **%%run.py%%** — 13 行,加载 helpers 后执行 Python 代码 - **%%helpers.py%%** — 192 行,CDP 的薄封装层,Agent 可自行修改 - **%%daemon.py%%** — 220 行,保持 CDP WebSocket 连接的后台守护进程 - **%%SKILL.md%%** — 告知 Agent 如何使用上述工具 全项目约 1000 行 Python 代码,核心依赖仅 4 个:%%cdp-use%%、%%fetch-use%%、%%pillow%%、%%websockets%%。(([[https://github.com/browser-use/browser-harness/blob/main/pyproject.toml|pyproject.toml]])) **架构工作流**:Agent 编写 Python 脚本 → %%run.py%% 执行 → 调用 %%helpers.py%% 中的函数 → 通过守护进程的 CDP WebSocket 发给 Chrome → Chrome 执行动作。这之上的一切(包括 helpers)都是 Agent 可以重写的。 ===== Self-Healing:Agent 自己写工具 ===== 这是 Browser Harness 最独特的特性。当 Agent 需要一个尚不存在的 helper 时——比如需要上传文件但没有 %%upload_file()%% 函数——它会像任何一个编程 Agent 那样:搜索 %%helpers.py%%,发现缺失,自己写一个,然后继续执行。 团队在博客中分享了一个真实案例:他们在开发过程中忘了添加文件上传功能,结果 Agent 在执行任务时,自己 grep 了 %%helpers.py%%,发现没有上传函数,便直接用 %%DOM.setFileInputFiles%% 写了上去。更要命的是,当它试图上传一个 12MB 的文件时,遇到了 CDP WebSocket 10MB 的载荷上限,于是又自动改为分块上传模式。(([[https://browser-use.com/posts/bitter-lesson-agent-harnesses#magical-moments|The Bitter Lesson - Magical Moments]])) **Self-healing 的关键在于:Agent 不是从零写代码,而是在现有代码库中补上缺失的函数——这和任何一个 Claude Code 或 Codex 用户日常做的「修 import 错误」没有本质区别。** ===== 与 Playwright / Puppeteer 的区别 ===== Browser Harness 和传统的浏览器自动化工具走的是截然不同的路线: **Playwright / Puppeteer(传统路线)**: - 为人类编写测试用例而设计 - 封装了 CDP 的复杂性,提供 %%click()%%、%%fill()%%、%%goto()%% 等高层 API - 通过 Node.js 服务器中转 WebSocket 通信,多一层网络延迟 - 浏览器状态由框架管理,Agent 只能调用框架暴露的有限接口 **Browser Harness(Agent 优先路线)**: - 直接暴露 56 个 CDP 域、652 个方法和全部事件 - Agent 自行决定用哪个 CDP 调用,而非通过预设的工具函数 - 点击通过 %%Input.dispatchMouseEvent%% 在合成器层级模拟,可穿透 iframe 和 Shadow DOM - Agent 可自行扩展 helper,无需等待框架更新(([[https://browser-use.com/posts/playwright-to-cdp|Closer to the Metal: Leaving Playwright for CDP - Browser Use Blog, 2025-08-20]])) 需要指出的是,Browser Harness 并非要替代 Playwright 在 QA 测试中的作用——它的目标场景是 AI Agent 驱动的浏览器自动化,而非人类编写的端到端测试。 ===== 同场对比:browser-use 与 browser-harness-js ===== **browser-use**(105,000+ stars)是 Browser Harness 的「老大哥」,它仍然走的是传统 Agent 框架路线——提供预定义的工具函数、DOM 索引器和元素提取器。Browser Harness 则更进一步,完全放弃了这些抽象。两者定位不同:browser-use 适合希望「马上能用预设工具」的场景,browser-harness 则适合需要「最大自由度」的高级 Agent 操作。(([[https://github.com/browser-use/browser-use|browser-use GitHub 仓库]])) **browser-harness-js** 是 Browser Harness 的 TypeScript 版本(473 stars),将纯 CDP 理念推到了极致:它甚至没有 %%click()%%、%%goto()%%、%%upload_file()%% 等任何高层方法,只提供 56 个域的 652 个类型化 CDP 调用。Agent 自己决定用哪个 API。(([[https://github.com/browser-use/browser-harness-js|browser-harness-js GitHub 仓库]])) ===== Domain Skills:一次学习,处处复用 ===== Browser Harness 内置了一个「领域技能」系统。当 Agent 完成一个任务后,系统会分析执行轨迹,提取出可复用的操作模式——包括 URL 模式、CSS 选择器、操作步骤——保存为 skill 文件供后续任务直接使用。(([[https://browser-use.com/posts/web-agents-that-actually-learn|Web Agents That Actually Learn - Browser Use Blog, 2026-04-05]])) 目前已积累的 domain skills 涵盖 Amazon、GitHub、Bilibili、LinkedIn、IMDb、Wikipedia、Reddit、Yahoo Finance 等数十个常见网站,并且社区持续通过 PR 贡献新的技能。(([[https://github.com/browser-use/browser-harness/tree/main/agent-workspace/domain-skills|Domain Skills 目录]])) 技能系统有两个关键设计: - **PII 过滤**:保存的技能会经过专门的 LLM 审查,剔除其中的邮件、Token、用户特定数据 - **评分淘汰**:社区对技能进行评分(附带书面理由),低于阈值的技能自动淘汰,重复技能自动合并 这套机制形成了一个「Agent 社交网络」——一个 Agent 创建技能,其他 Agent 在使用后留下反馈,系统据此迭代优化。无需 RL 微调,纯靠 Agent 自组织。 ===== v0.1.6:录制与视频能力 ===== 最新版本 v0.1.6(2026 年 7 月 17 日发布)新增了浏览器任务录制功能。Agent 可以录制执行过程的真实浏览器帧、点击轨迹、光标移动和键盘输入,然后在任务完成后压缩为带字幕的总结视频,清晰展示每一步的操作和纠错过程。(([[https://github.com/browser-use/browser-harness/releases/tag/v0.1.6|v0.1.6 Release - Browser Use Videos - GitHub Releases, 2026-07-17]])) ===== 安装与快速开始 ===== 安装极其简单,一条命令即可:(([[https://github.com/browser-use/browser-harness/blob/main/install.md|install.md]])) uv tool install --python 3.12 --upgrade --force browser-harness 然后在 Chrome 中打开 %%chrome://inspect/#remote-debugging%%,勾选「允许远程调试」,再给 Agent 一个设置提示即可连接。 对于需要在云端运行或并发多任务的场景,Browser Use Cloud 提供了免费的托管浏览器(3 个并发实例,无需绑定信用卡)。(([[https://browser-harness.com|browser-harness 官方网站]])) ===== 社区反响 ===== Browser Harness 在 Hacker News 上获得了 134 分的热度支持(([[https://news.ycombinator.com/item?id=?id=41457857|Show HN: Browser Harness - Hacker News, 2026-04-24]])),YouTube 上也有多篇对比评测视频(([[https://www.youtube.com/watch?v=4Y_o7eY8a9Q|Browser Harness GitHub vs Puppeteer - YouTube, 471 views]]))(([[https://www.youtube.com/watch?v=unLf1gtjFAg|Browser Use, Browser Harness × OpenClaw Machines - YouTube, 855 views]]))。项目在 GitHub 上每周约 17 次提交,版本迭代速度较快(v0.1.2 → v0.1.6 在不到一个月内完成),社区参与度高。 ===== 资源===== Browser Harness 代表了一种新的 AI Agent 工具设计哲学:**不给 Agent 预设的 API,而是让它自己决定用什么 API,并在运行中不断完善自己的工具链。** 它不适合作为人类 QA 工程师的测试框架,但如果你是正在构建 AI Agent 应用的开发者,希望让 Agent 拥有最大限度的浏览器操控自由,Browser Harness 值得一试。 * [[https://github.com/browser-use/browser-harness|GitHub 仓库]] * [[https://browser-harness.com|官方网站]] * [[https://docs.browser-use.com/|文档]] * [[https://cloud.browser-use.com/|Browser Use Cloud]]