Claude Code 50万行コード漏洩全整理、AIエージェントの真のコアは何か?

BlockBeatNews

51.2万行のコード、1906個のファイル、59.8MBのsource map。3月31日未明、Solayer LabsのChaofan Shouが、Anthropicのフラッグシップ製品であるClaude Codeが完全なソースコードを公開のnpmリポジトリに露出させているのを発見した。数時間以内に、コードはGitHubにミラーされ、fork数が4.1万を突破した。

これはAnthropicが初めて犯したミスではない。2025年2月にClaude Codeが初めてリリースされた際にも、同様のsource map漏えいが一度発生している。今回のバージョンはv2.1.88で、漏えいの原因も同じだ。Bunのビルドツールはデフォルトでsource mapを生成し、.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版より強い理由は、コアとなるモデル自体ではなく、モデルの周りに構築されたソフトウェアの足場(ソースツールキット)にあると指摘している。具体的には、リポジトリのコンテキスト読み込み、専用ツールのディスパッチ、キャッシュ戦略、サブエージェントの協調だ。彼は、同じエンジニアリング・アーキテクチャをDeepSeekやKimiなど他のモデルにも適用すれば、同様にプログラミング性能の大幅な向上が得られるとも考えている。

この差を直感的に理解するには比較が役立つ。ChatGPTやClaudeのWeb版で質問を入力すると、モデルが処理して答えを返し、会話が終わると何も残らない。しかしClaude Codeのやり方はまったく異なる。起動時にまずあなたのプロジェクトファイルを読み取り、コードベースの構造を理解し、前回「テストでデータベースをmockしないで」といった好みを覚える。さらに、それはあなたのターミナル内でコマンドを実行したり、ファイルを編集したり、テストを走らせたりできる。複雑なタスクに遭遇すると、複数のサブタスクに分割して異なるサブエージェントに並列に割り当てる。言い換えれば、Web版のAIは質問と回答のウィンドウで、Claude CodeはあなたのPCに常駐する協働者だ。

誰かがこのアーキテクチャをOSにたとえた。42個の組み込みツールはシステムコールに相当し、権限システムはユーザー管理に相当し、MCPプロトコルはデバイスドライバに相当し、サブエージェントのオーケストレーションはプロセススケジューリングに相当する。各ツールは出荷時にデフォルトで「安全でない、書き込み可能」とマークされている。開発者が自ら安全であると明言しない限りそうだ。ファイルを編集するツールは、まずそのファイルを読んだかどうかを強制的にチェックし、読んでいないなら変更を許さない。これはチャットボットのためにツールをいくつかおまけしただけではない。LLMを核に持ち、完全なセキュリティ機構を備えた実行環境だ。

つまり、言えることが1つある。AIプロダクトの競争上の壁は、モデル層ではなく、エンジニアリング層にあるのかもしれない。

毎回のキャッシュ破壊でコストが10倍になる

漏えいコードには、promptCacheBreakDetection.tsというファイルがあり、prompt cacheが無効化される可能性のある14のベクトルを追跡している。なぜAnthropicのエンジニアは、キャッシュの破壊を防ぐためにこれほどの労力をかけるのか?

Anthropicの公式料金を見れば分かる。Claude Opus 4.6を例にすると、標準の入力価格は1百万tokenあたり5ドルだが、キャッシュにヒットすれば読み取り価格は0.5ドルで済み、90%安い。逆に言えば、キャッシュが破壊されるたびに推論コストは10倍になる。

これが、漏えいコード中に大量に見える「過剰な設計」とも言えるアーキテクチャ上の意思決定を説明している。Claude Codeは起動時に現在のgitブランチ、直近のcommit履歴、CLAUDE.mdファイルをコンテキストとして読み込み、これらの静的コンテンツはグローバルキャッシュされる。境界マーカーで動的コンテンツを区切り、各会話で既存のコンテキストを重複処理しないようにする。コードには、すでに確立されたキャッシュをモード切り替えが壊さないようにするsticky latchesという仕組みもある。サブエージェントは、自分だけでコンテキストウィンドウを作り直すのではなく、親プロセスのキャッシュを再利用するよう設計されている。

ここには、掘り下げる価値のある細部がある。AIプログラミングツールを使ったことがある人なら分かるように、会話が長くなるほどAIの応答は遅くなる。各ラウンドで、前の会話履歴をすべてモデルに再送信する必要があるからだ。一般的な対処は、古いメッセージを削除してスペースを解放することだが、問題は、メッセージを1つでも削除するとキャッシュの連続性が壊れ、会話履歴全体を再処理する必要が生じ、遅延と費用の両方が同時に跳ね上がることだ。

漏えいコードにはcache_editsという仕組みがある。やり方は、メッセージを本当に削除するのではなく、API層で古いメッセージに「スキップ」マークを付けることだ。モデルはこれらのメッセージを見なくなるが、キャッシュの連続性は壊されない。つまり、数時間続く長い会話で数百件の古いメッセージを整理しても、次のラウンドの応答速度は最初のラウンドとほぼ同じになる。一般のユーザーにとって、これは「Claude Codeが無限に長い会話をサポートしても遅くならない理由」の根本の答えだ。

漏えいされた内部監視データによると(autoCompact.tsのコードコメント、日付は2026年3月10日と注記)、自動圧縮の失敗上限を導入する前は、Claude Codeは毎日約25万回のAPI呼び出しを無駄にしていた。1279人のユーザーセッションで、連続する自動圧縮失敗が50回以上発生した。最悪の1つのセッションでは、連続失敗が3272回に達した。修正方法は単に1行の制限を追加するだけだった:MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3。

だから、AIプロダクトにとって、モデルの推論コストが最も高い層とは限らず、キャッシュ管理の失敗こそが本当の高コストになり得る。

44個のスイッチが同じ方向を向いている

漏えいコードには44個のfeature flagsが隠されている。すでにコンパイルされた機能スイッチだが、外部には公開されていない。コミュニティの分析によれば、これらのflagsは機能領域ごとに5種類に分類され、その中で最も密集しているのが「自律エージェント」系(12個)で、名付けられたKAIROSというシステムを指している。

KAIROSはソースコード内で150回以上参照されており、常駐バックグラウンドのデーモンプロセスのようなモードだ。Claude Codeは、ユーザーが自分から呼び出した時だけ応答するツールではなく、常にバックグラウンドで動作するエージェントで、継続的に観察し、記録し、適切なタイミングで自発的に行動する。前提はユーザーを邪魔しないことで、ユーザーを15秒以上ブロックし得る操作は遅延実行される。

KAIROSにはターミナルのフォーカス感知も内蔵されている。コード中にterminalFocusというフィールドがあり、ユーザーがターミナルウィンドウを見ているかどうかをリアルタイムで検出する。あなたがブラウザや他のアプリに切り替えると、代理(エージェント)はあなたが「いない」と判断し、自律モードに切り替えて、タスクを能動的に実行し、コードを直接提出する。あなたの確認を待たない。ターミナルに戻ると、代理は即座に協働モードへ戻る。さきほど何をしたかを報告し、あなたの意見を求める。自律の度合いは固定ではなく、注意の動きに合わせてリアルタイムに変動する。これは、AIツールが長年抱えてきた微妙な問題を解決している。完全に自律的なAIは信頼しづらく、完全に受け身のAIは効率が低すぎる。KAIROSの選択は、AIの主導性をユーザーの注意に応じて動的に調整することだ。あなたが見ていれば大人しくしている。離れれば自分で仕事を始める。

KAIROSの別のサブシステムはautoDreamで、5つのセッションがたまるか、または24時間ごとに、エージェントがバックグラウンドで「内省」プロセスを起動する。4ステップからなる。まず、既存の記憶をスキャンして、自分が現時点で何を把握しているかを理解する。次に、会話ログから新しい知識を抽出する。そして、新旧の知識を統合し、矛盾を修正し、重複を取り除く。最後に、索引を簡略化し、古くなった項目を削除する。この設計は認知科学における記憶の固定化(メモリ・コンソリデーション)の理論を参考にしている。人は睡眠中に昼間の記憶を整理する。KAIROSはユーザーが離れるときに、プロジェクトのコンテキストを整理する。一般のユーザーにとってこれは、Claude Codeを使うほどあなたのプロジェクト理解がより正確になり、「あなたが言ったことを覚えているだけ」ではない、ということを意味する。

2番目に大きいカテゴリは「蒸留の逆(ファンネルの反転)とセキュリティ」(8つのflags)。なかでも最も注目すべきはfake_toolsメカニズムで、4つの条件が同時に満たされるとき(コンパイル時flagが有効、CLI入口が有効化され、ファーストパーティAPIを使用し、GrowthBookのリモートスイッチがtrueのとき)、Claude CodeはAPIリクエストに偽のツール定義を注入する。目的は、録画されたAPIトラフィックから作られ、競合モデルの学習に使われ得るデータセットを汚染することだ。これはAIの軍拳み(アームズレース)における全く新しい防御の形だ。あなたが真似するのを止めるのではなく、あなたが真似してしまう「間違ったもの」を真似させるのだ。

さらに、コードにはCapybaraのモデル代号(標準版、fast版、100万のコンテキストウィンドウ版の3つのレベルに分かれている)が登場し、コミュニティでは広く、Claude 5シリーズの内部代号だと推測されている。

イースターエッグ:51.2万行のコードの中に電子ペットが1匹いる

すべてのシリアスなエンジニアリング・アーキテクチャとセキュリティ機構の間にも、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%はハードコアなエンジニアリングだが、最後に誰かがプロペラ帽をかぶる電子イモリに時間を費やした。おそらくこれこそが、漏えいの中で最も人間味のある1行コードなのだろう。

クリックして律動BlockBeatsの募集を見る

律動 BlockBeats公式コミュニティへの参加を歓迎します:

Telegram購読グループ:https://t.me/theblockbeats

Telegram交流グループ:https://t.me/BlockBeats_App

Twitter公式アカウント:https://twitter.com/BlockBeatsAsia

免責事項:このページの情報は第三者から提供される場合があり、Gateの見解または意見を代表するものではありません。このページに表示される内容は参考情報のみであり、いかなる金融、投資、または法律上の助言を構成するものではありません。Gateは情報の正確性または完全性を保証せず、当該情報の利用に起因するいかなる損失についても責任を負いません。仮想資産への投資は高いリスクを伴い、大きな価格変動の影響を受けます。投資元本の全額を失う可能性があります。関連するリスクを十分に理解したうえで、ご自身の財務状況およびリスク許容度に基づき慎重に判断してください。詳細は免責事項をご参照ください。
コメント
0/400
コメントなし