DeepSeek Harness 插件加载失败:dsh-sdk-protocol 缺失与平台二进制下载警告
装完 @deepseek-ai/dsh-subagent-codex 插件,运行 dsh web 直接报错退出,提示 Cannot find package '@deepseek-ai/dsh-sdk-protocol'。这个包不在插件自己的 node_modules 里,DSH 也不会自动给你补上。
错误现场:插件加载器在 cordis:include 阶段中断
报错堆栈指向 dsh-app-boot 的插件树加载流程:
Error: dsh: plugin tree failed to load: failed to apply loader entry include (cordis:include): failed to import loader entry subagent-codex (@deepseek-ai/dsh-subagent-codex): Cannot find package '@deepseek-ai/dsh-sdk-protocol' imported from C:\Users\reanod\.dsh\profiles\web\node_modules\@deepseek-ai\dsh-subagent-codex\lib\index.js
关键路径在 C:\Users\reanod\.dsh\profiles\web\node_modules\@deepseek-ai\dsh-subagent-codex\lib\index.js。这个文件里有一条 import 语句引用了 @deepseek-ai/dsh-sdk-protocol,但 Node.js 在 node_modules 树里找不到这个包。
插件的 package.json 里可能把 @deepseek-ai/dsh-sdk-protocol 标成了 peerDependency 或 devDependency,而不是 dependencies。这意味着安装插件时,包管理器不会自动拉取它。DSH 的 Profile 机制把每个 Profile 的 node_modules 隔离开,全局安装的包也帮不上忙。
手动安装 dsh-sdk-protocol 后,出现一堆平台二进制下载警告
进入出错的 Profile 目录,手动补齐依赖:
cd C:\Users\reanod\.dsh\profiles\web
pnpm add @deepseek-ai/dsh-sdk-protocol
安装日志显示:
dependencies:
+ @deepseek-ai/dsh-sdk-protocol 0.0.1-rc.1
但紧接着出现大量 WARN,都是针对 @anthropic-ai/claude-agent-sdk-* 各个平台的二进制包下载失败:
[WARN] GET https://registry.npmmirror.com/@anthropic-ai/claude-agent-sdk-linux-x64-musl/-/claude-agent-sdk-linux-x64-musl-0.3.220.tgz error (23). Will retry in 10 seconds. 2 retries left.
[WARN] GET https://registry.npmmirror.com/@anthropic-ai/claude-agent-sdk-linux-arm64/-/claude-agent-sdk-linux-arm64-0.3.220.tgz error (23). Will retry in 10 seconds. 2 retries left.
[WARN] GET https://registry.npmmirror.com/@anthropic-ai/claude-agent-sdk-win32-arm64/-/claude-agent-sdk-win32-arm64-0.3.220.tgz error (23). Will retry in 10 seconds. 2 retries left.
这些警告持续出现,重试间隔从 10 秒延长到 1 分钟,最后显示 Done in 1.6s using pnpm v11.22.0,安装流程结束。
两类问题性质不同:一个会中断启动,一个不会
dsh-sdk-protocol 缺失是致命错误。DSH 启动时先加载插件树,dsh-subagent-codex 的 index.js 需要 dsh-sdk-protocol 提供的类型定义或运行时工具,找不到就直接抛 ERR_MODULE_NOT_FOUND,整个启动进程退出。这就是为什么 dsh web 跑不起来。
@anthropic-ai/claude-agent-sdk-* 的平台二进制下载失败只是警告。这些包是 @deepseek-ai/dsh-subagent-claude-code 的依赖(如果你同时装了 Claude Code 子代理),或者被 dsh-subagent-codex 间接引用。每个平台(linux-x64、darwin-arm64、win32-arm64 等)都有对应的预编译二进制文件,包管理器在安装时会尝试下载所有平台的包,但只会把当前系统匹配的那个真正用上。
用户当前系统是 Windows x64。日志里出现的平台列表中,只有 win32-x64 是实际需要的,但日志中记录的是 win32-arm64 的下载警告,说明 win32-x64 版本可能没有被触发下载,或者已经存在缓存。其余 Linux 和 macOS 的二进制包对当前环境完全没用,下载失败可以忽略。
为什么镜像源会触发这个下载行为
安装日志中使用了 https://registry.npmmirror.com(淘宝镜像)。这个镜像在下载 @anthropic-ai/claude-agent-sdk 这类带有平台特定二进制分发的包时,可能出现两种情况:
-
镜像未同步完整的平台包列表,导致部分平台返回 404 或连接错误(错误码 23 通常表示下载失败)。 -
pnpm 默认会尝试下载所有可选的平台包,即使其中大部分不会在当前系统使用。
这也是为什么即使有这些警告,安装依然标记为 Done——因为当前系统真正需要的平台包(Windows x64)要么已经下载完成,要么被包管理器判定为可选依赖,跳过不影响主流程。
判断后续操作方向
补齐 dsh-sdk-protocol 之后,dsh web 就能正常启动了。日志末尾的 Done in 1.6s 已经说明整个安装过程结束,不是失败状态。
如果启动后子代理功能无法使用,需要检查系统 PATH 中是否有对应的 CLI 工具:
codex --version
claude --version
子代理插件本身只负责在 DSH 工作流中注册 subagent({ backend: "codex" }) 这样的调用入口,实际执行依赖于外部 CLI。插件加载成功不等于子代理能跑。
如果网络问题导致平台二进制反复重试拖慢安装过程,可以临时切换到官方 npm 源:
pnpm config set registry https://registry.npmjs.org/
再重新添加插件。或者直接移除不需要的 Claude Code 子代理,减少可选依赖的下载量:
dsh plugin --profile web remove @deepseek-ai/dsh-subagent-claude-code
操作清单
-
[ ] 确认报错指向 dsh-sdk-protocol缺失后,进入对应 Profile 目录手动安装:cd ~/.dsh/profiles/web && pnpm add @deepseek-ai/dsh-sdk-protocol -
[ ] 重新运行 dsh web,观察启动是否正常 -
[ ] 如还有 @anthropic-ai/claude-agent-sdk-*下载警告,确认当前系统平台(Windows x64)对应文件未被阻断后忽略 -
[ ] 如需清理这些警告,考虑移除 Claude Code 子代理或切换 npm 源到官方源 -
[ ] 子代理功能需要外部 CLI 支持,单独安装插件不够
FAQ
Q:dsh-sdk-protocol 是干什么的?
A:DSH 子代理与主框架通信的协议定义包,dsh-subagent-codex 和 dsh-subagent-claude-code 都依赖它来注册和调用子代理服务。
Q:为什么 dsh plugin add 没有自动安装这个依赖?
A:该包可能被声明为 peerDependency 而非 dependencies,安装插件时不会自动拉取,需要手动补装。
Q:那些 @anthropic-ai/claude-agent-sdk-* 警告能忽略吗?
A:能。那些是可选平台二进制包,当前系统只需要匹配自己平台的那个,其余下载失败只出警告,不影响 DSH 启动。
Q:错误码 23 是什么意思?
A:pnpm 下载时的网络错误码,常见于镜像源未同步完整文件或网络连接超时。
Q:我装完 dsh-sdk-protocol 后 dsh web 还是报错,怎么办?
A:检查是否还有其他缺失依赖,或尝试 pnpm install --force 强制重装 Profile 下所有包。如果问题持续,先把子代理插件移除,确认基础 DSH 能启动,再逐个加回来定位。
Q:Node.js v25 会不会有问题?
A:DSH 官方推荐 Node.js v22 LTS。v25 存在兼容性风险,如果后续遇到其他模块加载问题,建议降级到 v22 再试。

