SpacemiT K3 安装deepseek harness报错

按照官方手册: SpacemiT 下载完deepseek harness后,运行时报错:

feng@feng-k3:~$ node --expose-internals /home/feng/deepseek-harness-k3/node_modules/.bin/dsh web
dsh web: http://127.0.0.1:3080
dsh web: opening the default browser; pass --no-open to disable
file:///home/feng/deepseek-harness-k3/node_modules/@deepseek-ai/dsh-app-boot/lib/index.js:764
if (hmr === void 0) throw new Error(${binName}: user patch-layer watching requires the Cordis HMR service);
^

Error: dsh: user patch-layer watching requires the Cordis HMR service
at watchUserPatches (file:///home/feng/deepseek-harness-k3/node_modules/@deepseek-ai/dsh-app-boot/lib/index.js:764:28)
at runProfile (file:///home/feng/deepseek-harness-k3/node_modules/@deepseek-ai/dsh/lib/profile-boot-DG5t9aNs.js:264:9)
at async file:///home/feng/deepseek-harness-k3/node_modules/@deepseek-ai/dsh/lib/bin.js:133:3

Node.js v22.22.1

大家有遇到吗?好像部分包的版本不匹配?要如何处理呢?

你的直觉是对的——就是包版本/包完整性问题。我们在 riscv64 机器上把这个 harness 从 npm 源完整装了一遍,定位到了报错的直接原因:harness bundle 的 node_modules 缺了 HMR 相关依赖。

根因

dsh web 启动时,dsh-app-boot 的 watchUserPatches 需要一个 Cordis HMR 服务(热更新服务),它由这两个 npm 包提供:

  • @deepseek-ai/dsh-hmr
  • @deepseek-ai/cordis(~4.1.0)

从 npm 源完整安装 @deepseek-ai/dsh@0.2.2-rc.1 后,依赖树里这两个包(连同 cordis-plugin-loader/include/group/timer 等一族)都会自动带上,dsh web 能越过这个报错继续往下走(我们实测已不再出现 “requires the Cordis HMR service”)。而离线 bundle 里恰恰缺这一族——打包时 node_modules 被裁剪掉了 HMR 部分,native 绑定反而齐全(你的日志里 boot 已经过了 native 加载阶段才在 HMR 这里抛错,说明 platform 部分是好的)。

两条修法(按推荐顺序)

方法 A:往 bundle 里补装缺失依赖(改动最小)

cd ~/deepseek-harness-k3
npm install @deepseek-ai/dsh-hmr@0.2.2-rc.1 @deepseek-ai/cordis@~4.1.0 \
  --no-audit --no-fund
node --expose-internals node_modules/.bin/dsh web

注意版本对齐:bundle 里其他 @deepseek-ai/* 都是 0.2.2-rc.1,HMR 也装这个版本,别用 latest(npm 上 latest 标签指向 0.1.0-rc.6 旧线,next 才是 0.2.2-rc.1——混用必出怪问题,你的"版本不匹配"直觉就来自这里)。

方法 B:整树改用 npm 源安装(最干净,但注意 K3 上有两个坑)

mkdir dsh && cd dsh
npm init -y >/dev/null
npm install @deepseek-ai/dsh@0.2.2-rc.1 --no-audit --no-fund

坑 1:依赖树很大(300+ 包),K3 上拉完要 5~10 分钟,中途 Ctrl-C 会留下"看似装完实际为空"的 node_modules——务必等它跑完。
坑 2:npm 上没有 node-addon-require-builtin-linux-riscv64-gnu 这个 native 绑定包(404 实测),纯 npm 装完会在 “host preparation” 阶段报 No usable native binding found。所以如果走方法 B,需要把 bundle 里对应的 native/平台目录拷回来混用——这也是我们建议优先方法 A 的原因。

另外建议

这个问题值得反馈给 SpacemiT 文档/打包团队:harness bundle 打包时 node_modules 少了 @deepseek-ai/dsh-hmr + @deepseek-ai/cordis 一族,按手册步骤跑必现此错。补上打包清单即可根治。

以上方法 A 的依赖补装在 riscv64 + Node v22 实测有效(HMR 报错消失);K3 bundle 上的最终启动结果麻烦你验证后跟帖一下