Web Bridge — DSH 插件:真实浏览器自动化

在智能体开发中,让 agent 拥有真实的浏览器能力是常见需求。Web Bridge 是一个 MCP server 插件,利用真实浏览器(Chromium/Firefox/WebKit)提供导航、点击、填表和截图能力。它通过无障碍树快照来识别页面元素,使 agent 能够精确操作页面而无需依赖视觉模型。

这是什么

Web Bridge 是一个基于真实浏览器的自动化工具。它使用 TypeScript 编写,运行在 Node.js ≥ 20 环境下,通过 MCP 协议(stdio 传输)与 DSH 通信。其核心机制是将网页渲染为无障碍树快照,并为 DSH 暴露 22 个 web_ 前缀的工具。

核心能力

  • 真实浏览器驱动:支持 Chromium、Firefox 和 WebKit,默认使用 Chromium。
  • 无障碍树驱动:web_snapshot 生成带引用编号的页面结构,实现精确交互。
  • 页面交互:支持点击、填表、下拉选择、悬停、滚动、键盘输入等操作。
  • 视觉能力:支持视口、全页、元素截图,格式支持 PNG/JPEG。
  • 脚本执行:可在页面上下文中执行 JavaScript,并自动处理循环引用、BigInt 等类型的清洗。
  • 多标签页与精细等待:支持标签页的创建、切换、关闭,以及按加载状态、元素状态、URL 或固定时长进行等待。
  • 会话管理:支持持久化用户数据目录,并可通过 web_shutdown 释放资源。

安装与启用

安装前请确保 Node.js 版本 ≥ 20。

在 DSH 中通过插件命令添加:

dsh plugin --profile demo add github:JohnXu22786/browser-automation

该命令会将插件添加到 demo 配置文件中。安装完成后,插件将自动加载并初始化浏览器进程。

典型用法

配置管理

Web Bridge 的配置优先级为:默认值 < 配置文件 < 环境变量。

  1. 配置文件:在项目根目录创建配置文件,如 web-bridge.config.json。
    {
      "browser": { "name": "chromium", "headless": true, "viewport": { "width": 1280, "height": 720 } },
      "context": { "ignoreHTTPSErrors": false, "permissions": ["geolocation"] },
      "timeouts": { "action": 10000, "navigation": 60000, "settle": 500 },
      "sandbox": true,
      "testIdAttribute": "data-testid"
    }
启动命令:`node dist/index.js --config web-bridge.config.json`。
  1. 环境变量:通过 WEB_BRIDGE_ 前缀的环境变量覆盖配置。
    • WEB_BRIDGE_BROWSER:指定浏览器引擎。
    • WEB_BRIDGE_HEADLESS:控制无头模式。
    • WEB_BRIDGE_VIEWPORT:设置视口大小。
    • WEB_BRIDGE_ACTION_TIMEOUT:单次操作超时时间(毫秒)。
    • WEB_BRIDGE_NAV_TIMEOUT:导航超时时间。
    • WEB_BRIDGE_SETTLE_MS:操作后等待异步任务 settled 的时间。

工具调用示例

  • 导航:web_open 用于打开 URL,支持 http/https/file/data 协议。
  • 获取快照:web_snapshot 返回页面的无障碍树结构,元素带有引用编号,用于后续精确定位。
  • 交互:web_click 使用引用编号或选择器点击元素;web_fill 用于填表。
  • 截图:web_screenshot 可截取视口、全页或指定元素。

适用场景与注意

该插件适合需要高精度页面操作、处理复杂表单或执行动态网页脚本的场景。

权限与安全提示:
* 插件以当前 DSH 进程的权限运行。
* Navigation 工具会触发真实的网络请求和页面渲染。
* Interaction 工具会触发鼠标事件和脚本执行。
* 在安装前,请务必检查插件的源码和许可证(MIT)。

总结

Web Bridge 通过真实浏览器和无障碍树快照机制,为 DSH 提供了可靠的浏览器自动化能力。它支持精细的交互控制和会话管理,适合构建需要与 Web 应用深度交互的智能体。

了解更多:插件目录 | GitHub 仓库

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜