DeepSeek Harness: 4つの動作モード

最終更新:2026-08-31

DSH の4つの動作モードは、車のドライブモード——エコノミー、スポーツ、オフロード、サーキット——のようなものです。同じ車でも性格が変わります。適切なモードを選べば、Agent は期待通りに動作します。間違ったモードを選ぶと、保守的すぎるか制御不能になります。

💡 ヒント:Standard モードがデフォルトの選択で、80% のシナリオに適しています。PTC モードは正確な制御が必要なタスク向け。Minimal モードは�粋な Q&A 向け。Creative モードは探索的な作業向け。迷ったら Standard モードを使ってください。

📋 前提知識04-model-config.md の完了、モデルが設定・利用可能であること

1. 学習内容

イベントディスパッチモード


2. モード概要

▶ サンプル 1:

100%
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 はどのツールが必要か、どの操作を実行するかを自律的に分析し、最善の判断に従います:

ja Standard モード


🤖 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 の意思決定チェーン:

100%
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 モードを使うべきケース


4. PTC モード (Plan-then-Code)

(1) 動作原理

PTC モードは Agent の動作を2つのステップに分割します:

ja PTC モード

  1. Plan フェーズ:Agent がタスクを分析し、詳細な計画を出力するが、操作は実行しない
  2. Code フェーズ:ユーザーが計画を確認した後、Agent がステップバイステップで実行
TEXT 📖 参照専用
👤 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 モードが出力する計画の内容:

TYPESCRIPT
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:

100%
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. Minimal モード

(1) 動作原理

Minimal モードでは、Agent はツール呼び出しを最小限に抑え、自身の知識を使って回答することを好みます:

ja Minimal モード

TEXT 📖 参照専用

🤖 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:

100%
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 モードを使うべきケース


6. Creative モード

(1) 動作原理

Creative モードは Agent に最高の自由度を与え、探索的で創造的な出力を奨励します:

TEXT 📖 参照専用
👤 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 モードの適用シナリオ

100%
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 での切り替え:

TEXT 📖 参照専用
上部コントロールバー → モードドロップダウン → 対象モードを選択

CLI での切り替え:

BASH
# 起動時に指定
npx @deepseek-ai/dsh cli --mode ptc

# セッション中の切り替え
/mode creative

設定でのデフォルトモード:

YAML
# dsh.config.yaml
default_mode: ptc

(2) モード組み合わせ戦略

実際のプロジェクトでは、異なるフェーズで異なるモードを使用できます:

TEXT 📖 参照専用
プロジェクト計画フェーズ → 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) モード設定構造

TYPESCRIPT
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 の動作をガイドします:

TEXT 📖 参照専用
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."

❓ よくある質問

Q 最もトークンを節約するモードは?
A Minimal モード——ツール呼び出しが最も少なく、出力が最も簡潔。PTC モードはトークン消費が最も高い(計画+実行の2ステップ出力)。
Q PTC モードの計画を修正できますか?
A はい。計画内のステップを削除、修正、並べ替えできます。「ステップ3をスキップして」と Agent に伝えることも可能です。
Q Creative モードは安全でないコードを書きますか?
A その可能性があります。Creative モードは探索を奨励し、型破りなアプローチを使用する可能性があります。セキュリティに敏感なタスクには Creative モードは推奨されません。
Q Standard モードでの Agent の意思決定は予測可能ですか?
A 大部分は予測可能——同じ入力で通常は同様のツール呼び出しシーケンスが生成されます。ただし、LLM 出力には固有のランダム性があり、完全に決定論的ではありません。
Q 同じセッション内でモードを切り替えられますか?
A はい。モード切り替えは即座に有効になり、既存の会話履歴には影響しません。以降のメッセージは新しいモードの動作ルールに従います。
Q Minimal モードはツールの使用を完全に回避しますか?
A 完全には回避しません——使用を最小限に抑えます。質問に本当にファイルの読み取りやコマンドの実行が必要な場合、Agent はツールを呼び出しますが、Standard モードよりはるかに少なくなります。

📖 まとめ


📝 練習問題

1. ⭐ 基礎:4つのモードすべてで Agent に同じ質問「クイックソート関数を書いて」をし、出力の違い(ツール呼び出し回数、出力長、コードスタイル)を比較してください。

2. ⭐⭐ 応用:PTC モードを使って5ステップ以上のタスク(例:「プロジェクトにロギングシステムを追加」)を完了してください。Agent の計画内容を記録し、手動で計画を修正(ステップの削除や調整)して、実行結果を観察してください。

3. ⭐⭐⭐ チャレンジ:「モード組み合わせプラン」を設計してください——完全な Web 開発プロジェクト(設計からデプロイまで)の各フェーズに最も適切なモードを選択し、Mermaid フローチャートでモード切り替えのタイミングと理由を示すこと。

Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%