CH 04 · Web UI を理解する
この章の目標
前章で dsh をインストールし、Key を入力し、作業ディレクトリを選び、最初のタスクをクリアしました。この章では一旦立ち止まって界面を一巡します:各エリアは何をするのか、設定パネルにどんなスイッチがあるのか、3 段階の権限で Agent が何を動かせるのか、軌跡(Trajectory)ビューの読み方。読み終えれば、CH 02 で述べた「実行ごとに追跡可能」が界面の左上に転がっていることに気づくはずです —— タブ 1 つの話です。
画面構成:まず顔を覚える
これは私が最初のタスクを走らせた後に撮った全画面のスクリーンショットで、主要エリアに注釈が入っています:

各ブロックの役割:
| エリア | 役割 | 説明 |
|---|---|---|
| 左側 | 作業ディレクトリ一覧 | 1 作業ディレクトリ = 1 プロジェクトディレクトリ、ここで作業ディレクトリを選ぶ(一覧を開いて選択、または「⊕ 新規セッション」で新規作成)。底部には設定ボタン |
| 中央 | セッションエリア | メッセージ送信、Agent の作業、結果表示はすべてここ。上部には会話 / 軌跡の 2 タブ |
| 底部 | 入力エリア | 送信ボタンの左は文脈占有リング、さらに左はモデルと権限選択、下は統計バー |
設定パネル:左下の歯車
界面の左下に設定ボタンがあります。開くと左側に機能分類—— 一般設定 / モデル / プラグイン / Agent プリセット:

まず一般設定ページ:言語、外観、稼働中の Enter キー挙動はすべてここ。重要な 2 ブロックもあります—— 権限(新規セッションのデフォルト権限モード、ここでは Workspace Write)と Agent プリセット(現在は「Standard」)。ここでの Agent プリセットとは CH 02 で述べた4 つの実行モード(Standard / Code / Minimal / Creator)のことです—— ここで選ぶのは「以後新規作成するセッションのデフォルトで使うプラグイン組み合わせ」。下の説明文に注意:「これ以降新規作成されるセッションに有効。実行中のセッションは開始時のプリセットを保持」——一般設定のデフォルト項目は新規セッションにのみ有効、このルールは後でも何度も出てきます。
次に設定 → モデル:DeepSeek カードに API キーが入力済み(既入力なら「設定済み」と表示)、下部でプロバイダを追加(Anthropic、OpenAI のような既製カタログに接続)とカスタムプロバイダを追加(自社ゲートウェイやローカルモデルを接続、Provider ID、API アドレス、プロトコル、キー、少なくとも 1 つのモデルを入力)が可能。モデル変更はすぐに有効、サービスの再起動は不要です。キーは書き込み専用:保存後、ページには脱敏描述子のみが表示され、平文はローカルの $DSH_HOME/.credentials.yaml にのみ保存されます—— CH 03 で触れたパスです。
権限 3 段階:実際に PC のどこを動かせるのか
これは dsh で真っ先に理解しておくべきことです。公式のファイルサンドボックスは 3 つのモードで定義されています:
界面の入力欄左にある権限セレクタ(作業ディレクトリを選んだ後にポップアップするパネル内)と比較してください:

3 段階を平たく言えば:
| 権限 | できること | 使う場面 |
|---|---|---|
read-only | 読み取りのみ、書き換え一切不可 | 読み取り専用分析、コードレビュー、純粋な Q&A |
workspace-write(デフォルト) | 作業ディレクトリ + システム一時領域は書き込み可、作業ディレクトリ外はまずポップアップで確認 | 日常作業、ほとんどのケース |
danger-full-access | 全域読み書き、境界なし | システムメンテなど本当に全域操作が必要な時、切り替え前に二次確認あり |
公式のセマンティクスを補足:workspace-write の書き込み境界は「作業ディレクトリルート + バックエンドが約束する一時領域」;read-only は書き込みも拒否;danger-full-access は隔離を完全に迂回します。注意、権限が管理するのはファイルシステムへの効果のみ—— ネットワークとプロセスの可視性はこの定義に含まれません。
普段はデフォルトの workspace-write で十分です。まず慣れて、本当に全域操作が必要なときに第 3 段階を検討してください。
切り替えは 2 種類、混同しないでください:
- 現在のセッションでのみ一時的に:入力欄に
/permissionと打ち、段階を選ぶ、現在のセッションにのみ有効。 - デフォルト変更(以後新規セッションすべてに適用):設定 → 一般 → 権限で変更、以降の新規セッションにのみ有効、実行中のセッションは変更されません。
モデルと推論レベル
モデルセレクタには設定済みモデル(Key 入力後に DeepSeek のモデルが自動表示)が見えます。公式にはっきりしたルールがあります:モデルセレクタで選んだモデルは新規セッションのデフォルトになる;すでにリクエストを送信済みのセッションは開始時に使用していたモデルを保持し、デフォルト変更には追従しない(セッションは自身のモデルを記録しており、デフォルト変更は履歴リクエストを密かに上書きしません)。
つまり、異なるセッションで異なるモデルを使いたい(日常の軽量タスクは flash、難しいタスクは pro やより強力なモデルに)ときは、新しいセッションを開くだけです。各セッションは互いに干渉しません。
推論レベルは別のダイヤルで、DeepSeek 公式モデルには 4 段階があります:
| レベル | 特徴 |
|---|---|
off | 思考オフ、最速・最安 |
low | 軽い思考、シンプルな Q&A に十分 |
high(デフォルト) | 深い推論、複雑なタスクはより正確、若干遅く・高く |
max | 最高強度、最も難しいタスクのみ |
普段はデフォルトの high で十分です。遅いと感じたら下げてください。各レベルが実際に何を影響するか、変更方法は CH 06 で詳しく扱います。モデル変更も次回リクエストから有効、再起動は不要です。
軌跡:CH 02 で述べた「追跡可能」はここにある
CH 02 の「実行ごとに追跡可能」を覚えていますか?界面の左上を見てください—— 会話 / 軌跡の 2 タブが並んでいます。軌跡 をクリックすると、このターンの Agent の完全な実行記録が目の前に展開されます。実測画像を見てください:

この画像の読み方:
- 中央は時系列の列で、ASSISTANT(思考 / 発言)と TOOL(ツール呼び出し)が交互に並び、上から下へが Agent の実際の作業順序。
- 各 TOOL 行:左はツール名(
pwsh/read/web_search)、右は実際に送られたパラメータと返された主要な結果。 - 任意の TOOL 行をクリックすると、右側パネルにそのステップの詳細が展開:Summary(要約) / Payload(実際のパラメータ) / Result(返り値) / Schema(ツールのスキーマ) / Timing(所要時間)、さらに Status(Completed)と Hierarchy。
- 上部にはDuration / Turns / Calls の概要、キーワードでステップを検索する検索ボックスもあります。
今回のタスクで Agent が実際に転ぶ過程が見えました:まず設定を読み、ファイルを読み、pwsh で公式ドキュメントを直接取得しようとしたら SSL 接続失敗、Agent は自分で「Outbound HTTPS from pwsh is blocked」と判断し、web_search に切り替えて検索を続けた—— この曲折がすべて軌跡に記録されています、これが「追跡可能」です。
底部統計バーは同じものの裏側です:
| メトリクス | 意味 |
|---|---|
| Turns · Steps | このラウンドで Agent が行ったステップ数 |
| LLM time / Tool call time | 「考える」時間と「動く」時間 |
| First-token mean / tok/s | 出力速度 |
| Cache hit | 入力トークンのうち文脈キャッシュがヒットした割合(下記参照) |
| Input / Output tok | このラウンドでモデルに投入されたトークンと生成されたトークン |
文脈キャッシュ:なぜヒット率がこんなに高いのか
統計バーの「Cache hit」は dsh の機能ではなく、背後には DeepSeek API の文脈ディスクキャッシュがあります。公式の方式:再利用が見込まれる内容を一律に分散ディスクアレイにキャッシュし、次の入力に重複部分が含まれていればキャッシュから読み出して再計算を避ける—— レイテンシとコストの両方を下げます。
キャッシュがヒットした入力トークンの課金は、ミス時のそれよりずっと安価です。deepseek-v4-flash を例にとると、公式の現行価格で、ヒット時の入力は約 0.1 元/百万トークン、ミス時の入力は約 1.5–3 元/百万トークン(オフピーク / ピークによる)。キャッシュが効いた分の入力コストは、ミス時のそれの数分の一にしかなりません。
なぜ同一セッションでヒット率が高いのか?それは同じセッションの各ステップの入力には、前回のシステムプロンプト、ツール定義、会話履歴が含まれており、これが安定した繰り返しプレフィックスになるからです。初回は何もキャッシュされておらず、2 回目以降は前回分がキャッシュに乗ります。私の今回のタスクは入力 160K トークンでヒット率が高かったので、実際にミス価格で計上されたのはそのうちのごく一部だけでした。これは同時に、Agent のタスクは同じセッションで続けるほど後ほど節約になる、という理由でもあります。
文脈占有リング
入力エリアの送信ボタン左にある円形インジケータは、現在のセッションの文脈ウィンドウの占有率を示します。実測をご覧ください:

画像のリングは「文脈使用 2%」と表示しています—— セッションが始まったばかりで、ほぼ使用していません。文脈ウィンドウには限りがあります。Agent が長いタスクを走らせると、会話履歴とツール結果が積み上がり、リングで残量がひと目でわかります。ほぼ一杯になったら、選択肢は 3 つ:新しいセッションを開く、Agent に要約で締めくくらせる、または入力欄に /compact と打つ —— 現在の会話のキー情報をコンパクトなサマリに凝縮し、AI がそのサマリで作業を続けます。セッションを「ダイエット」させるようなもので、やり直す必要はありません。
最初のタスクを完了まで走らせる
公式 README の例題タスクはこうです:
Summarize this repository and identify its main packages.
日本語にすれば前章であなたが走らせたもの:DeepSeek harness リポジトリを要約し、主要モジュールを指摘してください。つまり、あなたはすでに公式のサンプルを動かしたことになります。
実行中、界面がどう「展開」されるかに注目してください:Agent はまず文脈を注入し、計画を立て、それからツールを呼び出し(ファイル読み、コマンド実行、検索)、すべてのステップが見えます。承認が必要なアクションはポップアップが出ます。終わったら、軌跡タブに切り替えて再生し、数字を統計バーで照合してください—— 最初のタスクは通常入力が膨大で(私の場合は 160K トークン)、キャッシュヒット率が高いため、実際のコストは非常に低くなります。
この章で学んだこと
下の項目を自力で達成できれば合格です:
- [ ] Web UI の各エリア(左 / 中央 / 下)が何をするか、どこで作業ディレクトリを選ぶかを説明できる
- [ ] 設定パネルのカテゴリ(一般設定 / モデル / プラグイン / Agent プリセット)を知り、「デフォルトは新規セッションにのみ有効」を知っている
- [ ] 3 段階の権限
read-only/workspace-write/danger-full-accessの違いを説明でき、日常作業で 2 番目を使う理由が言える - [ ]
/permissionが現在のセッションの権限を一時変更し、設定 → 一般 → 権限がデフォルトを変更することを知っている - [ ] モデルセレクタの選択が新規セッションのデフォルトであり、すでに走ったセッションは元のモデルを保持することを知っている
- [ ] 軌跡ビューを読める:ASSISTANT / TOOL のタイムライン + 右側の詳細パネル + 統計バー
- [ ] 「Cache hit」が何かを説明でき、長時間セッションでヒット率が高くなる理由を言える
