DeepSeek Harness の設定:API Key・Base URL・モデル
DeepSeek Harness の接続手順。API Key と Base URL を設定し、プロトコルの選択とファイル読み取りを確認します。
headless プロファイルにカスタムプロバイダーを設定し、DeepSeek Harness(dsh)を BetterToken に接続します。macOS でのテストでは、@deepseek-ai/dsh@0.2.1-rc.2 は次の各組み合わせでテキストリクエストとファイル読み取りツールの呼び出しに 3 回中 3 回成功しました。GPT モデルと Chat Completions、GPT モデルと Responses、Claude モデルと Anthropic Messages、GPT モデルと Anthropic Messages です。
主な設定
| 項目 | 値 |
|---|---|
| API Key | apiKeyEnv で指定した名前の環境変数から読み取る BetterToken API Key |
| Base URL | https://bettertoken.ai/v1 — Chat Completions / Responses |
| Anthropic Messages の Base URL | https://bettertoken.ai(/v1 なし) |
| モデル | YOUR_MODEL_ID |
| 設定ファイル | $DSH_HOME/profiles/headless/cordis.patch.yml(DSH_HOME の既定値は ~/.dsh) |
前提条件
- 公式の rc.2 アップグレード手順で指定されている Node.js 24.9 以降
- BetterToken API Key:登録して取得
- モデル広場からコピーした Model ID
インストール
グローバルインストールせずに、このページでテストしたバージョンを実行します。
npx @deepseek-ai/dsh@0.2.1-rc.2 --helpテスト時の npm の latest タグは、リリース候補版の 0.2.1-rc.2 を指していました。next など、ほかのタグはテストしていません。
手動設定
YOUR_API_KEY を置き換え、API Key を環境変数に設定します。
export BETTERTOKEN_API_KEY="YOUR_API_KEY"~/.dsh/profiles/headless/cordis.patch.yml を作成します。このファイルは Cordis パッチのリストです。2 か所の YOUR_MODEL_ID を同じ正確な Model ID に置き換えてください。
Chat Completions
- id: llm-pi-ai config: providers: bettertoken: api: openai-completions baseURL: https://bettertoken.ai/v1 apiKeyEnv: BETTERTOKEN_API_KEY retryPolicy: mode: normal maxRetries: 2 models: - id: YOUR_MODEL_ID- id: agent-default-model config: provider: bettertoken model: YOUR_MODEL_IDResponses
- id: llm-pi-ai config: providers: bettertoken: api: openai-responses baseURL: https://bettertoken.ai/v1 apiKeyEnv: BETTERTOKEN_API_KEY retryPolicy: mode: normal maxRetries: 2 models: - id: YOUR_MODEL_ID- id: agent-default-model config: provider: bettertoken model: YOUR_MODEL_IDAnthropic Messages
- id: llm-pi-ai config: providers: bettertoken: api: anthropic-messages baseURL: https://bettertoken.ai apiKeyEnv: BETTERTOKEN_API_KEY retryPolicy: mode: normal maxRetries: 2 models: - id: YOUR_MODEL_ID- id: agent-default-model config: provider: bettertoken model: YOUR_MODEL_IDapiKeyEnv に指定するのは環境変数名です。API Key 本体や ${...} 式ではありません。カスタムプロバイダーには api、baseURL、および models 内の 1 件以上のエントリが必要です。各モデルエントリで必須なのは id のみです。すでに llm-pi-ai を設定している場合は、残したいプロバイダーを同じ config にコピーしてください。新しいエントリは既存のエントリを置き換えます。
カスタムプロバイダーの api フィールドで使えるのは、openai-completions、openai-responses、anthropic-messages のみです。Anthropic の Base URL にはサイトのルートを指定します。クライアントが /v1/messages を自動で追加するためです。
モデルにリクエストを送らずに構文を確認するには、npx @deepseek-ai/dsh@0.2.1-rc.2 --profile headless --dump-config を実行します。
接続を確認する
同じターミナルで実行します。
npx @deepseek-ai/dsh@0.2.1-rc.2 --profile headless --json "Reply with only: OK"--json は 1 行につき 1 件の JSON イベントを出力します。終了コードが 0、turn_end.reason が正常終了を示し、最後の final イベントの text が OK であることを確認してください。失敗時にも空の final イベントが出力されることがあるため、イベントの有無だけで判断しないでください。
ファイルアクセスを確認するには、空のディレクトリに sample.txt を作成します。そのディレクトリから、プロンプトを Read sample.txt using a tool. Reply with only its exact contents. に変えて同じコマンドを実行してください。出力に tool_call、ファイルのテキストを含む tool_result、同じ内容の final テキストがあることを確認します。
モデルを切り替える
2 か所の YOUR_MODEL_ID を別の正確な Model ID に変更します。Anthropic Messages 経由の Claude モデルなど、新しいモデルが別のプロトコルを使う場合は、api と baseURL を一緒に変更してください。ゲートウェイが返すモデルの一覧は、DeepSeek Harness のウェブ UI でカスタムプロバイダーの Fetch available models を使って取得できます。テストでは、同じモデル検出サービスが 3 つのプロトコルすべてで BetterToken のモデル一覧を返しました。
よくあるエラー
| 症状 | 確認すること |
|---|---|
MISSING_CREDENTIAL、終了コード 1、ダッシュボードにリクエストなし | プロセスが apiKeyEnv で指定された変数を読み取れていません。dsh を起動するターミナルで変数をエクスポートし、名前のつづりを確認してください。この確認はローカルで行われます。 |
ウェブ UI に保存した Key が headless プロファイルで使われない | headless プロファイルは、起動時の環境、現在のディレクトリの .env、DSH_HOME 内の .env の順にのみ認証情報を読み取ります。 |
404 が返り、リクエストパスの末尾が /v1/v1/messages になる | Anthropic の baseURL の末尾に /v1 が付いています。https://bettertoken.ai を使ってください。 |
| モデルが見つからない | モデル広場から Model ID を再度コピーし、2 か所に同じ値を設定してください。 |
| 失敗後に何度も再試行する | retryPolicy を省略すると、アダプターは既定で 5 回再試行します。例のように maxRetries を明示的に設定してください。 |
| Node.js のバージョンエラー | Node.js 24.9 以降を使ってください。 |
関連ドキュメント
技術的な詳細
テストでの実際のリクエストパスは、3 つの api 値に対応して /v1/chat/completions、/v1/responses、/v1/messages でした。dsh は設定済みのプロバイダーとモデルを使ってセッションタイトルの生成も自動でリクエストするため、1 つのタスクで複数のリクエストが発生することがあります。出力上限の既定値はクライアントが追加しており、たとえばメインリクエストでは 32768 トークンでした。これらの上限は設定ファイルでは指定していません。
モデルエントリの input と contextWindow はクライアントに渡す宣言です。ゲートウェイの制限を問い合わせたり、検証したりするものではありません。画像入力は未テストです。テスト対象は macOS のみです。

