dsh-installed-plugins:在 DSH 设置页统一管理已装插件

前言

DeepSeek Harness(DSH)走「一切皆插件」的路线:profile 里堆多了第三方包之后,很难一眼看清每个插件在做什么、版本是多少、有没有新版本。手工翻 package.json、进 npm 查版本,再对照各仓库 README,既慢又容易漏。

下面介绍社区维护的客户端插件 dsh-installed-plugins(仓库 Maxkun2333/dsh-plugin-catalog)。它在 DSH 设置页增加「插件目录」标签页,用一份列表汇总当前 profile 里的第三方插件,并在你安装或卸载插件时自动重建目录。

这是什么

项 内容
npm 包名 dsh-installed-plugins
维护者 Maxkun2333
分类 客户端(注入 Web 设置页)
许可证 MIT
当前版本 0.2.4(以仓库 package.json 为准)
运行环境 Node >=20

该包未发布到 npm(名称 dsh-plugin-catalog 已被无关项目占用)。安装需从 GitHub Release 提供的 tarball 添加,不能直接 npm install。

核心功能

下列能力均来自项目 README 与 package.json 描述,可按需在面板中使用。

目录与自动同步

  • 在 Settings → 插件目录 展示 profile 中每个第三方插件:通俗说明、已装版本、是否已组装(assembled)、npm 上是否有更新。
  • 宿主监听 profile 的 package.json;安装或移除插件后目录自行更新,无需额外命令或刷新页面。
  • 相对上次快照新增的插件会带标记,避免新装被忽略。

更新与兼容性

  • 一键查询 npm registry,显示例如 1.7.25 → 1.7.29 及「有更新」标识。
  • 安装前做兼容性判断:peer 要求升高、其他已装插件的反向约束、Node engines 不匹配等,结论为 safe / has risk / incompatible;不兼容项不会默认可选批量更新,但仍可显式强制更新。
  • 支持勾选「更新所选」或「更新全部」;更新前备份 package.json 与 lockfile 到 backup-update-<timestamp>/,失败时自动回滚。
  • 待更新项可查看 changelog(GitHub Releases 或包内 changelog 文件)。
  • 更新完成后需重启 DSH,新模块才会被加载。

备份、卸载与导出

  • WebDAV:可将整套插件配置(依赖声明、加载顺序、本地 .mjs、patch 层、内嵌 tarball 等)推送到 WebDAV,并在另一台机器从面板恢复;凭证在面板与 settings.json 中配置,不写死在 cordis.patch.yml。
  • 从面板卸载:可移除依赖、dsh.profile.bundles 条目及相关的 cordis.patch.yml 行,执行前展示计划。
  • PLUGINS.md:与目录相同的数据可导出为便于检索、适合 git 管理的 Markdown 文件。

检索与其它

  • 客户端即时搜索名称、描述与标签,无额外往返。
  • 实现为纯 JavaScript,零 npm 依赖,无构建步骤。

更新过程中面板会显示固定进度卡片(阶段:rewrite → backup → install → finish)、耗时与 pnpm 日志尾部;若下载超时,pnpm 会重试,整体可能约两分钟。Node/pnpm 默认不继承系统代理,面板提供 代理设置 / Proxy(off / auto 默认 / manual)。

安装与启用

官方推荐从最新 Release 安装(不要用凭仓库名拼接的 dsh plugin add github:...):

dsh plugin --profile web add https://github.com/Maxkun2333/dsh-plugin-catalog/releases/latest/download/dsh-installed-plugins.tgz

完成后重启 DSH,在设置页即可看到「插件目录」。

插件通过 cordis.patch.yml 注入,典型配置如下:

- insert:
    - id: plugin-catalog
      name: 'dsh-installed-plugins'
      config:
        profile: web          # 要扫描的 profile,默认 web
        # dataDir: ...        # plugins.json / catalog.json / PLUGINS.md 所在目录
        # autoWrite: false    # 仅监听 profile,变更时不写文件

dataDir 默认行为:link: 或源码目录安装时数据在包内;经包管理器安装时用户数据落在 <DSH_HOME>/plugin-catalog,避免 node_modules 被清理时丢失。

典型用法

插件说明从哪来

优先级从高到低三层,通常只需维护第一层:

层级 文件 说明
你的备注 data/plugins.json 自行编写,不会被覆盖,且 gitignore
内置说明 data/known-plugins.json 包自带,覆盖约 20 个常见社区插件
npm 描述 已装包的 description 自动读取

将 data/plugins.example.json 复制为 data/plugins.json 后可增加条目,例如:

{
  "entries": {
    "dsh-pilot": {
      "title": "Browser cockpit",
      "what": "Drives a real Edge/Chrome over CDP so the agent can click and type on real pages.",
      "use": "Use the pilot_* tools; a draggable cockpit panel shows live state.",
      "repo": "https://github.com/guo6x/dsh-pilot",
      "tags": ["browser", "automation"]
    }
  }
}

在面板里做什么

  1. 打开 Settings → 插件目录,浏览、搜索已装插件。
  2. 需要时点击检查更新,阅读兼容性结论与 changelog,再选择更新或强制更新。
  3. 跨机器迁移或灾备时,使用 WebDAV 备份与恢复;本地也可按需生成 PLUGINS.md。
  4. 确定不再需要某插件时,从面板发起卸载并确认计划。

更新逻辑只改 profile 的 package.json 依赖 spec 及包管理器对 node_modules 的操作,不修改 dsh.profile.bundles。

适用场景与注意

适合谁:经常在 DSH Web profile 里试装、升级多个社区插件的开发者或运维,希望在一个界面看清清单、版本与更新风险,并偶尔做整包备份的用户。

应注意:

  • 插件以当前 DSH 进程权限运行;安装前请自行审阅 GitHub 源码 与 MIT 许可证。
  • 社区插件目录 SkillHub 条目 为独立生态站点,与 DeepSeek / 幻方无官方从属关系,本文所述亦非官方应用商店。
  • 兼容性结论为建议性质;强制更新前仍应结合自己的 profile 与业务环境判断。
  • 使用 WebDAV 时妥善保管面板中的凭证。

结尾

dsh-installed-plugins 把「装了哪些插件、各自干什么、要不要更、能不能更」收到 DSH 设置页的一站式目录里,并支持备份、恢复与卸载编排。若你正在维护一个不断增长的 DSH 插件集,可以按上文 Release 命令安装,再从自定义 data/plugins.json 补全你最在意的几个包的说明。

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

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

Xiaoye