DSH plugin 安装卡在依赖:allowBuilds 构建被阻止与依赖未发布的原因与解决
DSH plugin 安装卡在依赖,是两类报错:allowBuilds 提示(pnpm 默认阻止构建脚本,需白名单放行)和 @deepseek-ai/dsh-type-meta 找不到(依赖未发布到 registry,客户端无解)。 前者安全放行即可,后者只能等作者发布、或改装已发布版。按「放行 allowBuilds → 确认依赖已发布 → 改装已发布版」三步处理。
DSH plugin 卡依赖的两个报错原文:allowBuilds 提示与依赖找不到
报错一:allowBuilds 提示。 从 GitHub 装的插件带 prepare 构建脚本,pnpm 默认阻止,安装后打印提示让你编辑 allowBuilds 决定是否放行(来源):
- 你执行
dsh plugin --profile web add git+https://github.com/xxx/repo.git; - pnpm 解析到该包带
prepare构建脚本; - pnpm 默认拦截脚本,安装结束或过程中提示编辑
allowBuilds; - 判断关键:这是安全机制,不是网络错误——脚本确实存在,只是被默认策略挡住。
报错二:@deepseek-ai/dsh-type-meta 找不到。 插件依赖的包解析不到(来源):
- 你安装某插件,pnpm 解析依赖时报该包找不到;
- 去 npmjs.com 搜索确认——包名不存在 = 依赖还没发布到 registry;
- 注意:该包名也可能因官方改名失效(官方已将对应包改名为
@deepseek-ai/dsh-typert-protocol),老插件依赖旧名就会报找不到; - 判断关键:客户端无解,这是发布侧问题。
DSH plugin 卡依赖根因:pnpm 拦构建脚本 + 依赖未发布
两个报错根因不同:allowBuilds 是 pnpm 默认安全策略(构建脚本需白名单),依赖找不到是发布缺失(或包名变更)。 展开说:
- 默认拦截:pnpm 出于安全默认阻止任何包的构建脚本,
allowBuilds是显式放行的白名单机制(来源);DSH 官方仓库自己的pnpm-workspace.yaml也维护着这类构建白名单。 - 发布缺失:插件声明了尚未发布到 registry 的依赖,pnpm 解析时找不到包——这是发布侧问题,用户怎么重装都没用,作者必须先发布(来源)。
- 包名变更:官方改名后旧包名在 registry 上不存在,老版本插件仍引用旧名同样报找不到——需要更新依赖到新包名。
- 两者都会让安装「卡住」,但修法完全不同:白名单改配置,发布缺失只能等。
解决 DSH plugin 卡依赖:安全放行 allowBuilds → 确认已发布 → 改装已发布版
按报错分流:allowBuilds 提示就安全放行;依赖找不到就确认是否已发布;装不动就改装已发布版。 逐步执行:
- 安全放行 allowBuilds——编辑工作区的
pnpm-workspace.yaml,把 pnpm 提示的包名加入白名单:保存后重新执行原安装命令;只放行你信任且确实需要构建的包,不要全量放开(来源);yamlallowBuilds: <提示的包名>: true - 确认依赖是否已发布——搜索报错中的包名:
- 在 npmjs.com 搜该包名,能搜到 → 用
npm view <包名>确认版本与你的插件要求匹配; - 搜不到 → 依赖还没发布,客户端无解,把报错反馈给作者等发布;
- 是官方改名场景 → 更新插件依赖到新包名(
@deepseek-ai/dsh-typert-protocol)后重装;
- 在 npmjs.com 搜该包名,能搜到 → 用
- 改装已发布版——回「设置 → 插件市场」(DSH Plugin Hub)搜索同名插件,换通过验证的已发布版本替代问题包;卸载卡住的安装再装 Hub 版本;
- 验证——重新执行安装命令,依赖解析完成、不再报 allowBuilds 或包找不到即成功;重启宿主确认插件加载。
DSH plugin 依赖问题修复后怎么验证?重装通过、依赖可解析与宿主加载
验证分四关:重跑安装不再出提示、白名单与依赖确认到位、插件进列表、宿主重启加载成功——四关全过才算修好。 按顺序执行:
-
重跑安装命令:
bashdsh plugin --profile web add <包名>不再出现 allowBuilds 提示、不再报
not found,依赖正常解析完成即第一关过。 -
确认白名单写进去了——在改动过的工作区检查:
bashgrep -A2 'allowBuilds' pnpm-workspace.yaml输出里能看到你刚加的包名(值为
true)即放行已生效;没看到就保存后重试安装。 -
确认依赖在 registry 上存在(针对
not found场景):bashnpm view @deepseek-ai/dsh-type-meta version能输出版本号说明依赖已发布;提示 404 说明还在等作者发布;官方改名场景用新包名
@deepseek-ai/dsh-typert-protocol验证。 -
确认插件进了已安装列表:
bashdsh plugin --profile web list列表里出现刚才安装的包名即安装成功。
-
重启宿主确认插件加载:
bashdsh web启动日志无
not found类报错,Web UI 里插件能力可用,即整条链路通。
注意事项:DSH plugin 卡依赖先放行 allowBuilds
- allowBuilds 白名单是安全机制,只放行信任的包,别为省事全量放开。
- 依赖找不到先查 registry 有没有这个包,别反复重装——发布侧问题重装无用。
- 官方改名场景更新包名,老插件依赖旧名会一直报找不到。
- 反复装不动的插件,到 DSH Plugin Hub 换验证过的已发布版是最快路径。
- 其他安装报错可参考安装报错排查。

来源:dshbase 常见问题排错、pnpm 官方设置文档、DeepSeek Harness pnpm-workspace.yaml
常见问题
DSH plugin 报 allowBuilds 提示,是从 GitHub 装的插件带 prepare 构建脚本,pnpm 出于安全默认阻止任何包的构建脚本——只在安装后打印 allowBuilds 提示让你决定是否放行。把 pnpm 提示的包名加进 pnpm-workspace.yaml 的 allowBuilds 再重跑安装即可(来源)。
DSH plugin 报「依赖找不到」说明插件依赖了还没有发布到 npm registry 的包——客户端无解,作者得先把依赖发布上去;也可能是官方改名后旧包名不再存在(官方已把该包改名为 @deepseek-ai/dsh-typert-protocol)。先确认包名在 npmjs.com 上是否存在,再决定等发布还是更新包名。
安全放行 DSH plugin 的 allowBuilds:在仓库/插件工作区的 pnpm-workspace.yaml 里给 allowBuilds 加白名单条目:把 pnpm 提示的包名写进 allowBuilds 的 map(值填 true 或依赖策略),保存后重新执行安装命令;只放行你信任、确实需要构建脚本的包,不要全量放开(来源)。
DSH plugin 卡在依赖没发布时,改装已发布的版本:回 DSH Plugin Hub 插件市场选通过验证的发布版替代问题包;如果目标插件只有一个未发布依赖的 git 版本,就先等作者发布依赖,期间别硬装。
相关术语
- allowBuilds
- allowBuilds 是 pnpm 的构建白名单配置,声明哪些包的安装脚本(如 prepare)被允许执行;未列入白名单的包默认被阻止构建。— pnpm 官方设置文档
- 构建脚本(prepare 等)
- 构建脚本是包安装时执行的生命周期脚本(如 prepare 跑构建),pnpm 默认拦截以保证安全,需通过 allowBuilds 白名单显式放行。— pnpm 官方设置文档
- registry
- registry 是 npm 包的公开仓库;「依赖未发布」指插件声明的依赖包还没被发布到 registry,客户端解析不到,只能等作者发布。— dshbase 常见问题排错
- pnpm-workspace.yaml
- pnpm-workspace.yaml 是 pnpm 工作区配置文件,DeepSeek Harness 与插件项目用它声明依赖与 allowBuilds 构建白名单。— DeepSeek Harness 官方仓库
来源
- dshbase 常见问题排错(插件类报错)· dshbase
- pnpm 官方设置文档(allowBuilds 构建白名单)· pnpm
- DeepSeek Harness 仓库 pnpm-workspace.yaml(依赖声明与构建白名单现状)· deepseek-ai