dsh-plugin-browser:给 DSH 接入已登录 Chrome 的浏览器工具

前言

在 DSH 里做浏览器相关任务时,常见的问题是:模型需要访问一个已经登录的网站,但浏览器会话不在模型手里,或者不同客户端之间各自维护一次登录态。dsh-plugin-browser 针对这个问题,把 Playwright + CDP 的浏览器自动化封装成 DSH 插件,让模型通过 15 个 browser_* 工具操作同一个已登录 Chrome。

这是什么

q35888/dsh-plugin-browser 是一个 DeepSeek Harness(DSH)插件。它的定位是:

  • Native browser automation for DeepSeek Harness
  • ctx.tools 上提供 15 个 browser_* 工具
  • 使用 Playwright + CDP
  • 可在 DSH / pi / MCP clients 之间共享同一个已登录 Chrome

维护者是 q35888,许可证为 MIT。仓库地址:

https://github.com/q35888/dsh-plugin-browser

包中给出的依赖版本约束如下:

{
  "peerDependencies": {
    "@deepseek-ai/dsh-tools": "^0.1.0-rc.7",
    "@deepseek-ai/cordis": "^4.0.1"
  },
  "dependencies": {
    "playwright": "^1.61.1"
  }
}

核心功能

下面介绍与日常使用最直接相关的几组能力。

会话模式

  • browser_session:启动或切换会话
  • real:使用已登录 Chrome
  • isolated:使用独立无痕会话
  • Chrome 没开时,插件会自动拉起
  • 默认目录设置可与 agentic-browser-mcp 共享同一个已登录 Chrome

页面交互

下面这些工具主要基于 ref 定位:

browser_navigate
browser_snapshot
browser_click
browser_type
browser_select_option
browser_hover

先打开页面,再用 browser_snapshot 取得可操作元素,然后执行点击、输入、选择或悬停。

标签页、弹窗、页面状态

  • browser_tabs:管理标签页
  • browser_handle_dialog:处理 JS 弹窗
  • browser_eval:执行页面 JS
  • browser_storage:读取 cookies/localStorage
  • browser_console:读取控制台日志
  • browser_screenshot:截图存文件
  • browser_wait_human:遇到验证码或登录时,在 DSH 界面弹卡片等待人工操作,5 分钟超时

安装

安装方式 A 与方式 B 二选一,混用会产生重复插件行导致 DSH 启动失败。本文按 dsh CLI 的方式写。

dsh CLI 安装命令:

dsh plugin --profile web add github:q35888/dsh-plugin-browser

如果会使用 isolated 模式,再安装 Chromium:

npx playwright install chromium

isolated 模式需要 npx playwright install chromium(约 95MB);只用 real 模式可跳过。

经过上面的步骤后,插件会在 DSH 的 ctx.tools 中注册 browser_* 工具。

典型用法

一个来自资料中的示例:

你: 帮我看看 github 今天有什么通知
模型: browser_navigate → browser_snapshot → 读到通知列表 → 汇报给你

实际操作时,通常按这个顺序:

1、先调用 browser_session,选择 realisolated 会话。

2、调用 browser_navigate 打开目标页面。

3、调用 browser_snapshot 获取页面元素和 ref

4、用 browser_clickbrowser_typebrowser_select_optionbrowser_hover 等工具操作页面。

5、需要固定某个标签页时,用 browser_tabsswitch

几个使用要点:

  • ref 是临时的,页面变化后先重新 browser_snapshot 再操作
  • 遇到验证码或二次验证时,调用 browser_wait_human,在 DSH 界面操作完点确认
  • 新开的标签页自动跟随;需要固定某个标签页时用 browser_tabsswitch
  • isolated 模式需要 npx playwright install chromium(约 95MB);只用 real 模式可跳过

适用场景与注意

这个插件适合需要在 DSH 会话里访问已登录网站的场景:你已经在浏览器里登录过某个站点,模型就可以在这个插件提供的浏览器里继续读取或操作页面。

使用前需要注意:

  • 插件以当前 dsh 进程权限运行;browser_evalbrowser_storage 能读取浏览器里的 cookies 和登录凭据,请只在你信任的会话中使用本插件
  • 安装前应检查源码与许可证,许可证为 MIT
  • 同一个 DSH 进程里的多个会话/子代理共享同一个浏览器标签页,并发使用时会互相干扰
  • isolated 模式下如果 DSH 意外退出,独立浏览器进程可能残留
  • 它依赖 DSH 的 rc 期工具 API;DSH 大版本升级后若失效,删掉机器级配置里的两行即可完全回滚
  • macOS 无头 isolated 模式设置 AGENT_BROWSER_ISOLATED_CHANNEL=chrome 可能挡住日常 Chrome

结尾

dsh-plugin-browser 的价值,是把浏览器自动化接回 DSH 的工具调用链路里:模型可以直接导航、读取页面、操作元素,并在需要人工验证时把操作交还给使用者。

仓库地址:

https://github.com/q35888/dsh-plugin-browser

目录页 URL 未在本文事实中确认,这里不额外给出。

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

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

Xiaoye