dsh-better-plugin-updater:在 DSH 内检查并确认安装插件更新

前言

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 与受保护包会被跳过;本插件可检查自身支持的安装来源,但不能更新自身。

界面与命令两套入口

  1. 插件详情页:对从 GitHub 安装(仓库或 release 压缩包)的插件,在来源信息下出现 Version 区块,打开页面即检查更新,展示当前与目标 commit/版本,确认风险对话框通过后才安装。
  2. 斜杠命令:在会话中执行 /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(含 简体中文)。

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

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

小夜