如何将神经网络连接到实时浏览器——Browser Harness 入门
任何尝试用语言模型自动化网页的人都经历过这种痛苦。智能体兴致勃勃地开始点击按钮,却在第一个非标准输入框或棘手的验证码处卡住了。传统框架提供的是一套固定工具:点击、输入、滚动。如果所需操作不在智能体的代码库中,任务就会失败。
browser-use 团队在 browser-harness 项目中提出了另一种方案。他们没有试图提前预判所有可能的网页场景,而是创建了一个包装器,通过 Chrome DevTools Protocol(CDP)将 LLM 连接到你的真实浏览器,并赋予模型动态编写缺失函数的能力。
自学习包装器的核心理念
普通的浏览器智能体在隔离环境中工作。它获得的是一个没有保存会话、Cookie 或授权信息的隔离无头浏览器。结果往往是花一半时间来尝试登录。
Browser Harness 通过调试端口直接连接到正在运行的 Chrome。模型立即可以看到打开的标签页、你的配置文件和正常工作环境。
最有趣的部分在于代码处理机制:
- 智能体收到任务,例如从某个社交媒体资料下载最后二十个视频,或填写带有文件拖放区的复杂表单。
- 模型检查本地文件
agent-workspace/agent_helpers.py。如果没有适合处理该元素的函数,智能体就会自己编写一个辅助脚本。 - 脚本立即在页面上下文中执行。如果运行成功,函数会被保存到工作区。
- 执行下一个类似任务时,智能体无需重复造轮子,而是使用之前编写的辅助函数。
同时,库本身位于 src/browser_harness/ 文件夹中的核心代码保持不变,不会被修改。模型只扩展自己的本地工作区,因此破坏核心逻辑的风险极小。
启动流程解析
该项目与 Claude Code 或 Codex 等智能体开发环境紧密集成。只需向助手提供一个现成的安装提示即可开始:
Install or upgrade browser-harness to the latest stable version with uv using Python 3.12, register the skill from `browser-harness skill`, and connect it to my browser. Ask whether I want local browser recordings enabled; default to no and preserve my existing preference on upgrades. Follow https://github.com/browser-use/browser-harness/blob/main/install.md if setup or connection fails.
运行命令后,会打开 chrome://inspect/#remote-debugging 标签页。在那里你需要勾选远程调试选项,以便智能体获得 CDP WebSocket 的访问权限:
整个技术栈由三个清晰的文件支撑:
install.md指令负责通过调试端口建立与浏览器的初始连接。SKILL.md文件描述了与 LLM 交互的页面模式。src/browser_harness/目录中的模块维护持久套接字并传递命令。
技术栈与实现细节
底层使用 Python 3.12 和 uv 包管理器。会话管理通过 WebSocket 直连 CDP,不使用 Selenium 等重型包装器。
这种方案带来两个实际优势:
- 传输输入事件、滚动和点击时的延迟极低。
- 完全访问 DOM、网络请求和浏览器存储,无需设置额外的桥接层。
如果需要并行运行数十个任务,创建者提供了 Browser Use Cloud 基础设施,包含现成的代理、机器人检测保护和验证码破解服务。但对于日常本地运行自己的浏览器,这些已经足够了。
实际应用场景
这类工具真正能节省时间的地方:
- 从没有公开 API 且设置了两步验证的私有仪表板收集数据。你手动授权一次,然后将常规报告导出工作交给智能体。
- 批量下载媒体文件。智能体打开页面、滚动动态、找到必要的视频播放器选择器,然后将文件保存到本地文件夹。
- 测试布局和用户场景。智能体遍历用户旅程,自己编写缺失的检查逻辑,并将其存储在辅助函数中。
- 在企业 CRM 系统中填写重复性表单,当需要从电子表格批量传输数据时。
是否值得一试
如果你积极使用 Claude Code 等智能体 CLI 工具,并且厌倦了在页面和终端之间手动复制数据,这个项目绝对值得一试。智能体通过持久辅助函数自行扩展工具包的概念,比无限制地膨胀系统提示词要可行得多。
缺点方面,需要特别注意安全:让 LLM 访问你的主浏览器意味着共享所有打开的会话。因此做实验时,更明智的做法是创建一个独立的 Chrome 配置文件,不关联银行卡和关键服务。先从简单的抓取场景开始,观察智能体如何在 agent_helpers.py 中生成第一个函数,评估这种模式是否适合你的常规技术栈。
相关项目
