DeepSeek Harness: 初回利用と基本操作
最終更新:2026-08-31
DeepSeek Harness を初めて使うのは、初めてスマートカーに乗るようなもの——ダッシュボードは複雑に見えますが、ハンドルとアクセルの位置さえ分かれば、運転を始められます。このレッスンでは、ゼロから DSH Agent との最初の会話までを案内します。
📋 前提知識:02-install.md の完了、DSH Web UI の正常な起動
1. 学習内容
- Web UI の4つのメインエリアの機能とレイアウト
- ワークスペースの選択と目的
- 最初の Agent 会話の完全なフロー
- Agent ツール実行プロセスと可視化
- 承認ポップアップ機構とセキュリティポリシー
2. Web UI インターフェース紹介
(1) 4つのメインエリア
DSH Web UI は4つのコアエリアで構成されています:

graph TB
subgraph DSH Web UI
A[左:セッション一覧]
B[中央:チャットエリア]
C[右:ツールパネル]
D[上部:コントロールバー<br/>モード + モデル + 設定]
end
D --> B
A --> B
B --> C
| エリア | 位置 | 機能 |
|---|---|---|
| セッション一覧 | 左 | 履歴セッションの表示;作成、検索、削除をサポート |
| チャットエリア | 中央 | メインインタラクションエリア;メッセージ送信、返信表示、ツール実行結果 |
| ツールパネル | 右 | ツール呼び出しの詳細、承認アクション、実行ログをリアルタイム表示 |
| コントロールバー | 上部 | モード切り替え、モデル選択、設定エントリ |
(2) 上部コントロールバーの詳細
上部コントロールバーには以下が含まれます:
┌──────────────────────────────────────────────────┐
│ [Standard ▼] [deepseek-chat ▼] ⚙️ 📋 ❓ │
└──────────────────────────────────────────────────┘
↑モード選択 ↑モデル選択 ↑設定 ↑ログ ↑ヘルプ
- モード選択:Standard / PTC / Minimal / Creative
- モデル選択:現在の LLM モデル
- 設定:API Key、エンドポイント、サンドボックスポリシーなど
- ログ:セッションログの表示(Trajectory ビュー)
- ヘルプ:キーボードショートカット、ドキュメントリンク
(3) チャットエリアの詳細
チャットエリアはコアのインタラクションゾーンです。各メッセージには以下が含まれる可能性があります:
┌─────────────────────────────────────────┐
│ 👤 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 コマンドはワークスペースからの相対パスで実行されます:

# ワークスペースが Agent の「視野」を決定する
/home/alice/project ← Agent はこのディレクトリ内のファイルしか見えない
├── src/
├── package.json
└── README.md
(2) ワークスペースの選択
初回起動時、DSH はワークスペースの選択を促します:
📂 Select Workspace
┌──────────────────────────────────────┐
│ ○ /home/alice/project │
│ ○ /home/alice/another-repo │
│ ● Enter custom path... │
└──────────────────────────────────────┘
設定からいつでも切り替えも可能です:
# 環境変数でワークスペースを事前設定
export DSH_WORKSPACE="/home/alice/my-project"
# または Web UI で:Settings → Workspace → Change
(3) ワークスペースとサンドボックス
ワークスペースはサンドボックス機構と連携して Agent の操作範囲を制限します:
graph TB
W[Workspace /home/alice/project] -->|許可| A1[ファイル読み取り]
W -->|許可| A2[ファイル編集]
W -->|許可| A3[コマンド実行]
OUT[Outside Workspace /etc/passwd] -->|拒否| B1[読み取り]
OUT -->|拒否| B2[編集]
4. 最初の会話
(1) Agent にリポジトリを分析させる
ワークスペースの選択が完了したら、最初のメッセージを送信します:

Placeholder for user input
Agent の完全な応答プロセス:
🤖 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 ツール実行プロセス
各ツール呼び出しは右側のツールパネルにリアルタイム表示されます:

│ │
│ 🔍 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つの段階を経ます:
graph LR
A[pre-execute<br/>パラメータ検証<br/>権限チェック] --> B[execute<br/>実際の実行]
B --> C[post-execute<br/>結果処理<br/>ログ記録]
// 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 が危険な操作を実行する前に確認できます。

▶ サンプル 2:
Agent がファイルを編集しようとすると、Web UI に承認ダイアログが表示されます:
┌─ ⚠️ 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) 承認ポリシーの設定
設定で承認ポリシーを事前設定できます:
# 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 が自由に操作 | 🔴 高リスク |
# サンドボックスモードの設定
export DSH_SANDBOX=strict # 最も安全
export DSH_SANDBOX=permissive # デフォルト
export DSH_SANDBOX=off # 非推奨
6. ハンズオン:完全な Agent インタラクション
(1) シナリオ説明
Alice が Agent にプロジェクトにヘルスチェックエンドポイントを追加させたい。

▶ サンプル 2:
👤 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:
┌─ 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) 新しいセッションの作成
左のセッション一覧 → + ボタンをクリック → 新しいセッション
セッションは自動的に名前が付けられ(最初の会話内容に基づく)、手動で名前の変更も可能です。

(2) セッションの切り替え
左のセッション一覧で異なるセッションをクリックして切り替えます。各セッションは独立した:
- 会話履歴
- ワークスペース設定
- ツール実行記録
(3) セッションの永続化
DSH のセッションログは追記専用モードを使用します:

// 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 を再度開くだけで復元されます。

❓ よくある質問
always に設定するか、サンドボックスモードを permissive に切り替えてください。非隔離環境での off モードの使用は推奨しません。📖 まとめ
- Web UI は4つの部分で構成:セッション一覧、チャットエリア、ツールパネル、コントロールバー
- ワークスペースが Agent の操作範囲を決定;初回使用時に選択が必要
- Agent はツール(search、file_edit 等)を通じて実際の操作を実行、ツールパネルで可視化
- 承認機構がユーザーを意図しない操作から保護:Allow / Always / Deny の3段階選択
- サンドボックスモードが承認の厳格さを制御:strict / permissive / off
- セッションは自動的に永続化;ブラウザを閉じてもデータは失われない
📝 練習問題
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 の実行。どの操作が承認ポップアップをトリガーし、どれがトリガーしなかったかを記録し、その理由を分析してください。