Skip to content

01. Claude Code の実行モデル

Claude Code は単なる「チャット型のAIコーディング支援」ではなく、LLM・MCP(Model Context Protocol)・ツール実行環境・コンテキスト圧縮ロジックが一体化した “コーディングエージェント” です。

ここでは Claude Code が実行時に内部で何をしているのかを、 ステップ構造・内部プロセス・トークン最適化の観点から徹底的に整理します。

このバージョンでは:

  • thinking block の具体例
  • MCP が返す JSON の具体例
  • 従来型 LLM との比較表
  • 実行フローを同期/非同期視点で補足 などを追加し、実用ノートとしてより深い理解を得られる構成にしました。

  1. Claude Code が「どう実行されているか」が正確に理解できる
  2. LLM がどこで reasoning(推論)し、どこで MCP が介入するかが分かる
  3. トークン効率化のための “内部最適化ポイント” が明確になる

🧩 全体像:Claude Code の実行フロー(7段階)

Section titled “🧩 全体像:Claude Code の実行フロー(7段階)”
graph TD
    %% 1. ユーザー入力
    A["ユーザー入力(Message)"]:::io --> B["タスク理解 / プランニング"]:::llm

    %% ==== LLMゾーン ====
    subgraph LLM
        B
        E["ツール結果の解釈 / 推論"]:::llm
        F["内部思考ブロックの削除 /
        コンテキスト圧縮"]:::llm
    end

    %% ==== MCPゾーン ====
    subgraph MCP
        C1["入力解析"]:::mcp
        C2["ツール呼び出し計画の構築"]:::mcp
        D["ツール実行
        fs / exec / fetch /
        自作 MCPツール / etc..."]:::mcp
    end

    %% フロー接続
    B --> C1
    C1 --> C2
    C2 --> D
    D --> E
    E --> F
    F --> G["ユーザーへの最終出力"]:::io

classDef llm fill:#E0F2FE,stroke:#1D4ED8,color:#0F172A;
classDef mcp fill:#ECFDF5,stroke:#15803D,color:#064E3B;
classDef io  fill:#F3F4F6,stroke:#4B5563,color:#111827;

🧠 1. LLM のタスク理解(Planning / Intent Parsing)

Section titled “🧠 1. LLM のタスク理解(Planning / Intent Parsing)”

ユーザーのメッセージを受け取り、Claude はまず:

  • タスク分類(BugFix / CodeGen / Review / Planning など)
  • 実行すべきアクションの推定
  • 過去の履歴との整合性チェック
  • 必要な外部情報の列挙

などを行い、内部で thinking block を生成します。

<internal>
- ユーザーの目的:バグ修正?コード生成?
- 関連ファイルは何か? → src/utils/date.ts 周辺?
- 依存関係は?
- テストを実行すべきか?
- 必要なツール:fs, exec, git.diff
</internal>
  • thinking block は内部推論で大量トークン発生(数千〜1万トークンもあり得る)
  • しかし次ターンには完全削除される(コンテキスト溢れ防止)
  • 履歴には「思考の結果」だけが要約されて残る

📦 2. 必要な外部情報の特定(Action Planning by LLM)

Section titled “📦 2. 必要な外部情報の特定(Action Planning by LLM)”

LLM はタスク実行に必要な外部情報を列挙し、MCP へ指示を構築します。

例:

  • 特定のファイルの内容
  • テスト結果
  • AST 解析結果
  • Git diff
{
"tool": "fs.read",
"arguments": { "path": "src/utils/date.ts" }
}

LLM は どのツールを使い、何を取りに行くか だけ判断します。 処理自体は MCP に任せます。


🛠 3. MCP による安全かつ高効率な実行

Section titled “🛠 3. MCP による安全かつ高効率な実行”

MCP は Claude Code の中心機能で、以下を担当:

  • ファイル読み書き
  • コード実行(exec sandbox)
  • Git 操作
  • DB クエリ
  • 外部 API 呼び出し
  • 自作 MCP ツール

MCP が返す実際のレスポンス例(成功)

Section titled “MCP が返す実際のレスポンス例(成功)”
{
"type": "success",
"data": {
"stdout": "Test Result: 1 failed",
"stderr": "",
"exitCode": 1
}
}
  • LLM に全文を渡さず、「必要な部分だけ返す」 → トークン激減
  • OS と直接対話しないため安全
  • 結果が JSON のため LLM の理解コストが下がる

🔎 4. ツール結果の解釈 / 推論(Tool Results Integration by LLM)

Section titled “🔎 4. ツール結果の解釈 / 推論(Tool Results Integration by LLM)”

LLM は MCP からの結果を受け取り:

  • JSON / stdout を解析
  • 必要に応じて追加ツール呼び出し
  • タスク完遂に向けて reasoning を継続

ここでも thinking block が発生し、次ターンでは圧縮されます。


🧮 5. トークン節約:KV キャッシュ + MQA(Multi-Query Attention)

Section titled “🧮 5. トークン節約:KV キャッシュ + MQA(Multi-Query Attention)”

Claude は長文処理を高速化するため、KV cacheMQA を採用。

  • 過去のトークンの Attention 計算を保存
  • 次ターンでは新規トークン分だけ計算
  • 全ヘッドで Key/Value を共有
  • K/V のメモリ使用量が従来の 1/N
  • 計算量減 → 長文での破綻を抑える

🧹 6. コンテキスト圧縮(Context Compression)

Section titled “🧹 6. コンテキスト圧縮(Context Compression)”

Anthropic 公式記述:

Claude は会話履歴を summarize & compress する

つまり:

  • 不要な履歴 → 要約して圧縮
  • 重要情報 → メタデータ化して保持
  • thinking block → 完全削除
  • ツール結果 → 必要部分のみ残す
  • 100ターン超でもコンテキスト数 KB 程度
  • 長期タスクでも “過去の意図” を保持

最終的に LLM は:

  • reasoning の結果
  • 圧縮済みコンテキスト
  • MCP ツールの成果

を統合して回答を生成します。


項目従来スタイルClaude Code
コード解析ファイル全文を読み込むMCPで必要部分のみ抽出
実行環境無し(LLM推論だけ)exec sandbox で実際に実行
情報取得方法文章で曖昧に依頼構造化 JSON で確実な呼び出し
推論の精度コンテキスト溢れで劣化thinking block 削除+最適化
長期タスク破綻しやすいサマリー化で維持

🔄 補足:同期的 vs 非同期的フロー

Section titled “🔄 補足:同期的 vs 非同期的フロー”

実際の内部処理は以下のように非同期チェーンで動きます:

User → LLM Planning → MCP Request → MCP Exec → MCP Result → LLM Reasoning → Output

Claude Code はこの “非同期ループ” を自然に扱えるよう最適化されています。


📌 まとめ:Claude Code の実行モデルのポイント

Section titled “📌 まとめ:Claude Code の実行モデルのポイント”
  • LLM は判断だけ担当、実処理は MCP が行う
  • thinking block は破棄されるため長文でも破綻しない
  • MQA + KV Cache により長文処理が高速化
  • MCP が必要データだけ抽出するためトークン効率が抜群
  • 全体として “LLM の能力” ではなく “設計の強さ” が効いている