dsh-browser-harness:DSH 原生 browser_* 工具与专用 Chromium 会话

前言

在 DeepSeek Harness(DSH)里让模型操作网页,常见做法是 HTTP 抓取或外挂 Playwright/Puppeteer。前者拿不到登录态和复杂交互;后者往往再拉一层浏览器二进制或依赖栈,和日常浏览器 profile 也容易搅在一起。若你需要「已登录、可点击填表、多标签、上传下载」,又希望工具形态与 DSH 原生 browser_* 一致,可以看一下社区插件 dsh-browser-harness(npm 包名 @xumi0920/dsh-browser-harness)。它用零依赖 CDP 内核实现 13 个 browser_* 工具,连接你单独启动的 Chromium 系浏览器,并按 DSH 任务给插件自建的标签页分组。

这是什么

dsh-browser-harness 由 Xumi0920 维护,分类为 联网工具,源码与文档在 GitHub,社区目录页:skillhub.cn/plugins/Xumi0920/dsh-browser-harness。社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。

一句话定位:在 DSH 中提供与 Harness 对齐的 browser_ 工具集,通过 Chrome DevTools Protocol 驱动专用、已登录*的 Chromium 内核浏览器(Chrome、Edge、Brave、Chromium、Vivaldi、Opera、Arc 等),以无障碍树 + ref(e1、e2…)为主做页面理解与操作,截图/PDF 作补充;插件自建的标签页按 DSH 会话(Task)分组,不影响你日常工作标签页。

当前版本 v1.10.0,许可 MIT;运行时除宿主提供的 @deepseek-ai/dsh-tools peer 外为零依赖(构建产物仅使用 Node 内置 fetch / WebSocket)。

核心功能

工具一览

安装生效后,模型可调用的工具包括(名称与 README 一致):

browser_status      端点 / 浏览器版本 / 标签页 / 当前标签页
browser_wait        出现/消失、URL/文本变化、response、network_idle、delay
browser_navigate    打开 URL,或 back / forward / reload
browser_snapshot    紧凑引用(e1…);frameId、offset/limit 完整分页、checked/selected/expanded
browser_act         click / hover / highlight / drag / type / fill / selectOption / check / uncheck / press / scroll / dialog;可选 expectUrl/expectText/expectSelector 断言
browser_extract     text / html / JS / network / console / frames
browser_screenshot  整页或元素级 PNG 路径
browser_pdf         页面 PDF 路径
browser_diagnose    截图 + console + 网络失败 + 活动请求诊断包
browser_upload      文件输入上传,路径限制在 uploadDir
browser_download    触发并等待下载,文件落在 downloadDir
browser_task        status / pause / resume / close / start,任务生命周期
browser_tabs        list / use / new / close

设计要点(资料中明确的能力)

  • 真实登录态:接自己起好的专用 Chromium 实例,登录一次长期有效;文档明确建议不要指向日常浏览器。
  • 文本优先:快照基于无障碍树与 ref,比纯截图喂视觉模型更省 token;截图、PDF 为补充。
  • 按任务标签组:插件自建的标签页按 DSH 会话分组;headless 环境下标签组自动跳过,其它工具仍可用。
  • 操作与并发:快照按页串行;click 默认做遮挡/命中检查(错误码 E_CLICK_INTERCEPTED);导航等待 load 至 complete;跨任务标签冲突可返回 E_TAB_LOCKED / E_TAB_OWNER_CONFLICT 等。
  • 只读模式:配置 readOnly: true 时阻止 click/fill/type、JS、上传/下载及部分 tabs/task 变更,导航与快照/提取仍可用于检查。
  • 失败诊断:页面工具失败时自动写入 <stateDir>/diagnostics/<lane>/,错误信息附带诊断路径;敏感 URL、token 类字段在输出中尽力脱敏,但页面正文/HTML/截图仍可能含敏感数据。
  • 边界:上传限定 uploadDir、下载限定 downloadDir、截图/PDF 限定 screenshotDir;browser_tabs use 对非自建页需显式 {borrow:true} 等规则见仓库 SECURITY.md 与 docs/architecture.md。

环境要求(README 表格):

要求 说明
DSH >=0.2.1-rc.5(不设上限)
Node >=22
浏览器 任一 Chromium 内核 + remote debugging(默认端口 9331,详见 docs/configuration.md)
平台 Windows / Linux 已验证;macOS 单测 CI 通过,真实 Chromium 端到端未实测

安装与启用

插件发布于 GitHub Packages:@xumi0920/dsh-browser-harness(npmjs 上同名包为其它项目,勿混淆)。官方给出三种方式,详见 docs/install.md:

  1. 插件页(推荐):DSH Web → 插件页 → 添加插件 → 安装第三方插件(npm 包名 / Git 仓库 / 本地目录),或在「发现」标签页安装市场条目。
  2. 创造模式一句话:在创造模式会话中让 DSH 执行:把 @xumi0920/dsh-browser-harness 安装到当前 profile。
  3. 手动安装(GitHub Packages,classic PAT):需 scope read:packages 的 classic PAT(不支持 fine-grained token)。Windows 示例如下:
npm config set "@xumi0920:registry" "https://npm.pkg.github.com"
npm config set "//npm.pkg.github.com/:_authToken" "<YOUR_GITHUB_TOKEN>"
& "$env:LOCALAPPDATA\\Programs\\DeepSeek Harness\\resources\\runtime\\cli\\bin\\dsh.cmd" `
  plugin --profile desktop add "@xumi0920/dsh-browser-harness"

手动 npm config set 会把 token 写入 ~/.npmrc;README 建议装完后删除 token 配置并撤销 PAT。热插拔方面:application: applied 已生效时无需重启;若返回 restart-required,需按 restartReason 重启 DSH 以加载新 JS 模块。

启用前请知悉:第三方插件与 DSH 同进程权限运行。安装前应阅读源码、MIT 许可证及 SECURITY.md,确认 cdpUrl、目录边界与只读策略符合你的安全要求;不要把 remote debugging 指向日常浏览器。

典型用法

经过上面的安装步骤,先启动专用 Chromium(默认 remote debugging 9331),确认 http://127.0.0.1:9331/json/version 可访问。然后在任意 DSH 会话中让模型按 README 推荐的顺序调用:

browser_status → browser_navigate {url} → browser_snapshot → browser_act {action:"click", ref}
browser_extract {mode:"text" | "html" | "js" | "network" | "console" | "frames"}

若首次 browser_status 返回 connected:false,按 docs/configuration.md 检查浏览器是否已启动、端口与 profile 配置是否一致。

更细的工作流、独立库与 CLI(包内 bh)见 docs/usage.md;标签组行为见 docs/tab-groups.md。

适用场景与注意

场景 建议
登录态页面、点击/填表、上传下载、多标签、截图 用本插件
公开页面纯读取 优先 DSH 自带 web_fetch(更快,不占浏览器)
headless 环境 标签组自动跳过;其它工具正常
日常浏览器 不要指向它;使用专用 profile 实例

DSH 生态理念是「一切皆插件」;本插件属于社区贡献的联网工具类扩展,星标与迭代以 GitHub 仓库为准。遇到登录墙或需 force 关闭标签等敏感操作时,文档要求停手由人确认。

结尾

dsh-browser-harness 把 DSH 原生的 browser_* 工具落到可维护的 TypeScript 实现上:零依赖 CDP、专用已登录浏览器、ref 驱动的交互与按任务分组的标签页。若你的智能体工作流需要真实浏览器会话而不是单次 HTTP 抓取,可按官方安装方式接入,并从配置文档把端口与目录边界设清楚。

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

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

Xiaoye