原文タイトル: 「Anthropic の Claude Code ソースコードを理解するための一文: なぜそれが他よりも使いやすいのか?」
原著者: Yuker, AI Researcher
2026年3月31日、セキュリティ研究者のChaofan Shouは、Anthropicがnpmに公開したClaude Codeパッケージにおいて、ソースマップファイルが剥がれていないことを発見しました。
これは、Claude Codeの完全なTypeScriptソースコード、51.2万行、1903ファイルがそのままインターネット上に公開されていることを意味します。
もちろん、私はこの多くのコードを数時間で読み切ることは不可能です。そのため、私はこのソースコードを読む際に、次の3つの問いを持っていきました:
1. Claude Codeと他のAIプログラミングツールとは、根本的にどのような違いがあるのか?
2. なぜこのコードを書く感覚が他と比べて優れているのか?
3. 51万行のコードの中には、一体何が隠されているのか?
読み終えた後、私の最初の反応は「これはAIプログラミングアシスタントではなく、これはオペレーティングシステムだ」ということでした。
遠隔のプログラマーを雇い、そのプログラマーにあなたのコンピューターへのリモートアクセス許可を与えたと想像してみてください。
あなたはどうしますか?
Cursorのやり方であれば:そのプログラマーを隣に座らせ、彼がコマンドを入力する前に毎回確認してから「許可」をクリックします。シンプルですが、つねに監視する必要があります。
GitHub Copilot Agentのやり方であれば:そのプログラマーに新しい仮想マシンを提供し、そこで好きなように作業させます。作業が完了したらコードを提出し、あなたがレビューしてからマージします。安全ですが、彼はあなたのローカル環境を見ることができません。
Claude Codeのやり方であれば:
そのプログラマーに直接あなたのコンピューターを使わせますが、あなたは彼に非常に精巧なセキュリティシステムを用意しています。彼が何をするか、できないこと、どの操作があなたの承認が必要か、どれが自動化可能か、彼がrm -rfを使いたいときでも、実行する前に9つの承認段階が必要です。
これは完全に異なる3つのセキュリティ哲学です:

Anthropic が最も困難な道を選んだ理由は何ですか?
それは、AI があなたの端末、あなたの環境、あなたの設定を使用して作業するためです。これこそが「あなたのためにコードを書く本物の方法」であり、「クリーンルームでコードを書いてコピーする」のではありません。
しかし、その代償は何でしょうか? 彼らはこのために 51 万行のコードを書きました。
ほとんどの人々が考える AI プログラミングツール:
ユーザー入力 → LLM API 呼び出し → 結果を返す → ユーザーに表示
実際のクロードコード:
ユーザー入力
→ 動的に構築された7つのシステムプロンプトワード
→ Git ステータス、プロジェクト規約、履歴の注入
→ 42のツール、それぞれに使用マニュアルを添付
→ LLM がどのツールを使用するかを決定
→ 9つのセキュリティチェック(AST解析、ML分類器、サンドボックスチェックなど)
→ 権限競争解析(ローカルキーボード/IDE/フック/AI分類器が同時に競合)
→ 200msの誤タッチ防止遅延
→ ツールの実行
→ 結果のストリーミングリターン
→ コンテキストが限界に近づいていますか?→ 3つの圧縮レイヤー(マイクロ圧縮 → 自動圧縮 → 完全圧縮)
→ 並列処理が必要ですか?→ 子Agentスウォームの生成
→ タスクが完了するまでループします
上記の内容について興味を持たれた方も多いと思いますが、焦らず、1つずつ見ていきましょう。
src/constants/prompts.ts を開くと、この関数が表示されます:

SYSTEM_PROMPT_DYNAMIC_BOUNDARY に気づきましたか?
これはキャッシュの境界線です。境界線の上のコンテンツは静的であり、Claude API はこれをキャッシュしてトークン料金を節約できます。境界線の下のコンテンツは動的であり、現在のGitブランチ、あなたのCLAUDE.mdプロジェクト構成、以前に伝えた好みの記憶など、各会話ごとに異なります。
これは何を意味するのですか?
Anthropicはヒントワードをコンパイラの出力と見なして最適化します。静的部分は「コンパイル後のバイナリ」であり、動的部分は「ランタイムパラメータ」です。これによる利点は次のとおりです:
1. 節約:静的部分はキャッシュを使用し、重複トークン料金が発生しません
2. 速い:キャッシュヒットによりこれらのトークンの処理がスキップされます
3. 柔軟性:動的部分により、各会話が現在の環境を認識できます
各ツールには独自の「ユーザーガイド」があります
さらに驚いたことに:各ツールディレクトリには prompt.ts ファイルがあります — これはLLM向けのユーザーガイドです。
BashToolの(src/tools/BashTool/prompt.ts、約370行)を見てみましょう:

これは人間向けのドキュメントではなく、これはAI向けの行動規範です。Claude Codeを起動するたびに、これらのルールはシステムプロンプトにインジェクションされます。
これがClaude Codeが決して勝手にgit push --forceを行わない理由であり、一部のツールが行う理由です — モデルがより賢いわけではなく、ヒントワードに規則が明確に述べられているからです。
さらに、Anthropicの内部バージョンはあなたが使用しているものとは異なります
コードには次のようなブランチがたくさんあります:

antはAnthropicの社内従業員を指します。彼らのバージョンにはより詳細なコードスタイルガイド(「WHYが明らかでない限りコメントを記述しない」)、より積極的な出力戦略(「逆ピラミッドライティング法」)、およびいくつかのA/Bテスト中の実験機能(Verification Agent、Explore & Plan Agent)があります。
これは、Anthropic 自体が Claude Code の最大のユーザーであることを示しています。彼らは自社の製品を使って自社の製品を開発しています。
src/tools.ts を開くと、ツール登録センターが表示されます:

42 のツールがありますが、ほとんどは直接表示されません。多くのツールが遅延読み込みされています――LLM が必要になった時のみ、ToolSearchTool によってオンデマンドで注入されます。
なぜそうするのでしょうか?
それは、1 つのツールを追加するたびに、システムヒントが1つ増え、トークンが1つ増えるからです。Claude Code に1行のコードの変更を手伝ってもらいたいだけなら、「スケジュールタスクマネージャー」と「チームコラボレーションマネージャー」を読み込む必要はありません。
さらに賢明な設計があります:

CLAUDE_CODE_SIMPLE=true を設定すると、Claude Code は Bash、ファイルの読み込み、ファイルの変更の3つのツールのみとなります。これはミニマリスト向けのバックドアです。

デフォルト値に注意してください:isConcurrencySafe はデフォルトで false、isReadOnly はデフォルトで false です。
これは fail-closed 設計と呼ばれ、ツールの作者がセキュリティ属性を宣言するのを忘れた場合、システムはそのツールを「安全で同時実行可能でない、書き込み可能」と見なします。リスクを見逃さないように、過度に慎重であることを選択します。

FileEditTool は、そのファイルを FileReadTool で読んでいるかどうかをチェックします。そうでない場合、直ちにエラーを表示し、変更を許可しません。
これが Claude Code があるツールのように「勝手にコードを書いてファイルを上書きする」ことはない理由です —— 最初に理解してから変更する必要があるからです。
Claude Code を使用した人々は共通して感じることがあります:それは本当にあなたを知っているかのようです。
あなたはそれに「テストでデータベースをモックしないで」と伝えると、次回の対話でそれはもうモックしません。あなたが「私はバックエンドエンジニアで、React の初心者です」と伝えると、それはフロントエンドのコードを説明する際にバックエンドの比喩を使います。
その背後には完全なメモリーシステムがあります。

Claude Code は 別の AI(Claude Sonnet) を使用して、「どのメモリーが現在の対話に関連しているか」を決定します。
キーワード検索ではなく、ベクトル検索ではなく —— すべてのメモリーファイルのタイトルと説明を迅速にスキャンし、最大 5 つの関連性の高いメモリーを選択し、それらの完全な内容を現在の対話のコンテキストに注入します。
戦略は「精度が再珺回率よりも優先」 —— 有用かもしれないメモリーを見逃すことを選び、不適切なメモリーをコンテキストを汚染させることはしません。
KAIROS モード:夜間「夢見る」
これが私が最もSFっぽいと感じる部分です。
コードには KAIROS という特性フラグがあります。このモードでは、長い対話のメモリーは構造化されたファイルに存在するのではなく、日付順の追加ログに存在します。そして、/dream スキルが「夜間」(低活動期)に実行され、これらの元のログを構造化されたトピックファイルに蒸留します。

AI は「眠っている」間にメモリーを整理します。これはもはやエンジニアリングではなく、これはバイオミメティクスです。
Claude Code に複雑なタスクを実行させた場合、それはおそらく次のことをこっそり行いました:

それはサブエージェントを生成します。
そして、サブエージェントには、さらに多くのサブエージェントを再帰的に生成することを防ぐために厳格な「セルフ意識」が注入されています。

このコードは言っています:「あなたは労働者です、マネージャーではありません。他人を雇うことを考えず、自分で作業を行ってください。」
コーディネーターモード:マネージャーモード
コーディネーターモードでは、Claude Code は純粋なタスクコーディネーターとなり、自ら作業を行わずにタスクを割り当てます。

コア原則はコードコメントに記載されています:
「Parallelism is your superpower」 リードオンリータスク:並列実行。ファイル書き込みタスク:ファイルごとに直列実行(競合を回避)。
Prompt Cache の究極の最適化
子エージェントのキャッシュヒット率を最大化するために、全てのフォーク子エージェントのツール結果には同じプレースホルダーテキストが使用されています:
「Fork started—processing in background」
なぜなら、Claude API のプロンプトキャッシュはバイトレベルのプレフィックスマッチに基づいているからです。もし 10 個のサブエージェントのプレフィックスバイトが完全に一致する場合、最初のサブエージェントのみが「コールドスタート」する必要があり、残りの 9 つはキャッシュヒットします。
これは呼び出し毎に数セントを節約する最適化ですが、大規模に利用すると大幅なコスト削減につながります。
全てのLLMにはコンテキストウィンドウの制限があります。対話が長くなるほど、メッセージの履歴が増え、最終的に制限を超えます。
Claude Code はこのために三層の圧縮を設計しました:

マイクロコンプレッションは古いツールの呼び出し結果のみを変更します — 「10分前に読んだ500行のファイルの内容」を [古いツールの結果コンテンツ消去] に置き換えます。
ヒントワードと対話のメインラインは完全に保持されます。
トークン消費がコンテキストウィンドウの上下限の87%に近づくと(ウィンドウサイズ - 13,000バッファー)、自動的にトリガーされます。3回連続のコンプレッション失敗後に停止するブレーカーがあり、デッドロックを回避します。
AIに全体の会話の要約を生成させ、その要約ですべての履歴メッセージを置換します。要約の生成には厳格なプリインストラクションがあります:

なぜこのように厳しいのか?要約プロセス中にAIが再びツールを呼び出すと、さらにトークンが消費されてしまい、逆効果になります。このヒントワードは「あなたの仕事は要約です、他のことはやらないでください」と言っています。
コンプレッション後のトークン予算:
· ファイルリカバリ:50,000トークン
· 各ファイルの上限:5,000トークン
· スキルコンテンツ:25,000トークン
これらの数字は思い付きではありません — それらは「作業を継続するための十分なコンテキストを保持」および「新しいメッセージを受信するための十分なスペースを確保」するというバランスポイントです。
51万行のコードの中で、LLM API を実際に呼び出す部分はおそらく5%未満です。残りの95%は何でしょうか?
· セキュリティチェック(1つのBashTool用に18個のファイル)
· 権限システム(許可/拒否/要求/パススルーの4つの状態決定)
· コンテキスト管理(3つの層の圧縮 + AI メモリ検索)
· エラー リカバリ(サーキット ブレーカー、指数避け、Transcript 永続化)
· マルチエージェント 協調(スウォーム オーケストレーション + メール通信)
· UI インタラクション(140 個の React コンポーネント + IDE ブリッジ)
· パフォーマンス最適化(プロンプト キャッシュの安定性 + 起動時並列プリフェッチ)
AI エージェント プロダクトに取り組んでいる場合、これが本当に解決すべき問題です。モデルが十分に賢いかどうかではなく、あなたの骨組みが十分にしっかりしているかです。
見栄えの良いプロンプトを書くだけではありません。Claude Code のプロンプトは次のとおりです:
· 7 階層のダイナミックな組み立て
· 各ツールには独自のマニュアルが付属
· キャッシュ境界の厳密な分割
· 内部バージョンと外部バージョンには異なる命令セットがある
· ツールの順序付けはキャッシュの安定性を保つために固定されています
これはエンジニアリングのプロンプト管理であり、職人技ではありません。
すべての外部依存関係には対応する障害対策があります:

42 個のツール = システム コール 権限システム = ユーザー権限管理 スキルシステム = アプリケーションストア MCP プロトコル = デバイスドライバ エージェント スウォーム = プロセス管理 コンテキスト圧縮 = メモリ管理 Transcript 永続化 = ファイルシステム
これは「チャットボットにいくつかのツールを追加する」のではありません。これは LLM をカーネルとするオペレーティング システムです。
51 万行のコード。1903 個のファイル。1 つの Bash ツールのために 18 個のセキュリティ ファイル。
AI が安全にコマンドを入力するのに 9 階層の監査が必要です。
これが Anthropic の答えです:AI を本当に有用にするには、それを籠に閉じ込めても裸にさせてもいけません。それに完全な信頼体系を構築する必要があります。
そして、この信頼システムのコストは、51万行のコードです。
BlockBeats の公式コミュニティに参加しよう:
Telegram 公式チャンネル:https://t.me/theblockbeats
Telegram 交流グループ:https://t.me/BlockBeats_App
Twitter 公式アカウント:https://twitter.com/BlockBeatsAsia