Replies: 1 comment 1 reply
|
核验了一点(对照 main/master HEAD 内置 机制本身确认:npm 11 会修剪 package.json 未声明的包;dsh-app-boot 的 bundled/peer 注入依赖(cordis-plugin-group、dsh-workflow、dsh-invariants、dsh-fs、dsh-subprocess…)不在 dsh 主包 dependencies 里声明,所以在 dsh 全局包目录执行任何 npm install 都会被 prune 掉 → 修复建议排序:
临时逃生:重装 dsh(你已验证有效),或改用 这个值得单独开 issue 修(商店安装脚本 + 宿主隔离两个层面)。需要的话我可以把"插件独立目录"的设计按 #3167 的 capability registry 思路细化。 |
Uh oh!
There was an error while loading. Please reload this page.
Bug 反馈
概述
通过 dsh 安装第三方插件时(如 dsh-cost-meter、dshmarket、dsh-plugin-image-input、dsh-file-drop),npm 会在 dsh 自身的 node_modules 目录内执行 npm install --legacy-peer-deps。此过程中,npm 会删除那些未在 package.json dependencies 中显式声明、但运行时作为 bundled/peer 包必需的核心 @deepseek-ai/dsh-* 包。
这会导致 dsh web 启动失败,报 ERR_MODULE_NOT_FOUND。
环境信息
复现步骤
错误信息
Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/cordis-plugin-group' imported from
C:\Users\Administrator\AppData\Roaming\npm\node_modules@deepseek-ai\dsh\node_modules@deepseek-ai\dsh-app-boot\lib\index.js
code: 'ERR_MODULE_NOT_FOUND'
根因分析
从 npm 调试日志可以看到,插件安装过程中 npm 会修剪它认为"多余"的包:
731 silly REMOVE node_modules/@deepseek-ai/dsh-workflow
732 silly REMOVE node_modules/@deepseek-ai/dsh-timeout
733 silly REMOVE node_modules/@deepseek-ai/dsh-subprocess
...
742 silly REMOVE node_modules/@deepseek-ai/dsh-invariants
743 silly REMOVE node_modules/@deepseek-ai/dsh-fs
...
749 silly REMOVE node_modules/@deepseek-ai/cordis-plugin-group
这些包是由 dsh 的启动系统(dsh-app-boot)作为 bundled/peer 依赖注入的,但未在 package.json 的 dependencies 中声明。npm 的依赖修剪机制将它们视为多余包并删除。
期望行为
安装插件不应删除 dsh 核心包。建议修复方案:
临时解决方案
安装插件后,重新执行:npm install -g @deepseek-ai/dsh@latest
可恢复被删除的包,但每次安装插件后都需重复此操作。
补充信息
All reactions