dsh plugin 跟得上新版本吗?DeepSeek Harness 依赖版本、兼容声明与升级判断
一个 dsh plugin 会不会被新版 DeepSeek Harness 甩下,取决于两件事:它依赖的宿主提供包(如 @deepseek-ai/dsh-tools、@deepseek-ai/cordis)写了多宽的版本区间,以及它在包清单里有没有用 dsh.engines.dsh 声明所需版本。 这两件事都能在安装前查到——插件市场把后者显示成卡片上的 dshTarget 与兼容状态;而升级之后出现异常时,也能通过「删掉插件问题就消失」这个对照法,把版本兼容问题和环境问题分开。
DeepSeek Harness 升级后 dsh plugin 还能跑吗:依赖钉在宿主提供包上的机制
插件不把 dsh 整套装进自己的依赖里,而是依赖一组由宿主解析的包:@deepseek-ai/dsh-tools、@deepseek-ai/cordis 这类包由 dsh 自身提供,插件只声明版本要求(来源)。 这条设计决定了兼容性的判断方式:
-
耦合点就在这几个包里。插件注册工具走
dsh-tools的能力面,运行时机制走 cordis。DSH 迭代时改的是这些包的接口,插件是否受影响,看它有没有踩到被改的那部分。 -
作者用版本区间表达「我跟谁兼容」。两种常见写法:
-
DSH 基线变化时,作者的常规动作是同步依赖范围。例如把
@deepseek-ai/dsh-tools从^0.1.0-rc.6提到^0.1.1-rc.2并注明defineToolAPI 兼容——这说明同一条插件代码,跨过基线之后是否还能用,取决于被改的接口是否被它用到(来源)。 -
能力契约的变化也会造成「能启动但用不了」。工具结果的严格校验(无损 JSON 快照、
additionalProperties: false的 schema 校验、渲染必须返回内容块数组)就是这样一类变更:插件装得上、也能加载,但调用时被校验挡下来(来源)。
结论:判断兼容不要只看「DSH 版本号变没变」,要看变更落在哪个接口上、插件有没有用到它。插件市场把这一步做成了卡片字段:dshTarget 对应插件的 dsh.engines.dsh 声明,verified / unconfirmed 表示是否经社区确认(来源)。
判断 dsh plugin 掉队的三条信号:加载失败、能力缺失、设置项消失
三条信号对应插件四件套里坏掉的不同部件,出现任何一条,先用「停用/卸载这个插件后问题是否消失」做对照,就能确认是不是它(来源)。
-
加载失败——依赖与加载层坏了。表现是启动时插件树报错,或
--dump-config里原本那一层不见了。先按《dsh plugin 报 plugin tree failed to load》读报错链,再看依赖区间是否越界。 -
能力缺失——工具契约变了。表现是插件在列表里,但它注册的工具不出现,或者调用时报参数/返回校验错误。对照的是上文第 4 条那种契约变更。
-
设置项消失——界面侧契约变了。表现是设置页里它的卡片或命名空间不见了。界面类插件最容易踩这条,因为渲染与面板接口随 DSH 迭代变化最快。
用一个判断把兼容问题和安装问题分开:
dsh --profile web --dump-config | grep -n "# =="
出现 # == <包名> 说明加载层还在,问题更可能在版本契约上;没有这一层,就属于安装环节,先查包是否声明 dsh.bundle、再查安装是否真的完成——「装了没生效」与「装了不兼容」是两类事。
dsh plugin 掉队了怎么处理:等更新、换同类插件,还是钉住 DSH 版本
三条路的取舍标准是「你是要持续跟进 DSH,还是要立刻恢复可用」:等更新保住跟进节奏,钉版本立刻恢复但会冻结本体,换插件通常在两者之间(来源)。
-
等作者更新——先确认他还在动。看仓库最近更新时间、有没有同类 issue、有没有为新 DSH 版本发过版。这属于用信任信号做的判断,逐项对照见《dsh plugin 值不值得装?》。如果最近更新时间已经明显落后于 DSH 的迭代节奏,别把等待当方案。
-
换一个同类插件——在 DSH Plugin Hub 的插件市场里按分类找替代品,优先挑
dshTarget与你的 DSH 版本匹配、状态为verified、且最近还在更新的那个。这是本文最推荐的处置路径:插件层的替换成本本来就低,不必为了一个插件冻结整个本体。 -
钉住 DSH 版本——如果这个插件暂时没有替代品、又必须在用,就把 DSH 停在它支持的版本上:
npm install -g @deepseek-ai/dsh@<版本>
代价是错过本体后续的修复与新特性,做法与版本号读法见《DeepSeek Harness 版本怎么选?》。
- 别用改依赖的方式强行兼容。手工放宽插件依赖区间、或在 profile 里塞进第二份核心包,都属于制造新问题:前者让插件跑到未验证的接口上,后者正是《核心包版本漂移》与《同一个核心包装了两份》要处理的局面。遇到这两类现象,先回到「换插件或钉版本」这两条正路上。
DSH plugin 版本兼容的注意事项
一句话总结:兼容看的是宿主提供包的版本区间,掉队看三条信号,处置优先换插件。 七条提醒:
- 区分本体与插件:本篇讲插件的兼容判断;DSH 本体的版本号、rc 与锁定安装见《DeepSeek Harness 版本怎么选?》;
dshTarget为空不代表不兼容:只表示没声明,判断要回到依赖区间、最近更新时间与 issue 反馈;- 一次只动一类:升 DSH 与升插件不要同时做,否则出问题时无法归因;
- 升级前记一份快照:把 DSH 版本号与 profile 的依赖清单各记一行,事后对照就能定位是哪一侧变了;
- 先对照再回滚:
--dump-config里层还在就先怀疑版本契约,层不在就先怀疑安装——别一上来就回滚; - 优先换插件:插件层替换成本低,为单个插件冻结 DSH 本体通常是下策;
- 不要手改依赖区间:绕过作者声明的兼容范围,等于把未验证的接口当稳定接口用。

来源:dsh CLI README、DSH Plugin Hub、dsh-reveal-context、dsh-zsxq、dsh-forge、dsh-canary、dsh-wechat-notify
常见问题
DeepSeek Harness 升级后 dsh plugin 能不能继续跑,取决于它依赖的宿主提供包是否还在版本范围内。插件依赖的 @deepseek-ai/dsh-tools、@deepseek-ai/cordis 这类包由 dsh 自身解析、不需要单独安装,插件在 package.json 里对这些包写了版本区间;DSH 跨出这个区间时,插件就可能装上但跑不起来。
dsh plugin 掉队最典型的三条信号是:启动时插件树报错或配置层消失、原有工具不再出现或调用被校验拒绝、设置页里它的卡片不见了。三者共同点是「删掉这个插件问题就消失」——用这个对照法能把插件版本问题与网络、端口之类环境问题区分开。
dshTarget 为空不等于一定不兼容,只表示这个 dsh plugin 没有声明目标版本范围,判断要换别的依据:看仓库最近更新时间是否跟得上 DSH 的迭代节奏、看它的依赖区间是否覆盖你当前版本、看 issue 里有没有同类反馈。反之,声明了版本区间的插件就把判断变得很直接,对照版本号即可。
dsh plugin 与新版 DeepSeek Harness 不兼容时,两条路对应两种代价:等作者更新换来的是持续跟进,代价是这段时间插件不可用;钉住 DSH 版本能立刻恢复,代价是你会错过 DSH 本体后续的修复与新特性。如果这个 dsh plugin 只是锦上添花,先换一个还在维护的同类插件通常最省事——反正前两条路的切换成本都不高。
判断 dsh plugin 是装了没生效还是版本不兼容,先看配置层:跑 dsh --profile <名字> --dump-config,出现 # == <包名> 说明加载层在,问题多半出在版本契约上;如果没有这一层,那是安装环节的问题,先按包是否声明 dsh.bundle 与安装是否完成排查。
相关术语
- @deepseek-ai/dsh-tools
- dsh-tools 是 DeepSeek Harness 提供给插件的宿主侧能力包,插件通过它注册工具。它由 dsh 自身解析、无需单独安装,插件在依赖清单里写版本区间,这决定了插件与 DSH 版本之间的耦合强度。— dsh CLI README
- dsh.engines.dsh
- dsh.engines.dsh 是插件包清单里声明所需 DeepSeek Harness 版本的地方,插件市场据此显示该插件的兼容版本(对应卡片上的 dshTarget)。声明了它,用户就能在安装前直接对照版本号判断能否使用。— dsh-zsxq(dsh.engines.dsh 声明示例)
- peerDependencies 区间
- peerDependencies 表达「这个包由宿主提供、我要求它在某个范围内」。插件把宿主能力包写成形如 >=0.1.7-rc.2 <0.2.0 的区间时,超出区间的 DSH 版本会让它装不上或装上也跑不起来。— dsh-reveal-context(引擎版本线声明示例)
- 兼容状态(compatibility status)
- 兼容状态是插件市场给每个插件标的可用性标记:verified 表示在对应 DeepSeek Harness 版本上经社区确认可用,unconfirmed 表示尚未核实。它与 dshTarget 一起构成安装前的兼容判断依据。— DSH Plugin Hub
来源
- dsh CLI README· deepseek-ai
- DSH Plugin Hub· dshplugin
- dsh-reveal-context(引擎版本线声明示例)· azazo1
- dsh-zsxq(dsh.engines.dsh 声明示例)· zhengjy01
- dsh-forge(harness 基线同步示例)· mkiea
- dsh-canary(依赖钉版示例)· jwilson411
- dsh-wechat-notify(宿主提供包说明)· wssfk12138