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

首页/开发者与插件开发/插件结构与清单

engines.dsh 声明过窄会怎样:什么都不会发生

怕自己插件的 engines.dsh 写窄了会被拦,写宽了又怕不兼容。

已核验版本与环境核验日期2026-11-14
宿主
0.1.2-alpha.5
样本
dsh-context 0.84.1(要求 >=0.2.0-rc.2)
核验日期
2026-11-14
先纠正这条选题本身的假设:「声明过窄会被版本门拒绝」在本站实测不成立。所以这一页不是演示「被拒绝」,而是记录「什么都没发生」——后者更危险。

实测三个阶段

阶段预期(社区说法)实测
pnpm安装被拒绝成功,只有peer deps警告
dump-config合成插件留在列表但不加载正常合成 - id: dsh-context 条目,无任何拒绝记录
启动web不运行静默挂起:70秒零输出、进程不退、无报错

那到底该写多宽

  • engines.dsh写什么都不会被拦,所以它的实际作用是「告诉人」而不是「约束机器」。写窄了至少能让维护者看懂你的意图。
  • 真正决定能不能跑的是client.inject。如果你的插件注入客户端包,宿主缺包就直接挂,engines写多宽都救不了。
  • 服务端插件(无client子树)安全得多——本站对照的billion-context只声明node,正常启动。

作为插件作者可以做的一件事

在你的README里明确写出「需要宿主提供哪些inject目标」,比在engines.dsh里写一串版本区间有用得多。因为版本区间不会被校验,而缺包会让人卡死且找不到原因。

作为使用者:装之前算inject差集。本站 /plugins/ 那张核验表就是干这个的——13个插件里4个会静默挂起,都是inject缺包。

怎么算跑通

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

  • 知道engines.dsh写窄不会被任何环节拦
  • 知道真正的失败点是inject缺包
  • 作为作者会在README写清需要哪些inject目标

会失败在哪

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

现象原因怎么办
按社区说法去找「版本门拒绝」的证据这个机制在0.1.2上没有实现别找了;直接核对inject差集

来源

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