前言¶
DeepSeek Harness(DSH)的生态靠插件扩展能力。插件可能来自 npm、GitHub 仓库或 GitHub Release,版本也会随上游变动。DSH 自带插件管理器能改包,但对多来源、需要人工审阅的更新场景,往往还要在终端或外部流程里对照版本信息。dsh-better-plugin-updater 在 DSH 内完成「查更新 → 展示目标版本/提交 → 经你确认后再安装」,npm 源插件仍保留 DSH 原生更新控件;未经确认不会执行更新。
这是什么¶
dsh-better-plugin-updater 由 Mooling0602 维护,归类为客户端插件。定位是 DeepSeek Harness 的增强型插件更新器:借助 DSH 插件管理器更换包,在 Web / 桌面 / 终端等受管 profile 中使用。当前 npm 发布版本为 0.1.1(MIT 许可证)。
核心功能¶
更新来源与比对方式¶
插件按安装来源采用不同策略查更新,概览如下:
| 来源 | 如何发现更新 |
|---|---|
| npm | 在所配置的 registry 中取最高稳定版;不提议降级 |
| Git 仓库 | 与已安装提交对比所跟踪分支上的最新提交 |
| GitHub Release | 取最高版本 tag(含 prerelease);忽略 GitHub 的 latest 标记 |
| 本地目录或其他 | 报告为不支持,不猜测 |
固定 npm 版本与固定的 GitHub 提交默认受保护;可用 --allow-pinned 或在配置里设置 allowPinned 授权更新。DSH 自有 bundle 与受保护包会被跳过;本插件可检查自身支持的安装来源,但不能更新自身。
界面与命令两套入口¶
- 插件详情页:对从 GitHub 安装(仓库或 release 压缩包)的插件,在来源信息下出现 Version 区块,打开页面即检查更新,展示当前与目标 commit/版本,确认风险对话框通过后才安装。
- 斜杠命令:在会话中执行
/plugin-updater系列命令,同样先展示计划、再确认执行。
向智能体开放了只读工具 plugin_updates:可列出 bundle 并检查更新,不能代为安装、不能代你接受移除风险、不能批准 build 脚本或兼容性豁免。
配置与 GitHub 限流¶
多数选项可在 DSH 插件设置页表单中修改;sources、indexes 需在 profile patch 中配置。可选字段包括 language(auto / en / zh)、githubTokenEnv(默认 GITHUB_TOKEN)、requestTimeoutMs、maxMetadataBytes、planTtlMs 等。匿名访问 GitHub API 易触发限流时,可在 ~/.dsh/.credentials.yaml 中配置 token 引用,仅用于 api.github.com 元数据请求。
环境与依赖¶
- Node.js 22 或更高版本。
- 受管的 DSH profile(Web 应用、桌面应用或终端)。
- 与 package.json 中
engines.dsh一致:DSH>=0.2.1-rc.4且<0.3.0。
安装与启用¶
推荐从 npm 安装已构建的 bundle,本机无需构建工具链:
dsh plugin --profile web add dsh-better-plugin-updater
将 web 换成你实际使用的 profile。若 Web 端已打开,安装后需刷新页面以加载浏览器侧代码。若刷新后仍看不到更新相关能力,可重启 DSH 一次(已运行的进程可能仍缓存「该包无浏览器代码」的旧判断)。
从 GitHub 源安装时仓库内无预构建产物,安装过程可能触发构建并需你批准:
dsh plugin --profile web add github:Mooling0602/dsh-better-plugin-updater
卸载:
dsh plugin --profile web remove dsh-better-plugin-updater
典型用法¶
斜杠命令¶
/plugin-updater list installed plugin bundles
/plugin-updater check check every bundle for updates
/plugin-updater check foo check one bundle
/plugin-updater update foo show the exact target and confirm
/plugin-updater ok carry out the confirmed update
/plugin-updater help show usage
更新在确认前不会应用。/plugin-updater update foo bar 可一次指定多个包;包名支持 *、? 通配。重复发送 update 或发送 ok、confirm 会执行刚才展示的计划。
若已明确接受文档所述风险,可使用:
/plugin-updater update foo --accept-removal-risk
--allow-pinned 与 --accept-removal-risk 不能同时使用。强制界面语言示例:
/plugin-updater --lang zh
/plugin-updater check foo --lang zh
按源的 profile 覆盖(节选)¶
sources:
example-plugin:
kind: npm
registry: https://registry.npmjs.org/
channel: latest
allowPinned: true
github-plugin:
kind: github-source
repository: owner/repository
ref: main
release-plugin:
kind: github-release
repository: owner/repository
assetTemplate: plugin-{tag}.tgz
覆盖项必须与插件真实安装来源一致,不能把某个包指到无关仓库。
适用场景与注意¶
适合谁:经常在 DSH 里维护一批 GitHub 或 npm 插件、希望在同一界面核对 commit/版本再升级的开发者与智能体使用者。
风险(README 明示):更新不是原子操作——旧包会先被移除再装新版;若安装失败或未批准 build 脚本,包可能处于缺失状态,恢复需手动按提示操作,无自动回滚。GitHub 源与 release 包在安装阶段仍依赖网络;npm 新版会在移除旧包前预下载。本插件不会替你批准 build 脚本或兼容性豁免。
安全习惯:插件以当前 DSH 进程权限运行。安装前请阅读 GitHub 仓库 源码与 MIT 许可证,确认变更范围后再在 profile 中启用。
社区插件目录由 SkillHub 等站点聚合展示,与 DeepSeek / 幻方无官方从属关系,不宜理解为官方应用商店。
结尾¶
经过上面的步骤,你可以在插件详情页或 /plugin-updater 命令中完成多来源更新检查,并在确认后再交给 DSH 插件管理器换包。进一步说明见仓库 README(含 简体中文)。