DeepSeek Harness: 4つの動作モード
最終更新:2026-08-31
DSH の4つの動作モードは、車のドライブモード——エコノミー、スポーツ、オフロード、サーキット——のようなものです。同じ車でも性格が変わります。適切なモードを選べば、Agent は期待通りに動作します。間違ったモードを選ぶと、保守的すぎるか制御不能になります。
📋 前提知識:04-model-config.md の完了、モデルが設定・利用可能であること
1. 学習内容
- 4つの動作モードの設計哲学と動作の違い
- Standard モードの自律的意思決定機構
- PTC モードの Plan-then-Code フロー
- Minimal モードの最小ツール呼び出し戦略
- Creative モードの探索的出力特性
- 各モードの適用シナリオと切り替え方法
2. モード概要
▶ サンプル 1:
graph TB
INPUT[User Input] --> MODE{Select Mode}
MODE --> STD[Standard Mode<br/>Agent Autonomous Decision]
MODE --> PTC[PTC Mode<br/>Plan First, Then Execute]
MODE --> MIN[Minimal Mode<br/>Fewest Tool Calls]
MODE --> CRE[Creative Mode<br/>Exploratory Output]
STD --> ACTION1[Autonomous Tool Selection<br/>Autonomous Step Decisions]
PTC --> ACTION2[Output Plan First<br/>Execute After User Confirms]
MIN --> ACTION3[Prefer Own Knowledge<br/>Call Tools Only When Necessary]
CRE --> ACTION4[Free Association<br/>Encourage Creativity and Exploration]
(2) 1つの比較表で4モードを理解
| 次元 | Standard | PTC | Minimal | Creative |
|---|---|---|---|---|
| ツール呼び出し | Agent が自律的に決定 | 計画で宣言 | 最小化 | 自由に使用 |
| ユーザー制御 | 中程度(承認) | 高い(計画確認) | 高い(操作が少ない) | 低い(自由な表現) |
| 出力の確実性 | 中程度 | 高い | 高い | 低い |
| 速度 | 中程度 | より遅い(2ステップ) | 最速 | 不確定 |
| ユースケース | 一般的なプログラミング | 複雑なタスク | シンプルな Q&A | 創作的ライティング |
| Temperature | 0.7 | 0.3 | 0.2 | 1.0+ |
| トークン消費 | 中程度 | より高い | 最低 | より高い |
3. Standard モード
(1) 動作原理
Standard モードは DSH のデフォルトモードです。ユーザーの指示を受け取ると、Agent はどのツールが必要か、どの操作を実行するかを自律的に分析し、最善の判断に従います:

🤖 Agent:
🔍 Using tool: search
→ Searching for src/utils/format.ts
🔍 Using tool: file_edit (read)
→ Reading src/utils/format.ts
📝 Using tool: file_edit (create)
→ Creating src/utils/date-format.ts
📝 Using tool: file_edit (edit)
→ Updating src/utils/format.ts (removing date functions)
📝 Using tool: file_edit (edit)
→ Updating imports in src/index.ts
✅ Done! Date formatting function extracted to src/utils/date-format.ts
(2) 自律的意思決定ロジック
Standard モードでの Agent の意思決定チェーン:
graph TD
INPUT[User Instruction] --> ANALYZE[Analyze Intent]
ANALYZE --> PLAN[Internal Step Planning]
PLAN --> DECIDE{Need Tools?}
DECIDE -->|Yes| EXEC[Call Tools]
DECIDE -->|No| RESPOND[Reply Directly]
EXEC --> CHECK{Done?}
CHECK -->|No| PLAN
CHECK -->|Yes| RESPOND
(3) Standard モードを使うべきケース
- 日常的なプログラミングタスク(コード作成、バグ修正、リファクタリング)
- 何ステップ必要か分からないタスク
- Agent に細かい処理を自律的に任せたい場合
- ほとんどのルーティンワーク
4. PTC モード (Plan-then-Code)
(1) 動作原理
PTC モードは Agent の動作を2つのステップに分割します:

- Plan フェーズ:Agent がタスクを分析し、詳細な計画を出力するが、操作は実行しない
- Code フェーズ:ユーザーが計画を確認した後、Agent がステップバイステップで実行
👤 Bob:プロジェクトにユーザー認証システムを追加して、JWT をサポートして
🤖 Agent (Plan フェーズ):
📋 実行計画:
1. 依存関係のインストール:jsonwebtoken, bcryptjs
2. src/auth/jwt.ts の作成 — JWT 署名と検証
3. src/auth/middleware.ts の作成 — 認証ミドルウェア
4. src/routes/auth.ts の作成 — ログイン/登録ルート
5. src/app.ts の修正 — ルートとミドルウェアの登録
6. 環境変数 JWT_SECRET の追加
推定:5ファイル修正、3ファイル作成。
この計画を実行しますか?
👤 Bob:実行して、でもステップ1はスキップして——依存関係はもうインストール済みだから
🤖 Agent (Code フェーズ):
📝 Step 2:src/auth/jwt.ts を作成中...
📝 Step 3:src/auth/middleware.ts を作成中...
📝 Step 4:src/routes/auth.ts を作成中...
📝 Step 5:src/app.ts を編集中...
📝 Step 6:.env.example に JWT_SECRET を追加中...
✅ 認証システムが追加されました!
(2) PTC 計画フォーマット
PTC モードが出力する計画の内容:
interface PTCPlan {
steps: PlanStep[];
estimatedFiles: { created: number; modified: number; deleted: number };
riskLevel: 'low' | 'medium' | 'high';
reversible: boolean;
}
interface PlanStep {
id: number;
description: string;
tool: string; // Tool to use
files: string[]; // Files involved
dependsOn: number[]; // Prerequisite steps
}
▶ サンプル 3:
graph TD
INPUT[User Instruction] --> PLAN[Agent Outputs Plan]
PLAN --> REVIEW[User Reviews Plan]
REVIEW -->|Confirm| EXEC[Agent Executes]
REVIEW -->|Modify| MODIFY[User Modifies Plan]
MODIFY --> EXEC
REVIEW -->|Reject| CANCEL[Cancel Execution]
EXEC --> STEP[Step-by-step Execution]
STEP --> DONE{All Complete?}
DONE -->|No| STEP
DONE -->|Yes| RESULT[Output Results]
(4) PTC モードを使うべきケース
- 複雑なタスク(5ステップ以上)
- 重要なコードの修正(データベース、認証、決済)
- Agent が正しく理解しているか確認したい;まず計画を見たい
- コードリファクタリング、アーキテクチャ変更
- 監査可能な操作記録が必要
5. Minimal モード
(1) 動作原理
Minimal モードでは、Agent はツール呼び出しを最小限に抑え、自身の知識を使って回答することを好みます:

🤖 Agent:
Promise は非同期操作のオブジェクト表現;async/await は Promise の構文糖衣です:
1. Promise は .then() チェーンを使用:
fetchData().then(data => process(data)).catch(err => handle(err));
2. async/await は同期的に見える構文を使用:
const data = await fetchData();
process(data);
主な違い:
- Promise はオブジェクト;async/await は構文
- await は async 関数内でのみ使用可能
- async 関数は常に Promise を返す
- エラー処理:.catch() 対 try/catch
注意:Agent はツールを1つも呼び出さず——知識から直接回答しました。
▶ サンプル 2:
graph TD
INPUT[User Instruction] --> EVAL{Can answer from knowledge?}
EVAL -->|Yes| RESPOND[Reply Directly]
EVAL -->|No| TOOL[Call Minimal Necessary Tools]
TOOL --> RESPOND
(3) Minimal モードと Standard モードの比較
| シナリオ | Standard モード | Minimal モード |
|---|---|---|
| 「クロージャとは?」 | プロジェクト内のクロージャ例を検索するかもしれない | 概念を直接説明 |
| 「ソート関数を書いて」 | まずプロジェクトのコードスタイルを検索してから作成 | 汎用的な実装を直接作成 |
| 「このバグの修正方法は?」 | ファイルを読み、関連コードを検索 | 一般的な解決策をまず提示;ユーザーが求めた場合のみファイルを読む |
(4) Minimal モードを使うべきケース
- ナレッジ Q&A(ファイル操作不要)
- クイックアドバイスや解決策
- Agent に「やりすぎ」てほしくない場合
- トークン消費を節約したい場合
6. Creative モード
(1) 動作原理
Creative モードは Agent に最高の自由度を与え、探索的で創造的な出力を奨励します:
👤 Alice:ユニークな 404 ページをデザインして
🤖 Agent:
🎨 インタラクティブな 404 ページをデザインします——Canvas を使って小惑星帯を描き、ユーザーがマウスを動かして流星を回避できるようにします!
📝 Using tool: file_edit (create)
→ Creating src/pages/404.html
🎨 機能:
- Canvas レンダリングの動的星空背景
- マウス制御の宇宙船移動
- ランダムな流星生成と衝突検出
- 時間とともに難易度が上昇
- 衝突後、「You found 404!」を表示しホームにリダイレクト
🔧 追加アイデア:
- Web Audio API で効果音を追加
- モバイルタッチサポート
- スコアランキング(localStorage)
(2) Creative モードの特徴
| 特徴 | 説明 |
|---|---|
| 高 Temperature | よりランダムで多様な出力 |
| 自由連想 | 自発的に追加の提案やアイデアを提供 |
| 指示を超える | ユーザーの要求範囲を超えて考える |
| 探索を奨励 | 型破りなアプローチを試みる |
| より長い出力 | 他のモードより多くのコンテンツを生成することが多い |
(3) Creative モードの適用シナリオ
graph LR
A[Creative Writing] --> CRE[Creative Mode]
B[UI/UX Design] --> CRE
C[Brainstorming] --> CRE
D[Prototype Exploration] --> CRE
E[Learning New Frameworks] --> CRE
(4) Creative モードの注意点
- 出力は制御不能——元の要件から逸脱する可能性あり
- 正確なコード変更タスクには不適切
- 決定論的結果が必要なシナリオには不適切
- トークン消費は通常より高い
7. モードの切り替えと組み合わせ
(1) 切り替え方法
Web UI での切り替え:
上部コントロールバー → モードドロップダウン → 対象モードを選択
CLI での切り替え:
# 起動時に指定
npx @deepseek-ai/dsh cli --mode ptc
# セッション中の切り替え
/mode creative
設定でのデフォルトモード:
# dsh.config.yaml
default_mode: ptc
(2) モード組み合わせ戦略
実際のプロジェクトでは、異なるフェーズで異なるモードを使用できます:
プロジェクト計画フェーズ → PTC モード(まず計画)
↓
実装フェーズ → Standard モード(自律的実行)
↓
トラブルシューティング → Minimal モード(クイック Q&A)
↓
UI デザイン → Creative モード(アイデア探索)
(3) 最適なモード・モデル組み合わせ
| タスク | 推奨モード | 推奨モデル | 理由 |
|---|---|---|---|
| コード作成 | Standard | deepseek-coder | コードモデル+自律的意思決定 |
| 複雑なリファクタリング | PTC | deepseek-reasoner | 推論モデル+計画確認 |
| 技術 Q&A | Minimal | deepseek-chat | 汎用モデル+クイック回答 |
| 創作デザイン | Creative | gpt-4o | 高創造性+多様な出力 |
| バグデバッグ | Standard | deepseek-coder | コード理解+ツール使用 |
8. モード実装の原理
(1) モード設定構造
interface ModeConfig {
name: string;
allowTools: boolean;
requirePlan: boolean;
temperature: number;
maxToolCalls: number | null;
systemPromptExtra: string;
}
const MODES: Record<string, ModeConfig> = {
standard: {
name: 'standard',
allowTools: true,
requirePlan: false,
temperature: 0.7,
maxToolCalls: null,
systemPromptExtra: 'You have full autonomy to use tools as needed.'
},
ptc: {
name: 'ptc',
allowTools: true,
requirePlan: true,
temperature: 0.3,
maxToolCalls: null,
systemPromptExtra: 'Always create a plan first. Do not execute until the user confirms.'
},
minimal: {
name: 'minimal',
allowTools: true,
requirePlan: false,
temperature: 0.2,
maxToolCalls: 1,
systemPromptExtra: 'Minimize tool usage. Prefer answering from knowledge.'
},
creative: {
name: 'creative',
allowTools: true,
requirePlan: false,
temperature: 1.0,
maxToolCalls: null,
systemPromptExtra: 'Be creative, explore unusual approaches, think beyond the obvious.'
}
};
(2) モードが System Prompt に与える影響
各モードは System Prompt の末尾に追加の指示を付与して Agent の動作をガイドします:
Standard モードの追加:
"Use tools freely when they help accomplish the task."
PTC モードの追加:
"Before any action, output a numbered plan. Wait for user confirmation before executing."
Minimal モードの追加:
"Answer from your knowledge first. Only use tools when absolutely necessary."
Creative モードの追加:
"Think creatively and explore novel approaches. Offer additional ideas beyond the request."
❓ よくある質問
📖 まとめ
- 4つのモード:Standard(自律的意思決定)、PTC(計画してから実行)、Minimal(最小ツール)、Creative(探索的出力)
- Standard モードがデフォルトの選択で、80% のシナリオに適している
- PTC モードは Plan → Confirm → Execute フローで正確な制御を提供
- Minimal モードは知識ベースの回答を優先し、トークンを節約
- Creative モードは高い自由度を提供し、創造性と探索に適している
- 実プロジェクトでは異なるフェーズで異なるモードを組み合わせ可能
- モードは Temperature、System Prompt、ツール戦略を通じて Agent の動作に影響
📝 練習問題
1. ⭐ 基礎:4つのモードすべてで Agent に同じ質問「クイックソート関数を書いて」をし、出力の違い(ツール呼び出し回数、出力長、コードスタイル)を比較してください。
2. ⭐⭐ 応用:PTC モードを使って5ステップ以上のタスク(例:「プロジェクトにロギングシステムを追加」)を完了してください。Agent の計画内容を記録し、手動で計画を修正(ステップの削除や調整)して、実行結果を観察してください。
3. ⭐⭐⭐ チャレンジ:「モード組み合わせプラン」を設計してください——完全な Web 開発プロジェクト(設計からデプロイまで)の各フェーズに最も適切なモードを選択し、Mermaid フローチャートでモード切り替えのタイミングと理由を示すこと。