DeepSeekDSH
独立社区指南与 DeepSeek 无隶属关系。官方源码快照

从源码运行 DeepSeek Harness

适合想检查、修改或贡献 DSH 本身的用户。如果只是正常使用 DSH,npm quick-start 更简单,也更不容易被构建环境卡住。

本页内容
绝大多数用户不需要源码安装

只是想使用 DeepSeek Harness,请运行 npx @deepseek-ai/dsh web。源码运行主要用于开发、排查上游实现、验证 Patch 或参与贡献。

什么时候才需要源码运行

检查实现

需要把 CLI、Provider、插件或 Web UI 的行为追到当前源码。

验证修改

需要修改 DSH 并运行当前本地 checkout,再决定是否提交 Pull Request。

参与上游开发

需要使用仓库自己的构建、类型检查、测试和文档工作流,而不是 npm 打包版本。

当前上游仓库要求

Node.js^22.19.0 || >=24.0.0
pnpm当前仓库声明 pnpm@11.7.0
Git用于克隆和更新仓库
完整构建首次运行前需要生成 Host 与前端相关产物

先确认本地环境:

node --version pnpm --version git --version
第 1 步

克隆官方仓库

git clone https://github.com/deepseek-ai/deepseek-harness.git cd deepseek-harness

如果准备贡献代码,建议创建自己的分支,不要把无关本地改动混进用于复现问题的 checkout。

第 2 步

安装 Workspace 依赖

pnpm install

这是 pnpm workspace。不要随意换成一套不同的 npm 安装方式,然后把依赖树差异误判成 DSH 本身的问题。

拉取上游更新之后

如果 lockfile、workspace package 或 package metadata 有变化,先重新运行 pnpm install

第 3 步

构建必要产物

pnpm run build

当前源码 CLI 可以直接运行 apps/cli/src/bin.ts,但仍依赖已经构建好的 Typert Host 产物以及前端/客户端 Bundle。新 clone 后必须先完成构建,Web Profile 才能正常启动。

旧构建产物也可能造成误导

Launcher 不会检查现有前端 Bundle 是否与最新源码一致。拉取更新或修改源码后,如果浏览器表现像旧版本,先重新 build,再排查 Runtime。

第 4 步

从当前 checkout 启动 Web Profile

pnpm dsh web

根目录的 dsh script 会用 node --import tsx/esm 启动源码 CLI,并继续传递后面的参数。

不启动 Profile 也能先看组合

调试配置时可以先使用 config dump,查看各层组合后的结果。

pnpm dsh --profile web --dump-default-config pnpm dsh --profile web --dump-config

更新旧 checkout 时避免“新源码 + 旧产物”混用

  1. 01

    更新分支

    Fetch/Pull 你确实要测试的上游修改。

  2. 02

    刷新依赖

    Lockfile 或 Workspace 变化后运行 pnpm install

  3. 03

    重新构建

    新 clone 后,以及 Host/frontend 产物可能过期时,运行 pnpm run build

  4. 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 的环境变量。

下一篇要修改插件组合?
打开插件安装指南 →