SSD Nodes Learn 🎉 VPS $5.50/月〜
ガイド Matt Connor著者 Matt Connor ・更新日 2026-08-21

DeepSeek Harnessのインストールエラーを解決する方法

DeepSeek Harnessの公開ビルドはすべてリリース候補です。dshを0.1.0-rc.7などに固定し、npxキャッシュを削除して、Node.jsに付属するnpmを確認します。

DeepSeek Harness のインストールの実態

DeepSeek Harness のインストールは、次の 1 つのコマンドだけです。npx @deepseek-ai/dsh web。インストーラーはなく、設定するサービスもありません。多くの場合、問題の原因はインストールではありません。バージョン解決が原因です。つまり、@deepseek-ai/dsh のどのビルドを npx がその時点で実行するのか、また使用中の Node.js のバージョンで実行できるのかが問題になります。

以下の内容を左右する重要な点は 2 つあります。1 つ目は、これまで npm に公開された @deepseek-ai/dsh のすべてのバージョンがリリース候補であり、latest タグがそのうちの 1 つを指していることです。2026 年 8 月 18 日時点では 0.1.0-rc.7 で、2026 年 8 月 17 日に公開されています。2 つ目は、プロジェクトの README によると、この harness は developer preview であり、開発が急速に進んでいるため、互換性を壊す変更が行われる可能性があることです。先週動作したフラグが、今週はなくなっていることもあります。上に何かを構築する前に、バージョンを固定してください。

まず用語を説明します。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 日時点で version 0.1.0-rc.7 です。そのため、22 系では Node 22.19.0 以降、または Node 24 以降が必要です。Node 20 は対象外です。

まず、現在の環境を確認してください。

node -v
npm -v

ここが分かりにくい点です。公開済みの @deepseek-ai/dsh package 自体には、engines field がありません。宣言しているのは monorepo のルートだけで、そのルートファイルは npm に公開されません。そのため npm には確認対象がなく、EBADENGINE warning は表示されず、インストールも拒否されません。Node 20 ではインストールが成功したように見えますが、実際の失敗は後で発生します。読み込まれたコードが、実行環境にない構文や API にアクセスした時点で失敗します。最初に読み込まれる module によって最初に失敗する行が変わるため、検索すべき単一の安定した error string はありません。クラッシュの内容ではなく、node -v を確認してください。

Node が古すぎる場合、VPS では nvm (node version manager) を使うのが最も影響の少ない方法です。home directory 配下にインストールされるため、システムの 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 -vv24. から始まる version が表示されるはずです。shell が古い version のままの場合、nvm の shell function が読み込まれていません。新しい login shell を開いて、もう一度実行してください。2026 年 8 月時点では Node 24.19.0 が active LTS (long term support) release です。後述する別の理由からも、こちらを選ぶ方が適しています。

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 はレジストリに再度問い合わせず、単純なパッケージ名に対してその場所にあるものを再利用していました。npm 11.2.0 でこの動作が変わりました。指定が単純な名前またはバージョン範囲の場合、npx はマニフェストを取得します。レジストリから返された tarball と解決結果が一致する場合に限り、キャッシュ済みのコピーを再利用します。

どちらの動作になるかは、Node のリリースによって決まります。Node には特定の npm が組み込まれているためです。

  • Node 20.20.2 には npm 10.8.2 が組み込まれています。
  • Node 22.19.0 には npm 10.9.3 が組み込まれています。
  • Node 22 の最新リリースである Node 22.23.2 には npm 10.9.8 が組み込まれています。
  • Node 24.19.0 には npm 11.17.0 が組み込まれています。

そのため、ハーネスが公式にサポートしている Node 22 系列全体では、11.2.0 より古い npm が使われます。Node 22 では、単純な npx @deepseek-ai/dsh web が数週間前にキャッシュしたリリース候補を実行し続けます。同じコマンドを Node 24 で実行すると、毎回再解決されます。1 つのコマンドに 2 つの挙動があり、どちらの場合も警告は表示されません。ツール自身にバージョンを確認させてください。

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 を表示します。すべてではなくキーで 1 つのエントリを削除する場合は、先に 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 を削除しても恒久的なデータは失われません。ここにはダウンロード済みのパッケージが保存され、ハーネスの状態は $DSH_HOME/profiles/<name> 配下にあり、影響を受けないためです。

正確なリリース候補を固定するにはどうすればよいですか?

-rc.N部分を含む完全なバージョン文字列を指定します。

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

--yesはスクリプトで重要です。指定しない場合、npx は未確認のパッケージをインストールする前にプロンプトを表示し、返答されることのない入力を待機するためです。

正確なバージョンを指定する方法は、処理も最短です。npx は入力した spec 文字列を基にキャッシュディレクトリを決定します。正確なバージョンであれば、その文字列をキャッシュ内に既にインストールされているパッケージ ID と比較し、レジストリへアクセスせずに実行します。npm 11.2.0 以降では、名前だけを指定すると、起動するたびに manifest の取得が発生します。

グローバルインストールでも同じ方法でバージョンを固定でき、短いコマンドを使用できます。

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

@deepseek-ai/dsh@^0.1.0 に一致するバージョンが見つかりません

このパッケージでは、caret または tilde の範囲指定は失敗します。npm install -g @deepseek-ai/dsh@^0.1.0 はエラーコード ETARGET と、行 No matching version found for @deepseek-ai/dsh@^0.1.0. を返します。レジストリに問題はありません。これは semver のルールによるものです。バージョン範囲自体に prerelease が指定されていない限り、バージョン範囲は prerelease バージョンに一致しません。このパッケージで公開されているビルドはすべて -rc.N であり、prerelease です。そのため、^0.1.0 は何にも一致しません。正確なバージョンを指定してください。

このルールには便利な副作用もあります。範囲指定では新しいリリース候補へ移行しないため、中途半端に固定された状態を考慮する必要がありません。正確なバージョンを使用しているか、移動するタグを使用しているかのどちらかです。

npx と dsh のグローバルインストールはどちらを使うべきですか?

最初に試すなら npx を使います。残るのは、削除方法が分かっているキャッシュディレクトリだけだからです。再起動後も動作させる必要があるものには、バージョンを固定したグローバルインストールを使います。たとえば、VPS で実行し続けるコーディングエージェントが該当します。

同じサーバーで両方を使うと、結果が一致しないことがあります。両方を比較してください。

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

which dsh グローバルインストールが成功した直後に何も見つからない場合、ほとんどは npm のグローバル bin ディレクトリが PATH にないことが原因です。npm prefix -g を実行して root を表示し、その配下の bin フォルダーにバイナリが配置されます。

セキュリティ上の注意点があります。npx は新しいものを解決するたびに registry からコードを取得して実行します。サーバーでは、これは理論上の問題ではなく、実際の攻撃面になります。バージョン固定は対策の一部です。残りの対策については、npm のサプライチェーン攻撃がサーバーに到達する仕組みを参照してください。

再現性における開発者プレビューの意味

0.1.0-rc.6 は 13 August 2026 に公開され、0.1.0-rc.7 は 17 August 2026 に公開されました。間隔は 4 日です。このペースでは、1 か月前に書いた手順が、現在は存在しないコマンドラインを説明している可能性があります。このページも例外ではありません。自分のメモを含め、記録するすべてのバージョン情報に日付を付けてください。

プレビューを安定して扱うには、2 つの習慣が役立ちます。すべてのコマンドとスクリプトで正確なバージョンを固定し、サーバーを再構築しても同じハーネスが生成されるようにします。次に、ガイドではなく、固定したビルドのヘルプ出力を確認します。

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 のプロファイルは、初回使用時に同梱テンプレートから自動的に作成されます。このディレクトリには、ハーネスが API key、model、endpoint の設定を読み込む場所でもあります。そのため、バージョンの固定と動作する設定は、別々に正しく整える必要があります。組み込みバンドルは、現在実行中の dsh のインストールから解決されます。つまり、固定するバージョンを変更すると、これらのバンドルも変わります。外部プラグインは動作が異なります。プラグインはプロファイルディレクトリに保存され、dsh plugin --profile <name> add <package> は引数を pnpm に渡してインストールします。そのため、PATH に pnpm が必要です。pnpm がない場合は、dsh がそのことを明確に表示します。プロファイル独自の package.json がプラグインのバージョンを固定するため、完全な固定には 1 ファイルではなく 2 ファイルが必要です。

この分離は、サーバー上で Python ツールを分離環境に保持する方法を使っていれば、なじみのあるものです。ツール本体と追加する要素は、別々の場所で固定します。ハーネスが起動した後は、通常、次の問題はバージョンではなくネットワークです。ここでは、リモート VPS から dsh Web UI に接続する方法と、詳しい手順を説明する VPS に DeepSeek Harness をインストールするが役立ちます。

実際に表示される引数エラー

これらは CLI 自体のパーサーが出力するため、release candidate 系列全体で内容が安定しており、それぞれが正確な問題を示します。

error: --profile <name> is required

サブコマンドも profile も指定せずに npx @deepseek-ai/dsh を実行しました。サブコマンドなしのコマンドは profile を起動するため、名前が必要です。dsh web--profile を取らないサブコマンドです。付属の web profile を自動的に起動するためです。

error: --patch needs a path

--patch の後に何も指定されていません。--patch は繰り返し指定でき、指定するたびに 1 つのファイルパスを取ります。

error: --dump-config and --dump-default-config are mutually exclusive

どちらか 1 つを選択してください。--dump-default-config は付属の bundle 層を出力し、--patch は受け付けません。--dump-config は profile 用に合成された設定を出力します。どちらも出力後、harness を起動せずに終了するため、新しい release candidate で何が変更されたかを安全に確認できます。

error: plugin needs pnpm arguments to forward (e.g. add <package>)

dsh plugin --profile <name> に渡す引数がありません。このサブコマンドは profile が存在しない場合に初期化し、その後のコマンドラインを pnpm に渡すため、add @scope/dsh-plugin-example のような引数が必要です。

FAQ

DeepSeek Harness にはどの Node.js バージョンが必要ですか?

リポジトリのルート package.json には ^22.19.0 || >=24.0.0 が宣言されており、2026 年 8 月 18 日に確認した値は 0.1.0-rc.7 です。そのため、Node 22 系では Node 22.19.0 以降、または Node 24 以降が必要です。Node 20 は動作しません。公開 npm パッケージには独自の engines フィールドがないため、npm は警告もインストールのブロックも行わず、実行時に失敗します。最初に node -v を確認してください。Node 24 は npm 11 を同梱しており、npx によるバージョン再利用の問題も修正されているため、こちらが適しています。

キャッシュされた dsh ではなく、最新の dsh を npx で使用するにはどうすればよいですか?

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 は No matching version found for @deepseek-ai/dsh@^0.1.0. という行を含むエラーコード ETARGET を返します。公開されているビルドはすべて 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 をガイドではなく確認してください。自分のメモには日付も記録し、どの程度古くなったかを判断できるようにしてください。