dsh-contextとは?使い方・無料のローカルAIでの動かし方を実際に使って調べてみた動いた
この日に実際に動かした結果です。内容の誤りに気づかれた場合はお問い合わせください。確認のうえ訂正します。
使う前に分かること
| 必要なもの | Node.js、DeepSeek Harness (dsh)、Ollama(無料のローカルAIを使う場合) |
|---|---|
| 動かした環境 | Ubuntu 24.04 のクラウドVM(GPU無し・4vCPU・RAM15GB)、Node.js 22、Playwright(Chromium)で操作。 |
| 日本語 | 日本語で使うときの注意あり(下に書いた) |
| 確認日 | 2026-10-20(この日に実際に動かした) |
AIエージェントに作業を頼んでいると、やり取りが長くなるにつれて返事が遅くなったり、急に話が噛み合わなくなったりすることがあります。原因の多くは、会話に使える枠(コンテキストウィンドウ)が埋まってきていることですが、何が枠を圧迫しているのか(最初の指示文なのか、道具の説明なのか、これまでのやり取りそのものなのか)は、ふだんは見えません。
dsh-context は、DeepSeek が出しているAIコーディングエージェント本体「DeepSeek Harness(dsh)」に入れるプラグインで、このコンテキストの中身をダッシュボードとして見せてくれます。dsh は Claude Code や Codex CLI に近い位置づけの、まだプレビュー版のツールです。
今回は dsh 本体と dsh-context をコマンドラインから入れ、有料のDeepSeek公式APIキーは使わず、無料のローカルAI(Ollama の qwen2.5:1.5b)につないで、日本語で短いメッセージを1つ送るところまで試しました。そのうえで、dsh-context が持つ4つの見せ方(Context タブ・サイドバーの Context Insights ページ・Fleet タブ・/context コマンド)を実際に開いて、自分が送ったやり取りの数字が反映されているかを確かめています。複数のエージェントに作業を分担させる「サブエージェント」の表示や、DeepSeek公式モデルでの動作、デスクトップ版のインストーラは試していません。
無料のローカルAIで、本体ごと入れる
dsh-context は単体では動かず、先に dsh 本体が要ります。README の「Install with dsh cli」のとおり、Node.js が入ったパソコンのターミナルで、次の1行を打って入れました。
npx --yes @deepseek-ai/dsh@latest plugin --profile web add dsh-context
dsh: initialized profile web at /root/.dsh/profiles/web
WARN Issues with peer dependencies found
dependencies:
+ dsh-context ^0.73.3
Packages: +2
Done in 1.7s using pnpm v10.28.0
ピア依存の警告は出ますが、インストール自体は数秒で終わります。続けて Web 版を起動します。
npx --yes @deepseek-ai/dsh@latest web --no-open
dsh web: http://127.0.0.1:3080/?token=hOF5wVY0CHxfpMDI8645l3YEilDIdT6bQCh4Em9Uybw
このターミナルは開いたままにします(閉じると dsh が止まります)。末尾の ?token=… は、自分以外が同じ画面を開けないようにする合言葉付きのURLなので、省かずそのままブラウザに貼って開きます(AIの使用量を数える「トークン」とは別物です)。開くと、サイドバーに最初から「Context Insights」の項目が増えています。これが dsh-context の入り口です。初回はワークスペース(作業用フォルダ)を選ぶよう促されたので、「Choose workspace」から新しいフォルダを作って選びました。

無料のローカルAIをつなぐ
dsh は DeepSeek公式モデルだけでなく、Amazon Bedrock などの他社プロバイダや、自分で立てたサーバーもモデルとしてつなげます。今回は費用をかけないため、Ollama で無料のローカルAI(qwen2.5:1.5b、約1GB)を用意し、それを「Custom model API」としてつなぎました。
curl -fsSL https://ollama.com/install.sh -o install_ollama.sh
sh install_ollama.sh
ollama serve
ollama serve は、立ち上げたままにしておく常駐のコマンドです。別のターミナルを開き、そちらでモデルを取ってきます。
ollama pull qwen2.5:1.5b
dsh の画面では、サイドバー下の「More」→「Settings」→「Models」→「Add model provider」→「Custom model API」で、Provider ID(例:local-ollama)・Base URL(http://127.0.0.1:11434/v1)・API protocol(OpenAI Chat Completions)を入れ、「Fetch available models」を押すと qwen2.5:1.5b を自動で見つけて追加できました。

最初のメッセージを送ってみる
セッションを開き、使うモデルに qwen2.5:1.5b を選んで、日本語で短く頼んでみました。
こんにちは。あなたが何をできるか、一言で自己紹介してください。
1回目・2回目は「No API key for provider: local-ollama」ですぐ失敗しました。Ollama 本来はAPIキーが要りませんが、dsh 側はこの欄が空のままだと送信時に弾いてしまうようです。Settings の Local Ollama の「Edit」で、API key 欄に何でもよいので文字列(今回は ollama-local-no-key-needed という適当な文字列)を入れて保存すると直りました。Ollama 側はこの値を見ていないので、キーの中身自体に意味はありません。
もう一度送ると、48秒で日本語の返事が返ってきました。
私はAI助手で、利用者様の要望を迅速に処理するのに最適です。さまざまなタスクや質問に答える能力や、
自動作成やデータ作成といったツールの使用を手助けしたり、問題を分析したり、複数のロボットの手助けを
したりします。また、利用者様の要望に最大限に応えるために、知識や技能を最大限に引き出すための最善の
方法を提案することもあります。あなたの問題に適していることがお分かりでしょうか?

画面下には「3 turns 3 steps・9.2 tok/s・2.2K tok」(やり取りの往復回数・生成の速さ・使ったトークンの合計)と出ています。ここから先が dsh-context の出番です。
Context タブで中身を見る
セッションの上部に並ぶタブのうち「Context」を開くと、このやり取り1本ぶんのコンテキストがダッシュボードになって出てきます。

- Context Stats:ターン数・ステップ数・道具呼び出しの回数(今回は0)
- Token Stats:使った2.2千トークンの内訳をドーナツグラフで表示。今回は「Tool Schemas」(道具の説明)が75.4%と大半を占め、実際のやり取り本体(User Messages・Assistant Messages)は合わせて1.2%ほどでした。やり取りが1往復でも、道具の説明だけでこれだけの枠を使っていることが数字で見えます
- Timing Stats:応答までの49秒が、最初の1文字が出るまで(TTFT・35.9秒)と、その後の出力(12.9秒)にどう分かれているか
- Context Trend:ターンごとの積み上げ棒グラフ。クリックすると、そのターンで実際に何が送られたか(ユーザーの発言・新しく入った情報・返事の内容)が下に3行で出ます
- Context Browser:システムプロンプト・道具のスキーマ・やり取りを、カテゴリごとに開いて実際の中身を読める一覧
サイドバーの Context Insights ページ
セッションを離れて、サイドバーの「Context Insights」を開くと、ワークスペース内の全セッションをまとめた画面になります。

上段のカードにセッション数・使ったトークン・キャッシュ命中率・稼働時間が出て、右上の期間(Today / Last 7 days / Last 30 days / All)で絞り込めます。下にはセッションの一覧があり、それぞれのトークン数・ターン数・最後に送ったメッセージが並びます。今回は1セッションしか作っていないので、グラフは1本だけですが、何日もかけて何本もセッションを重ねるほど、このページで傾向が見えてくる作りです。
Fleet タブでエージェントの編成を見る
「Fleet」タブは、今のエージェントと、そこから作業を任せた「サブエージェント」を1枚のネットワーク図にする画面です。

今回はサブエージェントに作業を分担させていないため、ノードは自分1体だけで、「No subagents yet」と出ています。README によると、エージェントが作業を他のエージェントに任せるたびに、ここに親子関係のカードが増えていく作りのようです。
/context コマンドでチャットのまま確認する
チャット欄に /context と打って送ると、Context タブと同じ中身が、チャットの画面に重なる小さな窓(モーダル)として、タブを切り替えずに開きます。

タブを切り替えずにその場で中身を確認したいときは、こちらのほうが早いです。
まとめ
dsh 本体とdsh-contextのインストールは数秒で終わり、有料のDeepSeek公式APIキーを使わなくても、無料のローカルAI(Ollama)につなぐだけで、実際のやり取りの数字が入ったダッシュボードを見られました。つまずいたのは、Ollamaのように本来キーが要らないモデルでも、dsh側のAPIキー欄を空のままにすると送信が弾かれる点だけで、適当な文字列を入れれば直ります。
今回の短いやり取り1往復でも、トークンの大半(75%超)が道具の説明に使われていることが数字で見え、「会話が長引く前に何が枠を圧迫しているか」を具体的に把握できるのは実感しやすい利点でした。一方で、サブエージェントに作業を分担させた時にFleetタブがどう増えていくかや、DeepSeek公式モデルでの挙動は今回確かめられていません。
DeepSeek Harness を普段使っていて、コンテキストの中身を気にしたことがある人には、入れてすぐ効果が見える作りです。逆に、DeepSeek Harness自体をまだ使っていない人は、このプラグイン単体ではなく、まずdsh本体を試すところから検討することになります。
確認した環境
GPU無し・4vCPU・RAM15GBのクラウドVM(Ubuntu 24.04)で、dsh のWeb版を起動し、Playwright(Chromium)でブラウザ操作を自動化して試しました。DeepSeek公式のAPIキーは使わず、無料のローカルAI(Ollama、qwen2.5:1.5b)につないでいます。性能の大きいモデルや有料のDeepSeek公式モデルを使った場合、応答時間やトークンの内訳は今回の数字と変わります。