02 仕組み(エージェントループ・ツール・コンテキスト)
更新日:
エージェントループ
タスクを渡すと Claude は次の3段階を繰り返す。
- 情報収集(gather context) … ファイル検索・読み込み
- 行動(take action) … 編集・コマンド実行
- 検証(verify results) … テスト実行・結果確認
質問だけなら 1 のみ、バグ修正なら 1→2→3 を何周もする。人間はいつでも割り込んで方向修正できる。
このループは2つの部品で動く:
- モデル(考える) … Opus(既定。Opus 5.5) / Sonnet(日常のコーディング。Sonnet 5.5) / Haiku(軽い作業。Haiku 5.5) / Fable(最難関・長時間タスク。Fable 5.1)。
/modelで切替 → 17_設定とモデル・コスト - ツール(行動する) … これがあるから「エージェント」になる
Claude Code 自体は「モデルの周りでツールを提供し、モデルが見るコンテキストを管理する層」= エージェントハーネスと呼ばれる。
組み込みツールの5分類
| 分類 | できること |
|---|---|
| ファイル操作 | 読む・編集・新規作成・リネーム |
| 検索 | パターンでファイル検索、正規表現で内容検索 |
| 実行 | シェルコマンド、サーバー起動、テスト、git |
| Web | Web検索、ドキュメント取得 |
| コードインテリジェンス | 型エラー検出、定義ジャンプ、参照検索(言語別プラグインが必要) |
ほかに、サブエージェント起動・ユーザーへの質問(AskUserQuestion)などの補助ツールもある。
例: 「失敗しているテストを直して」→ テスト実行 → エラー読む → 関連ファイル検索 → 読む → 編集 → 再テスト。
Claude がアクセスできるもの
- プロジェクト: 起動したディレクトリ以下(外は許可制)
- ターミナル: あなたが実行できるコマンドは全部(ビルド、git、パッケージマネージャ…)
- git の状態: ブランチ、未コミット変更、履歴
- CLAUDE.md(と AGENTS.md) → 04_CLAUDE.mdとメモリ
- 自動メモリ: Claude が自分で書き溜める学び(MEMORY.md の先頭200行 or 25KB を毎回読む)
- 設定した拡張: MCP、Skills、サブエージェント、Chrome 連携など
実行環境
| 環境 | コードが動く場所 | 用途 |
|---|---|---|
| ローカル | 自分のPC | 基本。ファイルや環境に全アクセス |
| クラウド | Anthropic 管理のVM(または自社環境) | 任せっぱなし、手元にないリポジトリ |
| Remote Control | 自分のPC(操作はブラウザ/スマホから) | 外出先から手元のセッションを操作 |
コンテキストウィンドウ(最重要概念)
コンテキスト = Claude が今見ている「作業メモリ」。ここに入るもの:
- 会話履歴、読んだファイルの中身、コマンド出力
- CLAUDE.md、自動メモリ、読み込まれた Skills、システム指示
いっぱいになると性能が落ちる(前半の指示を忘れる、ミスが増える)。だからほぼ全てのベストプラクティスは「コンテキストをどう節約するか」に行き着く。
いっぱいになったとき(自動コンパクション)
- まず古いツール出力を消し、それでも足りなければ会話を要約する
- 依頼内容や重要なコードは残るが、序盤の細かい指示は消えることがある → 恒久ルールは CLAUDE.md へ
- 手動:
/compact、焦点指定:/compact API の変更に集中して - CLAUDE.md に「Compact Instructions」節を書くと要約時に残すものを指定できる
- 確認:
/context(何が容量を使っているかを色付きグリッドで表示) - アイドル時のコンパクション(v2.1.299〜、ターミナル): 20万トークンを超えた会話を約54分放置すると、1時間のプロンプトキャッシュが切れる前に自動で要約する(再開時に高くつかないように)。OFF:
/configの Idle compaction、または"idleCompaction": false - コンテキストが小さいモデルに切り替えると、溢れる分は切替前のモデルで先に要約される
コンテキストを節約する仕組み
- Skills … 普段は説明文だけ、使う時に本文を読み込む
- サブエージェント … 別のコンテキストで作業し、要約だけ返す
- MCP ツール … 既定で遅延読み込み(ツール名だけ置いておき、使う時にスキーマを読む = tool search)
Claude Code が自動で足す文脈
- CLAUDE.md、出力スタイルの指示、読んだファイルがディスク上で変わった通知、コミット/PR の署名行(
Co-Authored-Byなど) - 署名を変えたい → 設定
attribution、組み込みの git 指示を消す →includeGitInstructions: false
セッション
- 会話は
~/.claude/projects/に JSONL でローカル保存される → 再開・巻き戻し・分岐が可能 - セッションは独立: 新しいセッションは前の会話を覚えていない(覚えさせたいことは CLAUDE.md / 自動メモリ)
- ブランチを切り替えると Claude が見るファイルは変わるが、会話履歴はそのまま
- 詳細 → 06_セッション管理とチェックポイント
安全装置は2つ
- チェックポイント … 編集前にファイルをスナップショット。
Esc2回で巻き戻し。※DB・API・デプロイなど外部への影響は戻せない - 権限 … 何を聞かずにやってよいか。
Shift+Tabでモード切替 → 05_権限とセキュリティ
上手な付き合い方(公式)
- 会話である: 最初から完璧に言わなくていい。違ったら「そうじゃなくて〜」と直す
- 割り込み:
Escで即停止。作業中に追加の指示を打って Enter すると、キューに入り次のステップ前に読まれる - 指示でなく委任: 「決済が期限切れカードで壊れている。src/payments/ あたり。調べて直して」くらいで十分
プロンプトキャッシュ(補足)
同じ前置き(システムプロンプト・CLAUDE.md など)を再利用して速く安くする仕組み。途中でモデルや effort を変えるとキャッシュが無効になり、確認を求められることがある。
キャッシュは約1時間で切れるので、長時間放置した大きな会話を再開すると利用枠を多く使う(Pro/Max では警告が出る)。