# 开发 需要 Node 24.2+;构建器使用 Node 标准库,无需重新引入图形库。运行 `node build.mjs` 后,`lib/client.js` 通过 DSH 模块加载器引用宿主 React。 大多数测试不依赖 DSH。两个测试文件中的宿主契约场景需要以下 SDK 包: - `@deepseek-ai/dsh-storage-domain` - `@deepseek-ai/dsh-storage-json` - `@deepseek-ai/dsh-tools` - `@deepseek-ai/dsh-client-ui-slots` 可通过声明的开发依赖提供这些包,或将 `DSH_SDK_ROOT` 指向其 `node_modules` 绝对路径。`scripts/sdk.mjs` 只用于测试解析,不复制 SDK 入发布包。SDK 版本必须与 DSH 0.2.0-rc.2 一致,不能悄悄用替身通过契约检查。已提供 package-lock.json,使用 `npm ci --ignore-scripts` 按锁文件安装开发依赖。首版已从公开 registry 干净安装依赖并通过 280 项检查。 后台保留的旧组织兼容性测试使用 React Flow 12.12.0 与 React 19.3.0,已声明为开发依赖,不随插件分发,也不表示新 DSH 前端使用了该图形库。 ```powershell $env:DSH_SDK_ROOT = "" node build.mjs node scripts/check.mjs node --test test/*.test.mjs release-test/*.test.mjs node --test backend/test/*.test.mjs node scripts/release-audit.mjs ``` 部分测试需要本机回环端口、临时目录和子进程。受限运行器若拒绝,应报告环境阻断,不把权限错误当功能失败,也不能跳过后声称全通过。 后端历史测试的合成初始节点在 `backend/test/store-fixture.mjs`;运行时 `server/store.mjs` 必须空启动。发布包不包含 backend 的测试/旧 UI,仅带后台仍引用的 `backend/src/graph-domain.mjs` 共享函数;不复制 `data/work`。 新功能遵守 `ARCHITECTURE.md` 中不变量。变更状态适配器时检查身份、轮次、过期和乱序;变更地图时检查共享移动/撤销/冲突;变更目录时检查来源独立失败与画布保持。无需为纯文案改动重复启动真实应用。