DeepSeek Harness: 初回利用と基本操作

最終更新:2026-08-31

DeepSeek Harness を初めて使うのは、初めてスマートカーに乗るようなもの——ダッシュボードは複雑に見えますが、ハンドルとアクセルの位置さえ分かれば、運転を始められます。このレッスンでは、ゼロから DSH Agent との最初の会話までを案内します。

💡 ヒント:DSH Agent はチャットボットではなく、ファイル操作、コマンド実行、コード検索ができるインテリジェントアシスタントです。核心的な能力は「話す」ことではなく「行動する」ことにあります。

📋 前提知識02-install.md の完了、DSH Web UI の正常な起動

1. 学習内容

Web UI ワークフロー


2. Web UI インターフェース紹介

(1) 4つのメインエリア

DSH Web UI は4つのコアエリアで構成されています:

ja DSH Web UI レイアウト

100%
graph TB
    subgraph DSH Web UI
        A[左:セッション一覧]
        B[中央:チャットエリア]
        C[右:ツールパネル]
        D[上部:コントロールバー<br/>モード + モデル + 設定]
    end
    D --> B
    A --> B
    B --> C
エリア 位置 機能
セッション一覧 履歴セッションの表示;作成、検索、削除をサポート
チャットエリア 中央 メインインタラクションエリア;メッセージ送信、返信表示、ツール実行結果
ツールパネル ツール呼び出しの詳細、承認アクション、実行ログをリアルタイム表示
コントロールバー 上部 モード切り替え、モデル選択、設定エントリ

(2) 上部コントロールバーの詳細

上部コントロールバーには以下が含まれます:

TEXT 📖 参照専用
┌──────────────────────────────────────────────────┐
│ [Standard ▼]  [deepseek-chat ▼]  ⚙️  📋  ❓  │
└──────────────────────────────────────────────────┘
    ↑モード選択     ↑モデル選択       ↑設定  ↑ログ ↑ヘルプ

(3) チャットエリアの詳細

チャットエリアはコアのインタラクションゾーンです。各メッセージには以下が含まれる可能性があります:

TEXT 📖 参照専用
┌─────────────────────────────────────────┐
│ 👤 Alice                                │
│ Help me analyze the project structure   │
│ in the current directory                │
├─────────────────────────────────────────┤
│ 🤖 Agent                                │
│ 🔍 Using tool: search                   │
│   → Searching in /home/alice/project... │
│ ✅ Found 15 files                       │
│                                         │
│ This project is an Express.js app.      │
│ Main structure:                         │
│ - src/routes/ — Route definitions       │
│ - src/models/ — Data models             │
│ - src/middleware/ — Middleware           │
└─────────────────────────────────────────┘

3. ワークスペースの選択

(1) ワークスペースの目的

ワークスペースは Agent 操作のルートディレクトリです。すべてのファイル操作と Shell コマンドはワークスペースからの相対パスで実行されます:

ja ワークスペース選択

BASH
# ワークスペースが Agent の「視野」を決定する
/home/alice/project     ← Agent はこのディレクトリ内のファイルしか見えない
├── src/
├── package.json
└── README.md

(2) ワークスペースの選択

初回起動時、DSH はワークスペースの選択を促します:

TEXT 📖 参照専用
📂 Select Workspace
┌──────────────────────────────────────┐
│ ○ /home/alice/project               │
│ ○ /home/alice/another-repo          │
│ ● Enter custom path...              │
└──────────────────────────────────────┘

設定からいつでも切り替えも可能です:

BASH
# 環境変数でワークスペースを事前設定
export DSH_WORKSPACE="/home/alice/my-project"

# または Web UI で:Settings → Workspace → Change

(3) ワークスペースとサンドボックス

ワークスペースはサンドボックス機構と連携して Agent の操作範囲を制限します:

100%
graph TB
    W[Workspace /home/alice/project] -->|許可| A1[ファイル読み取り]
    W -->|許可| A2[ファイル編集]
    W -->|許可| A3[コマンド実行]
    OUT[Outside Workspace /etc/passwd] -->|拒否| B1[読み取り]
    OUT -->|拒否| B2[編集]

4. 最初の会話

(1) Agent にリポジトリを分析させる

ワークスペースの選択が完了したら、最初のメッセージを送信します:

ja 最初の会話

TEXT 📖 参照専用
Placeholder for user input

Agent の完全な応答プロセス:

TEXT 📖 参照専用
🤖 Agent:このプロジェクトを分析します。

🔍 Using tool: search
  → Pattern: *
  → Path: /home/alice/project
  → Max depth: 3

🔍 Using tool: file_edit (read)
  → File: package.json
  → Action: read

📊 分析結果:

1. 技術スタック:
   - ランタイム:Node.js 20.x
   - フレームワーク:Express 4.18
   - データベース:PostgreSQL (pg 8.12)
   - テスト:Jest 29.x

2. ディレクトリ構造:
   src/
   ├── routes/    — 8つのルートファイル
   ├── models/    — 5つのデータモデル
   ├── middleware/ — 3つのミドルウェア
   └── utils/     — ユーティリティ関数

3. 提案:
   - TypeScript 型定義が不足
   - ビジネスロジックを分離する src/services/ レイヤーの追加を推奨

(2) Agent ツール実行プロセス

各ツール呼び出しは右側のツールパネルにリアルタイム表示されます:

ja ツールパネル

TEXT 📖 参照専用
│                                      │
│ 🔍 search                            │
│ ├─ Status: ✅ Complete               │
│ ├─ Duration: 0.3s                    │
│ └─ Files found: 23                   │
│                                      │
│ 📄 file_edit (read)                  │
│ ├─ Status: ✅ Complete               │
│ ├─ Duration: 0.1s                    │
│ └─ File: package.json (1.2KB)        │
│                                      │
│ 📊 Total tools: 2                    │
│ 📊 Total time: 0.4s                  │
└──────────────────────────────────────┘

(3) ツール実行パイプライン

各ツール呼び出しは3つの段階を経ます:

100%
graph LR
    A[pre-execute<br/>パラメータ検証<br/>権限チェック] --> B[execute<br/>実際の実行]
    B --> C[post-execute<br/>結果処理<br/>ログ記録]
TYPESCRIPT
// Tool execution pipeline pseudocode
async function executeTool(tool, params) {
  // 1. pre-execute: validation + approval
  await preExecute(tool, params);
  
  // 2. execute: actual execution
  const result = await tool.execute(params);
  
  // 3. post-execute: log recording
  await postExecute(tool, params, result);
  
  return result;
}

5. 承認ポップアップ機構

(1) 承認が必要な理由

Agent は強力な操作能力(ファイル編集、コマンド実行)を持っていますが、不適切な操作は損害を引き起こす可能性があります。承認機構により、ユーザーは Agent が危険な操作を実行する前に確認できます。

ja 承認ポップアップ機構

▶ サンプル 2:

Agent がファイルを編集しようとすると、Web UI に承認ダイアログが表示されます:

TEXT 📖 参照専用
┌─ ⚠️ Approval Required ───────────────────┐
│                                            │
│ Agent wants to:                            │
│ 📝 Edit file: src/index.ts                 │
│                                            │
│ Changes:                                   │
│ - Line 12: Add import statement            │
│ - Line 45: Modify error handler            │
│                                            │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐    │
│ │  ✅ Allow │ │ 🔁 Always│ │  ❌ Deny │    │
│ └──────────┘ └──────────┘ └──────────┘    │
└────────────────────────────────────────────┘

3つのオプションの意味:

オプション 意味 ユースケース
Allow 今回のみ許可;次回も承認が必要 一回限りの操作
Always この種類の操作を常に許可;以降のポップアップなし 信頼できる操作タイプ
Deny この操作を拒否 不要な操作

(3) 承認ポリシーの設定

設定で承認ポリシーを事前設定できます:

YAML
# dsh.config.yaml
approval:
  # ファイル読み取り:常に許可
  file_read: always
  
  # ファイル編集:承認が必要
  file_edit: ask
  
  # Shell コマンド:危険度に基づく
  shell:
    safe_commands: always     # ls, cat, grep など
    unsafe_commands: ask      # rm, chmod, sudo など
    dangerous_commands: deny  # rm -rf /, dd など
  
  # 検索操作:常に許可
  search: always

(4) サンドボックスモードと承認の関係

サンドボックスモード 承認の動作 リスクレベル
strict すべての操作で承認が必要 🟢 安全
permissive 危険な操作のみ承認が必要 🟡 中程度
off 承認なし;Agent が自由に操作 🔴 高リスク
BASH
# サンドボックスモードの設定
export DSH_SANDBOX=strict    # 最も安全
export DSH_SANDBOX=permissive # デフォルト
export DSH_SANDBOX=off        # 非推奨

6. ハンズオン:完全な Agent インタラクション

(1) シナリオ説明

Alice が Agent にプロジェクトにヘルスチェックエンドポイントを追加させたい。

ja 完全な Agent インタラクション

▶ サンプル 2:

TEXT 📖 参照専用
👤 Alice:src/routes/ に health.ts を作成して、/health GET エンドポイントを追加して。
         { status: "ok", timestamp: Date.now() } を返すようにして。

🤖 Agent:ヘルスチェックエンドポイントを作成します。

📝 Using tool: file_edit
  → Action: create
  → Path: src/routes/health.ts
  → Content: 
    import { Router } from 'express';
    const router = Router();
    router.get('/health', (_req, res) => {
      res.json({ status: 'ok', timestamp: Date.now() });
    });
    export default router;

⚠️ Approval Required: Create file src/routes/health.ts
  → [Alice が Allow をクリック]

✅ File created: src/routes/health.ts

次に app.ts にこのルートを登録する必要があります:

📝 Using tool: file_edit
  → Action: edit
  → Path: src/app.ts
  → Changes: 
    + import healthRouter from './routes/health';
    + app.use('/health', healthRouter);

⚠️ Approval Required: Edit file src/app.ts
  → [Alice が Allow をクリック]

✅ File edited: src/app.ts

完了!ヘルスチェックエンドポイントが追加されました。GET /health でテストしてください。

▶ サンプル 3:

TEXT 📖 参照専用
┌─ Tool Panel ────────────────────────┐
│ 📝 file_edit (create)                │
│ ├─ Path: src/routes/health.ts        │
│ ├─ Status: ✅ Approved & Complete    │
│ └─ Duration: 0.2s                    │
│                                      │
│ 📝 file_edit (edit)                  │
│ ├─ Path: src/app.ts                  │
│ ├─ Changes: +2 lines                 │
│ ├─ Status: ✅ Approved & Complete    │
│ └─ Duration: 0.1s                    │
└──────────────────────────────────────┘

7. セッション管理

(1) 新しいセッションの作成

TEXT 📖 参照専用
左のセッション一覧 → + ボタンをクリック → 新しいセッション

セッションは自動的に名前が付けられ(最初の会話内容に基づく)、手動で名前の変更も可能です。

ja セッション管理

(2) セッションの切り替え

左のセッション一覧で異なるセッションをクリックして切り替えます。各セッションは独立した:

(3) セッションの永続化

DSH のセッションログは追記専用モードを使用します:

ja セッションログ

TYPESCRIPT
// Each SessionEvent is automatically persisted
interface SessionEvent {
  type: 'user_message' | 'agent_message' | 'tool_call' | 'tool_result' | 'approval';
  timestamp: number;
  data: Record<string, unknown>;
}

ブラウザを閉じてもセッションデータは失われません——Web UI を再度開くだけで復元されます。

ja サンドボックスとワークスペース


❓ よくある質問

Q Agent が応答しない場合は?
A 以下を確認してください:1) API Key が正しく設定されているか;2) ネットワークが LLM エンドポイントに接続されているか;3) 右側のツールパネルにエラーメッセージがないか。DSH の再起動も試してみてください。
Q 承認ポップアップが頻繁すぎます。どう減らせますか?
A 設定で信頼できる操作タイプを always に設定するか、サンドボックスモードを permissive に切り替えてください。非隔離環境での off モードの使用は推奨しません。
Q Agent が間違ったファイルを修正してしまいました。どうすればよいですか?
A DSH の副作用は可逆的です。ツールパネルで該当する操作を見つけ、ロールバックボタンをクリックしてください。Trajectory ビューから任意の時点に復元することも可能です。
Q Agent が現在何を実行しているか確認するには?
A 右側のツールパネルが現在のツール呼び出しステータスをリアルタイム表示しています。Agent がスタックしている場合、パネルに待機の具体的な理由(承認待ち、ネットワークタイムアウトなど)が表示されます。
Q ワークスペースを間違えて選択した場合、変更できますか?
A はい。上部の Settings → Workspace → Change をクリックして切り替えられます。既存の会話履歴には影響しませんが、以降のファイル操作は新しいワークスペースに基づきます。
Q Web UI は複数ユーザーの同時使用をサポートしていますか?
A DSH はデフォルトでシングルユーザーモードです。マルチユーザーアクセスには、ユーザーごとに別々の DSH インスタンス(異なるポート)を起動するか、公式マルチユーザーサポートを待つ必要があります。

📖 まとめ


📝 練習問題

1. ⭐ 基礎:DSH Web UI を起動し、ワークスペースを選択して、Agent に「プロジェクトの package.json の内容を表示して」と送信してください。Agent がどのツールを使用したかを記録してください。

2. ⭐⭐ 応用:Agent にワークスペースに hello-dsh.txt ファイルを「Hello, DSH!」の内容で作成させてください。承認ポップアップを観察し、Allow と Deny の両方を試して、その後の異なる動作を記録してください。

3. ⭐⭐⭐ チャレンジpermissive サンドボックスモードを設定し、Agent に3つの操作を同時に完了させてください:1) 新しいファイルの作成;2) 既存ファイルの編集;3) Shell コマンド ls -la の実行。どの操作が承認ポップアップをトリガーし、どれがトリガーしなかったかを記録し、その理由を分析してください。

Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%