SSD Nodes Learn 🎉 VPS $5.50/月起
指南 Matt Connor作者: Matt Connor · 更新于 2026-08-21

DeepSeek Harness安装与版本错误怎么解决

DeepSeek Harness 的每个 npm 构建都是候选发布版。固定精确 dsh 版本,清理 npx 缓存,并检查 Node 自带的 npm,避免 npx 每次解析到不同版本。

DeepSeek Harness 安装的实际含义

DeepSeek Harness 的安装只有一个命令:npx @deepseek-ai/dsh web。它没有安装程序,也没有需要配置的服务。大多数问题其实都不是安装问题,而是版本解析问题:@deepseek-ai/dsh npx 今天决定运行哪个构建版本,以及你的 Node.js 版本是否能够运行它。

下面的内容都基于两个事实。第一,截至目前,发布到 npm 的每个 @deepseek-ai/dsh 版本都是候选发布版,latest 标签指向其中一个版本。截至 18 August 2026,该版本是 0.1.0-rc.7,于 17 August 2026 发布。第二,项目 README 说明该 harness 处于开发者预览阶段,迭代速度很快,并且会进行不兼容的变更。上周可用的标志,本周可能已经被移除。在此基础上构建任何内容前,请固定版本。

先说明几个术语。dsh 是 DeepSeek Harness 命令行工具。Node.js 是它所需的 JavaScript 运行时。npx 是随 npm(node package manager)提供的软件包运行器,可按需获取软件包,而不是将其永久安装。

dsh 需要哪个 Node.js 版本?

仓库根目录中的 package.json 声明了 "engines": {"node": "^22.19.0 || >=24.0.0"};截至 2026 年 8 月 18 日,其版本为 0.1.0-rc.7。因此,应使用 22 系列中的 Node 22.19.0 或更高版本,或者使用 Node 24 及更高版本。Node 20 不受支持。

先检查当前版本。

node -v
npm -v

下面这一点容易让人困惑。已发布的 @deepseek-ai/dsh 软件包自身没有 engines 字段。只有 monorepo 根目录声明了该字段,而根目录文件不会发布到 npm。因此,npm 没有可检查的内容,不会输出 EBADENGINE 警告,也不会拒绝安装。在 Node 20 上,安装过程看起来会成功;但稍后加载的代码使用了当前运行时不支持的语法或 API 时,才会失败。没有一个稳定且唯一的错误字符串可供搜索,因为首先失败的代码行取决于先加载哪个模块。应查看 node -v,不要只看崩溃信息。

如果 Node 版本过旧,nvm(Node 版本管理器)是在 VPS 上影响最小的修复方法,因为它会安装在您的主目录下,不会修改系统 Node。

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.6/install.sh | bash
exec $SHELL -l
nvm install 24
nvm use 24
node -v

node -v 此时应输出以 v24. 开头的版本号。如果 shell 仍报告旧版本,说明 nvm shell 函数尚未加载。请打开新的登录 shell,然后重试。截至 2026 年 8 月,Node 24.19.0 是当前的 LTS(长期支持)版本,选择它还有下面介绍的另一个原因。

为什么 npx 每天运行的版本都不同?

npx @deepseek-ai/dsh web 未指定版本,因此 npx 会向注册表请求 latest 标签当前指向的版本。该标签会变化。当 DeepSeek 发布 0.1.0-rc.8 时,笔记中的命令就会开始运行不同的代码,而且不会提示你,也不会在运行前显示变更日志。

你可以从命令行检查每个变化环节。

npm view @deepseek-ai/dsh dist-tags
npm view @deepseek-ai/dsh versions --json
npm view @deepseek-ai/dsh time --json

dist-tags 会显示 latest 当前指向的位置。2026年8月18日,latestnext 都指向 0.1.0-rc.7,因此没有可切换的独立稳定渠道。versions 列表更值得关注,因为其中存在空缺:0.0.1-rc.10.0.1-rc.20.0.1-rc.50.1.0-rc.20.1.0-rc.30.1.0-rc.60.1.0-rc.7。该序列中缺少某些编号,是因为部分候选版本从未发布。在部署脚本中猜测下一个 -rc.N 会导致失败,因此应读取列表,而不是不断递增编号。

为什么 npx 一直运行旧版本?

这是相反的情况。具体行为取决于你运行的 npm 版本,因此两种说法都可能成立。

npx 使用独立于 tarball 缓存的专用包目录。该目录位于 npm 缓存中的 _npx。打印路径并查看该目录。

npm config get cache
ls "$(npm config get cache)/_npx"

多年来,对于未指定版本的包名,npx 会重复使用该目录中已有的内容,从不重新请求 registry。npm 11.2.0 更改了这一行为。当 spec 是未指定版本的包名或版本范围时,npx 现在会获取 manifest。只有解析出的 tarball 与 registry 刚返回的 tarball 匹配时,才会重复使用缓存副本。

具体行为由 Node 版本决定,因为 Node 会捆绑特定版本的 npm:

  • Node 20.20.2 捆绑 npm 10.8.2。
  • Node 22.19.0 捆绑 npm 10.9.3。
  • Node 22.23.2(最新的 22 版本)捆绑 npm 10.9.8。
  • Node 24.19.0 捆绑 npm 11.17.0。

因此,整个 Node 22 系列(harness 官方支持的版本)都捆绑了低于 11.2.0 的 npm。在 Node 22 上,未指定版本的 npx @deepseek-ai/dsh web 会继续运行几周前缓存的候选发布版本。同一命令在 Node 24 上每次运行都会重新解析。相同的命令会产生两种行为,而且都不会发出警告。使用以下命令查看工具版本:

npx @deepseek-ai/dsh --version

清除 npx 缓存

在 npm 11.2.0 及更高版本中,有专用的子命令。

npm cache npx ls
npm cache npx rm --force

如果不使用 --force,npm 会拒绝清除全部内容,并输出 Please use --force to remove entire npx cache。如果只想按 key 删除一个条目,而不是删除全部条目,请先使用 npm cache npx ls

npm 10 不提供这些子命令,因此需要手动删除该目录。

rm -rf "$(npm config get cache)/_npx"

npm cache clean --force 在这里没有帮助。它只会清除 _cacache(tarball 存储),不会清除 _npx。正因为这两者分开存储,npm 后来才添加了 npm cache npx 子命令。清除 _npx 不会造成永久性影响:其中只保存已下载的包,而 harness 状态位于 $DSH_HOME/profiles/<name> 下,不会受到影响。

如何固定到精确的候选版本?

写出完整的版本字符串,包括 -rc.N 部分。

npx --yes @deepseek-ai/dsh@0.1.0-rc.7 web

在脚本中,--yes 很重要,因为如果没有它,npx 在安装此前未见过的软件包前会显示提示,并等待不会出现的回答。

精确版本也是最快的路径。npx 根据你输入的规范字符串确定缓存目录。对于精确版本,它会将该字符串与缓存中已安装的软件包 ID 进行比较,完全不访问 registry 就直接运行。在 npm 11.2.0 及更高版本中,使用不带版本的名称会导致每次启动都获取一次 manifest。

全局安装也可以用同样的方式固定版本,并提供更短的命令。

npm install -g @deepseek-ai/dsh@0.1.0-rc.7
dsh --version

找不到与 @deepseek-ai/dsh@^0.1.0 匹配的版本

对于此软件包,插入符号或波浪号范围会匹配失败。npm install -g @deepseek-ai/dsh@^0.1.0 返回错误代码 ETARGET,并显示以下行:No matching version found for @deepseek-ai/dsh@^0.1.0. registry 正常。这是 semver 规则:除非版本范围本身指定了候选版本,否则版本范围不会匹配预发布版本。此软件包发布的每个构建版本都是 -rc.N,属于预发布版本,因此 ^0.1.0 不匹配任何版本。请写出精确版本。

这条规则还有一个实用的副作用。由于范围不会自动移到新的候选版本,因此不需要处理半固定状态。你要么使用精确版本,要么使用会变化的 tag。

应使用 npx,还是全局安装 dsh?

首次查看时使用 npx,因为除缓存目录外不会留下其他内容,而且您现在已经知道如何清理该目录。对于重启后仍必须正常工作的工具,请使用固定版本的全局安装,例如 在 VPS 上持续运行的编码代理

如果同一台服务器上两种方式都使用过,它们可能指向不同版本。因此请进行比较。

which dsh
dsh --version
npx @deepseek-ai/dsh --version

which dsh 全局安装成功后仍找不到命令,几乎总是因为 npm 的全局 bin 目录未加入您的 PATH。运行 npm prefix -g 输出根目录;可执行文件位于该目录下的 bin 文件夹中。

还需注意安全问题。npx 每当解析到新内容时,都会从 registry 获取并执行代码。在服务器上,这是真实的安全暴露面,而不是理论风险。固定版本是应对方法之一。其余措施请参阅 npm 供应链攻击如何进入服务器

开发者预览对可复现性的影响

0.1.0-rc.6 于 2026 年 8 月 13 日发布,0.1.0-rc.7 于 2026 年 8 月 17 日发布。两者相隔 4 天。按这个速度,一个月前编写的说明可能描述一个已经不存在的命令行,其中也包括本页面。记录每个版本声明的日期,包括您自己的备注。

有两个习惯可以降低预览版带来的影响。在每个命令和脚本中固定精确版本,这样重建服务器时可以使用相同的 harness。然后读取已固定版本的帮助输出,而不是参考其他指南中的内容。

npx @deepseek-ai/dsh@0.1.0-rc.7 --help
npx @deepseek-ai/dsh@0.1.0-rc.7 web --dump-config

可复现性的另一部分是配置文件。dsh --profile <name> 会加载存储在 $DSH_HOME/profiles/<name> 的配置文件,webheadless 配置文件会在首次使用时根据随附模板自动创建。该目录也是 harness 读取API key、模型和端点设置的位置,因此固定版本和可用配置是需要分别正确设置的两件事。内置 bundle 会从当前运行的 dsh 安装中解析,这意味着更改固定版本也会更改这些 bundle。外部插件的行为不同。它们位于配置文件目录中,dsh plugin --profile <name> add <package> 会将参数转发给 pnpm 以安装这些插件。因此,PATH 中必须包含 pnpm;如果没有,dsh 会明确提示。配置文件自身的 package.json 用于固定这些插件,因此完整的版本固定涉及两个文件,而不是一个文件。

如果您曾在服务器上将 Python 工具置于隔离环境中,就会熟悉这种拆分:工具本身和添加到工具中的内容分别在不同位置固定。harness 启动后,下一个问题通常是网络,而不是版本。此时可以参考在远程 VPS 上访问 dsh Web UI,以及在 VPS 上安装 DeepSeek Harness中的完整操作指南。

实际会遇到的参数错误

这些错误来自 CLI 自带的解析器,因此在整个候选发布版本系列中都保持稳定,并且每条错误都会指出确切的问题。

错误:必须指定 --profile <name>

您在未指定子命令和 profile 的情况下运行了 npx @deepseek-ai/dsh。裸命令会启动一个 profile,因此必须提供名称。dsh web 是不接受任何 --profile 的子命令,因为它会为您启动随附的 web profile。

错误:--patch 需要路径

您指定了 --patch,但其后没有内容。该选项可以重复使用,每次出现都必须提供一个文件路径。

错误:--dump-config 和 --dump-default-config 不能同时使用

请选择其中一个。--dump-default-config 会输出随附的 bundle 层,并且不接受任何 --patch--dump-config 会输出某个 profile 的组合配置。两者都会输出结果并退出,不会启动 harness,因此可以安全地查看新候选发布版本对现有配置做了哪些更改。

错误:plugin 需要要转发的 pnpm 参数(例如 add <package>)

您运行 dsh plugin --profile <name> 时没有提供要转发的内容。缺少 profile 时,该子命令会先初始化 profile,然后将命令行的其余部分交给 pnpm,因此必须提供类似 add @scope/dsh-plugin-example 的参数。

FAQ

DeepSeek Harness 需要哪个 Node.js 版本?

该仓库的根目录 package.json 中声明了 ^22.19.0 || >=24.0.0;截至 18 August 2026,读取到的版本为 0.1.0-rc.7。因此,需要 22 系列中的 Node 22.19.0 或更高版本,或者 Node 24 及更高版本。Node 20 无法运行。已发布的 npm 软件包没有自己的 engines 字段,因此 npm 既不会发出警告,也不会阻止安装,错误会在运行时出现。先检查 node -v。无论如何,Node 24 是更好的选择,因为它捆绑 npm 11,可以修复 npx 重用版本的问题。

如何强制 npx 使用最新的 dsh,而不是缓存版本?

在 npm 11.2.0 及更高版本中,npx @deepseek-ai/dsh 每次运行时都会为未指定版本的软件包名称重新检查注册表。在 Node 22 的所有版本中捆绑的 npm 10 则不会这样做。在 npm 11 中使用 npm cache npx rm --force 清理 npx 缓存,或在 npm 10 中使用 rm -rf "$(npm config get cache)/_npx" 删除该目录。然后使用 npx @deepseek-ai/dsh --version 确认。注意,npm cache clean --force 清理的是另一个目录,无法解决此问题。

为什么安装 @deepseek-ai/dsh@^0.1.0 会失败?

npm 返回错误代码 ETARGET,并显示行 No matching version found for @deepseek-ai/dsh@^0.1.0.。所有已发布的构建版本都是类似 0.1.0-rc.7 的预发布版本,而 semver 范围不会匹配预发布版本,除非范围本身指定了预发布版本。请安装包含 -rc.N 后缀的完整版本字符串。运行 npm view @deepseek-ai/dsh versions --json 查看现有哪些版本,因为版本序列中存在未发布候选版本形成的间隔。

应该全局安装 dsh,还是通过 npx 运行?

npx 适合初步试用,因为除缓存目录外不会保留其他内容。对于必须持续运行的环境,固定版本的全局安装(例如 npm install -g @deepseek-ai/dsh@0.1.0-rc.7)更合适,因为只有在主动修改版本时版本才会变化。如果全局安装后找不到 dsh 命令,说明 npm 的全局 bin 目录不在 PATH 中;npm prefix -g 会输出该目录所在的根路径。

DeepSeek Harness 是否足够稳定,可以基于它进行开发?

根据项目自身的描述,目前还不够稳定。README 声明该项目处于开发者预览阶段,迭代速度很快,并且会出现破坏兼容性的变更。0.1.0-rc.6 和 0.1.0-rc.7 两个候选版本于 2026 年 8 月间隔 4 天发布。请固定一个确切版本,并从该固定版本的构建中读取 --help,不要依赖任何指南中的内容。为自己的记录标注日期,以便判断其内容何时已经过时。