DSH Hub

anweat/dsh-browser

dsh-browser

UIBrowser30 GitHub stars· updated 2026-10-05

Self-contained browser runtime plugin for DeepSeek Harness — bundles Playwright (chromium) and OpenCLI as plugin-local dependencies, exposes a browser service and interactive browser tools.

Install

npx @deepseek-ai/dsh plugin --profile web add @anweat/[email protected]

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-browser DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/anweat-dsh-browser.svg)](https://dshhub.dev/plugins/anweat-dsh-browser)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from anweat/dsh-browser, cleaned of badges and images.

dsh-browser

本地整合候选的修复、工具清单与安全边界见 AUDIT.md。allowedDomains 只限制认证状态装载,不是网络防火墙或 Agent 隔离边界。

自包含的浏览器运行时插件 for DeepSeek Harness(DSH)。

把 Playwright / Patchright(可选 Chromium 驱动) 与 OpenCLI 作为插件自身的 npm 依赖打包(优先插件本地,缺省回退全局复用),对外提供一个 browser 服务 + 一组交互式浏览器工具。dsh-web-search-pro 通过 inject: ['browser'] 注入该服务,驱动它的浏览器 / OpenCLI 后端——不再依赖全局 CLI。

兼容与发布通道

插件发布通道DSH 基线兼容承诺
0.1.12 及更早的维护版本dsh-v0.1.1-rc.2 至 dsh-v0.1.2-rc.1旧基线;不与新插件混装
0.1.15dsh-v0.1.7-rc.2精确锁定该宿主版本;组合安装、真实 Web profile 与设置持久化已验证
0.1.17dsh-v0.1.7-rc.2 ~ dsh-v0.2.0-rc.2peer 收口为「实测过的两条线」(上界 <0.2.1-0);在 0.2.0-rc.2 上完成 typecheck、构建、52 项测试与真实挂载验证;补充浏览器缓存路径配置说明,并新增 peer 双解析模式检查
0.2.0-rc.1(预发布,历史记录)dsh-v0.1.7-rc.2 ~ dsh-v0.2.0-rc.2破坏性变更:30 个 browser_* 工具改为 browser_index / browser_call 两个入口加动作目录(常驻约 325 token,原约 8.8k);随包提供 dsh-browser skill;recipe v2、资产版本与激活保护、结构化观察、探索记录生成草稿、提示文本可配置。并入按 session 隔离浏览器状态(#36)与 dialog 竞态修复(#30)。在 0.2.0-rc.2 上完成 325 项测试、64 项真实浏览器 e2e 与真实 Web profile 验证
0.2.0dsh-v0.2.0-rc.2第一个面向 DSH 桌面版 0.2.0 线的正式版,也是后续开发的基底。只支持 dsh-v0.2.0-rc.2 这一条线(peer >=0.2.0-rc.2 <0.2.1-0):去掉为更旧宿主保留的兼容分支(settings.register 的 live scope 回退等),并去掉对 settings 服务的必需依赖(只声明 inject: ['tools'],没有 Settings 服务的组合里也能启动);不改工具、动作、schema、文本与审批规则。在 0.2.0-rc.2 上完成 327 项测试、64 项真实浏览器 e2e 与 peer 双解析模式检查。旧宿主(0.1.7 线,dsh-v0.1.7-rc.2)继续使用 0.1.17
0.2.1dsh-v0.2.0-rc.2(不变)相对 0.2.0 的补丁版,DSH 基线与 peer 范围(>=0.2.0-rc.2 <0.2.1-0)不变,只含两项:(1) 参数无效的调用不再先弹审批:审批钩子先判断动作是否被当前 automationMode 禁用(禁用仍直接拒绝),再用与 runAction 相同的校验检查参数,无效则不询问,执行层再校验一次并返回带精简 schema 的 INVALID_ARGS,不执行任何页面动作;参数有效时的审批规则与理由不变。(2) “探索转草稿”(draft_from_journal)的指导文本补充。不改动作、参数 schema 与审批规则。在 0.2.0-rc.2 上完成 337 项测试与 66 项真实浏览器 e2e

0.1.17 把 DSH 运行时依赖由精确锁定改为范围声明(^0.1.7-rc.2 || >=0.2.0-rc.1 <0.2.1-0), 使同一份包可装在 0.1.7-rc.2 与 0.2.0-rc.2 两代宿主上。0.2.0-rc.1 起的新功能(动作体系、skill、recipe v2、 资产版本、提示文本配置等)只在 0.2.0-rc.2 上验证过,没有在 0.1.7-rc.2 上跑过,所以 0.2.0 把范围收成只覆盖 0.2.0-rc.2 这条线:>=0.2.0-rc.2 <0.2.1-0,正式版 0.2.0 起即采用这个范围。0.1.17 的范围不变,旧宿主继续用它。

这个写法同时满足两种解析,缺一不可:

  • 宿主的组装期校验用的是 semver.satisfies(host, range, { includePrerelease: true }),所以「单范围能不能过宿主」不是关键。 真正决定装机成败的是 npm/pnpm 的默认 semver:预发布版本只有在某个比较符自带同号(同 major.minor.patch)预发布时才被判为满足。 于是 >=0.1.7-rc.2 <0.2.1-0 这种写法过得了宿主校验,却会让 dsh plugin add 报 ERESOLVE(下界 tuple 是 0.1.7,接不住 0.2.0-rc.2); >=0.2.0-rc.2 这个比较符自带 0.2.0 的预发布,是承重的,必须保留。
  • 上界是 <0.2.1-0 而不是 <0.2.1:后者放行 0.2.1-alpha.1 这类 0.2.1 的预发布。收口后,若 0.2.1 真出现破坏, 会在组装期直接报 is incompatible with dsh 0.2.1 并点名,而不是拖到用户机器上变成运行期怪错 (0.1.5 → 0.1.7 曾一次性打断所有按 0.1.5-alpha.1 构建的插件)。
  • 范围只表示「测过哪些」,不等于承诺不破坏;真正的防线是每换一个 DSH 版本重跑一遍这套验证。 pnpm run test:peers(已并入 pnpm verify)用两种解析模式逐个断言受管 peer:0.2.0-rc.2 必须通过, 0.1.7-rc.2、0.2.0-rc.1、0.2.1-alpha.1 必须被拒绝;并自带 --selftest 已知行为自校验。

0.1.15 使用 DSH 新客户端分包:状态存储来自 dsh-client-store,设置契约来自 dsh-client-ui-settings,客户端 Context 来自 Cordis。npm 上 0.1.15-alpha.2 仍声明旧版 DSH peer,不能与本版混用。

设置的读取不再对宿主版本做适配:Host 半边直接使用 Loader 传给 apply 的条目配置(设置页由条目的 Config schema 派生, 条目 id 为 browser),浏览器设置卡片使用 ConfigForm/ctx.configForms,devDependencies 锁定 0.2.0-rc.2。 可编辑字段都是 .volatile():保存后新值写入运行中的引用,但浏览器进程、工具暴露与审批规则在启动时一次读取, 所以保存后仍需重启 profile 才生效(只有提示文本覆盖里的目录、错误提示等按调用实时读取,见「自定义提示文本」)。

…

Related plugins