dsh plugin 跟得上新版本吗?DeepSeek Harness 依赖版本、兼容声明与升级判断

插件开发发布于 2026-10-01作者: DeepSeek Plugin 插件市场
DeepSeek HarnessDSH plugin版本兼容依赖版本dsh-tools
dsh plugin 跟不跟得上新版本,看的是它对 @deepseek-ai/dsh-tools 这类宿主提供包的依赖范围,以及包清单里的 dsh.engines.dsh 声明。本文讲清耦合机制、掉队的三条信号(加载失败、能力缺失、设置项消失),以及等更新、换插件、钉版本三种处置。

一个 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 自身提供,插件只声明版本要求(来源)。 这条设计决定了兼容性的判断方式:

  1. 耦合点就在这几个包里。插件注册工具走 dsh-tools 的能力面,运行时机制走 cordis。DSH 迭代时改的是这些包的接口,插件是否受影响,看它有没有踩到被改的那部分。

  2. 作者用版本区间表达「我跟谁兼容」。两种常见写法:

    • 写区间:如 >=0.1.7-rc.2 <0.2.0,既要求不低于某个基线,也限定还在同一个大版本线内——超出区间时,「更早的引擎线装不上这个版本」(来源)。
    • 精确钉死:把 @deepseek-ai/dsh-tools 钉在某一个具体版本上再做验证,好处是结果可复现,代价是 DSH 一动就要跟着发版(来源)。
  3. DSH 基线变化时,作者的常规动作是同步依赖范围。例如把 @deepseek-ai/dsh-tools 从 ^0.1.0-rc.6 提到 ^0.1.1-rc.2 并注明 defineTool API 兼容——这说明同一条插件代码,跨过基线之后是否还能用,取决于被改的接口是否被它用到(来源)。

  4. 能力契约的变化也会造成「能启动但用不了」。工具结果的严格校验(无损 JSON 快照、additionalProperties: false 的 schema 校验、渲染必须返回内容块数组)就是这样一类变更:插件装得上、也能加载,但调用时被校验挡下来(来源)。

结论:判断兼容不要只看「DSH 版本号变没变」,要看变更落在哪个接口上、插件有没有用到它。插件市场把这一步做成了卡片字段:dshTarget 对应插件的 dsh.engines.dsh 声明,verified / unconfirmed 表示是否经社区确认(来源)。

判断 dsh plugin 掉队的三条信号:加载失败、能力缺失、设置项消失

三条信号对应插件四件套里坏掉的不同部件,出现任何一条,先用「停用/卸载这个插件后问题是否消失」做对照,就能确认是不是它(来源)。

  1. 加载失败——依赖与加载层坏了。表现是启动时插件树报错,或 --dump-config 里原本那一层不见了。先按《dsh plugin 报 plugin tree failed to load》读报错链,再看依赖区间是否越界。

  2. 能力缺失——工具契约变了。表现是插件在列表里,但它注册的工具不出现,或者调用时报参数/返回校验错误。对照的是上文第 4 条那种契约变更。

  3. 设置项消失——界面侧契约变了。表现是设置页里它的卡片或命名空间不见了。界面类插件最容易踩这条,因为渲染与面板接口随 DSH 迭代变化最快。

用一个判断把兼容问题和安装问题分开:

bash
dsh --profile web --dump-config | grep -n "# =="

出现 # == <包名> 说明加载层还在,问题更可能在版本契约上;没有这一层,就属于安装环节,先查包是否声明 dsh.bundle、再查安装是否真的完成——「装了没生效」与「装了不兼容」是两类事。

dsh plugin 掉队了怎么处理:等更新、换同类插件,还是钉住 DSH 版本

三条路的取舍标准是「你是要持续跟进 DSH,还是要立刻恢复可用」:等更新保住跟进节奏,钉版本立刻恢复但会冻结本体,换插件通常在两者之间(来源)。

  1. 等作者更新——先确认他还在动。看仓库最近更新时间、有没有同类 issue、有没有为新 DSH 版本发过版。这属于用信任信号做的判断,逐项对照见《dsh plugin 值不值得装?》。如果最近更新时间已经明显落后于 DSH 的迭代节奏,别把等待当方案。

  2. 换一个同类插件——在 DSH Plugin Hub 的插件市场里按分类找替代品,优先挑 dshTarget 与你的 DSH 版本匹配、状态为 verified、且最近还在更新的那个。这是本文最推荐的处置路径:插件层的替换成本本来就低,不必为了一个插件冻结整个本体。

  3. 钉住 DSH 版本——如果这个插件暂时没有替代品、又必须在用,就把 DSH 停在它支持的版本上:

bash
npm install -g @deepseek-ai/dsh@<版本>

代价是错过本体后续的修复与新特性,做法与版本号读法见《DeepSeek Harness 版本怎么选?》。

  1. 别用改依赖的方式强行兼容。手工放宽插件依赖区间、或在 profile 里塞进第二份核心包,都属于制造新问题:前者让插件跑到未验证的接口上,后者正是《核心包版本漂移》与《同一个核心包装了两份》要处理的局面。遇到这两类现象,先回到「换插件或钉版本」这两条正路上。

DSH plugin 版本兼容的注意事项

一句话总结:兼容看的是宿主提供包的版本区间,掉队看三条信号,处置优先换插件。 七条提醒:

  1. 区分本体与插件:本篇讲插件的兼容判断;DSH 本体的版本号、rc 与锁定安装见《DeepSeek Harness 版本怎么选?》;
  2. dshTarget 为空不代表不兼容:只表示没声明,判断要回到依赖区间、最近更新时间与 issue 反馈;
  3. 一次只动一类:升 DSH 与升插件不要同时做,否则出问题时无法归因;
  4. 升级前记一份快照:把 DSH 版本号与 profile 的依赖清单各记一行,事后对照就能定位是哪一侧变了;
  5. 先对照再回滚:--dump-config 里层还在就先怀疑版本契约,层不在就先怀疑安装——别一上来就回滚;
  6. 优先换插件:插件层替换成本低,为单个插件冻结 DSH 本体通常是下策;
  7. 不要手改依赖区间:绕过作者声明的兼容范围,等于把未验证的接口当稳定接口用。
插件市场

来源:dsh CLI README、DSH Plugin Hub、dsh-reveal-context、dsh-zsxq、dsh-forge、dsh-canary、dsh-wechat-notify

常见问题

DeepSeek Harness 升级后,之前装的 dsh plugin 还能继续跑吗?

DeepSeek Harness 升级后 dsh plugin 能不能继续跑,取决于它依赖的宿主提供包是否还在版本范围内。插件依赖的 @deepseek-ai/dsh-tools、@deepseek-ai/cordis 这类包由 dsh 自身解析、不需要单独安装,插件在 package.json 里对这些包写了版本区间;DSH 跨出这个区间时,插件就可能装上但跑不起来。

dsh plugin 掉队有哪些可观察的信号?怎么判断是插件版本问题?

dsh plugin 掉队最典型的三条信号是:启动时插件树报错或配置层消失、原有工具不再出现或调用被校验拒绝、设置页里它的卡片不见了。三者共同点是「删掉这个插件问题就消失」——用这个对照法能把插件版本问题与网络、端口之类环境问题区分开。

插件的 dshTarget 是空的,还能判断它兼容我的 DeepSeek Harness 吗?

dshTarget 为空不等于一定不兼容,只表示这个 dsh plugin 没有声明目标版本范围,判断要换别的依据:看仓库最近更新时间是否跟得上 DSH 的迭代节奏、看它的依赖区间是否覆盖你当前版本、看 issue 里有没有同类反馈。反之,声明了版本区间的插件就把判断变得很直接,对照版本号即可。

dsh plugin 和新版本 DSH 不兼容时,该等作者更新还是自己钉住版本?

dsh plugin 与新版 DeepSeek Harness 不兼容时,两条路对应两种代价:等作者更新换来的是持续跟进,代价是这段时间插件不可用;钉住 DSH 版本能立刻恢复,代价是你会错过 DSH 本体后续的修复与新特性。如果这个 dsh plugin 只是锦上添花,先换一个还在维护的同类插件通常最省事——反正前两条路的切换成本都不高。

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

来源