dsh-browser:为 DSH 提供共享真实浏览器的插件

前言

在 DeepSeek Harness(DSH)里让 agent 操作网页,常见做法是走无头浏览器或远程截屏转播:模型能「操作」,但人往往看不到同一块页面,遇到登录、人机验证时也很难及时接手。dsh-builtin-browser(仓库 wqty123/dsh-browser)走的是另一条路:给 DSH 装一个真实、可见、可与用户共享的浏览器,agent 通过 20 个 browser_* 工具驱动,用户与 agent 操作的是同一个页面,需要时可以直接接管。

下面介绍这个插件的定位、能力、安装方式与典型用法。事实来自 GitHub 仓库 README 与 package.json(当前版本 v0.1.15)。

这是什么

dsh-builtin-browser 是维护者 wqty123 发布的 DSH 插件,npm 包名同为 dsh-builtin-browser,许可证 MIT。SkillHub 目录将其归类为客户端插件;GitHub 上约 19 stars。

一句话:安装插件 = 获得一个与用户共享、可被 agent 驱动的真实浏览器。

与无头方案的区别在于:浏览器是原生 WebContentsView,不是转播截图;有桌面外壳时嵌入外壳视图,纯 dsh web 环境下插件也可自托管——自行拉起 Electron 窗口(标题 dsh-browser),无需额外配置。

核心功能

共享真实浏览器与人机同页

用户直接看到 agent 在做什么,可随时上手接管;agent 驱动的就是用户眼前的窗口。

20 个 browser_* 工具

安装后 agent 自动获得一整套浏览器工具,覆盖打开、查看、操作、填表、截图、下载、登录态管理等。常用入口如下:

想做什么 工具 说明
打开页面 browser_open 打开 URL,返回带编号元素的快照
了解页面 browser_snapshot 输入框、按钮、链接的编号清单
操作页面 browser_execute 在页面内执行 JS(原生 setter,框架友好)
填写表单 browser_fill 一次填写多个字段,可选提交
看到页面 browser_screenshot PNG 截图,可存文件交给视觉模型

完整清单与参数见仓库 工具参考

DOM 级驱动与框架友好

browser_snapshot 返回带编号的交互元素;browser_execute 在页面内执行 JS,受控输入使用原生 setter 并触发 input/change 事件,React、Vue 页面也能较可靠地交互。

多标签与任务级会话隔离

支持并行打开 URL,查看、切换、关闭、重置标签。每个 DSH 任务(会话)拥有独立的浏览器会话(独立标签页与历史),并发任务互不抢页面;同一任务内多次调用复用同一会话。

登录态、人机验证与下载

  • browser_auth:导出/恢复 cookie,重启后登录态不丢;自托管实例的 cookie 也会落盘持久化。
  • browser_challenge:检测 Cloudflare、reCAPTCHA、hCaptcha、Turnstile 等挑战,提示人工在共享窗口完成。
  • browser_download:在页面上下文内携带会话 cookie 下载文件(上限 256MB)。

操作历史、回放与安全限制

  • browser_history 记录操作日志;browser_replay 可按序号回放某一步。
  • browser_restrict 以白名单限制允许的浏览器动作;只读工具(browser_snapshotbrowser_contentbrowser_screenshot 等)不受限。

多格式内容抓取

browser_content 支持以 html、markdown、txt、json 抓取页面,可配合 CSS selector、字符上限与超时控制。

架构与自托管

插件通过 cordis.patch.yml 挂载三层:browser(seam)、browser-electron(provider)、tool-browser(工具层)。没有桌面外壳时,插件通过 host-main.js 拉起 Electron 子进程,经本机 TCP JSON-RPC 驱动;子进程崩溃会自动重启。README 注明 Electron 33.x 有合成器缺陷,建议版本 ≥ 40

安装与启用

环境要求:

  • 已安装 DeepSeek Harness,且配置了 web profile
  • Node.js ≥ 22.19(见 package.jsonengines
  • Electron 运行时:桌面外壳通常自带;纯 dsh web 下插件会自动定位环境中版本最新的 Electron 二进制

README 徽章标明当前在 Windows 上验证过;其他平台是否可用需自行验证。

安装命令(README 官方写法):

# 方式一:从 npm 安装(已发布)
dsh plugin --profile web add dsh-builtin-browser

# 方式二:从源码目录安装(独立仓库,一插件一仓库)
dsh plugin --profile web add <本仓库路径>

安装前建议阅读源码与 MIT 许可证,确认插件将以当前 dsh 进程权限运行。

典型用法

安装完成后,agent 即可调用 browser_* 工具。一个常见流程是:先打开页面,再读快照,再操作或填表。

1. browser_open(url)     → 打开页面,得到带编号元素的快照
2. browser_snapshot()    → 查看可交互元素编号
3. browser_execute(...)  → 按编号或选择器执行点击、提交等 JS
4. browser_screenshot()  → 需要视觉定位时截图,可选 savePath 落盘

批量填表可用 browser_fill 一次填写多个字段;需要持久登录时,人工登录后用 browser_auth 导出 cookie,下次恢复。

操作纪律(README 摘要):表单提交优先 form.requestSubmit(),点击优先 element.click();坐标点击是最后手段,取坐标后应立即点击,点击前用 document.elementFromPoint(x, y) 验证命中。

适用场景与注意

适合谁

  • 需要在 DSH 里做网页自动化,且希望人能看到、能接管同一浏览器的开发者
  • 需要处理登录态、人机验证、带 cookie 下载等「真实浏览器」场景的智能体工作流
  • 使用 DSH 桌面外壳或纯 dsh web 环境,希望零额外配置拉起可见浏览器窗口的用户

注意事项

  1. 插件以当前 dsh 进程的权限运行,安装前应检查源码与许可证。
  2. 浏览器可见视图、列布局等由宿主外壳(如 apps/desktop)负责;本插件只消费 electronViewHost,无外壳时走自托管。
  3. 带 ✅ 守卫的动作受 browser_restrict 白名单约束;配置项见 README 中的 cordis.patch.yml 说明(如 httpOnly 默认 true,仅允许 HTTP(S) 导航)。
  4. SkillHub(skillhub.cn)是社区插件目录,与 DeepSeek、幻方无官方从属关系;DSH 生态理念是「一切皆插件」。

结尾

dsh-builtin-browser 把「共享真实浏览器」做成可安装的 DSH 插件:装好即用、人机同页、20 个 browser_* 工具覆盖从打开页面到登录态与下载的常见需求。若你正在 DSH 里搭建需要可见、可接管的网页 agent,可以从目录页或 GitHub 获取包与文档。

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

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

小夜