dsh-plugin-autoupdater:为 DSH 已安装的 npm 插件做定期检查与自动更新

前言

DeepSeek Harness(DSH)把能力拆成可安装的插件 bundle,版本会随 npm 发布迭代。若只靠手动在设置里逐个查看、升级,插件一多就容易滞后;而 DSH 对已安装插件的直接 installBundle 有时会返回 already-installed,原地升级会被拒绝,需要卸载后再装新版本。维护者 wy7779 在 GitHub 发布的 dsh-plugin-autoupdater(目录分类:联网工具)面向上述场景:在宿主内轮询 npm 的 latest,按需自动安装,并在拒绝原地升级时走卸载重装,重装失败则尝试恢复旧版本。本文介绍其定位、能力与安装用法,事实以仓库 README 与 package.json 为准。

这是什么

dsh-plugin-autoupdater 是 DeepSeek Harness 的插件自动更新器:定期检查已安装插件是否有更新的 npm 发布,自动更新;当 DSH 拒绝原地升级时,自动卸载后重装;重装失败时尝试把旧版本装回去。

只处理从 npm 安装的第三方插件;本地 link: / file: / git 插件、官方随 DSH 发布的插件、管理必需插件,以及本插件自身都不会被改动。

核心功能

下面能力均来自 README 说明。

定期检查与安装

  • 默认每 3 小时向 npm 查询一次 latest(间隔可设为 1 / 3 / 6 / 12 / 24 小时)。
  • 有新版本则安装;原地安装被拒时,在开关允许下自动「卸载 → 重装」。
  • 重装失败时尝试 installBundle 回旧版本,并在设置页写明失败原因。

会话与重试策略

  • 自动执行仅在会话空闲 ≥5 分钟时进行(依据会话日志最后写入时间),避免打断正在进行的对话;设置页「立即检查并更新」不受此限制。
  • 同一包在同一目标版本上失败后,12 小时内不再重试。

可配置与可见性

  • 三个开关:自动检查、自动安装、失败时卸载重装;检查间隔可选。
  • 设置页展示上次检查时间,以及逐条结果(已更新 / 已更新待重启 / 可更新 / 失败原因 / 跳过原因)。
  • 配置与最近一次结果保存在 ~/.dsh/plugin-auto-updater/state.json。

宿主依赖

插件通过 pluginManager、connection、webServer 三个宿主服务工作;README 要求 DSH 0.2.1+(并在 0.2.1-rc.3 桌面端实测)。package.json 声明 Node >=20。

安装与启用

安装前请确认 DSH 版本满足要求,并知悉插件以当前 DSH 进程权限运行;安装前应自行查看源码与 MIT 许可证。

从 GitHub 安装(桌面端):

dsh plugin --profile desktop add github:wy7779/dsh-plugin-autoupdater

若当前 DSH 不支持 github: 源,README 给出克隆后按本地目录安装的方式(需自行准备目录路径):

git clone https://github.com/wy7779/dsh-plugin-autoupdater.git
dsh plugin --profile desktop add /path/to/dsh-plugin-autoupdater

也可在 设置 → 插件 → 添加插件 中填入本地目录路径,然后重启 DSH。

典型用法

  1. 完成安装并重启 DSH 后,打开 设置 → 插件自动更新。
  2. 开启「启用自动检查」:插件加载后约 10 分钟做第一次检查,之后按所选间隔轮询。
  3. 若关闭「自动安装更新」,则只报告新版本;需要安装时点「立即检查并更新」。
  4. 若关闭「失败时自动卸载重装」,遇到 already-installed 时只记录失败,不会改动已装插件。

工作原理(概要)

经过上面的配置,后台逻辑可概括为 README 中的四步:

  1. pluginManager.listBundles() 列出 bundle,只保留可移除、无 readOnlyReason 的第三方 npm 包,跳过 link/file/git 与官方包、本插件自身。
  2. 从 npm 取 dist-tags.latest(默认源失败时回退 npmmirror),做 semver 比较。
  3. 有新版本时 installBundle('name@latest');成功则完成;already-installed 且开启修复则 removeBundle 再安装;重装失败则尝试装回旧版本并记录原因。
  4. 自动执行前检查会话是否活跃;活跃则推迟约 10 分钟再试。

适用场景与注意

适合谁

  • 桌面端 DSH 用户,已安装多个来自 npm 的社区插件,希望减少手动查版本、处理 already-installed 的成本。

已知边界(README)

  • 部分插件更新后需重启 DSH 才完整生效(结果中会标「已更新(重启后生效)」)。
  • 更新如 dsh-ops 等提供 shell/文件工具的插件时,相关工具会短暂不可用,故自动更新限定在空闲窗口。
  • 是否可更新取决于 npm 是否存在 latest;私有源/私有包不在处理范围。
  • 插件不直接改 ~/.dsh/profiles/*/package.json 以外内容,操作均经 DSH 的 pluginManager 完成。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文仅介绍该开源插件本身。

结尾

dsh-plugin-autoupdater 把「查 npm → 装新版本 → 处理 already-installed → 失败回滚」收进 DSH 设置页与定时任务,并用手动「立即检查并更新」覆盖自动空闲窗口。进一步细节与 Issue 见 GitHub:https://github.com/wy7779/dsh-plugin-autoupdater;目录入口:https://www.skillhub.cn/plugins/wy7779/dsh-plugin-autoupdater。

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

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

小夜