02 仕組み(エージェントループ・ツール・コンテキスト)

更新日:

エージェントループ

タスクを渡すと Claude は次の3段階を繰り返す。

  1. 情報収集(gather context) … ファイル検索・読み込み
  2. 行動(take action) … 編集・コマンド実行
  3. 検証(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
WebWeb検索、ドキュメント取得
コードインテリジェンス型エラー検出、定義ジャンプ、参照検索(言語別プラグインが必要)

ほかに、サブエージェント起動・ユーザーへの質問(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つ

  1. チェックポイント … 編集前にファイルをスナップショット。Esc 2回で巻き戻し。※DB・API・デプロイなど外部への影響は戻せない
  2. 権限 … 何を聞かずにやってよいか。Shift+Tab でモード切替 → 05_権限とセキュリティ

上手な付き合い方(公式)

  • 会話である: 最初から完璧に言わなくていい。違ったら「そうじゃなくて〜」と直す
  • 割り込み: Esc で即停止。作業中に追加の指示を打って Enter すると、キューに入り次のステップ前に読まれる
  • 指示でなく委任: 「決済が期限切れカードで壊れている。src/payments/ あたり。調べて直して」くらいで十分

プロンプトキャッシュ(補足)

同じ前置き(システムプロンプト・CLAUDE.md など)を再利用して速く安くする仕組み。途中でモデルや effort を変えるとキャッシュが無効になり、確認を求められることがある。
キャッシュは約1時間で切れるので、長時間放置した大きな会話を再開すると利用枠を多く使う(Pro/Max では警告が出る)。

関連