dsh-browser:为 DSH 会话提供隔离 Playwright 浏览器

前言

在 DeepSeek Harness 里让智能体操作网页,常见做法是调用外部无头浏览器或让模型「想象」页面状态。前者往往和当前会话、子智能体边界对不齐,后者又无法验证真实 DOM 与网络行为。dsh-browser 是社区维护的 DSH 插件,为每个会话(以及子智能体)启动独立的 Chromium 进程与临时配置目录,并在客户端展示实时标签缩略图、侧边栏 Browser 面板,以及接近 DevTools 的一整套调试命令。下面介绍它的定位、能力与安装方式。

这是什么

  • 名称:dsh-browser(npm 包名同 GitHub 仓库 machine202502/dsh-browser)
  • 维护者:machine202502
  • 许可证:MIT(package.json)
  • 版本:0.1.0(package.json)
  • 要求:Node.js >= 20;Chromium 需通过 Playwright 单独安装(见下文)
  • 一句话:Isolated Playwright browser per session for DeepSeek Harness: tabs, screenshots in chat, per-site proxy(目录页简介与 README 一致)

插件在 Host 侧注册 16 个工具、33 个 browser_run 子命令(含 list / help 与网络预设),附带设置表单与回归测试套件(README)。

核心功能

每智能体独立浏览器

每个智能体对应一个浏览器管理器:独立进程、独立临时用户数据目录、独立标签页。子智能体拥有自己的浏览器实例,不会看到其它会话的标签与存储。

多上下文(ctx)

在同一浏览器内可用 ctx1、ctx2 等隔离 cookie 与 storage,便于在同一服务端上模拟两个客户端。

实时画面与聊天截图

Composer 文档区有浏览器卡片,展示各标签缩略图与虚拟指针。在 open、navigate、click、resize、drag 等操作后,可向聊天流推送截图(可在 YAML 配置里用 shots 控制开关、质量与最小间隔)。

侧边栏 Browser

列出当前打开的浏览器,按会话分组:会话名、标签数量、跳转到会话、单独关闭某个浏览器实例。

按站点分流代理

内置路由代理监听 127.0.0.1:49222:按连接目标主机决定走 Hiddify 代理还是直连。README 说明 Chromium 156 会忽略 PAC(含 --proxy-pac-url 与扩展里的 chrome.proxy),因此分流在浏览器外完成。站点列表与代理地址持久化在数据目录:

  • Windows:%LOCALAPPDATA%\dsh-browser
  • Linux:~/.local/share/dsh-browser
  • macOS:~/Library/Application Support/dsh-browser

调试与审计

通过 browser_run 可访问控制台、网络、cookies、storage、IndexedDB、DOM、无障碍快照、性能与 trace、JS 覆盖率、下载列表、WebSocket、Lighthouse 等;也可用 browser_cdp 直接调用 Chrome DevTools Protocol。

工具一览

工具 用途
browser_open 打开标签(可指定 ctx)
browser_navigate 导航到 URL
browser_click 按 CSS 选择器点击(README 称不受对话框阻塞)
browser_fill 填写表单字段
browser_hover / browser_drag 悬停与拖拽(视口内)
browser_resize 调整视口大小
browser_text 页面文本
browser_tabs 标签列表
browser_close 关闭标签(最后一个会结束浏览器)
browser_cdp 原始 CDP 调用
browser_run 子命令调度器
browser_proxy_enable / disable / status / list 代理管理

各工具支持 timeout(毫秒),默认约 10–45 秒视操作而定。

browser_run({ command: "list" }) 列出子命令;browser_run({ command: "help", args: { name: "network" } }) 查看单项说明。子命令包括 console、network、cookies、storage、idb、eval、dom、snapshot、keyboard、dialog、emulate、metrics、perf、slow3g / fast3g / offline / off、trace、coverage、downloads、lighthouse、report、css、assets、html、screenshot、diff、ws、wait、ctx、cdp 等(完整表见 GitHub README)。

安装与启用

官方一键安装会写入 GitHub 依赖并执行包管理器:

npx --yes github:machine202502/dsh-browser

安装后需重启 DSH:侧边栏出现 Browser 分区,文档区出现浏览器卡片。

其它安装脚本选项:

node install.mjs --profile desktop --dry-run   # 预览将修改的内容
node install.mjs --home /path/to/.dsh          # 指定 DSH 主目录
node install.mjs --uninstall                   # 卸载插件

playwright-core 不会自带浏览器,需单独安装 Chromium:

npx playwright install chromium

若无 pnpm,可手动在 ~/.dsh/profiles/desktop/package.json 增加依赖,并在 dsh.profile.bundles 中加入 dsh-browser(字段示例见 README)。

插件目录内可用 npm test(运行 node tests/regression.mjs)做回归;README 提到需要本地 QA 页 node tests/qa-page.mjs。

Chromium 默认路径遵循 Playwright 缓存布局;也可通过环境变量 DSH_BROWSER_EXE 指定可执行文件。

配置示例

README 中的 YAML 片段(字段以仓库为准):

- id: browser
  name: 'dsh-browser'
  config:
    headless: true
    bridgePort: 49221
    idleTimeoutMs: 900000
    viewport: { width: 1280, height: 800 }
    proxy:
      server: 127.0.0.1:10901
    shots:
      enabled: true
      on: [open, navigate, click, resize, drag]
      quality: 55
      minIntervalMs: 1500

Host 在 127.0.0.1:49221 提供 bridge,供客户端拉取标签、帧与代理状态。

架构要点(便于排查)

  • Host(index.js):每智能体一个 manager,注册工具与 bridge。
  • Manager(src/browser-manager.js):launchPersistentContext + 临时 profile,关闭时删除。
  • Bridge(src/bridge.js):向 UI 提供标签、截图、代理状态。
  • Client(client.js):文档卡片、侧边栏、工具行缩略图。
  • Routing proxy(src/routing-proxy.js):按规则转发连接。

DSH 进程退出时,watchdog(src/watchdog.mjs)经 CDP 关闭 Chromium,不依赖平台特定的 kill / taskkill。

典型用法思路

  1. 安装插件与 Chromium,重启 DSH,确认侧边栏 Browser 与文档卡片可见。
  2. 在对话中让智能体调用 browser_open 打开目标 URL,必要时 browser_navigate 跳转。
  3. 用 browser_click、browser_fill、browser_run 的 wait / keyboard 完成交互;需要排查时用 browser_run 的 network、console 或 snapshot。
  4. 仅需部分站点走代理时,配置代理服务器与站点列表,用 browser_proxy_* 工具查看或切换状态。

具体参数以工具 schema 与 browser_run help 输出为准。

适用场景与注意

适合:需要在 DSH 内做真实页面自动化、联调前后端、检查网络与存储、或多会话隔离测试的开发者。

限制:

  • browser_run 的 lighthouse 依赖 lighthouse 包;未安装时命令返回明确错误,其余功能仍可用(README 与 package.json 均列出该依赖)。
  • 浏览器生命周期绑定 Host;非正常退出由 watchdog 清理 Chromium。

安全与权限:插件以当前 DSH 进程的用户权限运行,可启动本地 Chromium、读写配置的代理与数据目录。安装前请阅读 GitHub 仓库 源码与 MIT 许可证,确认符合你的环境策略。DeepSeek Harness 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-browser 把「每会话一个真 Chromium + UI 可见 + 代理与 DevTools 级命令」收进 DSH 插件形态,减少在外部再搭 Playwright 栈的重复工作。查阅详情与 issue:

  • 目录页:https://www.skillhub.cn/plugins/machine202502/dsh-browser
  • GitHub:https://github.com/machine202502/dsh-browser
羽毛球分组比赛记分
小程序二维码

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

小夜