从源码运行 DeepSeek Harness
适合想检查、修改或贡献 DSH 本身的用户。如果只是正常使用 DSH,npm quick-start 更简单,也更不容易被构建环境卡住。
本页内容
只是想使用 DeepSeek Harness,请运行 npx @deepseek-ai/dsh web。源码运行主要用于开发、排查上游实现、验证 Patch 或参与贡献。
什么时候才需要源码运行
检查实现
需要把 CLI、Provider、插件或 Web UI 的行为追到当前源码。
验证修改
需要修改 DSH 并运行当前本地 checkout,再决定是否提交 Pull Request。
参与上游开发
需要使用仓库自己的构建、类型检查、测试和文档工作流,而不是 npm 打包版本。
当前上游仓库要求
^22.19.0 || >=24.0.0pnpm@11.7.0先确认本地环境:
node --version
pnpm --version
git --version克隆官方仓库
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness如果准备贡献代码,建议创建自己的分支,不要把无关本地改动混进用于复现问题的 checkout。
安装 Workspace 依赖
pnpm install这是 pnpm workspace。不要随意换成一套不同的 npm 安装方式,然后把依赖树差异误判成 DSH 本身的问题。
如果 lockfile、workspace package 或 package metadata 有变化,先重新运行 pnpm install。
构建必要产物
pnpm run build当前源码 CLI 可以直接运行 apps/cli/src/bin.ts,但仍依赖已经构建好的 Typert Host 产物以及前端/客户端 Bundle。新 clone 后必须先完成构建,Web Profile 才能正常启动。
Launcher 不会检查现有前端 Bundle 是否与最新源码一致。拉取更新或修改源码后,如果浏览器表现像旧版本,先重新 build,再排查 Runtime。
从当前 checkout 启动 Web Profile
pnpm dsh web根目录的 dsh script 会用 node --import tsx/esm 启动源码 CLI,并继续传递后面的参数。
调试配置时可以先使用 config dump,查看各层组合后的结果。
pnpm dsh --profile web --dump-default-config
pnpm dsh --profile web --dump-config更新旧 checkout 时避免“新源码 + 旧产物”混用
- 01
更新分支
Fetch/Pull 你确实要测试的上游修改。
- 02
刷新依赖
Lockfile 或 Workspace 变化后运行
pnpm install。 - 03
重新构建
新 clone 后,以及 Host/frontend 产物可能过期时,运行
pnpm run build。 - 04
从同一个 checkout 启动
运行
pnpm dsh web,报告回归问题时记录准确 commit。
常见源码运行问题
新 clone 后立刻出现 module-resolution error
先完整运行 build。源码 runner 仍需要生成/构建后的 Host 产物。
启动明确提示缺少 frontend/client bundle
在仓库根目录运行 pnpm run build 后重试。
Web UI 看起来还是修改前的代码
重新构建。已有旧浏览器 Bundle 不会被 Launcher 自动判定为过期。
pnpm install 和官方文档表现不同
先检查仓库当前 packageManager 与本地 pnpm 版本,不要先改 Workspace 文件。
3080 端口失败
EADDRINUSE 和 Windows 保留端口 EACCES 是启动/端口问题,不是源码构建问题。
只有受限代理网络下 API 请求失败
使用支持环境代理的 Node 版本并查看 代理指南;源码进程会继承启动 Shell 的环境变量。