原文タイトル:《Anthropic の Claude Code のソースコードを一文で理解:なぜそれは他より使いやすいのか?》
原文作者:Yuker,AI 分析アナリスト
2026 年 3 月 31 日、安全研究者 Chaofan Shou は、Anthropic が npm に公開した Claude Code パッケージにおいて、ソースマップファイルが剥離されていないことを発見しました。
つまり:Claude Code の完全な TypeScript ソースコード、51.2 万行、1903 個のファイルが、そのまま公開ネット上に露出しているということです。
もちろん、私は数時間足らずでこれだけ大量のコードを読み切れるはずがないため、私は 3 つの疑問を持ってこのソースを読みました:
Claude Code と他の AI プログラミングツールの間には、いったいどんな本質的な違いがあるのか?
なぜそれは「コードを書く手触り」が他よりも良いのか?
51 万行ものコードの中に、いったい何が隠されているのか?
読み終えた後の私の最初の反応は:これは AI のプログラミング・アシスタントではなく、OS だ。
あなたがリモートのプログラマーを雇い、彼にあなたのコンピューターへのリモートアクセス権限を与えたとします。
あなたならどうしますか?
もしあなたが Cursor のやり方なら:彼をあなたの隣に座らせて、毎回彼がコマンドを打つ前にあなたが一度見て、「許可」を押します。乱暴だけど、ずっと見張っていなければなりません。
もしあなたが GitHub Copilot Agent のやり方なら:彼にまったく新しい仮想マシンを渡し、そこで好きにいじらせます。終わったらコードを提出し、あなたがレビューしてから統合します。安全ですが、彼はあなたのローカル環境を見られません。
もしあなたが Claude Code のやり方なら:
あなたのコンピューターをそのまま使わせる——ただし、あなたは非常に精密な検査システムを彼に組み込みます。彼ができること/できないこと、どんな操作があなたのクリックを必要とするか、どれは自分でできるか、さらには彼が rm -rf を使いたがっても、それを実行するには 9 層の審査を通らないといけません。
これが、3 つのまったく異なる安全哲学です:
なぜ Anthropic は一番難しい道を選んだのか?
それは、そうでなければ AI はあなたの端末、あなたの環境、あなたの設定を使って働けないからです——これが「本当にあなたの代わりにコードを書く」ことであって、「きれいな部屋でコードの一部を書いて、それをコピーして渡す」ことではありません。
しかし、その代償は何でしょう?彼らはそのために 51 万行のコードを書きました。
多くの人は、AI のプログラミングツールはこうだと思っています:
ユーザー入力 → LLM API を呼び出す → 結果を返す → ユーザーに表示する
Claude Code は実際にはこうです:
ユーザー入力 → 7 層のシステムプロンプトを動的に組み立てる → Git の状態、プロジェクトの取り決め、履歴の記憶を注入 → 42 個のツール、それぞれに個別の使用マニュアルが付く → LLM がどのツールを使うかを決める → 9 層の安全審査(AST パース、ML 分類器、サンドボックス検査…) → 権限競合の解析(ローカルキーボード / IDE / Hook / AI 分類器が同時に競合) → 200ms の誤操作防止ディレイ → ツールを実行 → 結果をストリーミングで返す → コンテキストが極限に近い?→ 3 層圧縮(ミクロ圧縮 → 自動圧縮 → 完全圧縮) → 並列が必要?→ サブ Agent のハチの群れ(蜂群)生成 → タスクが完了するまで繰り返す
もちろん皆さんも上の内容が気になっているはずです。でも急がなくて大丈夫。順番に一つずつ分解して見ていきましょう。
src/constants/prompts.ts を開くと、この関数が見つかります:
SYSTEM_PROMPT_DYNAMIC_BOUNDARY を見つけましたか?
これはキャッシュの境界線です。境界線より上の内容は静的で、Claude API はそれらをキャッシュできます。token コストを節約できるからです。境界線より下の内容は動的です——現在の Git ブランチ、あなたの CLAUDE.md のプロジェクト設定、あなたがこれまでに伝えた好みの記憶… すべてが毎回違います。
これは何を意味しますか?
Anthropic はプロンプトを、コンパイラの出力を最適化するものとして扱っています。静的部分は「コンパイル後のバイナリ」、動的部分は「実行時パラメータ」です。こうすることで得られる利点は:
節約:静的部分はキャッシュを通って、再課金されない
速い:キャッシュヒットなら、その token の処理をそのままスキップできる
柔軟:動的部分によって、毎回の会話が今の環境を感知できる
それぞれのツールには独立した「使用マニュアル」
さらに私を驚かせたのは、各ツールのディレクトリの下に 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 つ増やすたびに、システムプロンプトにもその分の説明が増え、token をさらに支払う必要があるからです。たとえば、Claude Code にコードを 1 行だけ直させたいなら、「定時タスクのスケジューラ」や「チーム協業管理者」を読み込む必要はありません。
もう一つ、より賢い設計:
CLAUDE_CODE_SIMPLE=true を設定すると、Claude Code はツールが 3 つだけになります:Bash、ファイルの読み取り、ファイルの変更。これはミニマリスト向けの裏口です。
デフォルト値に注目してください: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 に複雑なタスクをやらせると、こっそりこういうことをしている可能性があります:
それはサブ Agent を生成しています。
しかも、サブ Agent には厳密な「自己認識」を注入し、再帰的にさらにサブ Agent を生成してしまうのを防ぎます:
このコードはこう言っています:「あなたは作業員であって、マネージャーではない。人を雇おうなんて考えず、自分でやれ。」
Coordinator モード:マネージャー方式
コーディネーターモードでは、Claude Code は純粋なタスクのオーケストレーターになります。自分では働かず、割り当てるだけです:
中核となる原則はコードコメントに書かれています:
「Parallelism is your superpower」は、読み取り専用の研究タスク:並列で回す。ファイルを書き換えるタスク:ファイルごとにグループ化して逐次で回す(競合を避ける)。
Prompt Cache の極限までの最適化
サブ Agent のキャッシュヒット率を最大化するために、すべての fork されたサブ代理のツール結果は同じプレースホルダーテキストを使います:
「Fork started—processing in background」
なぜ?Claude API の prompt cache は バイト単位の前方一致に基づいているからです。もし 10 個のサブ Agent の前方バイト列が完全に一致していれば、最初の 1 つだけが「コールドスタート」を必要とし、残り 9 つはすぐキャッシュにヒットします。
これは、1 回の呼び出しで数セントを節約するような最適化ですが、大規模利用では大量のコスト削減につながります。
すべての LLM にはコンテキストウィンドウの制限があります。会話が長くなればなるほど、履歴メッセージは増え、最終的には必ず制限を超えます。
Claude Code はこれに対して 3 層の圧縮を設計しています:
ミクロ圧縮では、古いツール呼び出し結果だけを動かします——「10 分前に読んだ 500 行のファイル内容」を [Old tool result content cleared] に置き換えます。
プロンプトと会話の主線は完全に保たれます。
トークン消費がコンテキストウィンドウの 87% に近づくと(ウィンドウサイズ - 13,000 buffer)、自動的にトリガーされます。ブレーカーがあり、連続 3 回圧縮に失敗したら試みを停止して、無限ループを防ぎます。
AI に会話全体を要約させ、その要約で履歴メッセージをすべて置き換えます。要約を生成するときの前置指示は厳しいものがあります:
なぜここまで厳しいのですか? 要約の過程で AI がまたツールを呼び出してしまうと、さらに多くの token を消費してしまい、本末転倒だからです。このプロンプトはこう言っています:「あなたのタスクは要約だ。他のことはするな。」
圧縮後の token 予算:
· ファイル復元:50,000 tokens
· 各ファイルの上限:5,000 tokens
· スキル内容:25,000 tokens
これらの数字は当てずっぽうで決めたものではありません——「十分なコンテキストを残して作業を継続すること」と「新しいメッセージを受けるために十分なスペースを空けること」のバランス点です。
51 万行のコードのうち、本当に LLM API を呼び出している部分はおそらく 5% 未満です。残り 95% は何でしょう?
· 安全チェック(BashTool のために 18 個のファイル)
· 権限システム(allow/deny/ask/passthrough の 4 状態の意思決定)
· コンテキスト管理(三層圧縮 + AI 記憶検索)
· エラー復旧(ブレーカー、指数バックオフ、Transcript の永続化)
· 複数 Agent の協調(蜂群オーケストレーション + メール通信)
· UI インタラクション(140 個の React コンポーネント + IDE Bridge)
· パフォーマンス最適化(prompt cache の安定性 + 起動時の並列プリフェッチ)
もしあなたが AI Agent のプロダクトを作っているなら、こここそが本当に解決すべき問題です。モデルがどれほど賢いかではなく、あなたの足場(スキャフォールド)がどれほど頑丈かが重要なのです。
きれいな prompt を 1 つ書いて終わり、ではありません。Claude Code のプロンプトは:
· 7 層の動的組み立て
· 各ツールに独立した使用マニュアルが付く
· キャッシュ境界が正確に分割されている
· 内部バージョンと外部バージョンで指示セットが異なる
· キャッシュ安定性を保つためツールの順序が固定されている
これは手作りの職人芸ではなく、エンジニアリングされたプロンプト管理です。
すべての外部依存には、それぞれ失敗時の戦略があります:
42 個のツール = システムコール 権限システム = ユーザー権限管理 技能システム = アプリストア MCP プロトコル = デバイスドライバ Agent 蜂群 = プロセス管理 コンテキスト圧縮 = メモリ管理 Transcript の永続化 = ファイルシステム
これは「チャットボットにいくつかツールを足したもの」ではありません。LLM を核にした OS です。
51 万行コード。1903 個のファイル。18 個の安全ファイルが 1 つの Bash ツールのためにある。
9 層の審査は、AI が安全にあなたの代わりに 1 行のコマンドを打つためだけにある。
これが Anthropic の答えです:AI を本当に役に立たせるには、檻に閉じ込めてもだめだし、丸裸にして放り出してもだめ。完全な信頼体系を作って与えないといけない。
そして、その信頼体系の代償は 51 万行のコードです。
原文リンク
Click 了解律动BlockBeats が募集しているポジションを確認してください
律動 BlockBeats 公式コミュニティに参加してください:
Telegram 認証購読グループ:https://t.me/theblockbeats
Telegram 交流グループ:https://t.me/BlockBeats_App
Twitter 公式アカウント:https://twitter.com/BlockBeatsAsia
325.01K 人気度
53.6K 人気度
19.66K 人気度
335.03K 人気度
806.45K 人気度
分析Claude Code源码:なぜ他のAIプログラミングツールより使いやすいのか?
2026 年 3 月 31 日、安全研究者 Chaofan Shou は、Anthropic が npm に公開した Claude Code パッケージにおいて、ソースマップファイルが剥離されていないことを発見しました。
つまり:Claude Code の完全な TypeScript ソースコード、51.2 万行、1903 個のファイルが、そのまま公開ネット上に露出しているということです。
もちろん、私は数時間足らずでこれだけ大量のコードを読み切れるはずがないため、私は 3 つの疑問を持ってこのソースを読みました:
Claude Code と他の AI プログラミングツールの間には、いったいどんな本質的な違いがあるのか?
なぜそれは「コードを書く手触り」が他よりも良いのか?
51 万行ものコードの中に、いったい何が隠されているのか?
読み終えた後の私の最初の反応は:これは AI のプログラミング・アシスタントではなく、OS だ。
一、まずは一つの物語:もしあなたがリモートのプログラマーを雇うなら
あなたがリモートのプログラマーを雇い、彼にあなたのコンピューターへのリモートアクセス権限を与えたとします。
あなたならどうしますか?
もしあなたが Cursor のやり方なら:彼をあなたの隣に座らせて、毎回彼がコマンドを打つ前にあなたが一度見て、「許可」を押します。乱暴だけど、ずっと見張っていなければなりません。
もしあなたが GitHub Copilot Agent のやり方なら:彼にまったく新しい仮想マシンを渡し、そこで好きにいじらせます。終わったらコードを提出し、あなたがレビューしてから統合します。安全ですが、彼はあなたのローカル環境を見られません。
もしあなたが Claude Code のやり方なら:
あなたのコンピューターをそのまま使わせる——ただし、あなたは非常に精密な検査システムを彼に組み込みます。彼ができること/できないこと、どんな操作があなたのクリックを必要とするか、どれは自分でできるか、さらには彼が rm -rf を使いたがっても、それを実行するには 9 層の審査を通らないといけません。
これが、3 つのまったく異なる安全哲学です:
なぜ Anthropic は一番難しい道を選んだのか?
それは、そうでなければ AI はあなたの端末、あなたの環境、あなたの設定を使って働けないからです——これが「本当にあなたの代わりにコードを書く」ことであって、「きれいな部屋でコードの一部を書いて、それをコピーして渡す」ことではありません。
しかし、その代償は何でしょう?彼らはそのために 51 万行のコードを書きました。
二、あなたが思っている Claude Code vs 実際の Claude Code
多くの人は、AI のプログラミングツールはこうだと思っています:
ユーザー入力 → LLM API を呼び出す → 結果を返す → ユーザーに表示する
Claude Code は実際にはこうです:
ユーザー入力
→ 7 層のシステムプロンプトを動的に組み立てる
→ Git の状態、プロジェクトの取り決め、履歴の記憶を注入
→ 42 個のツール、それぞれに個別の使用マニュアルが付く
→ LLM がどのツールを使うかを決める
→ 9 層の安全審査(AST パース、ML 分類器、サンドボックス検査…)
→ 権限競合の解析(ローカルキーボード / IDE / Hook / AI 分類器が同時に競合)
→ 200ms の誤操作防止ディレイ
→ ツールを実行
→ 結果をストリーミングで返す
→ コンテキストが極限に近い?→ 3 層圧縮(ミクロ圧縮 → 自動圧縮 → 完全圧縮)
→ 並列が必要?→ サブ Agent のハチの群れ(蜂群)生成
→ タスクが完了するまで繰り返す
もちろん皆さんも上の内容が気になっているはずです。でも急がなくて大丈夫。順番に一つずつ分解して見ていきましょう。
三、最初の秘密:プロンプトは書き起こしたものではなく、「組み立て」られたもの
src/constants/prompts.ts を開くと、この関数が見つかります:
SYSTEM_PROMPT_DYNAMIC_BOUNDARY を見つけましたか?
これはキャッシュの境界線です。境界線より上の内容は静的で、Claude API はそれらをキャッシュできます。token コストを節約できるからです。境界線より下の内容は動的です——現在の Git ブランチ、あなたの CLAUDE.md のプロジェクト設定、あなたがこれまでに伝えた好みの記憶… すべてが毎回違います。
これは何を意味しますか?
Anthropic はプロンプトを、コンパイラの出力を最適化するものとして扱っています。静的部分は「コンパイル後のバイナリ」、動的部分は「実行時パラメータ」です。こうすることで得られる利点は:
節約:静的部分はキャッシュを通って、再課金されない
速い:キャッシュヒットなら、その token の処理をそのままスキップできる
柔軟:動的部分によって、毎回の会話が今の環境を感知できる
それぞれのツールには独立した「使用マニュアル」
さらに私を驚かせたのは、各ツールのディレクトリの下に 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 の最大の利用者だということです。彼らは自分たちのプロダクトを使って、自分たちのプロダクトを開発しているのです。
四、第二の秘密:42 個のツールがあるが、あなたが見たのは氷山の一角だけ
src/tools.ts を開くと、ツール登録センターが見えます:
42 個のツールですが、その大部分はあなたが直接目にすることはありません。多くのツールは遅延ロードされているからです——LLM が必要なときだけ、ToolSearchTool によって必要に応じて注入されます。
なぜこうしているのですか?
ツールを 1 つ増やすたびに、システムプロンプトにもその分の説明が増え、token をさらに支払う必要があるからです。たとえば、Claude Code にコードを 1 行だけ直させたいなら、「定時タスクのスケジューラ」や「チーム協業管理者」を読み込む必要はありません。
もう一つ、より賢い設計:
CLAUDE_CODE_SIMPLE=true を設定すると、Claude Code はツールが 3 つだけになります:Bash、ファイルの読み取り、ファイルの変更。これはミニマリスト向けの裏口です。
すべてのツールは同じ工場から出てくる
デフォルト値に注目してください:isConcurrencySafe のデフォルトは false、isReadOnly のデフォルトは false です。
これは fail-closed の設計です——あるツールの作者が安全属性を宣言し忘れた場合、システムはそれを「安全ではない、書き込みを行う」と仮定します。過度に慎重であることを選び、リスクを一つも見落とさない。
「まず読む、その後に直す」という鉄則
FileEditTool は、あなたがこのファイルを FileReadTool で既に読んだかどうかをチェックします。読んでいなければ、直ちにエラーを返し、編集を許しません。
これが、Claude Code が一部のツールのように「あなたのファイルを無から作ったコードで上書きする」ことができない理由です——理解してから修正するよう強制されているからです。
五、第三の秘密:記憶システム——なぜ「あなたを覚えていられる」のか
Claude Code を使ったことがある人には、共通の感覚があります:まるで本当にあなたを理解しているかのようだ。
あなたが「テストではデータベースをモックしないで」と伝えると、次の会話ではモックしません。あなたが「私はバックエンドエンジニアで、React は初心者」と伝えると、フロントエンドのコードを説明するときにバックエンドの類比を使います。
その背後には、完全な記憶システムがあります。
AI を使って記憶を検索する
Claude Code は、**別の AI(Claude Sonnet)**を使って「どの記憶が現在の会話と関連しているか」を判断します。
キーワード一致でも、ベクター検索でもありません——すべての記憶ファイルのタイトルと説明を、ある小さなモデルが素早くスキャンして、最大 5 件の最も関連性の高いものを選び、その完全な内容を現在の会話のコンテキストに注入します。
方針は「想起率より精度優先」——役に立つ可能性がある記憶を取り逃がすことはあっても、無関係な記憶を突っ込んでコンテキストを汚さないようにします。
KAIROS モード:夜間の「夢」
ここが、私が一番「SF だ」と感じる部分です。
コードには KAIROS という特性フラグがあります。このモードでは、長い会話の記憶は構造化ファイルに保存されるのではなく、日付ごとの追記ログに保存されます。そして /dream という機能が「夜間」(稼働が落ちる時間帯)に動き、これらの生のログを蒸留して構造化されたテーマファイルにします。
AI が「寝ている間」に記憶を整理する。これはもう工学ではなく、仿生学(バイオミメティクス)です。
六、第 5 の秘密:これは 1 つの Agent ではなく「一群」
Claude Code に複雑なタスクをやらせると、こっそりこういうことをしている可能性があります:
それはサブ Agent を生成しています。
しかも、サブ Agent には厳密な「自己認識」を注入し、再帰的にさらにサブ Agent を生成してしまうのを防ぎます:
このコードはこう言っています:「あなたは作業員であって、マネージャーではない。人を雇おうなんて考えず、自分でやれ。」
Coordinator モード:マネージャー方式
コーディネーターモードでは、Claude Code は純粋なタスクのオーケストレーターになります。自分では働かず、割り当てるだけです:
中核となる原則はコードコメントに書かれています:
「Parallelism is your superpower」は、読み取り専用の研究タスク:並列で回す。ファイルを書き換えるタスク:ファイルごとにグループ化して逐次で回す(競合を避ける)。
Prompt Cache の極限までの最適化
サブ Agent のキャッシュヒット率を最大化するために、すべての fork されたサブ代理のツール結果は同じプレースホルダーテキストを使います:
「Fork started—processing in background」
なぜ?Claude API の prompt cache は バイト単位の前方一致に基づいているからです。もし 10 個のサブ Agent の前方バイト列が完全に一致していれば、最初の 1 つだけが「コールドスタート」を必要とし、残り 9 つはすぐキャッシュにヒットします。
これは、1 回の呼び出しで数セントを節約するような最適化ですが、大規模利用では大量のコスト削減につながります。
七、第 6 の秘密:3 層圧縮で、会話が「決して上限を超えない」
すべての LLM にはコンテキストウィンドウの制限があります。会話が長くなればなるほど、履歴メッセージは増え、最終的には必ず制限を超えます。
Claude Code はこれに対して 3 層の圧縮を設計しています:
第一層:ミクロ圧縮——最小コスト
ミクロ圧縮では、古いツール呼び出し結果だけを動かします——「10 分前に読んだ 500 行のファイル内容」を [Old tool result content cleared] に置き換えます。
プロンプトと会話の主線は完全に保たれます。
第二層:自動圧縮——積極的に縮める
トークン消費がコンテキストウィンドウの 87% に近づくと(ウィンドウサイズ - 13,000 buffer)、自動的にトリガーされます。ブレーカーがあり、連続 3 回圧縮に失敗したら試みを停止して、無限ループを防ぎます。
第三層:完全圧縮——AI による要約
AI に会話全体を要約させ、その要約で履歴メッセージをすべて置き換えます。要約を生成するときの前置指示は厳しいものがあります:
なぜここまで厳しいのですか? 要約の過程で AI がまたツールを呼び出してしまうと、さらに多くの token を消費してしまい、本末転倒だからです。このプロンプトはこう言っています:「あなたのタスクは要約だ。他のことはするな。」
圧縮後の token 予算:
· ファイル復元:50,000 tokens
· 各ファイルの上限:5,000 tokens
· スキル内容:25,000 tokens
これらの数字は当てずっぽうで決めたものではありません——「十分なコンテキストを残して作業を継続すること」と「新しいメッセージを受けるために十分なスペースを空けること」のバランス点です。
八、このソースコードを読み終えて私が学んだこと
AI Agent の 90% の仕事量は「AI」以外にある
51 万行のコードのうち、本当に LLM API を呼び出している部分はおそらく 5% 未満です。残り 95% は何でしょう?
· 安全チェック(BashTool のために 18 個のファイル)
· 権限システム(allow/deny/ask/passthrough の 4 状態の意思決定)
· コンテキスト管理(三層圧縮 + AI 記憶検索)
· エラー復旧(ブレーカー、指数バックオフ、Transcript の永続化)
· 複数 Agent の協調(蜂群オーケストレーション + メール通信)
· UI インタラクション(140 個の React コンポーネント + IDE Bridge)
· パフォーマンス最適化(prompt cache の安定性 + 起動時の並列プリフェッチ)
もしあなたが AI Agent のプロダクトを作っているなら、こここそが本当に解決すべき問題です。モデルがどれほど賢いかではなく、あなたの足場(スキャフォールド)がどれほど頑丈かが重要なのです。
良いプロンプトエンジニアリングはシステム工学
きれいな prompt を 1 つ書いて終わり、ではありません。Claude Code のプロンプトは:
· 7 層の動的組み立て
· 各ツールに独立した使用マニュアルが付く
· キャッシュ境界が正確に分割されている
· 内部バージョンと外部バージョンで指示セットが異なる
· キャッシュ安定性を保つためツールの順序が固定されている
これは手作りの職人芸ではなく、エンジニアリングされたプロンプト管理です。
失敗を前提に設計する
すべての外部依存には、それぞれ失敗時の戦略があります:
Anthropic は Claude Code を OS として扱っている
42 個のツール = システムコール 権限システム = ユーザー権限管理 技能システム = アプリストア MCP プロトコル = デバイスドライバ Agent 蜂群 = プロセス管理 コンテキスト圧縮 = メモリ管理 Transcript の永続化 = ファイルシステム
これは「チャットボットにいくつかツールを足したもの」ではありません。LLM を核にした OS です。
まとめ
51 万行コード。1903 個のファイル。18 個の安全ファイルが 1 つの Bash ツールのためにある。
9 層の審査は、AI が安全にあなたの代わりに 1 行のコマンドを打つためだけにある。
これが Anthropic の答えです:AI を本当に役に立たせるには、檻に閉じ込めてもだめだし、丸裸にして放り出してもだめ。完全な信頼体系を作って与えないといけない。
そして、その信頼体系の代償は 51 万行のコードです。
原文リンク
Click 了解律动BlockBeats が募集しているポジションを確認してください
律動 BlockBeats 公式コミュニティに参加してください:
Telegram 認証購読グループ:https://t.me/theblockbeats
Telegram 交流グループ:https://t.me/BlockBeats_App
Twitter 公式アカウント:https://twitter.com/BlockBeatsAsia