すべてのページ
このページの内容

DeepSeek 0.9.17 で追加

DeepSeek プロバイダーは、自分の DeepSeek API キーで DeepSeek のモデルを実行します。DeepSeek には独自のエージェントがないため、OAR はリレーのマシンで Claude Code を実行し、DeepSeek の Anthropic 互換 API に向けます。エージェントは会話のフォルダーで Claude Code のツールを使って作業し、思考は DeepSeek のモデルが担います。ターンは、キーが属する DeepSeek アカウントに課金されます。

エージェントが Claude Code なので、DeepSeek のチャットには Claude のチャットにある機能のほとんどがあります。4 つのリレーモードすべて、質問カード、プランボード、サブエージェント、軌道修正、バックグラウンドタスクです。全プロバイダーの比較表はプロバイダーの概要にあります。

API キー #

必要なのは DeepSeek API キーだけです。インストールする CLI はなく、Claude アカウントも使いません。最後のサブタブである Settings → Providers → DeepSeek(設定 → プロバイダー → DeepSeek)を開きます。

コントロール 既定値 動作
Enable DeepSeek for New Chat model selection(新しいチャットのモデル選択で DeepSeek を有効にする) キーを保存するとオン New Chat(新しいチャット)に DeepSeek を表示します。キーを保存するまではチェックできません。切り替えるとすぐに適用されます。
キーの入力欄(DeepSeek API key…) 空 自分のキーです。キーを保存すると、入力欄には Saved API key (enter to replace)(保存済みの API キー、入力すると置き換え)と表示されます。保存済みのキーをそのまま使うには空のままにします。
Default model(既定のモデル) deepseek-flash 新しい DeepSeek の会話が最初に使うモデルです。モデルを参照してください。
Commit attribution(コミットの帰属表示) OAR コミットに記載される内容です。コミットの帰属表示を参照してください。
Monthly budget (optional)(月間予算、任意)、Budget currency(予算の通貨) 空、USD ($) 使用状況カードの予算バーです。月間予算を参照してください。
Starting balance (optional)(初期残高、任意) 空 残高バーの測定の基準です。初期残高とチャージを参照してください。
Advanced → Base URL(詳細設定 → ベース URL) 空 DeepSeek 自身のエンドポイントの代わりに使う別のエンドポイントです。別のエンドポイントを参照してください。
Save DeepSeek settings(DeepSeek の設定を保存) 上のすべての項目を保存します。キーを初めて保存すると、DeepSeek も有効になります。
Remove saved key(保存したキーを削除) Remove the saved DeepSeek API key? と確認したあと、キー、検出されたモデル、Select Models(モデルを選択)での選択を削除し、DeepSeek を無効にします。既定のモデルは残ります。
Import usage export(使用状況のエクスポートを取り込む) タブの最下部にあります。使用状況カード用に、DeepSeek の使用状況エクスポートの 2 つのファイル、Amount file(金額ファイル)と Cost file(コストファイル)を取り込みます。使用状況エクスポートの取り込みを参照してください。

入力欄の下の行に、現在の状態が表示されます。

ステータス 意味
Not configured. New conversations use GitHub Copilot. キーが保存されていません。
API key saved but currently disabled. Enable it to allow DeepSeek selection in New Chat. キーは保存されていますが、スイッチがオフです。
DeepSeek is enabled. Select DeepSeek in New Chat to use it. 準備ができています。

あとはいつもどおり会話を始めます。New Chat で DeepSeek を選びます。会話を始めるを参照してください。

キーの保存場所と、キーが見える範囲 #

  • キーは、リレーのマシンにあるリレーのデータベースに保存されます。パネルにキーが再び表示されることはなく、ブラウザーに送られることもありません。設定には、キーが保存済みであることだけが表示されます。
  • キーが届くのは DeepSeek のチャットのワーカーだけです。セッションが tmux の下で動作する場合は、リレーのユーザーだけが読めるファイルを通じて渡されます。ワーカーの中では、キーは DeepSeek のエンドポイント用の Claude Code のトークンになります。
  • キーはベース URL にだけ送られ、それ以外には送られません。送り先は DeepSeek の API、または Advanced で指定したアドレスです。リレー自身が DeepSeek に送るリクエスト(モデル一覧、残高)が失敗した場合、エラーテキストからはキーが取り除かれます。
  • キーは環境変数では設定できません。リレー自身の環境にある DEEPSEEK_API_KEY は引き渡されず、ワーカーにはパネルのキーが渡されます。
  • エージェントはキーを読めます。Claude Code は環境にキーを保持しているため、CLI が保持するキー全般と同じく、エージェントが実行するコマンドからも見えます。リレーは、セッションワーカーが送るすべてのもの(返信、思考、ツールのアクティビティ、サブエージェントのテキスト、質問、タスクの出力)について、保存、表示、ログ出力の前にキーを [redacted] に置き換えます。DeepSeek のワーカーも自身のログで同じことをします。テキストが途中で切られている場合も、そこに含まれるキーの一部は、8 文字以上であれば取り除かれます。変更または削除したキーは、リレーが再起動するまで置き換えの対象のままです。リレーがタスクのファイルから読み取るタスクの出力は、保存されたキーそのものの文字列ではなく、キーや長いトークンの形に基づいて除去されます。これにより、OAR が保存・表示するものにはキーが含まれません。ただしエージェントに対する防御にはなりません。エージェントは出力の前にテキストを変えることも、リレーのローカル API を自分で呼ぶことも、リレーのデータベースを読むこともできます。

キーの保存、変更、削除 #

  • キーは 8 文字以上 512 文字以下で、空白を含めることはできません。そうでない場合、保存は The DeepSeek API key has an invalid format で失敗します。
  • DeepSeek が有効なときにキーを保存すると、DeepSeek にモデルを問い合わせます(モデルを参照)。問い合わせが失敗した場合は通知に理由が表示され、一覧はそこで説明しているとおりの内容に戻ります。
  • 別のキーを保存すると、検出されたモデルが消去され、実行中の DeepSeek のワーカーが停止します。ターンの途中のワーカーも停止するため、キーはターンとターンの間に変更してください。次のメッセージで、新しいキーを使ってワーカーが起動します。
  • メッセージを送信済みの、またはメッセージがキューにある DeepSeek の会話が 1 つでもある間は、キーの削除は Cannot remove the DeepSeek API key while N DeepSeek conversation(s) still exist. Switch DeepSeek off for new conversations instead. で拒否されます。削除できた場合、まだメッセージを送信していない会話は Copilot に戻ります。DeepSeek を無効にしても会話は移動しません。New Chat から DeepSeek がなくなるだけです。

モデル #

モデル 表示名 画像
deepseek-flash(既定) DeepSeek Flash 対応
deepseek-v4-pro DeepSeek V4 Pro 非対応

一覧の取得元。 リレーは、キーを使って DeepSeek の GET /models に問い合わせ、deepseek- で始まる ID を残します。問い合わせるのは、キーを保存したとき、DeepSeek を再び有効にしたとき、ベース URL を変更したとき、そして 🤗 Select Models で Refresh(再読み込み)を押したときです。リクエストは 10 秒で打ち切られます。一覧を読み取るまでは、選択欄に deepseek-flash と deepseek-v4-pro が表示されます。読み取りに失敗した場合や、DeepSeek のモデルが 1 つも含まれていなかった場合は、リレーが持っていた一覧がそのまま残ります。Refresh のあとには、通知に DeepSeek model discovery failed. Cached DeepSeek models were kept: … と表示されます。

表示するモデル。 🤗 Select Models → DeepSeek(モデルを選択 → DeepSeek)で、入力欄に表示するモデルを選びます。💾 Save enabled models(有効なモデルを保存)で選択を保存します。何も選んでいない場合は、すべてのモデルが表示されます。Default model は常に表示され、チェックを外すことはできません。

メッセージごと。 会話はターンとターンの間にモデルを変更できます。切り替えると、次のメッセージの前に、会話の Claude Code が新しいモデルで再起動します。会話はそれまでの続きから進みます。リレーが提供していないモデルは DeepSeek model "…" is not available で拒否されます。

画像。 DeepSeek V4 Pro は画像の入力を受け付けません。OAR が知らないモデルも同様です。こうしたモデルには、添付した画像がすべてファイルパスとして渡されます。会話に画像が含まれるようになると、こうしたモデルへの切り替えは拒否されます。再開する履歴によってリクエストが失敗するためです:DeepSeek V4 Pro takes no images, and this conversation already has some. Stay on DeepSeek Flash, or start a new DeepSeek conversation for DeepSeek V4 Pro.

Reasoning effort #

DeepSeek のモデルは常に思考します。effort の選択欄では、その量を low、high、max から選べます。どのモデルでも同じ 3 つです。既定は high です。

none はありません。Claude Code は DeepSeek に思考をオフにするよう求めることがないため、OAR もこれを提供しません。また DeepSeek では、🧠 ダイアログに Thinking(思考)のコントロールがありません。

effort は Claude Code の起動時に設定されます。そのため effort を変更すると、モデルの切り替えと同じく、ターンとターンの間に会話の Claude Code が再起動します。会話はそれまでの続きから進みます。

ほかの場所から来た effort(たとえば別のリレーのエージェントから)は、DeepSeek のレベルに対応付けられます。none と minimal は low、medium と xhigh は high、ultra と ultracode は max として実行されます。effort のないメッセージや、DeepSeek に対応するレベルのない名前のメッセージでは、会話の effort がそのまま使われます。effort なしで作成した新しい会話は high で始まり、DeepSeek に対応するレベルのない名前で作成した会話は low で始まります。

フォルダーとセッション #

DeepSeek のチャットは、Claude のチャットと同じ、Claude Agent SDK 上に作られたワーカーを、リレーのマシンで実行します。ワーカーは会話ごとに 1 つで、会話の作業フォルダーで動作します。その Claude Code は、Agent SDK に同梱のビルドです。リレーが Claude のチャット用に claude バイナリを設定している場合(CLAUDE_CODE_EXECUTABLE。Claude サブタブから CLI をインストールすると設定されます)は、そのバイナリを使います。Claude Code は、DeepSeek の Anthropic 互換 API である <base URL>/anthropic に向けられます。ワーカーの最初のターンでは、アクティビティ行 Starting Claude Code for DeepSeek (cold start)… が表示されます。

専用の設定フォルダー。 DeepSeek のチャットの Claude Code は、状態、セッション、トランスクリプトを、リレーのデータフォルダーにある deepseek-claude に保存します。このフォルダーはリレーのユーザーだけが読めます。~/.claude(または CLAUDE_CONFIG_DIR)は一切使いません。マシンの Claude のサインイン、グローバル設定、スキル、プラグイン、MCP サーバーには届きません。リポジトリ自身の CLAUDE.md と .claude/ フォルダーは引き続き適用されますが、DeepSeek の通信の向け先を変えることはできません。

Claude のサインインは不要。 ワーカーは Claude Code に DeepSeek のキーを渡し、マシンの Claude の設定は何も渡しません。リレーの環境にある Claude のログイントークンも届きません。OAR はまた、更新の確認やテレメトリーなど、Claude Code 自身による Anthropic への通信もオフにします。

Claude と同じように動くもの。 以下は Claude のチャットと同じランナーから提供され、Claude で説明しているとおりに動作します。

サブエージェントはチャットのモデルのまま。 Claude Code はモデルを別名で呼びます。OAR はこれを固定します。エージェントが「opus」「sonnet」「fable」として要求したサブエージェントや、モデルの指定がないサブエージェントは会話のモデルで、「haiku」として要求したものは DeepSeek Flash で実行されます。タイトルや要約など、Claude Code 自身の小さな呼び出しも DeepSeek Flash に送られます。サブエージェントのバッジには DeepSeek のモデル名が表示されます。モデルを切り替えると Claude Code が再起動し、固定もそれに合わせて変わります。

コンテキストとコンパクト化。 DeepSeek のモデルのウィンドウは 1,048,576 トークンです。入力欄の Context window(コンテキストウィンドウ)チップには、この 1 つのウィンドウが 1.05M として表示されます。選ぶものはありません。🧠 ダイアログには、Claude Code が報告するとおりのコンテキストが表示されます。DeepSeek のチャットは、ダイアログの自動コンパクト化のスライダーで別のウィンドウを設定しない限り、400K トークンでコンパクト化します。これはウィンドウよりかなり小さい値です。DeepSeek のキャッシュが切れたあとのターンで、100 万トークン近くをキャッシュミスの料金で再送しないためです。

添付ファイル。 画像に対応するモデルでは、5 MB までの画像はメッセージの中に入れて送られます。それより大きい画像やその他のファイルは、エージェントが読むパスとして渡されます。画像に対応しないモデルについてはモデルを参照してください。

DeepSeek にないもの。 Claude のプランのメーターと上限での一時停止は適用されません。DeepSeek の返信には使用量の行がありません。コストは使用状況カードに表示されます。

フォルダーの設定で DeepSeek の向け先は変えられない #

フォルダーにある .claude/settings.json や .claude/settings.local.json は、Claude Code の環境変数とキーヘルパーを設定できます。DeepSeek のチャットでは、リレーがそれらより優先してベース URL とキーを固定し、あわせてプロキシ、TLS の信頼、プロバイダー、認証情報の設定も固定します。フォルダーの設定で、Claude Code を別のアドレスに向けることも、キーを別のものに替えることも、独自のプロキシを経由させることもできません。このためにキーをコマンドラインに載せることはありません。

0.9.18 で追加 フックは無効。 DeepSeek のチャットの Claude Code は、すべてのフックとステータスラインをオフにして起動します。DeepSeek 用の設定フォルダーのフックも、チャットのフォルダー(.claude/settings.json、settings.local.json)のフックも、プラグインのフックも実行されません。フックはリレーのユーザーとして、環境にキーがある状態で実行されるためです。フォルダーの SessionStart フックは、リレーがエンドポイントとキーを固定する前に実行されることさえあります。この設定は Claude Code のコマンドラインにあるため、設定ファイルで再びオンにすることはできません。マネージド設定(マシンの管理者の設定)にあるフックは引き続き実行されます。0.9.17 ではこれらのフックが実行されていました。0.9.17 に戻すと再び有効になります。

Claude Code が 1 分以内に固定された設定を受け取らない場合、ターンは何も送信される前に Claude Code did not take the DeepSeek connection settings before the first message, so nothing was sent. で失敗します。メッセージをもう一度送信してください。再び失敗する場合は、リレーを更新し、リレーのログで理由を確認してください。

DeepSeek に送られるもの #

ターン中にエージェントが読み書きするものはすべて DeepSeek に送られます。メッセージ、エージェントが開いたファイル、コマンドの出力、そして Claude Code がすべてのセッションに加えるコンテキスト(フォルダーのパスや CLAUDE.md ファイルなど)です。計測したターンでは、Claude Code が通信したホストは DeepSeek の API だけでした。

コミットの帰属表示 #

選択肢 コミット プルリクエスト
OAR(既定) 末尾に Co-authored-by: Open Agent Relay (DeepSeek Flash) <no-reply@oar.sh> が付きます。括弧内は使用中のモデル名です。 末尾に 🤖 Generated with [Open Agent Relay](https://oar.sh) が付きます。
Off(オフ) 帰属表示の行はありません。 帰属表示の行はありません。

Vanilla(標準)はありません。Claude Code 自身の行では、DeepSeek の作業が Claude の功績になってしまうためです。そのフォルダーの Claude の会話の 🧠 ダイアログで設定したフォルダー自身の選択は、そのフォルダーの DeepSeek のチャットにも適用され、Vanilla は OAR として扱われます。DeepSeek のチャット自身の 🧠 ダイアログには、帰属表示の選択欄はありません。

別のエンドポイント #

Advanced → Base URL には、たとえばプロキシ用に、別のアドレスを指定できます。https://api.deepseek.com を使う場合は空のままにします。アドレスは https を使う必要があります。このマシン(localhost、127.0.0.1、::1)であれば http も使えます。ユーザー名、パスワード、クエリー、フラグメントを含めることはできません。キーはそのアドレスにだけ送られ、それ以外には送られません。新しいアドレスを保存すると、検出されたモデルが消去され、そのアドレスから読み直されます。すでに実行中の DeepSeek のワーカーは、起動時のアドレスを使い続けます。

WebSearch と WebFetch #

Claude Code には 2 つの Web ツールがあり、実行される場所が異なります。

ツール 実行される場所 コスト
WebSearch DeepSeek のサーバー上で、DeepSeek の検索を通じて。 検索リクエストの料金です。2026-10-31 16:00 UTC から、成功した 1,000 件あたり $0.75 または ¥5 です。それ以前は無料として計上されます。
WebFetch リレーのマシン上。Claude Code が自分でページを取得し、DeepSeek Flash に読ませます。 Flash のトークンだけで、ほかのターンと同じように計上されます。リクエストへの課金はありません。

使用状況カードでは、検索の件数を専用の Search(検索)行に表示します。件数は Claude Code 自身の合計から取得しており、WebSearch ツールが行う検索を 1 件ずつ数えています。

使用状況カード #

DeepSeek が有効な間、📊 Check Usage(使用状況の確認)に DeepSeek カードが表示されます。DeepSeek は従量課金なので、カードには金額が表示されます。保存したキーでその場で読み取ったアカウントの残高と、このリレーの DeepSeek のターンにかかった金額です。後者はトークン数から DeepSeek の料金で推定したものです(推定の算出方法を参照)。

支出は残高の通貨(お金が入っている方)で表示されます。基準にする残高がない場合は米ドルで表示されます。カードはすべてを一度に表示し、数値が先に来て、スマートフォンの幅に収まります。上から順に次のとおりです。

部分 表示内容
Balance (USD)(残高、USD)、Balance (CNY)(残高、CNY)のバー お金が入っている通貨ごとに 1 本のバーです。直近のチャージ後の残高に対する、残りの額を示します。バーの下の行に、何を基準にしているかが表示されます。初期残高とチャージを参照してください。
Monthly budget (USD)(月間予算、USD)または (CNY) のバー 予算を設定した場合のみです。月間予算を参照してください。
数値 通貨ごとの残高と、チャージ額と付与額、そして最初の DeepSeek のターン以降の Estimated spend on this relay(このリレーでの推定支出)です。
Daily spend, last 30 days(日別の支出、過去 30 日) UTC の 1 日ごとに 1 本の列で、モデル別に積み上げています。列にポインターを合わせるかタップすると、その日の合計とモデルごとの内訳が表示されます。
Where the money goes(支出の内訳) モデルごとに 1 本のバーで、Cache hit(キャッシュヒット)、Cache miss(キャッシュミス)、Output(出力)、そして検索がある場合は Search に分かれます。見出しには、キャッシュで節約できた額が表示されます。
Estimated spend by model(モデル別の推定支出) モデルごとに 1 行で、ターンの数を示します。検索がある場合は Search 行も加わり、Web 検索のコストと回数(3 searches など)を示します。
Tokens by model(モデル別のトークン) モデルごとのキャッシュヒット、キャッシュミス、出力のトークン数と、入力のうちキャッシュから来た割合です。
推定についての注記 料金、ピーク時間帯、計上されないものを説明し、Prices(料金)のリンクがあります。

どのカードとも同じく、バーは埋まるにつれて色が変わり、90% で赤になります。カードの読み方を参照してください。カードの最下部には、DeepSeek のプラットフォームの DeepSeek usage(DeepSeek の使用状況)と Top up(チャージ)へのリンクがあります。

DeepSeek の使用状況エクスポートを取り込むと、エクスポートの対象日については DeepSeek 自身の数値がカードに表示され、ラベルは Spend, actual and estimated(支出、実績と推定)と Spend by model, actual and estimated(モデル別の支出、実績と推定)になります。使用状況エクスポートの取り込みを参照してください。

グラフ。 グラフはグラフライブラリーを使わずに描画され、どちらの配色でも使えます。Daily spend(日別の支出)では、モデルの色は読み取りのたびに変わりません。最初が DeepSeek Flash、次が DeepSeek V4 Pro、その他のモデルは名前順です。モデルが 4 つより多い場合、4 つ目以降は Other models(その他のモデル)にまとめられます。すべての列とバーには、スクリーンリーダー用のテキストと、ポインターを合わせたとき、フォーカスしたとき、タップしたときのツールチップがあります。また各グラフには、同じ数値を表示する As a table(表で表示)の折りたたみがあります。Daily spend は、過去 30 日に支出がなかった場合は表示されません。このリレーの日別の履歴がそれより後に始まる場合は、その開始日が注記に表示されます。キャッシュの節約額は、キャッシュヒットをキャッシュミスの料金で計算した額から、実際のコストを引いたものです。

残高を読み取れないとき。 読み取りは 5 秒で打ち切られます。応答は 1 分間、失敗は 15 秒間保持されます。読み取りに失敗すると、カードには Partial(一部)の印が付き、The balance could not be read: … と表示され、最後に読み取った残高が、その時刻とともに as read として表示されます。DeepSeek が残高を API 呼び出しに足りないと報告した場合、カードには Top up のリンクとともに DeepSeek reports this balance as not enough for API calls: DeepSeek turns fail until it is topped up. と表示されます。

エージェントは、relay_tool の usage アクションで同じカードを読めます。

月間予算 #

DeepSeek サブタブの Monthly budget (optional) を設定すると、カードに予算バーが加わります。このリレーの暦月の DeepSeek の推定支出を、その金額と比べて示します。

  • Budget currency:USD ($)(新しい予算ではこれが選択済み)、CNY (¥)、または The balance's currency (may change)(残高の通貨、変わる場合があります)。バーにはその通貨が付いたラベルが表示され、残高の通貨が何であっても、その通貨で支出を数えます。ラベルはたとえば Monthly budget (CNY)(月間予算、CNY)です。通貨を選べるようになる前に保存した予算は、残高の通貨に従います。
  • バーには estimated(推定)の印が付きます。その月に取り込んだ使用状況エクスポートの日がある場合(かつ予算がカードの通貨の場合)は印が付かず、注記には、その日は実績、それ以外の日は推定の支出であることが表示されます。バーは予算の 50% と 75% で色が変わり、90% で赤になります。
  • UTC の日単位で数え、毎月 1 日(UTC)にリセットされます。バーにはリセットの時期が表示されます。
  • バーを表示しない場合は、金額を空にするか 0 を入力します。金額は小数点以下 2 桁まで保持されます。

初期残高とチャージ #

DeepSeek が OAR に伝えるのは残高で、入金した額ではありません。そのため残高バーには測定の基準が必要で、OAR は通貨ごとにそれをリレーに保持します。

  • 初期残高がない場合、バーは直近のチャージ直後の残高を基準にします。リレーがまだチャージを確認していない間は、読み取った中で最も高い残高を基準にするため、バーは空の状態から始まり、支出に応じて埋まっていきます。バーの下の行には、その金額と読み取った日が表示されます。例:Measured from ¥110.00, the highest balance seen (2026-10-20).
  • チャージ(または付与)とは、2 回の読み取りの間に残高が増えることです。リレーはカードを開いたとき(またはエージェントがカードを読んだとき)に残高を読み取るため、チャージに気づくのは次の読み取りのときです。それ以降、バーはチャージ後の残高を基準にします。
  • Starting balance (optional) を設定すると、代わりにその金額を基準にします。たとえば最初のチャージ額です。金額は残高の通貨で指定し、その通貨のバーに適用されます。バーの下の行には Measured from …, the starting balance set on the DeepSeek tab. と表示されます。初期残高がない場合と同じ方法で測るには、空のままにします。

チャージが初期残高に与える影響。 初期残高を設定したあとにチャージすると、初期残高は置き換えられます。バーはチャージ後の残高を基準にし、DeepSeek サブタブには No longer used: the balance rose on <date> (a top-up), so the bar measures from the balance after it. Enter an amount again to measure from it. と表示されます。初期残高を再び使うには、入力欄に金額を入力して(同じ金額でもかまいません)保存します。サブタブのほかの項目を保存しても、以前の金額は戻りません。

初期残高を設定する前に行ったチャージでは、残高が現在その金額を上回っていても、初期残高は置き換えられません。初期残高を保存すると、その時点で残高が読み取られます。金額が置き換えられるのは、設定後にリレーが残高を読み取ってから残高が増えた場合だけです。そのため、チャージしてから新しい残高を入力して保存できます。その読み取りが失敗した場合、金額は、リレーが次に読み取りに成功したあとのチャージまで残ります。

使用状況エクスポートの取り込み #

カードの支出は推定です。DeepSeek 自身の数値を使うには、DeepSeek の使用状況ページ(カードの最下部の DeepSeek usage からリンクしています)で使用状況をエクスポートし、取り込みます。エクスポートは、選んだ期間の 2 つの CSV ファイルです。金額(モデルと API キーごとのトークン数とリクエスト数、その料金)と、コストです。

  1. DeepSeek の使用状況ページで期間をエクスポートします。
  2. Settings → Providers → DeepSeek の Import usage export で、Amount file と Cost file を選び、Import usage export を押します。
  3. ボタンの下の行に、取り込んだ内容(行、日、モデル)と、カードがそれを使うかどうかが表示されます。

取り込み後のカードの表示。 エクスポートの対象日については、タブに保存したキーの数値が推定に代わって表示されます。エクスポートの日ごとの、モデル別のトークン数、リクエスト数、コストです。それ以外の日は、2 回の取り込みの間の空白期間も含めて推定のままです。ラベルは Spend, actual and estimated と Spend by model, actual and estimated になり、モデルの行にはエクスポートが数えたリクエスト数が加わり、注記には最後のエクスポートの終了日が表示されます。

  • 保存したキーのみ。 エクスポートにはアカウントのすべてのキーが含まれます。カードが数えるのは保存したキーの行で、このリレーからに限らず、そのキーが使われたすべての場所の分です。
  • 1 つの通貨。 カードは、自分の通貨(残高の通貨)の行だけを使います。エクスポートが別の通貨の場合、取り込み時にその旨が表示され、カードは推定のままです。
  • 検索。 エクスポートの日については、エクスポートのコストに Web 検索が含まれるため、カードは検索の推定を加えません。
  • 除外される日。 期間がまだ終わっていない日(日中に取ったエクスポートでの今日)と、このリレーの日別の履歴が始まった日までのエクスポートの日(その日を含む)は除外されます。これらの日のターンは、すべてがその履歴に含まれているわけではないためです。注記にその旨が表示されます。
  • タイムゾーン。 エクスポートの日はエクスポートを取ったタイムゾーンで区切られ、推定の日は UTC で区切られます。エクスポートの日と推定の日の境目では、1 時間分が二重に数えられたり、まったく数えられなかったりすることがあります。
  • 月間予算。 その月にエクスポートの日がある場合、予算バーには estimated の印が付かなくなります。

取り込み時のファイルの確認。 期間とモデルのそれぞれについて、金額に料金を掛けた合計がコストファイルと一致する必要があります。一致しない場合は何も取り込まれず、行に The files do not match for … と表示されます。同じファイルをもう一度取り込んでも何も変わりません。後のエクスポートは、それに含まれるキーごとに、対象日の分を置き換えます。別のタイムゾーンで取ったエクスポートでも同様です。2 つのファイルの合計は 2 MB までです。リレーは行を専用のテーブルに保存し、各キーは最初と最後の文字だけを残してマスクします。リレー自身が数えたターンの数値は変わりません。ペアリングしたリレーのエージェントは取り込みを行えません。

リレーのマシンで、OAR のフォルダーで npm run deepseek:import -- amount.csv cost.csv <database> を実行しても同じことができます。データベース(データフォルダーの copilot.db)を指定してください。指定しない場合、コマンドはサーバーの隣にある data/copilot.db を使います。

推定の算出方法 #

DeepSeek はリクエストごとのコストを報告せず、Claude Code 自身のコストの数値は Claude の料金によるものです。そのため OAR は、このリレーの DeepSeek の各ターンが報告するトークン数をモデルごとに数え、DeepSeek の公表料金(2026-10-19 に確認)で、米ドルと人民元の両方で価格を付けます。100 万トークンあたりのオフピーク時間帯の料金は次のとおりです。

モデル キャッシュヒット キャッシュミス 出力
DeepSeek Flash $0.003 · ¥0.02 $0.15 · ¥1 $0.60 · ¥4
DeepSeek V4 Pro $0.022 · ¥0.15 $0.66 · ¥4.5 $1.98 · ¥13.5
  • ピーク時間帯とオフピーク時間帯。 ピーク時間帯の料金は、ちょうどこの 2 倍です。ピーク時間帯は月曜日から金曜日の 01:00–04:00 と 06:00–10:00 UTC(北京時間 09:00–12:00 と 14:00–18:00)です。カードには、これらの時間帯がブラウザーのタイムゾーンで表示されます。各ターンは、そのターン自身の時刻で価格が付けられます。
  • 祝日。 中国の祝日には、DeepSeek は終日オフピーク時間帯の料金を請求します。推定はその日付を知らないため、祝日のピーク時間帯のターンは実際の 2 倍の料金で計上されます。
  • 検索。 Web 検索は、2026-10-31 16:00 UTC(北京時間 2026-11-01 00:00)から、時間帯にかかわらず 1,000 件あたり $0.75 または ¥5 で計上されます。それ以前の検索は無料として計上されます。WebSearch と WebFetch を参照してください。
  • 課金されないもの。 Claude Code が各セッションの開始時に送る count_tokens リクエストには DeepSeek は課金せず、推定もこれを数えません。
  • 未知のモデル。 deepseek-v4-flash と deepseek-v4-flash-vision-exp は Flash として価格が付けられます。料金がわからないモデルには推定がありません。その行には no price known と表示され、合計には除外したモデルの数が表示されます。
  • このリレーのみ。 他のリレーのターンや、キーのその他の使用は含まれません。カードからリンクしている DeepSeek の使用状況ページには、アカウントのすべてのリクエストがあります。
  • 実績の数値。 取り込んだ使用状況エクスポートの対象日については、カードは推定の代わりに、保存したキーについての DeepSeek 自身の数値を、キーのすべての使用分について表示します。
  • 再起動。 やり直した Claude Code のプロセスや、遅れて届いた報告、二重に届いた報告は、1 回だけ計上されます。1 つだけ例外が残っています。新しいプロセスが起動したあとに届いた、以前のプロセスの遅れた報告はすべて計上され、新しいプロセスの次の報告もすべて計上されます。
  • Claude の名前で記録された行。 サブエージェントがチャットのモデルに固定される前のビルドでは、一部のターンが Claude のモデル名で記録されていました。リレーは起動時に、それらの行を実際に処理した DeepSeek のモデルにまとめます。まとめた行は 1 つの時刻(最後のターンの時刻)で価格が付けられるため、ピーク時間帯とオフピーク時間帯のターンにまたがる行は概算になり、トークンのコストは最大で 2 倍ずれます。

リレーの時計より 5 分以上先のターンの時刻は、リレー自身の時刻として扱われます。

制限 #

  • 思考はオフにできず、none は low として実行されます。
  • DeepSeek V4 Pro は画像を受け付けません。会話に画像が含まれると、このモデルへの切り替えは拒否されます。
  • 支出は推定で、このリレーのターンだけが対象です。また中国の祝日のピーク時間帯のターンは多めに計上されます。DeepSeek 自身の数値が表示されるのは、取り込んだ使用状況エクスポートの日だけです。
  • effort やモデルを変更すると、ターンとターンの間に会話の Claude Code が再起動します。
  • Claude Code のサーバー側の Web 取得は DeepSeek では使えません。WebFetch はリレーのマシンで実行されます。
  • 上限での一時停止はありません。残高不足で拒否されたターンは失敗するため、チャージしたあとにもう一度送信します。

エラーコード #

失敗した DeepSeek の返信は Error code: relay.<code>. で終わり、コードによっては、直接対処に進めるボタンが付きます。

コード 発生する状況 ボタン
relay.deepseek-balance DeepSeek が残高を理由にリクエストを拒否しました(HTTP 402)。 DeepSeek のチャージページを開く Top up DeepSeek(DeepSeek をチャージ)、DeepSeek settings(DeepSeek の設定)
relay.deepseek-api-key DeepSeek がキーを受け付けませんでした(HTTP 401)。 DeepSeek settings
relay.deepseek-rate-limit アカウントが DeepSeek の同時実行数の上限に達しています(HTTP 429)。 なし
relay.deepseek-api-error その他の理由でリクエストが拒否されました。 なし
relay.deepseek-turn-error その他の理由でターンが失敗しました。 なし

DeepSeek settings は Settings → Providers → DeepSeek を開きます。その他のコードも同じ形式で、relay.deepseek- に Claude Code の理由が続きます。たとえば relay.deepseek-overloaded(HTTP 529)や relay.deepseek-model-not-found です。いずれも、Claude アカウントについての案内は含みません。

トラブルシューティング #

問題 対処
New Chat に DeepSeek がない Settings → Providers → DeepSeek でキーを保存し、Enable DeepSeek for New Chat model selection にチェックが入っていることを確認します。
relay.deepseek-balance が出る、またはカードに残高が API 呼び出しに足りないと表示される Top up DeepSeek を押し、DeepSeek のプラットフォームで入金してから、メッセージをもう一度送信します。
relay.deepseek-api-key キーが間違っているか、失効しています。ターンとターンの間に、有効なキーを貼り付けて保存します。
relay.deepseek-rate-limit 少し待ってから、メッセージをもう一度送信します。
DeepSeek model discovery failed: … または DeepSeek listed no DeepSeek models キーとベース URL を確認し、🤗 Select Models で Refresh を押します。成功するまでは、最後の一覧、または deepseek-flash と deepseek-v4-pro が表示されたままです。
DeepSeek model "…" is not available そのモデルはリレーの一覧にありません。一覧を再読み込みするか、別のモデルを選びます。
… takes no images, and this conversation already has some. DeepSeek Flash のまま使うか、テキストのみのモデル用に新しい DeepSeek の会話を始めます。
DeepSeek model selection requires creating a new DeepSeek conversation 別のプロバイダーの会話は、DeepSeek のモデルに切り替えられません。DeepSeek で新しいチャットを始めます。
Cannot remove the DeepSeek API key while N DeepSeek conversation(s) still exist. それらの会話をアーカイブまたは削除するか、代わりに DeepSeek を無効にします。
Claude Code did not take the DeepSeek connection settings before the first message, so nothing was sent. メッセージをもう一度送信します。再び失敗する場合、リレーが実行する Claude Code が固定された設定を受け取っていません。リレーを更新し、リレーのログで理由を確認します。
The DeepSeek base URL must use https (http only on a loopback address) https、またはこのマシン上の http のアドレスを使います。
残高バーが間違った金額から始まる DeepSeek サブタブで、残高の通貨で Starting balance を設定します。
サブタブに、初期残高が No longer used と表示される チャージによって置き換えられました。金額をもう一度入力して保存するか、入力欄を空にします。
使用状況カードの支出が、DeepSeek の使用状況ページより少ない カードが数えるのは、このリレーの DeepSeek のターンだけです。DeepSeek のページには、アカウントのすべてのリクエストがあります。その数値をカードに表示するには、使用状況エクスポートを取り込みます。
祝日に使用状況カードの支出が多くなる 中国の祝日のピーク時間帯はピーク料金で計上されますが、DeepSeek はオフピーク料金を請求します。使用状況エクスポートを取り込むと、その日については DeepSeek 自身の数値が表示されます。
The files do not match for … 金額ファイルとコストファイルが別々のエクスポートのものです。同じ期間で両方をエクスポートし、一緒に取り込みます。
The … file is not a DeepSeek usage export: … DeepSeek の使用状況ページがエクスポートしたままのファイルを選び、金額ファイルは Amount file に、コストファイルは Cost file に指定します。
保存したキーがこのエクスポートにないと表示される エクスポートに、タブに保存したキーの使用分がありません。別のアカウントのエクスポートであるか、その期間にキーが使われていません。カードは推定のままです。
カードがその数値を使わないと表示される エクスポートの通貨が残高の通貨と異なります。カードは残高の通貨の行だけを使います。