AI Agentは実際に何をしているのか?Claude Code 50万行のコード漏洩全解析
- 核心的な見解:Anthropic傘下のAIプログラミングツールClaude Codeのソースコード漏洩事件が明らかにしたのは、その強力な性能の核心はAIモデル自体ではなく、モデルを中心に構築された膨大で複雑なエンジニアリングアーキテクチャにあるということだ。これは将来のAI製品における重要な競争優位性となる可能性がある。
- 重要な要素:
- 漏洩したソースコードの規模は51.2万行に達するが、AIモデルを直接呼び出すインターフェースコードはわずか1.6%で、残りの98.4%はエンジニアリングアーキテクチャコードである。
- コアとなるエンジニアリングモジュールには、クエリエンジン、ツールシステム、セキュリティ権限制御、およびマルチエージェントオーケストレーションシステムが含まれ、LLMをカーネルとする完全な実行環境を構成している。
- コストを抑制するために複雑なキャッシュメカニズムが設計されており、キャッシュヒット時とミス時のAPI呼び出しコストは10倍の差がある。キャッシュ管理はコスト制御の鍵である。
- 漏洩したコードには44個の機能スイッチが含まれており、「KAIROS」という名前の自律エージェントシステムを指している。これはユーザーの注意に応じてAIの主体性を動的に調整することができる。
- コードには完全なバーチャルペットシステム(BUDDY)が隠されており、複数の種、希少度レベル、装飾品が含まれており、2026年春のリリースが計画されていた。
51.2万行のコード、1906個のファイル、59.8 MBのソースマップ。3月31日未明、Solayer LabsのChaofan Shou氏は、Anthropicのフラッグシップ製品であるClaude Codeの完全なソースコードが公開npmレポジトリに晒されていることを発見した。数時間以内に、コードはGitHubにミラーされ、フォーク数は4.1万を突破した。
これはAnthropicが初めて犯したミスではない。2025年2月にClaude Codeが初リリースされた時、同じソースマップの漏洩が一度起きている。今回のバージョンはv2.1.88で、漏洩原因は同じで、Bunビルドツールがデフォルトでソースマップを生成し、.npmignoreファイルにこのファイルが記載されていなかったためだ。
ほとんどの報道は、漏洩の中にあった「イースターエッグ」を紹介している。例えば、バーチャルペットシステムがあったり、「アンダーカバーモード」でClaudeが匿名でオープンソースプロジェクトにコードをコミットできる機能などだ。しかし、本当に掘り下げるべき問題は、なぜ同じClaudeモデルが、Web版とClaude Codeではこれほどまでにパフォーマンスが違うのか? 51.2万行のコードは一体何をしているのか?
モデルは氷山の一角
答えはコード構造の中に隠されている。GitHubコミュニティによる漏洩ソースコードのリバースエンジニアリングによると、51.2万行のTypeScriptの中で、直接AIモデルを呼び出すインターフェースコードは約8000行のみで、全体の1.6%に過ぎない。

残りの98.4%は何をしているのか? 最大の2つのモジュールは、クエリエンジン(4.6万行)とツールシステム(2.9万行)だ。クエリエンジンは、LLM API呼び出し、ストリーミング出力、キャッシュオーケストレーション、マルチターン対話管理を処理する。ツールシステムは約40の組み込みツールと50のスラッシュコマンドを定義し、プラグインのようなアーキテクチャを形成しており、各ツールは独立した権限制御を持つ。
さらに、2.5万行のターミナルUIレンダリングコード(その中でprint.tsというファイルは5594行もあり、単一の関数が3167行に及ぶ)、2万行のセキュリティと権限制御(23の番号付きBashセキュリティチェックと18のブロックされたZsh組み込みコマンドを含む)、そして1.8万行のマルチエージェントオーケストレーションシステムがある。
機械学習研究者のSebastian Raschka氏は漏洩コードを分析した後、Claude Codeが同じモデルのWeb版よりも優れている核心は、モデル自体ではなく、モデルを中心に構築されたソフトウェアの足場(scaffolding)にあると指摘している。これには、リポジトリコンテキストのロード、専用ツールのスケジューリング、キャッシュ戦略、サブエージェントの協調が含まれる。彼はさらに、同じエンジニアリングアーキテクチャをDeepSeekやKimiなどの他のモデルに適用しても、同様のプログラミング性能向上が得られるとさえ考えている。
この差を理解するための直感的な比較がある。あなたがChatGPTやClaudeのWeb版に質問を入力すると、モデルが処理して答えを返し、対話が終わると何も残らない。しかし、Claude Codeのアプローチは全く異なる。起動時にまずあなたのプロジェクトファイルを読み込み、コードベースの構造を理解し、「テストでデータベースをモックしないで」といった前回の好みを記憶する。それはあなたのターミナルで直接コマンドを実行し、ファイルを編集し、テストを実行でき、複雑なタスクに遭遇すると複数のサブタスクに分割して異なるサブエージェントに並列処理させる。言い換えれば、Web版AIは質問応答ウィンドウだが、Claude Codeはあなたのコンピュータに住む共同作業者なのだ。
このアーキテクチャをOSに例える人もいる。42の組み込みツールはシステムコールに相当し、権限システムはユーザー管理に相当し、MCPプロトコルはデバイスドライバに相当し、サブエージェントオーケストレーションはプロセススケジューリングに相当する。各ツールは出荷時、開発者が安全であると宣言しない限り、デフォルトで「安全でない、書き込み可能」とマークされる。ファイルを編集するツールは、あなたがそのファイルを先に読んだかどうかを強制的にチェックし、読んでいなければ変更を許可しない。これはチャットボットにいくつかのツールを追加したものではなく、LLMをカーネルとし、完全なセキュリティメカニズムを備えた実行環境なのだ。
これは一つのことを意味する:AI製品の競争優位性(バリア)は、モデル層ではなく、エンジニアリング層にあるかもしれない。
キャッシュミスが発生するたび、コストは10倍に
漏洩コードの中に、promptCacheBreakDetection.tsというファイルがある。これはプロンプトキャッシュを無効化する可能性のある14種類のベクトルを追跡する。なぜAnthropicのエンジニアはこれほどまでにキャッシュミスを防ぐことに力を注ぐのか?
Anthropicの公式価格を見ればわかる。Claude Opus 4.6を例にとると、標準入力価格は100万トークンあたり5ドルだが、キャッシュがヒットした場合の読み取り価格はわずか0.5ドルで、90%安い。逆に言えば、キャッシュミスが発生するたびに、推論コストは10倍になる。

これは、漏洩コードの中にある大量の「過剰設計」に見えるアーキテクチャ上の決定を説明する。Claude Codeは起動時に、現在のgitブランチ、最近のコミット記録、CLAUDE.mdファイルをコンテキストとしてロードする。これらの静的コンテンツはグローバルにキャッシュされ、動的コンテンツと区切るために境界マーカーが使用され、各対話が既存のコンテキストを繰り返し処理しないことを保証する。コードには sticky latches と呼ばれるメカニズムもあり、モード切り替えが確立されたキャッシュを破壊するのを防ぐ。サブエージェントは、独自のコンテキストウィンドウを再構築するのではなく、親プロセスのキャッシュを再利用するように設計されている。
ここに掘り下げる価値のある詳細がある。AIプログラミングツールを使ったことのある人なら誰でも知っているが、対話が長くなるほど、AIの応答は遅くなる。なぜなら、各ターンの対話で、それまでの履歴をモデルに再送信する必要があるからだ。一般的な方法は、古いメッセージを削除してスペースを解放することだが、問題は、どのメッセージを削除してもキャッシュの連続性が破られ、対話履歴全体の再処理が必要になり、遅延とコストが同時に急上昇することだ。
漏洩コードには cache_edits と呼ばれるメカニズムが存在する。その方法は、メッセージを実際に削除するのではなく、API層で古いメッセージに「スキップ」マークを付けることだ。モデルはこれらのメッセージを見えなくなるが、キャッシュの連続性は破られない。これは、数時間続く長い対話で、数百の古いメッセージをクリアした後でも、次のターンの応答速度が最初のターンとほぼ同じ速さであることを意味する。一般ユーザーにとって、これが「なぜClaude Codeは無限に長い対話をサポートでき、遅くならないのか」という根本的な答えだ。

漏洩した内部監視データ(autoCompact.tsのコードコメントより、日付は2026年3月10日)によると、自動圧縮の失敗上限を導入する前、Claude Codeは1日あたり約25万回のAPI呼び出しを浪費していた。1279のユーザーセッションで50回以上の連続した圧縮失敗が発生し、最も深刻なセッションでは3272回連続で失敗していた。修正方法は、ただ1行の制限を追加するだけだった:MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3。
したがって、AI製品にとって、モデル推論コストが最も高価な層ではないかもしれない。キャッシュ管理の失敗こそが最も高くつくのだ。
44のスイッチ、同じ方向を指し示す
漏洩コードの中には、44のフィーチャーフラグ(feature flags)が隠されている——すでにコンパイル済みの機能スイッチで、ただ公開されていないだけだ。コミュニティの分析によると、これらのフラグは機能領域によって5つに分類され、その中で最も集中しているのは「自律エージェント」クラス(12個)で、KAIROSというシステムを指している。
KAIROSはソースコード内で150回以上参照されており、常駐バックグラウンドデーモンモードである。Claude Codeはもはや、あなたが能動的に呼び出した時だけ応答するツールではなく、常にバックグラウンドで動作し、継続的に観察、記録し、適切なタイミングで能動的に行動するエージェントとなる。前提はユーザーを中断しないことであり、ユーザーを15秒以上ブロックする可能性のある操作はすべて遅延実行される。

KAIROSはさらに、ターミナルフォーカス認識を内蔵している。コードには terminalFocus というフィールドがあり、ユーザーがターミナルウィンドウを見ているかどうかをリアルタイムで検出する。あなたがブラウザや他のアプリに切り替えると、エージェントはあなたが「不在」と判断し、自律モードに切り替わり、タスクを能動的に実行し、直接コードをコミットし、あなたの確認を待たない。あなたがターミナルに戻ると、エージェントはすぐに協調モードに戻る:まず今まで何をしたかを報告し、それからあなたの意見を求める。自律性の程度は固定されておらず、あなたの注意力に応じてリアルタイムで変動する。これは、AIツールが長年抱えてきた厄介な問題を解決する:完全に自律的なAIは人を不安にさせ、完全に受動的なAIは効率が低すぎる。KAIROSの選択は、AIの能動性をユーザーの注意力に応じて動的に調整することだ。あなたが見ていればおとなしくし、あなたが離れると自分で仕事をする。
KAIROSのもう一つのサブシステムは autoDream と呼ばれ、5つのセッションが蓄積されるか、24時間が経過するごとに、エージェントはバックグラウンドで「内省」プロセスを開始する。4つのステップを踏む。まず既存の記憶をスキャンし、現在何を把握しているかを理解する。次に対話ログから新しい知識を抽出する。そして新旧の知識を統合し、矛盾を修正し、重複を除去する。最後にインデックスを簡素化し、時代遅れのエントリを削除する。この設計は認知科学の記憶固定化理論からヒントを得ている。人間が睡眠中に一日の記憶を整理するように、KAIROSはユーザーが離れている間にプロジェクトのコンテキストを整理する。一般ユーザーにとって、これはClaude Codeを使えば使うほど、それがあなたのプロジェクトをより正確に理解するようになることを意味し、単に「あなたが何を言ったかを覚えている」だけではない。
第二の大きなカテゴリーは「蒸留防止とセキュリティ」(8つのフラグ)だ。その中で最も注目すべきは fake_tools メカニズムで、4つの条件が同時に満たされた時(コンパイル時のフラグが有効、CLIエントリポイントがアクティブ、第一者APIを使用、GrowthBookリモートスイッチがtrue)、Claude CodeはAPIリクエストに偽のツール定義を注入する。目的は、競合モデルのトレーニングに使用される可能性のあるAPIトラフィックを録画しているデータセットを汚染することだ。これはAI軍拡競争における全く新しい防御形態であり、あなたがコピーするのを阻止するのではなく、間違ったものをコピーさせることだ。
さらに、コードにはカピバラ(Capybara)モデルのコードネーム(標準版、fast版、100万コンテキストウィンドウ版の3つの階層に分かれる)が登場しており、Claude 5シリーズの内部コードネームではないかとコミュニティで広く推測されている。
イースターエッグ:51.2万行のコードの中に電子ペットが隠れている
すべての厳格なエンジニアリングアーキテクチャとセキュリティメカニズムの間に、Anthropicのエンジニアはこっそりと完全なバーチャルペットシステムを構築していた。内部コードネームはBUDDYだ。
漏洩コードとコミュニティの分析によると、BUDDYは擬人化されたターミナルペットで、ユーザーの入力ボックスの横にASCIIの吹き出しの形で表示される。18の種族(カピバラ、イモリ、キノコ、幽霊、ドラゴン、そしてPebblecrab、Dustbunny、Mossfrogといった一連のオリジナル生物を含む)があり、希少度によって5つのランクに分けられる:ノーマル(60%)、アンコモン(25%)、レア(10%)、エピック(4%)、レジェンダリー(1%)。各種族にはさらに「色違い変種」があり、最も希少なShiny Legendary Nebulynxの出現確率はわずか1万分の1だ。
各BUDDYには5つの属性がある:DEBUGGING(デバッグ)、PATIENCE(忍耐)、CHAOS(混沌)、WISDOM(知恵)、SNARK(皮肉)。彼らは帽子をかぶることもでき、オプションには王冠、シルクハット、プロペラ帽、光輪、魔法使いの帽子、さらにはミニダックさえある。ユーザーIDのハッシュ値によって、どのペットが孵化するかが決まり、Claudeがその名前と性格を生成する。
漏洩した公開計画によると、BUDDYは当初4月1日から7日にかけてクローズドベータテストを開始し、5月に正式公開、まずはAnthropicの社内従業員から始める予定だった。
51.2万行のコード、その98.4%がハードコアなエンジニアリングに費やされているが、最後に誰かがプロペラ帽をかぶる電子イモリを作る時間を割いた。これこそが、漏洩の中でも最も人間味のある一行のコードなのかもしれない。


