前言¶
DeepSeek Harness(DSH)把能力拆成可安装的 bundle 插件,profile 里插件一多,版本就容易和 npm registry 上的 latest 脱节。手动在终端里对照版本、再执行卸载与重装,步骤重复且容易漏。社区插件 dsh-plugin-updater(维护者 shehuilaoliumang,分类 admin-security)把「查新版本」和「按内置插件管理器语义更新」收进 Web UI:侧栏、插件页总览、单插件详情页三处入口,并支持批量更新、忽略某版本与可选的自动更新。
下面介绍它做什么、怎么装、日常怎么用,以及更新范围与常见失败该怎么处理。
这是什么¶
dsh-plugin-updater 是 DSH 的插件更新助手:列出当前 profile 里经 plugin_manager 安装的插件,对比注册表最新版本,对可更新项提供一键或批量更新(先卸旧再装新,失败时尽量回滚)。
- 目录页:https://www.skillhub.cn/plugins/shehuilaoliumang/dsh-plugin-updater
- 源码:https://github.com/shehuilaoliumang/dsh-plugin-updater
- 当前 package 版本:0.4.3(页脚会显示「更新检查 v0.4.3」与 Host 端版本,不一致时 Host 版本标红并提示重启 DSH)
- 许可证:MIT
社区目录站点与 DeepSeek / 幻方无官方从属关系;安装前请自行审阅源码与许可证。插件以当前 DSH 进程权限运行。
入口与界面¶
功能入口分三处,内容复用同一套检查面板逻辑:
- 侧栏 → 更新检查(
sidebar.panellist+ 同名main面板):日常入口;有可更新插件时图标右上角带提示点。 - 插件 → 更新检查(
plugins.tab):插件页内总览,支持搜索、按状态筛选、逐条与批量更新;顶部可配置自动更新。 - 插件详情页(
plugins.detail.badge+plugins.detail.actions):仅在 bundle 详情页显示「可更新 x.y.z」标签与「更新到 x.y.z」按钮;行配置页与官方插件页无整包可替换对象,不渲染多余控件。
启动后若检测到可更新项,右下角会出现 5 秒自动消失的限时提醒卡,可「全部更新」或跳转插件页;同一批可更新插件在同一浏览器会话内只提醒一次。自动更新设置不单独占设置页,集中在「更新检查」总览与侧栏面板顶部。
核心功能¶
版本检查与状态¶
- 聚合
plugin_manager已装插件,向 registry 查询 packument 的dist-tags.latest。 - 行状态包括:
可更新/已是最新/本地版本更新/检查失败/已忽略,以及本地、link:/file:、Git、压缩包、随 DSH 提供的 official bundle 等跳过状态;跳过与失败会在行内给出原因。 - registry 优先级:
pluginManager.registries()的 resolved / registry / fallbackRegistries →pluginRegistryProbe.fastest()→https://registry.npmjs.org/。 - 版本比较使用 SemVer,含 pre-release 排序规则。
更新与进度¶
- 单条更新:点击「更新」立即执行 remove + install;安装失败时自动尝试装回旧版本;前端轮询 Host 进度,显示「卸载旧版本 → 安装 x.y.z → 确认结果」与已用时长。
- 批量更新:「全部更新(N)」先确认,再由 Host 顺序执行,结束汇总成功/失败;失败行可单独重试。遇到需要重启 DSH 或全局性 pnpm 故障时,批量会在当前项之后 暂停,后续项标记为暂停。
- 忽略此版本:按「包名 + 版本」写入 Host 端设置;忽略后不计入可更新数量,上游再发新版本会重新出现在「可更新」。旧版浏览器
localStorage忽略记录在首次升级后会迁移到 Host。
自动更新(默认关闭)¶
在「更新检查」页顶部可开启:
- 打开页面时自动更新:Web UI 每次打开时检查一次,并更新全部可更新项,完成后用限时提醒汇总。
- 定时后台更新:DSH 运行期间按间隔检查并更新,间隔可设 30 分钟~30 天;开启后约 1.5 秒会先执行一次。
自动更新同样只处理 npm 第三方插件,并复用带失败回滚的更新流程。
其他 UI 行为¶
- 「可更新」与「其他插件」两组可折叠;有可更新项时「其他插件」默认收起。
- 检查完成、单条/批量更新结束、忽略/取消忽略后,侧栏提示点即时刷新,无需重开页面。
- 需要重启时会有提示;安装日志写入 profile 的插件管理器日志。
- 桌面端插件仍被加载时(
bundle-in-use)会提示重启后再更新;profile 启动项缺失时有对应文案。 - pnpm 锁文件损坏、新版本等待期拦截等会在错误行下给出可执行修复提示(见下文常见问题)。
更新规则(务必知晓)¶
- 只更新 来自 npm registry 的已安装 bundle;
link:/file:本地插件、Git、tarball 与随 DSH 分发的 official bundle 不在此更新。 - 更新语义与内置插件管理器 Update 一致:remove + install(失败尽量回滚旧版)。
- 忽略记录与自动更新设置保存在
~/.dsh/plugin-updater/settings.json(可用环境变量DSH_HOME覆盖用户目录),不写入 profile 的package.json或cordis.patch.yml。
安装与启用¶
在取得插件目录的绝对路径后,通过 profile 的插件管理器安装(命令以 README 原文为准):
plugin_manager action=install_bundle target=<本目录的绝对路径>
Host 半(index.js)改动需 重启 DSH 后才会载入;Client 半(client.js)通常由 HMR 自动更新。依赖注入包括 @deepseek-ai/dsh-client-locale 与 @deepseek-ai/dsh-client-ui-plugin-manager。
典型用法¶
- 安装并重启 DSH(若刚装 Host 半)。
- 打开 侧栏 → 更新检查,或 插件 → 更新检查,等待列表刷新;页脚可见最近检查时间与插件/Host 版本。
- 对单行点「更新」,或确认后使用「全部更新(N)」;需要时在行内「忽略此版本」,日后可在同页取消忽略。
- 进入某个 npm bundle 的 详情页,使用标题旁版本标签或页头「更新到 x.y.z」就地更新。
- 若希望少动手,在总览顶部开启「打开页面时自动更新」或「定时后台更新」,并设定间隔。
Host 侧 API 路径(供排查或二次开发参考,日常使用不必手动调用):
GET /dsh-plugin-updater/api/state[?force=1]POST /dsh-plugin-updater/api/update,body{ "name": "<package>" }GET /dsh-plugin-updater/api/progressGET|POST /dsh-plugin-updater/api/settingsPOST /dsh-plugin-updater/api/update-batch,body{ "names": ["..."] }(省略则用当前全部可更新项)
适用场景与注意¶
适合:经常从 npm 安装社区 DSH 插件、希望在一个界面里对照 registry、批量维护版本的用户;需要按版本忽略提醒、或希望在页面打开/定时后台静默更新的环境。
注意:
- 插件以当前 DSH 进程权限读写 profile 与
~/.dsh/plugin-updater/settings.json;安装前请检查源码与 MIT 许可证。 - 本地 link、Git、tarball、官方内置 bundle 不会出现在可更新列表的更新目标中,需用各自方式维护。
- 批量更新遇到「需重启」或全局锁文件问题时会在中途暂停,重启或修复后重新批量即可。
常见问题:更新失败 / 需要重启¶
- 提示需要重启 DSH:官方桌面端不允许卸载正在被当前进程加载的插件;重启后再点更新。
- 启动项缺失:早期卸载失败可能已从
dsh.profile.bundles去掉启动行;重启后更新成功会写回,仍缺失可在「插件」页手动重新启用。 - 批量更新中途暂停:第一个需重启项之后的项标记为暂停,重启后重新批量更新。
- pnpm internal error / Broken lockfile:在 profile 目录执行:
pnpm install --lockfile-only --fix-lockfile
完成后重新检查;pnpm 可能同时把相关版本写入 pnpm-workspace.yaml 的 minimumReleaseAgeExclude。
- 刚发布版本更新失败(ERR_PNPM_RESOLUTION_POLICY_VIOLATIONS_UNHANDLED 等):pnpm 11 默认 24 小时新版本等待期;先按上条修锁文件再重试;CLI add 路径会自动把版本加入 minimumReleaseAgeExclude。
- 安装长时间无输出:插件管理器有 10 分钟空闲超时(idleTimeoutMs),超时终止并回滚,可重试或检查网络/registry。
结尾¶
dsh-plugin-updater 把 npm 已装插件的版本对照、单条/批量更新、忽略与自动更新收敛到 DSH Web UI 的三处入口,并与内置 plugin_manager 的 Update 语义对齐,同时区分需重启、启动项缺失与 pnpm 锁文件等失败类型。
- 社区目录:https://www.skillhub.cn/plugins/shehuilaoliumang/dsh-plugin-updater
- GitHub:https://github.com/shehuilaoliumang/dsh-plugin-updater