【Claude Code 連載 第71回】Claude Code の仕組み — agentic ループという骨格

スポンサーリンク
第71回 Claude Code の仕組み — agentic ループという骨格 用語解説
第71回 Claude Code の仕組み — agentic ループという骨格
この記事は約16分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

スポンサーリンク

背景

この連載では、Claude Codeの公式ドキュメントを1ページずつ読み解いていきます。公式ドキュメントは情報が網羅されている分、「結局どの機能を、どんな場面で使えばいいのか」は自分で考える必要があり、読むのに意外と時間がかかります。そこで、私が実務で使うために読み込んだ内容を「使う場面→実例コード」の順に整理して残していくことにしました。専門家の解説というより、一次情報を読んだ記録です。推測や動作を確認していない部分には、その都度そう書きます。

1. 一言でいうと何か

このページは、Claude Code が何をどう動かしているのかを一枚にまとめた全体地図です。

連載70回を経て、ようやく「土台」に当たるページが来ました。内容の多くはこれまで個別に扱ってきたもの——ツール(第62回)、セッション(第68回)、チェックポイント(第69回)、コンテキストウィンドウ(第70回)、権限(第16回)——の再掲です。ただしそれらがどう噛み合っているかは、このページにしか書かれていません。

中心概念は1つ。agentic ループです。

Claude にタスクを与えると、3つのフェーズを通じて作業します。コンテキストの収集、アクションの実行、結果の検証です。これらのフェーズは相互に融合します。

そしてもう1つ、この連載で初めて出てくる用語があります。

Claude Code は Claude の周りの agentic ハーネスとして機能します。言語モデルを有能なコーディングエージェントに変えるツール、コンテキスト管理、実行環境を提供します。

**ハーネス(harness=装具・馬具)。**モデルそのものではなく、モデルに手足と記憶と作業場を与える枠組み——それが Claude Code だ、という自己定義です。ここが本ページで最も本質的な一文だと思います(この評価は筆者のもので、原文は特に強調していません)。

範囲も明示されています。ターミナルで実行される agentic アシスタントです。コーディングに優れていますが、コマンドラインからできることなら何でも支援できます。

2. どういう場面で役立つか

シーン1:Claude が「勝手に」たくさん動く理由を理解する

ループの説明が、その理由です。Claude は前のステップから学んだことに基づいて各ステップが何を必要とするかを判断し、数十のアクションを連鎖させ、途中で軌道修正します。

そしてループは一定ではありません。コードベースに関する質問は、コンテキスト収集だけで済むかもしれません。バグ修正は3つのフェーズすべてを繰り返し循環します。リファクタリングは広範な検証を伴うかもしれません。

シーン2:うまくいかないときに「どう介入するか」を知る

原文はあなたもループの一部だと明言します。任意の時点で中断して Claude を別の方向に導いたり、追加のコンテキストを提供したり、別のアプローチを試すよう求めたりできます。Claude は自律的に動作しますが、あなたの入力に対して応答性を保ちます。

介入手段は2つあり、効果が違います(後述)。

シーン3:プロンプトの書き方を変える

構成3で引用しますが、原文は**「指示するのではなく委譲する」**という節を立てています。どのファイルを読むか、どのコマンドを実行するかを指定する必要はありません。

シーン4:自分の環境を選ぶ

ローカル/クラウド/リモートコントロールの3環境と、7つのインターフェースが整理されています。インターフェースは Claude の表示方法と相互作用方法を決定しますが、基盤となる agentic ループは同じです。

不要・向かないケース

  • **手順書が欲しい。**このページは概念の地図です。ステップバイステップのウォークスルーについては、一般的なワークフローを参照してください。
  • **拡張機能の選び方を知りたい。**それは別ページです。スキル、MCP、フックなどの拡張機能については、Claude Code を拡張するを参照してください。
  • **リモートの副作用を巻き戻したい。**できません。リモートシステム(データベース、API、デプロイメント)に影響するアクションはチェックポイントできません。
  • シンボリックリンク先を復元したい。****復元はシンボリックリンクとハードリンクされたファイルをスキップします。——第69回では触れられていなかった制限です。
  • **会話履歴に恒久的なルールを覚えさせたい。**原文が2度繰り返して否定しています。会話履歴に依存するのではなく、永続的なルールを CLAUDE.md に入れてください。

3. 仕組みの解説

**このページの fenced コードブロックは3本で、すべてプロンプト例です。**全数を原文どおり引用します。表は2つ(ツールのカテゴリ/実行環境)あり、どちらも保持します。

前提:このページ自体に特定のバージョン要件はありません。コード インテリジェンス機能のみコード インテリジェンス プラグインが必要です。

ループを駆動する2つの部品

agentic ループは2つのコンポーネントによって駆動されます。推論するモデルと、アクションを実行するツールです。

モデルについては選択指針が示されています。Sonnet はほとんどのコーディングタスクをうまく処理します。Opus は複雑なアーキテクチャ上の決定に対してより強力な推論を提供します。切り替えはセッション中に /model で切り替えるか、claude --model <name> で開始します。

用語の定義が1つ添えられています。このガイドで「Claude が選択する」または「Claude が決定する」と言う場合、モデルが推論を行っています。

ツールの位置づけは明快です。ツールがなければ、Claude はテキストで応答することしかできません。ツールがあれば、Claude はアクションを実行できます。そして各ツール使用は情報を返し、ループにフィードバックされ、Claude の次の決定に情報を与えます。

第62回では約40のツールを機能別8グループに再編しましたが、このページは5カテゴリでまとめています。

カテゴリClaude ができること
ファイル操作ファイルの読み取り、コード編集、新規ファイル作成、名前変更と再編成
検索パターンでファイルを検索、正規表現でコンテンツを検索、コードベースを探索
実行シェルコマンド実行、サーバー起動、テスト実行、git 使用
ウェブウェブ検索、ドキュメント取得、エラーメッセージ検索
コード インテリジェンス編集後の型エラーと警告を表示、定義にジャンプ、参照を検索(コード インテリジェンス プラグインが必要

5つ目だけがプラグイン前提である点は見落としやすいところです。第57回で扱ったプラグイン発見のページに、この LSP 系機能が載っていました。

なおこれらが主な機能です。Claude には subagent の生成、質問、その他のオーケストレーションタスク用のツールもあります。

ループの具体例

「失敗しているテストを修正して」と言ったとき、Claude がやりうること——原文の6ステップです。

  1. テストスイートを実行して、何が失敗しているかを確認
  2. エラー出力を読む
  3. 関連するソースファイルを検索
  4. それらのファイルを読んでコードを理解
  5. ファイルを編集して問題を修正
  6. テストを再度実行して検証

収集 → 実行 → 検証が、この6ステップに折り込まれています。各ツール使用は Claude に新しい情報を与え、次のステップに情報を与えます。これが agentic ループの実際の動作です。

拡張の位置づけも1行で整理されています。組み込みツールが基盤です。スキルで Claude が知ることを拡張し、MCP で外部サービスに接続し、フックでワークフローを自動化し、subagent にタスクをオフロードできます。これらの拡張は、コア agentic ループの上に層を形成します。

Claude が触れられるもの

claude を実行した時点でアクセス可能になるのは6種類です。

  • **プロジェクト。**ディレクトリとサブディレクトリ内のファイル、および許可を得た他の場所のファイル。
  • **ターミナル。****実行できるあらゆるコマンド。**そして印象的な一文——コマンドラインからできることなら、Claude もできます。
  • **git の状態。**現在のブランチ、コミットされていない変更、最近のコミット履歴。
  • CLAUDE.md。
  • 自動メモリ。****MEMORY.md の最初の200行または25KB のいずれか先に達した方が、各セッションの開始時に読み込まれます。(第70回と同じ数値)
  • **設定した拡張機能。**MCP サーバー、skills、subagents、Claude in Chrome。

そして差別化の主張が続きます。Claude はプロジェクト全体を見ることができるため、プロジェクト全体で作業できます。「認証バグを直して」なら関連ファイルを検索し、複数のファイルを読んでコンテキストを理解し、それらを横断して調整された編集を行い、テストを実行して修正を検証し、求めればコミットします。これは現在のファイルのみを見るインラインコードアシスタントとは異なります。

3つの実行環境

環境コード実行場所ユースケース
ローカルマシンデフォルト。ファイル、ツール、環境への完全なアクセス
クラウドAnthropic 管理 VM、またはセルフホスト環境(組織が運用)タスクをオフロード、ローカルにないリポジトリで作業
リモートコントロールマシン、ブラウザから制御ウェブ UI を使用しながら実行とファイルをローカルに保つ

リモートコントロール(第24回)の位置づけがここで明確になります。クラウドとの違いは「どこで動くか」——リモートコントロールはマシンで動き、ブラウザは操作卓にすぎない

インターフェースは7つ挙げられています。**ターミナル、デスクトップアプリ、IDE 拡張機能、claude.ai/code、リモートコントロール、Slack、CI/CD パイプライン。**この連載で第23回〜第44回にかけて個別に扱ってきたものが、ここで一覧になります。

セッションは独立している

第68回の補足として、重要な原則が明記されています。

セッションは独立しています。各新規セッションは、前のセッションの会話履歴なしで、新しいコンテキストウィンドウで開始されます。

橋渡しの手段は2つ。Claude は自動メモリを使用してセッション間で学習を保持でき、CLAUDE.md に独自の永続的な指示を追加できます。

ブランチとの関係も整理されています。Claude は現在のブランチのファイルを見ます。ブランチを切り替えると、Claude は新しいブランチのファイルを見ますが、会話履歴は同じままです。Claude はブランチ切り替え後も、議論したことを覚えています。

**ファイルは切り替わるが、記憶は切り替わらない。**この非対称が worktree を使う理由につながります(第63回)。

再開とフォークの違いも1文で定義されています。claude --continue または claude --resume でセッションを再開すると、同じセッション ID を使用して中断したところから再開し、新しいメッセージを既存の会話に追加します。--fork-session または /branch でフォークすると、履歴を新しいセッション ID にコピーし、元のセッションは変更されません。

コンテキストが満杯になったとき

第70回で扱った内容の、内部挙動側からの記述です。

Claude Code はコンテキストウィンドウの制限に近づくと、自動的にコンテキストを管理します。古いツール出力をクリアし、必要に応じて会話を要約します。リクエストと主要なコードスニペットは保持されます。会話の早い段階からの詳細な指示は失われる可能性があります。

**「古いツール出力をクリアする」**が先に来て、要約はその次という順序は、第70回には書かれていなかった情報です。

保持内容を制御する手段が2つ。CLAUDE.md に「Compact Instructions」セクションを追加するか、/compact をフォーカス付きで実行します(例:/compact focus on the API changes)。

CLAUDE.md の「Compact Instructions」セクションは、このページで初めて出てくる仕組みです。毎回フォーカスを打ち込まなくても、圧縮方針を常設できます。

そして失敗モードが定義されています。

単一のファイルまたはツール出力が非常に大きく、各要約後にコンテキストがすぐに再度満杯になる場合、Claude Code は数回の試行後に自動コンパクト化を停止し、ループする代わりにエラーを表示します。

thrashing(スラッシング)エラーと呼ばれるもので、復旧手順はトラブルシューティングのページに委ねられています。巨大なファイルを1つ読ませただけで詰むケースがある、ということです。

MCP のコスト挙動も再掲されています。MCP ツール定義はデフォルトで遅延され、ツール検索を通じてオンデマンドで読み込まれるため、Claude が特定のツールを使用するまで、ツール名とサーバー指示のみがコンテキストを消費します。

スキルと subagent でコンテキストを制御する

第70回と重なりますが、1点だけ新しい情報があります。

スキル:**手動で呼び出すスキルの場合、disable-model-invocation: true を設定して、必要になるまで説明をコンテキストから除外します。**そして——自分で書いていないスキルの場合、skillOverrides を使用して設定から同じことを行います。

他人が書いたスキルを、自分の設定側から黙らせられる。skillOverrides はこの連載で初出です。プラグイン経由で大量のスキルが入っている環境では効きます。

subagentSubagent は、フォークでない限り新規に開始されます。フォークの場合は、これまでの会話のコピーで開始されます。どちらの場合でも、subagent のツール呼び出しはコンテキストから除外され、Claude は subagent が完了したときに要約を取得します。

第64回で「フォークされたサブエージェントは別のサーフェスではない」と整理しましたが、コンテキスト観点ではフォークでも通常でも、ツール呼び出しが親に入らない点は同じです。

2つの安全装置

Claude には2つの安全メカニズムがあります。チェックポイントはファイル変更を元に戻すことができ、権限は Claude ができることを制御します。

チェックポイント(第69回)について、断言が1つ。ファイル編集はすべて可逆的です。操作はEsc を2回押して前の状態に巻き戻すか、Claude に元に戻すよう求めてください。

境界も再掲されます。チェックポイントは git とは別であり、会話を再開するときに利用可能なままです。ファイル変更のみをカバーし、復元はシンボリックリンクとハードリンクされたファイルをスキップします。

権限モードは4つ。Shift+Tab で循環します。

  • Auto分類器がバックグラウンドでほとんどのアクションをレビューし、求める代わりにリスクのあるものをブロックします。Pro、Max、Team プランでは、インタラクティブターミナルと VS Code セッションの組み込みの開始権限モードです
  • ManualClaude はファイル編集とシェルコマンドの前に求めます
  • Accept editsClaude はファイルを編集し、mkdirmv などの一般的なファイルシステムコマンドを実行するよう求めず、他のコマンドはまだ求めます
  • PlanClaude はソースファイルを編集せずに探索し、プランを提案します

Auto がPro / Max / Team の既定の開始モード(インタラクティブターミナルと VS Code)である点は、第47回のオートモード設定と合わせて押さえておく価値があります。

個別許可も可能です。.claude/settings.json で特定のコマンドを許可することもできます。用途はnpm testgit status などの信頼できるコマンド設定は組織全体のポリシーから個人的な設定までスコープできます。

効果的に使う3つの作法

ここからが、このページで唯一「使い方の助言」に踏み込んだ部分です。

**(1) Claude Code に聞く。****Claude Code はそれの使用方法を教えることができます。例として「フックをセットアップするにはどうすればいいですか?」や「CLAUDE.md を構造化する最良の方法は何ですか?」**が挙がっています。

補助コマンドは2つ。/init はプロジェクト用のスターター CLAUDE.md を生成します。****/doctor はインストールと設定の問題を診断し、修正することができるセットアップチェックアップを実行します。

**(2) 会話である。****完璧なプロンプトは必要ありません。何を望むかで始めて、その後改善します。**原文の例をそのまま引用します。

ログインバグを修正して

Claude が調査して何かを試したあと、こう返す。

それは完全には正しくありません。問題はセッション処理にあります。

最初の試みが正しくない場合、最初からやり直す必要はありません。反復します。

中断と操舵には2つの手段があり、効果が明確に違います。

  • Esc を押すと Claude が直ちに停止します。実行中のツール呼び出しがキャンセルされ、Claude は次の指示を待ちます。メッセージがキューにあれば次にそれらを送信します。
  • 修正を入力して Enter を押すと、実行中のツールを停止せずに送信できます。Claude は現在のアクションが完了するとすぐにそれを読み、次のステップを決定する前に調整します。

止めたいなら Esc、方向だけ変えたいなら打ち込んで Enter——ツールを殺さずに舵を切れる、という後者は知らない人が多いはずです。

**(3) 指示するのではなく委譲する。**有能な同僚に委譲することを考えてください。コンテキストと方向を与え、Claude が詳細を理解することを信頼します。

チェックアウトフローは期限切れのカードを持つユーザーに対して壊れています。
関連するコードは src/payments/ にあります。調査して修正できますか?

どのファイルを読むか、どのコマンドを実行するかを指定する必要はありません。Claude がそれを理解します。

このプロンプト例は症状・場所・依頼の3点だけで構成されています。手順は書いていません。それが「委譲」の形です。

4. まとめ + 次回予告

  • Claude Code はClaude の周りの agentic ハーネス。モデルにツール・コンテキスト管理・実行環境を与える枠組み。
  • 中心は agentic ループ——コンテキストの収集 → アクションの実行 → 結果の検証。フェーズは融合し、タスクによって循環の仕方が変わる。
  • **あなたもループの一部。**任意の時点で中断・誘導できる。
  • ループを駆動するのはモデル/modelclaude --model)とツールツールがなければテキストを返すだけ。
  • ツールは5カテゴリ——**ファイル操作/検索/実行/ウェブ/コード インテリジェンス。**コード インテリジェンスだけはプラグインが必要。
  • アクセス範囲は**プロジェクト・ターミナル・git の状態・CLAUDE.md・自動メモリ・設定した拡張機能。**コマンドラインからできることなら、Claude もできる。
  • 実行環境は3つ(ローカル/クラウド(Anthropic 管理 VM またはセルフホスト)/リモートコントロール)、インターフェースは7つ。基盤のループはどこでも同じ。
  • セッションは独立している。橋渡しは自動メモリCLAUDE.md だけ。
  • ブランチを切り替えるとファイルは変わるが、会話は変わらない。
  • コンテキスト満杯時はまず古いツール出力をクリアし、必要なら要約。保持されるのはリクエストと主要なコードスニペット、失われうるのは会話の早い段階の詳細な指示
  • 圧縮方針はCLAUDE.md の「Compact Instructions」セクションで常設できる。都度なら /compact focus on ...
  • 巨大なファイルやツール出力で自動コンパクト化が空回りすると、数回で停止して thrashing エラーを出す。
  • 他人のスキルをコンテキストから外すには**skillOverrides**(自分のスキルなら disable-model-invocation: true)。
  • 安全装置は2つ——チェックポイント(元に戻す)と権限(させない)。
  • **チェックポイントはシンボリックリンクとハードリンクを復元しない。**リモートへの副作用も戻せない。
  • 権限モードは Auto / Manual / Accept edits / PlanShift+Tab で循環。Pro・Max・Team はインタラクティブターミナルと VS Code で Auto が既定の開始モード。
  • 作法は3つ——Claude 自身に聞く(/init/doctor)/会話として反復する/指示ではなく委譲する。
  • 介入は2種類。Esc は即停止、打ち込んで Enter はツールを止めずに方向修正。

次回予告(暫定):このページが拡張機能の参照先として繰り返し指していた**機能概要(features-overview)**を取り上げ、CLAUDE.md・スキル・ルール・フック・MCP をいつ使い分けるか、そしてそれぞれのコンテキストコストを扱う予定です。


よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました