You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Error: dsh: plugin tree failed to load: dsh: plugin(s) failed to load: @deepseek-ai/dsh-sandbox-local;
Cordis startup failed because these plugin(s) could not be resolved (see the error(s) logged above)
最小复现(绕开 dsh 启动,直接按 Loader 的解析方式逐个 import 配置中的插件):
import{createRequire}from'node:module';import{pathToFileURL}from'node:url';constreq=createRequire('C:/Users/<user>/.dsh/profiles/web/package.json');// 通过awaitimport(pathToFileURL(req.resolve('@deepseek-ai/dsh-subprocess-local')).href);// 抛错:Duplicate type name 'DSH_STARTUPINFOW'awaitimport(pathToFileURL(req.resolve('@deepseek-ai/dsh-sandbox-local')).href);
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Summary
Windows 上全局安装 dsh 后,
dsh web(以及任何加载dsh-basebundle 的 profile)启动即崩溃。根因是
@deepseek-ai/dsh-win32-process在安装目录中存在两份实例,二者共享被提升到顶层的同一个koffi,各自注册同名原生类型DSH_STARTUPINFOW,第二份抛Duplicate type name。dsh 报出的错误信息指向"插件解析失败",与实际原因(插件 import 时抛异常)不符,排查时容易被带偏。
Reproduction
环境:Windows 11 (10.0.26100),Node v24.14.1,npm 11.11.0,
@deepseek-ai/dsh@0.1.5-rc.2(latesttag),全局装到D:\npm-global。稳定崩溃:
最小复现(绕开 dsh 启动,直接按 Loader 的解析方式逐个 import 配置中的插件):
顺序敏感:
dsh-base的cordis.patch.yml中subprocess(id) 排在sandbox(id) 之前,所以始终是 sandbox 这一侧失败;把 import 顺序调换,报错就转移到 subprocess。这也解释了为什么单看dsh-sandbox-local会误以为它有问题。Current behavior
安装目录下有两份
dsh-win32-process,版本相同(均为0.1.5-rc.3)但未被 npm 提升合并:两份都把
koffi解析到同一个提升后的实例:dsh-win32-process在两个模块实例中各注册一次DSH_STARTUPINFOW。koffi 的类型注册表是进程级、按实例共享的,因此第二次注册抛Duplicate type name。由此产生的连锁:该插件 import 失败 → Cordis 树中对应 entry 拿不到 fiber →
assertEntriesLoaded(dsh-app-boot/lib/index.js:1434)据entry.fiber === void 0判定为"未解析",抛出误导性的could not be resolved。Expected behavior
profile 正常启动,不因同一原生类型被注册两次而失败。
Environment
latest)@deepseek-ai/dsh-base@0.1.5-rc.3@deepseek-ai/dsh-win32-process@0.1.5-rc.3(两份)可能的修复方向
dsh-win32-process在依赖树中只保留一份(提升或overrides),使两侧解析到同一模块实例、只注册一次。dsh-win32-process中对类型注册做幂等保护(注册前先探测,或捕获并忽略重复注册错误)。assertEntriesLoaded目前仅凭entry.fiber === void 0就断言 "could not be resolved"。建议在 import 抛异常时保留并抛出原始异常,当前的措辞会把排查引向 node_modules 布局/符号链接/解析锚点等错误方向。All reactions