前言¶
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 拒绝原地升级时,自动卸载后重装;重装失败时尝试把旧版本装回去。
- 维护者:wy7779
- 仓库:https://github.com/wy7779/dsh-plugin-autoupdater
- 目录页:https://www.skillhub.cn/plugins/wy7779/dsh-plugin-autoupdater
- 许可证:MIT(package.json / README)
- 当前 package 版本:1.0.0
只处理从 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。
典型用法¶
- 完成安装并重启 DSH 后,打开 设置 → 插件自动更新。
- 开启「启用自动检查」:插件加载后约 10 分钟做第一次检查,之后按所选间隔轮询。
- 若关闭「自动安装更新」,则只报告新版本;需要安装时点「立即检查并更新」。
- 若关闭「失败时自动卸载重装」,遇到
already-installed时只记录失败,不会改动已装插件。
工作原理(概要)¶
经过上面的配置,后台逻辑可概括为 README 中的四步:
pluginManager.listBundles()列出 bundle,只保留可移除、无readOnlyReason的第三方 npm 包,跳过 link/file/git 与官方包、本插件自身。- 从 npm 取
dist-tags.latest(默认源失败时回退 npmmirror),做 semver 比较。 - 有新版本时
installBundle('name@latest');成功则完成;already-installed且开启修复则removeBundle再安装;重装失败则尝试装回旧版本并记录原因。 - 自动执行前检查会话是否活跃;活跃则推迟约 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。