前言¶
DeepSeek Harness(DSH)的插件生态依赖社区目录与 GitHub 上的各类扩展。日常开发里,装完插件后往往还要自己到仓库或 npm 看有没有新版本;官方插件市场 UI 的 README 也写明没有升级操作,已安装插件若仅有新版本可用,多半只能显示状态。官方 @deepseek-ai/dsh-plugin-manager 在 HMR 场景下对已安装包直接返回 already-installed,社区插件常见做法是「去 GitHub 看 → 卸载 → 重装」。下面介绍维护者 YukiSuoug 的 dsh-plugin-updater(分类:联网工具):在插件页增加「更新」标签,复用官方 pnpm 安装管线完成检查与升级,而不是单独实现一套下载器。
这是什么¶
dsh-plugin-updater 面向已在 DSH 中安装社区插件的用户与开发者。浏览器半区在插件页的第三个标签「更新」(排在「已安装 / 发现」之后);宿主半区提供 /dsh-plugin-updater/api/* 等只服务本机的接口。插件当前版本为 0.2.4(MIT 许可证),仓库:https://github.com/YukiSuoug/dsh-plugin-updater,社区目录页:https://www.skillhub.cn/plugins/YukiSuoug/dsh-plugin-updater。
核心功能¶
版本检查¶
按 listBundles().source 区分安装来源,采用不同判定方式:
| 安装来源 | 判定方式 |
|---|---|
注册表包(name / name@^1.2.3) |
依次问 pnpm 配置的源 → registry.npmjs.org → registry.npmmirror.com,读 dist-tags,比 SemVer |
Git 源(git+… / github:…) |
git ls-remote <repo> HEAD 与 pnpm-lock.yaml 里锁定的 commit 比对 |
本地目录(link: / file:) |
无远程版本,标「本地目录」 |
| 压缩包地址 | 无法比对,提供「重装」 |
随 DSH 提供(无 source) |
跳过,写明由 DSH 自己更新 |
注册表结果缓存 5 分钟,落盘在 $DSH_HOME/dsh-plugin-updater/cache.json;重开窗口仍可用缓存。点「刷新」或切换安装源会强制重查。
安装源¶
页面右上角 安装源 下拉与官方「添加插件」语义一致:自动(默认,pnpm 源 → npm 官方 → 中国大陆镜像)、npm 官方源、中国大陆镜像源、宿主 pluginManager.registries() 中的其它源(含私有源)、自定义地址。检查与安装共用同一源;选择保存在浏览器 localStorage(dsh-plugin-updater:source:v1)。
兼容性预检¶
对目标版本判定能否在当前 DSH 上运行,规则与官方 @deepseek-ai/dsh-app-boot 的 evaluatePluginCompatibility 一致:优先 engines.dsh;否则检查 @deepseek-ai/dsh / @deepseek-ai/dsh-* 的 peerDependencies 范围。不兼容的行带标签且「更新」置灰;服务端 /update 也会返回 400。
列表与快捷打开¶
列表按 已启用 / 已停用 分组并带数量;组内按「有更新 > 查询失败 > 可重装 > 已最新 > 本地/随包」排序。每行可按安装方式打开本地 node_modules 真实路径(文件夹图标)或仓库 / npm 外链(经 repository 等字段归一化后的 https 地址)。
一键更新¶
确认后执行:
removeBundle(name) → installBundle('name@<最新>', { enabled: 原启用状态, saveExact: false, registry: 查出该版本的源 })
必须先卸载再安装,以避免 HMR 下 already-installed;失败时插件可能处于未安装状态,弹窗内可重试。一次只允许一个更新任务。
安装与启用¶
推荐与「添加插件」相同:DSH 侧栏 → 插件 → 添加插件,粘贴仓库地址:
https://github.com/YukiSuoug/dsh-plugin-updater
或命令行(<你的 profile> 通常为 desktop 或 web):
dsh plugin --profile <你的 profile> add github:YukiSuoug/dsh-plugin-updater
装完后打开 插件 → 更新 即可使用。
本地改代码开发时,可在 clone 后 npm install && npm run build,再用 dsh plugin --profile <你的 profile> add link:<绝对路径> 链接安装;改 src/ 需重新 build,改宿主侧 index.js 需重启 DSH。
典型用法¶
- 打开 插件 → 更新,查看已安装插件的当前版本与最新版本。
- 若网络或镜像策略需要,在右上角选择 安装源(例如中国大陆镜像源),列表会按新源重查。
- 对有更新且兼容性通过的条目,点 更新,在确认框中核对将使用的源与风险说明,等待卸载 / 安装进度与 pnpm 输出。
- 需要对照源码时,点行右侧图标:本地
link:装法则打开开发目录,远程装法则在浏览器打开归一化后的仓库或 npm 页面。 - 查询 stale 时点 刷新,或带
refresh=1调用状态接口(由界面触发)。
宿主 API 概览(均仅同源可写):
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /dsh-plugin-updater/api/state[?refresh=1][®istry=<url>] |
已安装插件与版本信息 |
| POST | /dsh-plugin-updater/api/update |
{ name } 启动更新任务 |
| GET | /dsh-plugin-updater/api/job?id= |
轮询任务状态 |
| POST | /dsh-plugin-updater/api/cancel |
{ id } 取消 |
| POST | /dsh-plugin-updater/api/open |
{ name } 打开目录或网址 |
适用场景与注意¶
适合经常安装社区 DSH 插件、希望在一处完成版本对比与升级的用户。DSH 生态理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文仅介绍该插件能力。
使用前请注意:
- 插件以当前 DSH 进程权限运行,更新会修改 profile 与依赖;安装前应自行审查源码与 MIT 许可证条款。
- 本地
link:插件无远程版本概念;别名安装(foo@npm:bar@1.2.3)不参与版本比对。 - 注册表查询走 Node
fetch,不读 pnpm 代理;企业代理下可能查不到最新版(安装仍走 pnpm)。 - 第三方插件在 profile 授权文件中的兼容性例外,本插件界面不做判断;已授权但仍标不兼容时,需用「添加插件」手动安装。
Node 引擎要求:>=22.19.0(见 package.json)。
结尾¶
dsh-plugin-updater 把「查新版本 + 换源 + 卸载重装」收成插件页里的一次操作,并沿用官方 plugin-manager 的 inspect、源回退、镜像与失败回滚行为。需要详情与 issue 请见 GitHub:https://github.com/YukiSuoug/dsh-plugin-updater;目录索引:https://www.skillhub.cn/plugins/YukiSuoug/dsh-plugin-updater。