DSH plugin 安装卡在依赖:allowBuilds 构建被阻止与依赖未发布的原因与解决

故障排查发布于 2026-08-28作者: DeepSeek Plugin 插件市场
DeepSeek HarnessDSH pluginallowBuilds构建脚本被阻止依赖未发布
DSH plugin 安装卡在依赖:allowBuilds 提示是 pnpm 默认阻止构建脚本、@deepseek-ai/dsh-type-meta 找不到是依赖未发布。解决:安全放行 allowBuilds → 确认依赖已发布 → 改装已发布版。

DSH plugin 安装卡在依赖,是两类报错:allowBuilds 提示(pnpm 默认阻止构建脚本,需白名单放行)和 @deepseek-ai/dsh-type-meta 找不到(依赖未发布到 registry,客户端无解)。 前者安全放行即可,后者只能等作者发布、或改装已发布版。按「放行 allowBuilds → 确认依赖已发布 → 改装已发布版」三步处理。

DSH plugin 卡依赖的两个报错原文:allowBuilds 提示与依赖找不到

报错一:allowBuilds 提示。 从 GitHub 装的插件带 prepare 构建脚本,pnpm 默认阻止,安装后打印提示让你编辑 allowBuilds 决定是否放行(来源):

  1. 你执行 dsh plugin --profile web add git+https://github.com/xxx/repo.git
  2. pnpm 解析到该包带 prepare 构建脚本;
  3. pnpm 默认拦截脚本,安装结束或过程中提示编辑 allowBuilds
  4. 判断关键:这是安全机制,不是网络错误——脚本确实存在,只是被默认策略挡住。

报错二:@deepseek-ai/dsh-type-meta 找不到 插件依赖的包解析不到(来源):

  1. 你安装某插件,pnpm 解析依赖时报该包找不到;
  2. npmjs.com 搜索确认——包名不存在 = 依赖还没发布到 registry;
  3. 注意:该包名也可能因官方改名失效(官方已将对应包改名为 @deepseek-ai/dsh-typert-protocol),老插件依赖旧名就会报找不到;
  4. 判断关键:客户端无解,这是发布侧问题。

DSH plugin 卡依赖根因:pnpm 拦构建脚本 + 依赖未发布

两个报错根因不同:allowBuilds 是 pnpm 默认安全策略(构建脚本需白名单),依赖找不到是发布缺失(或包名变更)。 展开说:

  1. 默认拦截:pnpm 出于安全默认阻止任何包的构建脚本,allowBuilds 是显式放行的白名单机制(来源);DSH 官方仓库自己的 pnpm-workspace.yaml 也维护着这类构建白名单。
  2. 发布缺失:插件声明了尚未发布到 registry 的依赖,pnpm 解析时找不到包——这是发布侧问题,用户怎么重装都没用,作者必须先发布(来源)。
  3. 包名变更:官方改名后旧包名在 registry 上不存在,老版本插件仍引用旧名同样报找不到——需要更新依赖到新包名。
  4. 两者都会让安装「卡住」,但修法完全不同:白名单改配置,发布缺失只能等。

解决 DSH plugin 卡依赖:安全放行 allowBuilds → 确认已发布 → 改装已发布版

按报错分流:allowBuilds 提示就安全放行;依赖找不到就确认是否已发布;装不动就改装已发布版。 逐步执行:

  1. 安全放行 allowBuilds——编辑工作区的 pnpm-workspace.yaml,把 pnpm 提示的包名加入白名单:
    yaml
    allowBuilds:
      <提示的包名>: true
    
    保存后重新执行原安装命令;只放行你信任且确实需要构建的包,不要全量放开(来源);
  2. 确认依赖是否已发布——搜索报错中的包名:
    • npmjs.com 搜该包名,能搜到 → 用 npm view <包名> 确认版本与你的插件要求匹配;
    • 搜不到 → 依赖还没发布,客户端无解,把报错反馈给作者等发布;
    • 是官方改名场景 → 更新插件依赖到新包名(@deepseek-ai/dsh-typert-protocol)后重装;
  3. 改装已发布版——回「设置 → 插件市场」(DSH Plugin Hub)搜索同名插件,换通过验证的已发布版本替代问题包;卸载卡住的安装再装 Hub 版本;
  4. 验证——重新执行安装命令,依赖解析完成、不再报 allowBuilds 或包找不到即成功;重启宿主确认插件加载。

DSH plugin 依赖问题修复后怎么验证?重装通过、依赖可解析与宿主加载

验证分四关:重跑安装不再出提示、白名单与依赖确认到位、插件进列表、宿主重启加载成功——四关全过才算修好。 按顺序执行:

  1. 重跑安装命令

    bash
    dsh plugin --profile web add <包名>
    

    不再出现 allowBuilds 提示、不再报 not found,依赖正常解析完成即第一关过。

  2. 确认白名单写进去了——在改动过的工作区检查:

    bash
    grep -A2 'allowBuilds' pnpm-workspace.yaml
    

    输出里能看到你刚加的包名(值为 true)即放行已生效;没看到就保存后重试安装。

  3. 确认依赖在 registry 上存在(针对 not found 场景):

    bash
    npm view @deepseek-ai/dsh-type-meta version
    

    能输出版本号说明依赖已发布;提示 404 说明还在等作者发布;官方改名场景用新包名 @deepseek-ai/dsh-typert-protocol 验证。

  4. 确认插件进了已安装列表

    bash
    dsh plugin --profile web list
    

    列表里出现刚才安装的包名即安装成功。

  5. 重启宿主确认插件加载

    bash
    dsh web
    

    启动日志无 not found 类报错,Web UI 里插件能力可用,即整条链路通。

注意事项:DSH plugin 卡依赖先放行 allowBuilds

  1. allowBuilds 白名单是安全机制,只放行信任的包,别为省事全量放开。
  2. 依赖找不到先查 registry 有没有这个包,别反复重装——发布侧问题重装无用。
  3. 官方改名场景更新包名,老插件依赖旧名会一直报找不到。
  4. 反复装不动的插件,到 DSH Plugin Hub 换验证过的已发布版是最快路径。
  5. 其他安装报错可参考安装报错排查
DSH Plugin Hub 插件市场:浏览、搜索与一键安装插件

来源:dshbase 常见问题排错pnpm 官方设置文档DeepSeek Harness pnpm-workspace.yaml

常见问题

DSH plugin 安装报 allowBuilds 提示、构建被阻止是什么原因?

DSH plugin 报 allowBuilds 提示,是从 GitHub 装的插件带 prepare 构建脚本,pnpm 出于安全默认阻止任何包的构建脚本——只在安装后打印 allowBuilds 提示让你决定是否放行。把 pnpm 提示的包名加进 pnpm-workspace.yaml 的 allowBuilds 再重跑安装即可(来源)。

安装报「@deepseek-ai/dsh-type-meta 找不到」是什么原因?

DSH plugin 报「依赖找不到」说明插件依赖了还没有发布到 npm registry 的包——客户端无解,作者得先把依赖发布上去;也可能是官方改名后旧包名不再存在(官方已把该包改名为 @deepseek-ai/dsh-typert-protocol)。先确认包名在 npmjs.com 上是否存在,再决定等发布还是更新包名。

怎么安全放行 allowBuilds?具体加在哪?

安全放行 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 官方仓库

来源