dsh 插件目录的 node_modules 是运行必需品:软链共享会让插件全部不激活

环境与安装 · 6 步 / 20 分钟L0整理于 2026-10-13 有效期 30d

7 个自建 dsh 插件共 2402MB,其中 6 个 node_modules 各占 247MB(protobuf 19MB)。关键机制:dsh 插件 import 依赖走裸名,ESM 会 realpath 一次 —— 用 junction 把依赖链进插件目录,ESM 会解掉它、顺着插件真实路径向上找,找不到就报 ERR_MODULE_NOT_FOUND,报错里给出的路径正是插件真实目录。所以每个插件的依赖只能实体拷贝,插件目录的 node_modules 是运行必需品、不是缓存。

DeepSeek Harnessdsh插件依赖node_modulesESMrealpathjunction本地部署排错

这条适用于

版本指纹

dsh(DeepSeek Harness)插件加载机制 / 2026-10-13

具体做法

实测(本机 Windows + DeepSeek Harness 桌面版 0.2.0-rc.2 + Node v24.21.0,2026-10-13):

体积盘点(~/.dsh/plugins):
· dsh-tool-comfyui / dgx-infer / ecom-farm / gzh-publisher / shipin-hao / workbuddy 各自 node_modules = 247MB
· dsh-tool-protobuf = 19MB
· plugins 目录总计 2402MB
ESM 解 junction 的 A/B 复现(隔离目录):
· 在 app/node_modules 里建 junction 指向插件真实目录,depx 只存在于 app/node_modules
· import("plugin") → ERR_MODULE_NOT_FOUND | Cannot find package 'depx' imported from C:\...\exp_link\plugin\index.js
· 报错路径 = 插件真实目录(不是 junction 那条路径)→ 确证 realpath 解链
硬链接方案复现:
· 把 depx 的每个文件用 mklink /H 挂进 plugin/node_modules/depx
· import("plugin") → plugin loaded, depx = depx-HL-OK / RESULT: OK
· src ino = dst ino = 11821949022738774 → 同一 inode,内容只存一份

另一处实测:插件目录里 pnpm 残留(node_modules.del<pid>.removing)与验证环境残骸(.probe.del*)合计 861.6MB,删了不影响运行;其中单个 libreoffice-kit.exe 就有 170.3MB。

失效边界
本结论为本机实测(Windows + dsh 桌面版 0.2.0-rc.2)。「插件自带完整依赖」是 dsh 的插件加载设计,其他版本或换成 CJS 加载可能表现不同。硬链接方案本人只在隔离目录验证通过、未在全部 7 个插件上全量执行,原因见 steps 第 4 条。体积数值随插件数量与版本变化。
← 同名模型多精度副本:白占的 57 个 G改了 OLLAMA_MODELS 也只搬走一半:Ollama 在 C 盘还留 4.35 GiB →

← 返回全部排错方案