01. Claude Code の実行モデル
Claude Code は単なる「チャット型のAIコーディング支援」ではなく、LLM・MCP(Model Context Protocol)・ツール実行環境・コンテキスト圧縮ロジックが一体化した “コーディングエージェント” です。
ここでは Claude Code が実行時に内部で何をしているのかを、 ステップ構造・内部プロセス・トークン最適化の観点から徹底的に整理します。
このバージョンでは:
- thinking block の具体例
- MCP が返す JSON の具体例
- 従来型 LLM との比較表
- 実行フローを同期/非同期視点で補足 などを追加し、実用ノートとしてより深い理解を得られる構成にしました。
🎯 この記事のゴール
Section titled “🎯 この記事のゴール”- Claude Code が「どう実行されているか」が正確に理解できる
- LLM がどこで reasoning(推論)し、どこで MCP が介入するかが分かる
- トークン効率化のための “内部最適化ポイント” が明確になる
🧩 全体像: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 を生成します。
thinking block の具体例(擬似)
Section titled “thinking block の具体例(擬似)”<internal>- ユーザーの目的:バグ修正?コード生成?- 関連ファイルは何か? → src/utils/date.ts 周辺?- 依存関係は?- テストを実行すべきか?- 必要なツール:fs, exec, git.diff</internal>重要ポイント
Section titled “重要ポイント”- thinking block は内部推論で大量トークン発生(数千〜1万トークンもあり得る)
- しかし次ターンには完全削除される(コンテキスト溢れ防止)
- 履歴には「思考の結果」だけが要約されて残る
📦 2. 必要な外部情報の特定(Action Planning by LLM)
Section titled “📦 2. 必要な外部情報の特定(Action Planning by LLM)”LLM はタスク実行に必要な外部情報を列挙し、MCP へ指示を構築します。
例:
- 特定のファイルの内容
- テスト結果
- AST 解析結果
- Git diff
LLM → MCP の呼び出し例
Section titled “LLM → MCP の呼び出し例”{ "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 }}MCP の価値
Section titled “MCP の価値”- 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 cache と MQA を採用。
KV Cache
Section titled “KV Cache”- 過去のトークンの Attention 計算を保存
- 次ターンでは新規トークン分だけ計算
MQA(Multi-Query Attention)
Section titled “MQA(Multi-Query Attention)”- 全ヘッドで Key/Value を共有
- K/V のメモリ使用量が従来の 1/N
- 計算量減 → 長文での破綻を抑える
🧹 6. コンテキスト圧縮(Context Compression)
Section titled “🧹 6. コンテキスト圧縮(Context Compression)”Anthropic 公式記述:
Claude は会話履歴を summarize & compress する
つまり:
- 不要な履歴 → 要約して圧縮
- 重要情報 → メタデータ化して保持
- thinking block → 完全削除
- ツール結果 → 必要部分のみ残す
- 100ターン超でもコンテキスト数 KB 程度
- 長期タスクでも “過去の意図” を保持
🧾 7. ユーザーへの最終出力
Section titled “🧾 7. ユーザーへの最終出力”最終的に LLM は:
- reasoning の結果
- 圧縮済みコンテキスト
- MCP ツールの成果
を統合して回答を生成します。
🔥 従来型 LLM との比較
Section titled “🔥 従来型 LLM との比較”| 項目 | 従来スタイル | Claude Code |
|---|---|---|
| コード解析 | ファイル全文を読み込む | MCPで必要部分のみ抽出 |
| 実行環境 | 無し(LLM推論だけ) | exec sandbox で実際に実行 |
| 情報取得方法 | 文章で曖昧に依頼 | 構造化 JSON で確実な呼び出し |
| 推論の精度 | コンテキスト溢れで劣化 | thinking block 削除+最適化 |
| 長期タスク | 破綻しやすい | サマリー化で維持 |
🔄 補足:同期的 vs 非同期的フロー
Section titled “🔄 補足:同期的 vs 非同期的フロー”実際の内部処理は以下のように非同期チェーンで動きます:
User → LLM Planning → MCP Request → MCP Exec → MCP Result → LLM Reasoning → OutputClaude Code はこの “非同期ループ” を自然に扱えるよう最適化されています。
📌 まとめ:Claude Code の実行モデルのポイント
Section titled “📌 まとめ:Claude Code の実行モデルのポイント”- LLM は判断だけ担当、実処理は MCP が行う
- thinking block は破棄されるため長文でも破綻しない
- MQA + KV Cache により長文処理が高速化
- MCP が必要データだけ抽出するためトークン効率が抜群
- 全体として “LLM の能力” ではなく “設計の強さ” が効いている
📚 次に読むべき記事
Section titled “📚 次に読むべき記事”- コンテキスト管理 - 実践ガイド
mcp-deep-dive.mdx(MCP プロトコルを理解する)agent-best-practices.mdx(エージェント開発の実践論)