DeepSeek Harness · failure diagnosis

“missed the module table” — the dsh plugin load failure, explained

client-modules: require("…") missed the module table

A plugin’s client bundle called require() on a module the shell does not provide. dsh does not let plugin bundles require() arbitrary npm packages — it resolves against a module table baked into each shell build.

某插件的 client bundle require() 了一个 shell 不提供的模块。dsh 不允许插件任意 require() npm 包——它只对照烘焙进每个 shell 构建的模块表解析。

Why it happens根因

Almost always one of: (1) the plugin was built against a module the current shell removed or never shipped (the classic case is @deepseek-ai/dsh-client-runtime, retired in favor of @deepseek-ai/dsh-client-store); or (2) a build-time external that drifted. The require is unguarded, so the loader throws and the whole client plugin tree fails.

几乎总是其一:(1) 插件依赖了一个当前 shell 已移除、或从未提供的模块(最典型是 @deepseek-ai/dsh-client-runtime,已被 @deepseek-ai/dsh-client-store 取代);(2) 构建期的 external 漂移。这个 require 没有守卫,加载器一抛,整个客户端插件树跟着挂。

How to fix it怎么修

Run npx dsh-why (read-only, zero-install) to name the plugin, the missing module, and whether the fix is to upgrade the plugin, upgrade/downgrade dsh, or remove the plugin. The known-fix case base also carries a per-module migration recipe.

跑 npx dsh-why(只读、零安装)定位是哪个插件、缺哪个模块,修法是升插件、升/降 dsh 还是移除插件。已知修法案例库还带每个模块的迁移处方。

FAQ常见问题

What does “missed the module table” mean?

A require() named a specifier that is not a seed word of the shell, not a materialized module, and not a registered plugin factory.

How do I fix dsh “Failed to load plugins”?

Run npx dsh-why — it reads your install and tells you exactly which plugin to remove or upgrade.

「missed the module table」是什么意思?

某个 require() 的 specifier 既不是 shell 的 seed 词,也不是已物化模块,也不是已注册的插件工厂。

dsh「Failed to load plugins」怎么修?

跑 npx dsh-why——它读取你的安装,告诉你具体移除或升级哪个插件。