如何安装 DeepSeek Harness:快速上手与源码构建
发布时间:2026-10-06 | 浏览:1
DeepSeek Harness( 它是什么? )一条命令就能装好。本指南先把快速上手完整走一遍,再讲源码构建、首次运行时最容易卡住的几步,以及 v0.1 预览版在自托管方面支持什么、不支持什么。
清单很短。只要有一个较新的 Node.js,一分钟内就能进 Web UI;其余的都可以启动之后再补。
Node.js ^22.19.0 或 >=24
dsh 是 Node 应用。任何满足 ^22.19.0 或 >=24.0.0 的 Node 版本都行;更旧的版本会过不了 engine 检查。
pnpm 11.7.0(仅源码构建)
仓库通过 Corepack 钉定 pnpm 11.7.0。只有源码构建才需要——执行 corepack enable 后会自动使用正确版本。
一个 DeepSeek API 密钥
调用模型时才需要,安装用不到。首次启动后在 Web UI 的 Settings → Models 里填入即可。
macOS、Linux 或 Windows 都行:Node 能跑,dsh 就能跑。Windows 上请用 Node 在 PATH 里的终端。从 0.1.0-rc.8 起,Agent 在 Windows 上还能用原生的持久 PowerShell 工具,不再只有 bash 版。如果不想装 Node,现在有 Windows x64 和 Apple 芯片 Mac 的<a href="/zh/deepseek-harness-desktop" class="text-primary font-semibold hover:underline">官方桌面版</a>可以用。
npx 是官方推荐的快速上手路径:不用克隆、不用构建、不装全局包。它会下载已发布的 @deepseek-ai/dsh 包并在你机器上启动 Web UI 服务。
1 安装 Node.js 从 nodejs.org 或版本管理器(nvm / nvm-windows)安装 Node ^22.19.0 或 >=24.0.0。装完开一个新终端,确保新 Node 已在 PATH 里。
从 nodejs.org 或版本管理器(nvm / nvm-windows)安装 Node ^22.19.0 或 >=24.0.0。装完开一个新终端,确保新 Node 已在 PATH 里。
2 用 npx 运行 dsh 一条命令下载发布包并启动 Web UI 服务。不装全局包、不用克隆、无需任何预先配置。 $ npx @deepseek-ai/dsh web content_copy COPY
一条命令下载发布包并启动 Web UI 服务。不装全局包、不用克隆、无需任何预先配置。
3 浏览器会自己打开 从 0.1.0-rc.8 起,在本机启动时,服务就绪后会自动用默认浏览器打开 Web UI。默认端口 3080;被占用时以 dsh 打印的 URL 为准。加 --no-open 可以只起服务不开浏览器;通过 SSH 启动则只会打印主机 URL——转发后的本地地址归你的 SSH 客户端或编辑器管。 $ http://127.0.0.1:3080 content_copy COPY
从 0.1.0-rc.8 起,在本机启动时,服务就绪后会自动用默认浏览器打开 Web UI。默认端口 3080;被占用时以 dsh 打印的 URL 为准。加 --no-open 可以只起服务不开浏览器;通过 SSH 启动则只会打印主机 URL——转发后的本地地址归你的 SSH 客户端或编辑器管。
4 选择工作区 点击 Choose workspace,添加你启动 dsh 的项目目录并选中它。在这一步完成之前,会话输入框会一直处于禁用状态。
点击 Choose workspace,添加你启动 dsh 的项目目录并选中它。在这一步完成之前,会话输入框会一直处于禁用状态。
5 填入 DeepSeek API 密钥 进入 Settings → Models,输入你的 DeepSeek API 密钥并保存。模型路由立即可用——不用重启服务。其他供应商的接入见模型配置指南。
填入 DeepSeek API 密钥
进入 Settings → Models,输入你的 DeepSeek API 密钥并保存。模型路由立即可用——不用重启服务。其他供应商的接入见模型配置指南。
中途出问题了? 看故障排查指南 →
安装是 dsh 里最小的那一步
DeepSeek Harness 里一切都是插件——模型、工具、技能、会话、沙箱、存储、Agent 循环,连界面也是。所以真正值得问的不是「怎么装」,而是「往里装什么」。我们的目录收录了 5,627 个社区插件、分 12 个类目,每一条都配有自己写的导读、来自其仓库的截图,以及可直接复制的安装命令。
想读代码、魔改 harness、或者对着 monorepo 写插件( apps/ 放 CLI 和 Web 应用, packages/ 放 core、llm、mcp、sandbox 等几十个包),就走源码构建。按官方开发指南,前置条件是:Node 22.19+ 或 24+、 Git 2.26 或更新 、pnpm 11.7.0——钉定在 package.json 里、由 Corepack 提供,所以装依赖前先启用 Corepack。
corepack enable 是最容易被跳过的一步。Corepack 随现代 Node 一起发行,会读取仓库钉定的 pnpm 版本,所以你既不用全局安装 pnpm,也不用跟版本漂移搏斗——一条命令之后, pnpm install 就会用 pnpm 11.7.0 正常工作。构建完成后, pnpm dsh web 启动的是和 npx 路径一模一样的 Web UI,只不过跑的是你本地检出的代码而非发布包。
pnpm install 做的不只是拉包:它会自动配好仓库的 Lefthook git 钩子和合并驱动。动手改代码之前,先跑 pnpm run typecheck 确认检出是健康的——pre-push 钩子跑的也是它,现在通过一次,之后就少一次被拒绝的 push。
接下来的首次运行和快速上手完全相同:等它自动打开打印出的 URL、选工作区、填密钥。如果你构建源码是为了扩展 harness,先看看 插件生态页 里已经有什么——dsh 里万物皆插件,大多数扩展根本不需要碰 harness 源码。
Headless 运行(不带 Web UI)
同一份检出也能驱动一个无浏览器的 Agent。在仓库根目录放一个已被 gitignore 的 .env ,写入 DEEPSEEK_API_KEY=sk-... (走代理的话再加一个可选的 DEEPSEEK_BASE_URL ),然后直接在终端里把任务递给它:
--profile 就是让一套安装跑出多种形态的开关:web profile 是你上面看到的 UI,headless profile 则是这个可脚本化的一次性执行器。0.1.2-alpha.1 把 profile 名单扩到了 SDK 与 ACP——过去承担这些角色的 demo:cordis 与 demo:acp 脚本已从仓库里移除,换成了真正的 profile。 下面的入口模式表格 把它们全列了出来。
关于最初五分钟的四件事,安装命令自己不会告诉你。
工作区就是你启动 dsh 的地方
dsh 进程把启动它的目录当作默认文件系统位置。请在项目根目录启动它,然后把同一个目录添加并选为工作区。
在选定工作区之前,会话输入框是刻意禁用的。这是首次运行最高频的"是不是坏了?"时刻——它没坏。
Agent 可以读写工作区文件、执行命令、分派任务、维护计划。在当前权限策略下需要批准的操作,Web UI 会先来问你——前几次会话请把标签页留在眼前。
现在不带标签的 npx 装的是什么
不带标签直接跑 npx,跟的是 npm 的 latest dist-tag,它现在提供的是 2026 年 9 月 22 日发布的 0.1.5-rc.3;npx @deepseek-ai/dsh@next web 则拿到更新的 0.1.7-rc.2。0.1.5 这条线带来三件事。一是它打开的会话会升级成 V3 日志格式,旧版本读不了,所以别让降级后的安装指向同一个 DSH_HOME。二是它的 base bundle 以 FEEDBACK_ONLY 出厂会话遥测,除非设了 DSH_TELEMETRY_DISABLED,否则提交 /feedback 就会上传相关的会话记录。三是每一次发往 DeepSeek 官方 API 的请求都会附带你已启用插件包的名称和版本——这是模型输入之外的元数据——除非 profile patch 在 plugin-package-inventory-deepseek 这一行上设了 enabled: false。
DeepSeek Harness 于 2026 年 8 月 13 日以 v0.1 开发者预览版 发布(npm 的 latest 现在是 2026 年 9 月 22 日发布的 0.1.5-rc.3,0.1.7-rc.2 在 next 上,预览线则在 alpha 上),团队的警告非常直白:迭代很快, 「一定会有破坏兼容性的变更」 。命令、配置、行为都可能在版本之间变化。如果昨天还好好的东西今天坏了,重跑一次 npx @deepseek-ai/dsh web 就能拿到最新发布包—— 故障排查页 收录了那些反复出现的翻车模式。
从 0.1.2-alpha.1 起, dsh 是唯一受支持的启动器,而一个 profile 就是一摞有序的插件 bundle 补丁层,压在你自己的覆盖层之下。SDK 和 ACP 现在都是 profile,不再是各自独立的可执行文件。
调用命令时所在的目录就是默认的工作区根。 web 、 headless 、 sdk 、 sdk-minimal 、 acp 这五个 profile 首次使用时会依据随包模板自动初始化;除此之外的任何 profile,都得先用 dsh plugin 创建出来才能启动。
启动器只解析自己的参数,其余一律原样交给被启动的 profile。它遇到的第一个不认识的 token 就是应用参数的开头——所以 dsh --profile web --help 打印的是 web 应用的参数,而 dsh --help 打印的是启动器自己的。非法命令、属于另一种模式的选项、配置错误和启动失败,退出码一律非零。
一个 profile 目录里放着 package.json (树外插件依赖,加上带有序 bundle 列表的 dsh.profile 清单)和 cordis.patch.yml ——也就是你自己的补丁层。整棵树在空根之上依次组合:各 bundle 的补丁按序、然后 profile 补丁、然后 $DSH_HOME/cordis.patch.yml 、最后是 --patch 覆盖层。想在不启动的情况下看看组出来的树长什么样,用 --dump-default-config 和 --dump-config 。
从 0.1.2-alpha.4 起,共享的 base bundle 直接把网页工具挂成 fetch 开启,于是 headless 、 sdk 、 acp ,以及任何只声明了 @deepseek-ai/dsh-base 的自定义 profile,都不必再在应用层各写一遍覆盖,就同时继承 web_search 和 web_fetch ——此前 fetch 是各产品各开一次,ACP 干脆被漏掉了。fetch 不走 shell 与文件系统那套审批预设,也不需要逐次批准;它的 provider 只接受匿名的 http: 、 https: 请求,且目标必须通过公网校验——这限制的是请求能去哪里,而不是能带走什么。从 0.1.3-alpha.2 起,这些基于 base 的 profile 还默认改用 read 、 write 、 edit 来编辑文件。独立的 sdk-minimal 树不受影响;需要另一套网络策略的部署,得在后续 bundle 或 profile patch 里把整份 tool-web 配置重写一遍。
Windows:rc.8 起才有了真正的 Shell
发布后的第一周,dsh 在 Windows 上就是一个普通 Node 应用该有的样子——引擎检查通过、 npx @deepseek-ai/dsh web 能起、浏览器会打开——但 Agent 的持久 shell 工具是照 bash 写的。 0.1.0-rc.8 补上了这一块 :新增 @deepseek-ai/dsh-tool-pwsh-persistent ,它是 bash 工具的 PowerShell 镜像——每个 Agent 一个归属隔离的持久 shell,当前目录和导出的环境变量跨调用保留,原生退出码精确透传,超时、取消、重置语义与 bash 版完全一致。
而且不用你自己去挂。minimal Agent 预设现在按平台分流持久 shell 栈——POSIX 上挂 bash 行,win32 上挂 pwsh 行——所以一台机器上永远只有一个持久 shell,而且是对的那个。同一个版本还让 dsh-subprocess 学会了探测和向 Windows 终端发信号,退出的 shell 会被识别出来,而不是挂在那里。
2026 年 9 月 24 日起的新变化:DeepSeek 发布了 桌面版 的 Windows x64 .exe 安装程序,自带 Node.js。如果你想走终端,方法和其他平台一样,还是那条 npx 命令或源码构建:在 Node 已加入 PATH 的终端里运行;源码构建报 pnpm 相关的错,就先执行 corepack enable 。Windows 上常见的问题,比如升级 Node 后 PATH 不对、3080 端口被占用,都整理在 故障排查页 。
给供应商登录:0.1.1 新增
在 0.1.1 之前,dsh 里的凭证只能是一种东西:某个环境变量名背后的值。这恰好能描述一个 API 密钥,却描述不了别的—— openai-codex 唯一的认证方式是 OAuth 登录,因此它此前被从供应商目录里撤了下来,而不是摆在那里坏掉。 0.1.1-rc.1 补上了缺的那一半。 .credentials.yaml 有了版本号和两个区段:references 仍然是环境变量名,records 则装登录产出的东西。启动时会在写锁下就地升级早期的扁平预发布文件,所以你在更早的内部版本里通过 Models 页保存的密钥,不用手工改就继续可用。
新的 dsh-authorization 接缝只管「对话」,从不管协议。知道该怎么拿到自己那份凭证的插件,会按它要写入的键注册一条 flow——键是 <插件>/<id> ,作用域取的是拥有它的那个插件的注册名,而不是供应商名,所以服务于同一个供应商的两个插件不会互读对方的令牌。写入由 flow 自己完成,接缝对同一个键同时只允许一次尝试,而提示会跟着发起它的那个请求走:登录只跟发问的那个页面说话,headless 调用方则提供一个「一律拒绝」的交互。
对今天的你意味着什么: openai-codex 回到了供应商选择器里,而且每一个自带登录的已安装供应商都能登录——发布时是全部 38 个,其中 31 个通过 pi-ai 自己的提示收取密钥,6 个在此之外还提供订阅登录,Codex 则只有订阅登录。还没落地的是浏览器那一侧:Models 页仍然是手填密钥,flow 目前只能在进程内触达;一次尝试不是持久的,登录途中刷新页面就会作废;而「退出登录」只是本地删掉记录,并不会通知签发方。
自托管与 Docker:实话实说
截至 v0.1 预览版, DeepSeek Harness 没有任何官方 Docker 镜像的文档 ,我们也不打算在这里编一份维护者还得替我们兜底的 Dockerfile。受支持的方式很简单,就是自己跑这个 Node 进程:在自己机器上执行 npx @deepseek-ai/dsh web ,或者在你掌控的、装有受支持 Node 版本的服务器上跑同一条命令(或源码构建)。
这没有听上去那么受限。dsh 是一个自包含的 Node 进程,服务一个本地 Web UI——按文档的部署方式,没有数据库要建,也没有配套服务要编排。而且以预览版引入破坏性变更的速度,一份手搓的容器方案大概率几周内就会过期。官方容器支持如果落地,会最先出现在 GitHub 仓库 的文档里;在那之前,部署模式的问题去 GitHub Discussions 和 Discord 问。
对比工具的人值得注意:这种本地优先、自带进程的模式,正是它与 Anthropic 闭源方案的实际差异之一——我们的 dsh 对比 Claude Code 详细梳理了两种路线在开放性、模型和成熟度上的分歧。
关于 Node 版本、API 密钥、Windows 和首次运行怪癖的快问快答。
DeepSeek Harness 免费吗?
harness 本身免费且以 MIT 协议开源——安装、读码、修改都不要钱。模型调用是另一回事:接入 DeepSeek API 密钥后,按 DeepSeek 的 API 费率付费。这个费率在 2026 年 8 月 13 日发布当天上调过(The Next Web 报道了 V4-Pro 的涨价),又在 9 月 10 日 V4.1 Flash 接替 V4 Flash 时下调了。你也可以接入其他供应商的模型,由谁运营谁计费。
DeepSeek Harness 能在 Windows 上跑吗?
能。dsh 是 Node.js 应用,任何有受支持 Node 运行时的系统都能跑——macOS、Linux、Windows 都行。Windows 上请在 Node 已加入 PATH 的终端里执行命令(装完 Node 后新开一个终端通常就够了)。源码构建如果报 pnpm 的错,先执行 corepack enable,让钉定的 pnpm 11.7.0 就位。0.1.0-rc.8 让 Windows 支持有了实质提升:Agent 现在有原生的持久 PowerShell 工具,minimal 预设在 win32 上会自动挂它,而不再是只有 bash 版。
需要哪个版本的 Node.js?
Node ^22.19.0 或 >=24.0.0。更旧的版本会过不了 engine 检查。如果系统 Node 不在范围内,用版本管理器(macOS/Linux 用 nvm,Windows 用 nvm-windows)装一个受支持的版本,开个新终端,重跑安装命令。
安装需要 DeepSeek API 密钥吗?
安装不需要——npx @deepseek-ai/dsh web 不用任何密钥就能把 Web UI 启动起来。但 Agent 真要调用模型之前,你需要一个密钥(或配置好的其他供应商)。在 Settings → Models 里添加即可;路由立即可用,不必重启服务。
dsh 把会话和设置存在哪里?
v0.1 预览版文档没有写死存储位置,而且存储本身就是插件,答案可能在预览版之间变化。与其复述一个会过期的猜测,不如直接查 GitHub 仓库里当前的用户指南(docs/user/guide/index.md),或去 GitHub Discussions 提问。
因为还没选工作区。在你点击 Choose workspace、添加启动 dsh 的项目目录并选中它之前,会话输入框会一直不可用。工作区激活后,输入框解锁,就可以开始会话了。
能不能用登录代替手填 API 密钥?
从 0.1.1-rc.1 起,一半可以。Harness 有了凭证记录存储和授权接缝,供应商插件因此可以跑一条真正的登录流程并保存它的产出——只有 OAuth 一种认证方式的 openai-codex 也因此回到了选择器里。但真正去触发这条登录的浏览器控件还没发布,所以在 Web UI 里你仍然是在 Settings → Models 手填密钥。今天有什么、还缺什么,见上面的登录小节。
想看第一手资料? 阅读官方 README
去 GitHub 获取 DeepSeek Harness
对一个快速迭代的开发者预览版来说,仓库就是唯一的事实来源:README 快速上手、开发指南、每次破坏性变更的发布说明。克隆它、点个 star,有问题就去维护者真正会看的地方提 issue。