dsh-plugin-updater:DeepSeek Harness 的包级插件管理器

前言

DeepSeek Harness (DSH) 采用插件化架构,通过扩展包来增强功能。在 Web UI 中,管理当前配置文件的依赖项(包括 npm 包、Git 仓库和本地链接)通常需要手动操作命令行工具。下面介绍的这个插件通过在设置中添加一个“插件包”页面,提供了图形化的依赖管理界面。

它是什么

这是 hyqhyq3 维护的一个社区插件(MIT 许可证)。它向 DSH Web UI 添加了“设置 → 插件包”页面,列出当前配置文件中安装的每个依赖项,显示其版本和来源,并支持一键安装、更新和移除。该插件本身不提供模型交互接口,仅服务于设置页面和后端 API。

安装与启用

安装插件需要使用 DSH 的包管理器命令。

dsh plugin --profile web add github:hyqhyq3/dsh-plugin-updater

安装后,需要重启 DSH 才能生效。重启完成后,打开 Web UI 的“设置” → “插件包”即可看到新页面。

核心功能

1. 依赖项清单与状态

页面会列出当前配置文件中 dependencies 的所有包,显示其:
* 已安装版本
* 来源(npm / Git / 本地 / 内置)
* 是否为当前激活的 bundle 层(dsh.profile.bundles)

2. 更新检测

插件针对不同来源实现了自动检测逻辑:
* npm:对比已安装版本与 pnpm view 查询到的最新标签(dist-tags)。
* Git:对比本地 lockfile 记录的 commit 与远程仓库的最新 tag。
* 本地:对比本地 HEAD 与 origin HEAD,检测是否需要 fetch。
* 内置:显示版本,随 DSH 安装一起更新。

3. 插件市场

在“商店”标签页,可以搜索 GitHub 上带有 dsh-plugin 话题的仓库。搜索结果支持按相关性、星标数或最后更新时间排序,支持分页。安装时直接添加为 github:owner/repo 依赖。

4. 构建脚本门控

针对 pnpm >= 10 的安全限制,当安装脚本未在白名单中时,插件会拒绝安装。此时页面会提供“允许构建脚本并重试”按钮,自动将建议的 allowBuilds 配置写入 pnpm-workspace.yaml 并重新执行安装。

典型用法

搜索并安装:
1. 切换到“商店”标签页。
2. 输入关键词搜索。
3. 点击目标仓库的“安装”。

处理更新:
1. 切换到“已安装”标签页。
2. 找到有更新的包,点击“更新”。
3. 如果遇到构建脚本拦截,点击“允许构建脚本并重试”。

移除:
点击包旁边的“移除”按钮,确认后插件会执行 pnpm remove 并重新平衡 bundle 层。

注意事项

  • 重启生效:对配置文件的修改(安装、更新、移除)不会立即生效,必须重启 DSH 进程,页面会显示重启提示横幅。
  • 自我保护:该插件页面无法通过“移除”按钮自行卸载,需使用命令行 dsh plugin --profile <name> remove dsh-plugin-updater。
  • 市场限制:GitHub 搜索 API 在未提供 Token 时限制为 10 请求/分钟,结果会被缓存约 5 分钟以缓解限制。
  • 管理范围:插件仅管理配置文件 manifest 中的 dependencies,不涉及运行时 loader 条目的启用/禁用。
  • 本地依赖:仅当安装源为 link: 或包含 .git 目标时才会进行更新检查。
  • Git 更新逻辑:Git 包的更新检测基于 spec 中指定的 ref,不会自动将移动的 tag 视为更新。

技术细节

插件采用纯 ESM JavaScript 编写,无外部依赖。服务端运行在 DSH 进程内,通过 lib/index.js 发现当前配置文件并调用 pnpm 命令;客户端通过 lib/client.js 注册设置页面并轮询状态。它通过 /plugin-updater/api/* 提供了完整的 HTTP API,包括状态查询、GitHub 搜索以及安装、更新、移除的操作接口。

总结

该插件解决了 DSH Web UI 中依赖管理不便的问题,通过图形界面实现了对 npm、Git 和本地包的统一管理。对于需要频繁维护 DSH 配置的开发者,它能显著提高效率。

插件目录页 | GitHub 仓库

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

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

小夜