把44个版本逐个读一遍engines字段,分水岭非常清楚:
| 版本 | engines.node | 发布时间 | 说明 |
|---|---|---|---|
| 0.1.2-alpha.5 | (未声明) | 2026-09-02 | 源码checkout用的就是这一代,实际要求 ^22.19.0 || >=24.0.0 |
| 0.2.1-rc.3 / rc.4 / rc.5 | (未声明) | 2026-10-23 ~ 10-29 | 整条线都没有engines,node 22可以装 |
| 0.2.2-alpha.2起 | >=24.9.0 | 2026-10-27起 | 突然抬高门槛,一直延续到rc.3 |
| 0.2.2-rc.1(latest) | >=24.9.0 | 2026-11-04 | npm i默认装到的就是这个 |
| 0.2.2-rc.3(next) | >=24.9.0 | 2026-11-13 | next通道 |
所以在node 22上:装 @deepseek-ai/dsh(默认latest)会拿到0.2.2-rc.1,撞engines;装 @0.2.1-rc.5 才不会。
EBADENGINE默认只是警告不是硬失败——npm装完可能不报错,但跑起来会因为用到node 24才有的API而崩。所以看到EBADENGINE别当没事。
怎么办,三条路
- 升node:装到24.9.0或更高。这是正路,也是官方口径。
- 钉旧版本:
npm i -g @deepseek-ai/[email protected]。代价是拿不到0.2.2的改动。 - 换node版本管理器:用fnm / nvm建一个24.x环境,只给dsh用,不动系统默认node。多项目并存时这条最省事。
查自己当前版本与装到的版本:
node -v dsh --version npm ls -g @deepseek-ai/dsh --depth=0
如果 dsh --version 直接command not found,先看全局bin在不在PATH里:npm root -g 的上一级才是bin目录,别把 node_modules 当成安装位置。