DeepSeek-Balance-Whale-Widgetとは?AIエージェントの使用料金をキャラ表示で確認してみた動いた
この日に実際に動かした結果です。内容の誤りに気づかれた場合はお問い合わせください。確認のうえ訂正します。
使う前に分かること
| 必要なもの | Node.js |
|---|---|
| 動かした環境 | Node.js 22。 |
| 日本語 | 画面・文書は英語 |
| 確認日 | 2026-09-22(この日に実際に動かした) |
DeepSeekのモデルをエージェント経由で使っていると、いくら使ったのか気になっても、わざわざ別の管理画面を開かないと分からないことが多いです。今回は、エージェントの画面の隅に常駐して残高と今日の使用額を教えてくれる鯨のキャラを、実際に入れて動かすところまで試しました。
DeepSeek Harnessを起動する
この鯨のキャラは単体のアプリではなく、「DeepSeek Harness」というAIエージェントの土台(DeepSeekが作っているエージェント実行環境で、Claude CodeやCodexに近い立ち位置のツール)に追加する部品として作られています。まずはその土台を動かす必要があります。Node.jsさえ入っていれば、次の一行で動くと案内されていたので、そのまま打ちました。
npx --yes @deepseek-ai/dsh web --no-open
npm error code ETARGET
npm error notarget No matching version found for @deepseek-ai/dsh-client-ui-sidebar-documentpreview@^0.1.5-rc.3.
npm error notarget In most cases you or one of your dependencies are requesting
npm error notarget a package version that doesn't exist.
依存しているパッケージの一つが、まだ公開されていないバージョンを要求していて、そのままでは落ちます。一つ前のバージョンに固定すれば通ったので、package.jsonを自分で用意して入れ直しました。
{
"name": "dsh-widget-demo",
"private": true,
"dependencies": {
"@deepseek-ai/dsh": "0.1.5-rc.2"
},
"overrides": {
"@deepseek-ai/dsh-web-app": "0.1.5-rc.2"
}
}
npm install
added 522 packages, and audited 523 packages in 21s
found 0 vulnerabilities
これで土台が入りました。
鯨のキャラを追加する
土台に鯨のキャラを追加するコマンドを打ちます。
npx dsh plugin --profile web add dsh-whale-widget
dsh: initialized profile web at /root/.dsh/profiles/web
dependencies:
+ dsh-whale-widget ^0.3.9
Packages: +1
Progress: resolved 1, reused 1, downloaded 0, added 1, done
Done in 663ms using pnpm v10.33.0
追加できたら、画面を起動します。
npx dsh web --no-open --host 127.0.0.1 --port 3080
dsh web: http://127.0.0.1:3080/?token=0IS--EjvIZ34buCgRIgQ68LuDVXY8EKkeyS6cxod030
表示されたURL(末尾の合言葉の部分は起動のたびに変わります)をブラウザで開くと、初回だけ利用規約のようなお知らせが出て、その奥にもう鯨のキャラが顔を出しているのが見えます。

「Continue」を押すと、今度は「APIキーを入れて始めましょう」という案内に変わります。ここは「Configure later」で後回しにできます。
残高を鯨に聞いてみる
鯨をクリックすると、吹き出しが開きます。

「DeepSeek 余额」の下が「…」、「今日已用」が「--」になっています。まだ自分のDeepSeek APIキーを設定していないためで、この状態はAPI越しでも確かめられます。
curl -s http://127.0.0.1:3080/dsh-whale/balance.json
{"ok":false,"code":"NO_KEY","error":"未配置 DEEPSEEK_API_KEY","version":"0.3.9","isPeak":false,"peakNextChangeAt":1790125200,"peakHolidays":["2026-01-01","2026-01-02","2026-01-03","2026-02-15","2026-02-16","2026-02-17","2026-02-18","2026-02-19","2026-02-20","2026-02-21","2026-02-22","2026-02-23","2026-04-04","2026-04-05","2026-04-06","2026-05-01","2026-05-02","2026-05-03","2026-05-04","2026-05-05","2026-06-19","2026-06-20","2026-06-21","2026-09-25","2026-09-26","2026-09-27","2026-10-01","2026-10-02","2026-10-03","2026-10-04","2026-10-05","2026-10-06","2026-10-07"],"todayUsage":0,"todayUsageCurrency":"CNY","usageSource":"events","usageLabel":"本地估算","usageMode":"ledger","accounting":null}
「未配置 DEEPSEEK_API_KEY」、つまりAPIキーが設定されていないという理由がそのまま返ってきました。設定していれば、ここに実際の残高と今日使った金額が入るはずです(そこは今回試していません)。
吹き出しの右下には「谷14:16:10」のようなバッジが出ていて、これは今が電気料金のように安い時間帯だという合図です。レスポンスのpeakHolidaysを見ると、2026年の中国の祝日(国慶節など)まで織り込んだ上で、平日の日中を高い時間帯・それ以外を安い時間帯として扱っているのが分かります。DeepSeekの料金は時間帯で変わるので、その案内をそのまま鯨が教えてくれる形です。
さきほどブラウザでこの画面を開いた時に、DSHからクッキーが渡されています。このクッキーを付けずに同じURLを叩くと、401が返ってきて中身は見えません。
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:3080/dsh-whale/balance.json
401
設定パネルを開けてみる
鯨の右下にある小さなメニューボタンを押すと、見た目や音を変える設定パネルが出ます。

キャラの絵や効果音を自分の画像・音声ファイルに差し替えられたり、クリックした時に出す吹き出しの中身を自分で組み立てられたりと、見た目まわりの項目がかなり細かく分かれています。メニューボタンを隠すこともでき、その場合は右クリック(スマホなら長押し)で同じメニューを呼び出せます。
お金はかかるか
鯨のキャラ自体はMITライセンスで無料です。ただし、実際の残高を表示させるには自分のDeepSeek APIキーが要り、そちらはDeepSeek側の従量課金になります。鯨がローカルで見積もりに使っている単価の目安(100万トークンあたりの中国元、[安い時間帯, 高い時間帯]の順)は次の通りでした。
| モデル | キャッシュ命中 | キャッシュ非命中 | 出力 |
|---|---|---|---|
| DeepSeek-V4.1-Flash | 0.02 / 0.04 | 1 / 2 | 4 / 8 |
| DeepSeek-V4 Pro | 0.15 / 0.30 | 4.5 / 9.0 | 13.5 / 27.0 |
中国元は2026年9月時点でおよそ1元23円なので、一番高いDeepSeek-V4 Proの出力でも、100万トークンあたり約310円(安い時間帯)から約620円(高い時間帯)という水準です。安いDeepSeek-V4.1-Flashなら、同じ100万トークンの出力で約92円から約184円になります。
APIキーの取得と入力は今回していません。
まとめ
コマンドをそのまま打つと依存関係の食い違いで一度落ちましたが、バージョンを1つ固定すれば土台ごと問題なく動きました。鯨のキャラは、APIキーが無い状態でも「未配置」だと素直に教えてくれ、時間帯によって料金が変わることまで吹き出しで示してくれます。エージェントの画面を離れずに使用状況を確認できる点は便利で、DeepSeek Harnessを使い続けるならこのまま入れておきます。自分のAPIキーを設定して、実際の残高が数字で動くところまではまだ試していないので、そこは使いながら次に確かめます。