跳到正文
MyDSH我的 DSH 实战笔记
English
独立维护,非DeepSeek官方;与mydsh.dev等其他MyDSH站点无关联。

首页/模式与上下文/术语表

术语:版本门(engines.dsh)——一个查不到实现的概念

在插件说明里看到「engines.dsh 不匹配」「版本门拒绝」,不知道这是什么机制。

待实测版本与环境核验日期2026-11-14
实测
profiles/node_modules下223个包,无一在engines里声明dsh
核验日期
2026-11-14

可复制指令

python -c "import json,glob;print(sum(1 for p in glob.glob('*/package.json') if 'dsh' in ((json.load(open(p,encoding='utf-8')).get('engines') or {}))))"

字面定义:插件在 package.json 的 engines.dsh 字段里声明它支持的宿主版本范围;宿主版本不在范围内时,插件留在列表里但不加载。

实测结果:把 ~/.dsh/profiles/node_modules 下223个包的package.json全读一遍,声明 engines.dsh 的包数是0。官方包一个都没声明。

所以在这个版本上,「版本门」作为机制还没有可观察的证据:没有包声明它,也就没有包会被它挡住。本站 /fix/ 里那条「被版本门拒绝」来自社区插件的CHANGELOG,属于公开资料整理,不是我们实测。

那插件版本不兼容怎么办

在这个版本上,实际能观察到的兼容问题来自两处:

  • 宿主engines.node:这是package.json里的node版本要求,0.2.2起是 >=24.9.0。这个是确实生效的。
  • 依赖装不上:插件依赖的包在pnpm安装阶段失败,表现是装的时候就报错,不是装上了不加载。

用法建议

看到「版本门」这类说法时,先问三个问题:哪个文件声明它、宿主在哪段代码里检查、拒绝时表现是什么。三个都答不上来,就先当「社区说法」对待,别写进自己的排查步骤。

怎么算跑通

照着逐条对,全过才算完成。有一条没过,先解决它再往下。

  • 自己跑一遍命令确认是0
  • 知道engines.node与engines.dsh是两件事
  • 没有把「版本门」写进排查步骤而不加限定

会失败在哪

现象 / 原因 / 怎么办,按实际踩到的顺序写。

现象原因怎么办
明明不兼容但没有任何报错这个版本没有版本门机制,插件照常加载按依赖与运行时错误排查,别找「门」

来源

标「已核验」的,来自本站实跑;标「公开资料整理」的,逐条附出处。