browser-harness 是什么?AI Agent 接管真实 Chrome 的浏览器自动化工具

介绍 browser-use/browser-harness 的定位、架构、安装方式、适用场景和风险边界,理解它为什么强调真实 Chrome、CDP、可编辑 helper 与 domain skills。

browser-use/browser-harness 是一个面向 AI Agent 的浏览器控制工具。它的目标不是再做一层复杂的自动化框架,而是把大模型直接连到真实 Chrome,通过 CDP 完成浏览、点击、截图、下载、上传和表单操作。

项目 README 对自己的定位很明确:用一层很薄、可编辑的 CDP harness,让 LLM 直接连接真实浏览器;当任务中缺少 helper 时,Agent 可以在执行过程中补上代码,并把可复用经验沉淀成 domain skills。

这类工具值得关注,是因为浏览器仍然是很多真实工作的入口:后台系统、SaaS 面板、电商页面、招聘网站、CRM、报销系统、云控制台、文档平台,往往没有稳定 API,或者 API 权限比网页权限更难拿到。让 Agent 能可靠地操作浏览器,本质上是在补齐“最后一公里”的自动化能力。

browser-harness 是什么

从结构看,browser-harness 更像一个给 Agent 用的浏览器运行时,而不是普通用户手动点击的浏览器插件。

它的核心思路有几个:

  • 直接连接 Chrome 或 Chromium 浏览器。
  • 通过 CDP WebSocket 操作页面。
  • 让 Agent 用截图、坐标点击、DOM、网络请求和原始 CDP 组合完成任务。
  • 把任务相关 helper 放在 agent-workspace/agent_helpers.py
  • 把站点相关经验沉淀到 agent-workspace/domain-skills/
  • 保持核心很薄,避免做成庞大的自动化平台。

README 中提到,项目核心架构大约是 4 个核心文件、约 1000 行代码,主要包括 install.mdSKILL.mdsrc/browser_harness/agent-workspace/agent_helpers.pyagent-workspace/domain-skills/

这种设计的重点不是“内置所有网站能力”,而是给 Agent 一个足够贴近真实浏览器的操作层,让它在具体任务里补齐缺失能力。

它和传统浏览器自动化有什么不同

传统浏览器自动化通常围绕测试框架展开,例如 Playwright、Selenium 或 Puppeteer。它们适合写确定性的测试脚本:打开页面、定位元素、点击、断言结果。

browser-harness 面向的是另一类任务:用户说一句目标,Agent 自己探索页面、判断状态、处理弹窗、补 helper、复用站点经验。它强调的是交互过程中的适应性。

差异可以这样理解:

  • Playwright 更适合人写脚本,Agent 执行脚本。
  • browser-harness 更适合 Agent 边看页面边行动。
  • 传统自动化偏固定流程。
  • browser-harness 偏开放任务。
  • 传统脚本常依赖选择器。
  • browser-harness 鼓励先截图、再按可见界面行动,必要时再退回 DOM 或 CDP。

这并不意味着它要替代 Playwright。对稳定测试来说,Playwright 仍然更成熟。browser-harness 的价值在于把真实网页变成 Agent 可操作的环境,尤其适合那些页面结构复杂、步骤不固定、需要临场判断的任务。

为什么强调真实 Chrome

很多浏览器 Agent 工具会使用隔离的无头浏览器。这样部署简单,也适合批量任务,但它有一个现实问题:用户真实工作里的登录态、扩展、历史记录、书签和日常浏览器环境并不一定能直接复用。

browser-harness 支持连接本机 Chrome,也支持 Browser Use cloud browser。对本机浏览器,它提供两种方式:

  • 通过 chrome://inspect/#remote-debugging 允许当前 Chrome 实例被连接。
  • --remote-debugging-port=9222 --user-data-dir=... 启动一个隔离 profile。

如果要让 Agent 帮你处理真实账号里的任务,项目文档更倾向于第一种方式,因为它能复用日常 Chrome 的登录态、扩展和书签。如果要做无人值守自动化,或者不希望被弹窗打断,则更适合使用隔离 profile 或云浏览器。

这里的取舍很清楚:真实浏览器更贴近用户工作流,但安全边界也更敏感;隔离浏览器更适合自动化,但需要重新处理登录和环境。

可编辑 helper 和 domain skills

browser-harness 最有意思的地方,是它把“Agent 会学到什么”设计进了项目结构。

agent-workspace/agent_helpers.py 用来放任务中临时补出来的 helper。比如 Agent 做文件上传时发现现有能力不够,可以补一个稳定的上传函数;下次再遇到类似页面,就不用从零开始。

agent-workspace/domain-skills/ 则用来放站点级经验。README 里举的方向包括 LinkedIn outreach、Amazon 下单、报销系统等。项目建议不要手写这些 skill,而是让 Agent 在真实任务中发现可复用流程后再生成,这样更贴近实际页面行为。

这个思路很适合浏览器自动化。因为网页自动化的难点往往不是“怎么点击按钮”,而是:

  • 某个网站的登录后页面怎么跳转。
  • 哪些弹窗会挡住主流程。
  • 哪些 selector 稳定,哪些只是临时样式名。
  • 上传、下载、iframe、shadow DOM、跨域组件怎么处理。
  • 某个后台系统有哪些隐藏等待和异步状态。

这些知识如果只留在一次运行日志里,很快就会丢掉。把它们沉淀成 domain skills,才可能让 Agent 越用越顺。

适合哪些场景

browser-harness 更适合以下任务:

  • 帮用户操作真实网页后台。
  • 在没有 API 的系统里完成重复流程。
  • 登录态依赖强的个人或企业网页任务。
  • 需要截图判断页面状态的复杂交互。
  • Agent 需要在执行中补工具、补站点经验。
  • 多个子 Agent 各自使用独立浏览器执行任务。
  • 研究浏览器 Agent 的运行时设计。

具体例子包括:整理网页表格、提交内部系统表单、下载账单、上传文件、处理报销流程、检查订单状态、在 SaaS 控制台里配置资源、从登录后的网页提取信息。

如果任务只是抓取静态网页,未必需要浏览器。项目自己的 SKILL.md 也提到,静态页面可以直接用 HTTP 批量获取;浏览器应该留给真正需要页面状态、登录态和交互的场景。

需要注意的风险

让 AI Agent 接管真实 Chrome,很强,也很危险。

第一,权限边界要清楚。真实 Chrome 里可能有邮箱、支付后台、云控制台、公司系统和个人账号。Agent 一旦能操作浏览器,就等于获得了这些网页权限的一部分。

第二,不要把凭据交给模型。遇到登录页、支付验证、二次确认等敏感步骤,应该让用户自己处理。Agent 可以等待登录完成,但不应该从截图里读取或输入密码、验证码、支付信息。

第三,自动化不等于可托管。很多网页任务看似简单,但中间可能出现风控、误点击、数据删除、批量提交、不可逆操作。适合先从只读、低风险、可回滚的流程开始。

第四,domain skills 需要避免泄露隐私。站点经验可以公开,但不要把账号、内部 URL、客户数据、坐标流水账或一次性任务细节写进去。

第五,真实浏览器连接方式要谨慎选择。如果要复用日常登录态,使用当前 Chrome 很方便;如果要跑长时间自动化,隔离 profile 或云浏览器更可控。

对 AI Agent 工具的意义

browser-harness 代表了一种很务实的 Agent 工具路线:少做平台,多给模型一个可以直接触达真实环境的接口。

过去很多 Agent 失败在两端。一端是模型会推理,但摸不到真实页面;另一端是自动化框架很强,但需要人先把流程写死。browser-harness 试图把这两端接起来:浏览器负责真实世界的状态,Agent 负责观察、判断和补工具。

这也是“自我改进 harness”的意义。它不是说 Agent 会神奇地变聪明,而是把可复用的操作经验放到项目结构里,让下一次任务少走弯路。

对开发者来说,browser-harness 的价值主要在三个层面:

  • 作为个人 Agent 的浏览器控制层。
  • 作为研究浏览器自动化和 Agent 工作流的样本。
  • 作为把网页流程变成可复用技能的实验框架。

它不是所有浏览器自动化问题的答案,但它给出了一个清晰方向:当 Agent 真正要帮人做事时,工具层不只要能调用 API,也要能理解和操作人类每天使用的网页界面。

简单结论

browser-use/browser-harness 值得关注,不是因为它包装了多少高级功能,而是因为它把浏览器 Agent 的几个关键问题摆在了台面上:真实 Chrome、CDP、截图驱动、可编辑 helper、站点技能沉淀,以及用户权限边界。

如果你只是写稳定端到端测试,继续用 Playwright 或 Selenium 就很好。如果你想让 Codex、Claude Code 这类 Agent 直接帮你处理真实网页任务,browser-harness 提供了一个更贴近 Agent 工作方式的入口。

真正使用时,建议从低风险任务开始:先让它读页面、截图、提取信息,再逐步尝试点击和提交。等你确认它能稳定识别页面状态,再考虑让它接管更长的流程。

参考资料:

记录并分享
使用 Hugo 构建
主题 StackJimmy 设计