「怎么升级 DSH」这件事,看着是个操作问题,其实是**风险归属**问题:升级出问题时,是官方替你兜、插件替你兜,还是你自己兜。这篇文章不谈好不好用,只做横向比较:把三条常见路线摊开,按同一组判据逐条对,最后给出各自最适合的场合 —— 结论不是「选 B」,而是「看你的约束条件落在哪一列」。想先看看生态里还有哪些同类能力可以横向比较,[完整插件清单与汉化避坑指南](https://dpharness.com/top?utm_source=csdn&utm_medium=article) 是一份不错的底表。
先把这次参与对比的插件口径交代清楚:**DSH 插件门控中心**,GitHub Star **102**(站点快照 101),周下载 **3,044**(站点快照 3,795),MIT;仓库原名 `dsh-plugin-hub`,**已改名**为 `dsh-plugin-gating-hub`(旧链接 301 跳转有效),npm 包名是 `@noob-stupid/dsh-plugin-console`。信任档位「**已验证**」(4 天前在 dsh 0.2.0-rc.2 下真实安装成功);安全扫描 🔵「**含敏感能力**」,**涉及外部主机 `gitee.com`**,且**尚无人工评估**。
## 三条路线分别是什么
- **路线 A · 完全交给官方自动更新**:不干预,有新版本就让它升;
- **路线 B · 用版本门禁与升级安全**:升级前做契约预检,升级前建全树回滚点,失败自动回滚;
- **路线 C · 自己手工锁版本或走内网私源**:把版本钉死,或者干脆不让它连外网。
## 一张判据表
| 判据 | A 官方自动更新 | B 版本门禁 + 升级安全 | C 手工锁版 / 内网私源 |
|---|---|---|---|
| 能拦住不兼容版本吗 | 不能,装了才知道 | 能,安装与升级门禁先拦 | 能,但靠人肉判断 |
| 能回滚吗 | 无内建回滚点 | 有全树回滚点、一键回滚、失败自动回滚 | 靠你自己的 git / 快照 |
| 依赖 GitHub 可达性吗 | 升级走官方通道,不直接依赖 | 升级走 registry;但实时搜索依赖 GitHub | 可以完全不依赖 |
| 适合内网离线吗 | 不适合 | 部分适合,四类源都可换内网 | 最适合 |
| 需要重启服务吗 | 需要 | 宿主代码变更需要;客户端变更只需刷新 | 需要 |
这张表想说明的是:**三条路线不存在「更先进」,只有「风险落在谁身上」。**
## 路线 A:省事,但你没有刹车
把升级交出去,最大的好处是省心:不需要知道 `engines` 区间、不需要维护快照,也不会有「我漏了一次预检」的自责。
代价同样清楚:**你手上没有刹车**。没有内建回滚点,版本兼容性判断发生在「装完之后」而不是「装之前」,一旦新版框架载入不了某个插件,你面对的就是一个起不来的服务,而不是一条可以撤销的操作。对于单机、可随时重装的开发环境,这个代价可以接受;对于有别人在用的实例,就很贵。
## 路线 B:刹车和回滚点都在,但你得接受它的边界
这条路线把「升级」拆成了一段可撤销的流程:契约预检 → 全树回滚点 → 在线安装 → 版本校验 → 自动重启,失败则自动把整棵树回滚,界面上还常驻一个「回滚到上一版」按钮。它甚至能守住**不是你升的级** —— 官方桌面更新器或一次手工 `pnpm` 改掉框架后,它靠**环境指纹**发现变更,跑一次只读预检,只在**有硬证据**时才动某一行。
它的短板也同样明确,下面单独列。
## 路线 C:最可控,也最费人
锁版本 + 内网私源是控制力最强的一条路。这个门控中心其实也支持它:安装源(含公司内网私有 registry)、搜索源(URL 模板 + 请求头)、索引源(自建内网索引)、Git 源(含本地 `file://` 裸仓库)**全部可替换**,所以**纯内网 / 完全离线**的机器一样能浏览与安装 —— 采集靠 GitHub Actions 每 6 小时重跑 `build-index`,你只需给仓库打上 `dsh-plugin` 主题,无需申请。
但这条路的人力成本是持续性的:源要自己维护、镜像要自己同步、版本要自己比、事故要自己扛。团队里没人愿意长期做这件事的话,路线 C 通常会在三个月内退化成「谁都不敢升级」。
## 它的真实短板,别只看宣传面
选择路线 B 之前,这几条必须知道 —— 它们不是缺陷,是能力边界:
- **版本约束两边都没声明**:`engines.node` **未声明**,plugin 侧也**未声明** dsh 版本约束(只有 README 口头要求 DSH ≥ 0.1.0-rc.6)。把它装到过旧的框架上,**安装期不会有人拦你**。
- **宿主代码变更必须重启服务**,而面板的重启按钮**只指向官方路径** —— 控制台**绝不杀进程、绝不启进程**,手工重拉会和宿主抢端口。客户端侧的变更才只需刷新页面。
- **静态索引有上限**:每次构建 **500 插件 / 300 技能**,作者得靠 star 上升或等下一个 6 小时 CI 周期才能进索引。
- **实时搜索依赖 GitHub 可达性**(浏览器直连 + 服务端回落),网络黑洞窗口只能稍后重试。
- **版本检测只对 npm 发布的包有效**,技能类仓库没有版本概念。
- **技能可能是「休眠」的**:技能由 `dsh-skill-filesystem` 发现,当前 profile 若没启用它,装好的技能会一直休眠到启用并重启 DSH。
- **它不判断业务正确性**:门禁看版本、声明与契约,不评价插件好不好用、安全不安全。
## 组合怎么搭
实际落地里三条路线经常混用,比较稳的一种搭法是:**用 C 的源策略 + B 的门禁与回滚 + 不依赖 A 的自动升级**。
具体说:安装源换成内网私源或国内镜像,解决可达性;把升级动作交给门禁流程(有回滚点、有契约预检),而不是让它自动发生;而对那些确实需要跟官方走的实例,保留手动触发的官方升级路径,动手前先确认回滚点真的存在。换句话说 —— **可达性用 C 解,风险用 B 兜,节奏自己掌握。**
## 总结
三条路线里,A 省事但没有刹车,C 最可控但最费人,B 提供了刹车与回滚点、代价是你要接受它那几条边界(约束不声明、宿主改动要重启、索引有上限);多数团队最后会用「内网源 + 门禁回滚 + 手动掌握升级节奏」的组合。想做更细的逐个对比,可以参照 [完整插件清单与汉化避坑指南](https://dpharness.com/top?utm_source=csdn&utm_medium=article) 里的整理方式。
## 适合与不适合
**适合**:要在「可控」和「省事」之间找平衡的团队;实例上有人在用、经不起一次起不来的人;以及愿意花半小时把回滚点与源策略配好、换长期安心的人。
**不适合**:只想今天装完插件就用、完全不打算管版本的人 —— 这三条路线你都用不上;单一台随时可重装的玩具实例,官方自动更新就是最省事的答案;完全不接受外部网络请求(含 `gitee.com`)且没人能长期维护私源的环境,扫描档位也不会因为你的顾虑而变化。
标签:dsh-plugin-gating-hub、DeepSeek Harness、版本选型
本文由 DeepSeek Harness Hub 自动整理,数据来源于插件详情页。