はじめに
「AIにお願いしたら、勝手にファイルを読んで、テストを実行して、バグまで直してくれた」
Claude Codeを使い始めると、こんな体験をすることがあります。「賢いAI」で片付けてしまいがちですが、内側では明確な仕組みが動いています。
この記事では、Claude Codeの核心にあるエージェントループという仕組みを、図を使って丁寧に解説します。仕組みがわかると、「なぜこういう使い方が効果的なのか」が腑に落ちます。
1. チャットとエージェントは何が違うのか
まず、普通のチャットとの違いから整理します。
普通のLLMチャット
GPT-4やClaudeのWebチャットを使うとき、やり取りの単位は「1往復」です。
ユーザー:「〇〇のコードを書いて」
AI:「はい、こちらです。(コード)」
AIはテキストを受け取り、テキストを返す。それだけです。ファイルを自動で書き換えたり、コマンドを実行したりはしません。
エージェント
Claude Codeは違います。1回の指示で、次のようなことが起きます。
- 「このバグを直して」と頼む
- Claude Codeがソースコードを読む
- 問題箇所を特定する
- テストコードを確認する
- コードを修正する
- テストを実行して確認する
- 「直しました」と報告する
これは1往復ではありません。複数のステップが連鎖して、タスクが完了するまでループするのです。これが「エージェント」の本質です。
2. エージェントループの構造
では、ループの内側はどうなっているのでしょうか。
ポイントは 「終了条件」 です。Claudeが「ツール呼び出しを含まないテキスト応答」を出力した瞬間、ループは自然に終了します。言い換えると、「まだやることがある」と判断している間は、Claudeが自分でループを回し続けます。
ループの中で何が積み上がるのか
ループが回るたびに、 会話履歴(コンテキスト) にログが積み上がっていきます。
[ユーザーの指示]
[Claude: ファイルを読む、とツール呼び出し]
[ツール結果: ファイルの中身]
[Claude: テストを実行する、とツール呼び出し]
[ツール結果: テスト結果]
[Claude: コードを修正する、とツール呼び出し]
...
[Claude: 完了しました、とテキスト応答] ← ここでループ終了
Claudeはこの積み上がった履歴を見ながら「次に何をすべきか」を判断しています。チャットと同じ言語モデルなのに自律的に見えるのは、ループとツールとコンテキストの3点セットがあるからです。
3. ツールがエージェントを「エージェント」たらしめる
ループの仕組みだけでは、まだテキストを生成しているだけです。エージェントを強力にしているのは、 ツール(Tools) です。
Claude Codeには、主に次の4種類のビルトインツールがあります。
| ツール | できること |
|---|---|
| ファイル読み書き | コードの読み込み、ファイルの作成・編集 |
| コマンド実行 | テストの実行、ビルド、lintなど |
| コード検索 | プロジェクト内の関数・変数の検索 |
| Git操作 | diff確認、コミット、ブランチ操作 |
ツールはLLMが「呼び出す」ものです。Claudeはテキストとして「このファイルを読みたい」という意思を示し、ランタイムが実際の処理を行い、結果をClaudeに返します。
重要なのは、ツールの結果もコンテキストに追加されるという点です。「ファイルの中身」「テスト結果」「エラーメッセージ」がすべて記憶として積み上がり、次の判断材料になります。
4. コンテキストウィンドウという「記憶の制約」
しかし、ここに限界があります。
LLMが一度に参照できるテキスト量には上限があります。これをコンテキストウィンドウと呼びます。ループを回すほど、会話履歴が積み上がり、コンテキストが圧迫されていきます。
Claude Codeはこれに対応するため、 自動圧縮(Summarization) を行います。コンテキスト使用率が一定を超えると、古い会話履歴を要約して圧縮し、スペースを確保します。
[コンテキスト使用率が高まる]
↓
[古い会話履歴を自動要約]
↓
[圧縮された要約 + 最新の会話でループ継続]
これが「長い作業をClaudeに任せると、途中から精度が落ちる」という現象の構造的な理由です。圧縮によって細かい文脈が失われることがあるのです。
実務的な対策
- 1つのタスクを大きくしすぎない(ループを長引かせない)
-
CLAUDE.mdに重要なルールを書く(毎回読み込まれる「常に残る記憶」として機能する) -
Plan Modeで作業計画を確認してから実行する
5. 仕組みを知ると、使い方が変わる
エージェントループを理解すると、次のことが自然に理解できます。
なぜ曖昧な指示はうまくいかないのか
Claudeは「次に何をすべきか」を自分で判断します。判断材料が曖昧なままだと、意図とは異なる方向にループが進んでしまいます。
なぜ CLAUDE.md が効くのか
ループが始まるたびにシステムプロンプトとして読み込まれるため、「チームのルール」を毎回明示できます。コーディング規約、禁止操作、プロジェクトの概要などを書いておくと、ループ全体の方向性を制御できます。
なぜ権限管理が重要なのか
エージェントはツールを自律的に呼び出します。許可する操作の範囲(ファイルの読み取りのみ可、コマンド実行は確認必要、など)を設計することが、実務での安全な利用につながります。
おわりに
Claude Codeの「自律性」の正体は、特別な魔法ではありません。
- ループ:タスクが終わるまで繰り返す仕組み
- ツール:テキストの外側の世界(ファイル・コマンド・コード)に触れる能力
- コンテキスト:ループの中で積み上がる「記憶」
この3つが組み合わさることで、「チャットボット」が「エージェント」になります。
この構造は Claude Code 固有のものではありません。LangChain、AutoGen、OpenAI Agents SDK など、現在普及しているエージェント系フレームワークはいずれも同じループの考え方を基盤としています。「ループ・ツール・コンテキスト」という3つの概念を押さえておくと、新しいAIツールに触れたときも、すぐに内側の仕組みを想像できるようになります。

