lang
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
ホーム
OPRR
速報
深堀り
イベント
もっと見る
資金調達情報
特集
オンチェーン生態系
用語
ポッドキャスト
データ
BTC
$96,000
5.73%
ETH
$3,521.91
3.97%
HTX
$0.{5}2273
5.23%
SOL
$198.17
3.05%

Claude Codeソースコードの分析:なぜ他のAIプログラミングツールよりも優れているのか?

この記事を読むのに必要な時間は 31 分
Anthropic は、最も困難な道を選択し、あなたの端末、あなたの環境、あなたの設定を使用して作業することを選択しました。「クリーンな部屋でコードを書いてからコピーする」のではなく。
原文タイトル: 「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 万行のコードを書きました。


2. クロードコードのイメージと実態


ほとんどの人々が考える AI プログラミングツール:


ユーザー入力 → LLM API 呼び出し → 結果を返す → ユーザーに表示


実際のクロードコード:


ユーザー入力
→ 動的に構築された7つのシステムプロンプトワード
→ Git ステータス、プロジェクト規約、履歴の注入
→ 42のツール、それぞれに使用マニュアルを添付
→ LLM がどのツールを使用するかを決定
→ 9つのセキュリティチェック(AST解析、ML分類器、サンドボックスチェックなど)
→ 権限競争解析(ローカルキーボード/IDE/フック/AI分類器が同時に競合)
→ 200msの誤タッチ防止遅延
→ ツールの実行
→ 結果のストリーミングリターン
→ コンテキストが限界に近づいていますか?→ 3つの圧縮レイヤー(マイクロ圧縮 → 自動圧縮 → 完全圧縮)
→ 並列処理が必要ですか?→ 子Agentスウォームの生成
→ タスクが完了するまでループします


上記の内容について興味を持たれた方も多いと思いますが、焦らず、1つずつ見ていきましょう。


3. 最初の秘密:プロンプトワードは作成されたものではなく、「組み立て」られたものです


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 の最大のユーザーであることを示しています。彼らは自社の製品を使って自社の製品を開発しています。


四、第二の秘密:42 のツールがありますが、あなたはその一部しか見ていません


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 があるツールのように「勝手にコードを書いてファイルを上書きする」ことはない理由です —— 最初に理解してから変更する必要があるからです。


5. 第三の秘密:メモリーシステム —— なぜそれが「あなたを覚えている」のか


Claude Code を使用した人々は共通して感じることがあります:それは本当にあなたを知っているかのようです。


あなたはそれに「テストでデータベースをモックしないで」と伝えると、次回の対話でそれはもうモックしません。あなたが「私はバックエンドエンジニアで、React の初心者です」と伝えると、それはフロントエンドのコードを説明する際にバックエンドの比喩を使います。


その背後には完全なメモリーシステムがあります。


AI を使用してメモリーを検索する




Claude Code は 別の AI(Claude Sonnet) を使用して、「どのメモリーが現在の対話に関連しているか」を決定します。


キーワード検索ではなく、ベクトル検索ではなく —— すべてのメモリーファイルのタイトルと説明を迅速にスキャンし、最大 5 つの関連性の高いメモリーを選択し、それらの完全な内容を現在の対話のコンテキストに注入します。


戦略は「精度が再珺回率よりも優先」 —— 有用かもしれないメモリーを見逃すことを選び、不適切なメモリーをコンテキストを汚染させることはしません。


KAIROS モード:夜間「夢見る」


これが私が最もSFっぽいと感じる部分です。


コードには KAIROS という特性フラグがあります。このモードでは、長い対話のメモリーは構造化されたファイルに存在するのではなく、日付順の追加ログに存在します。そして、/dream スキルが「夜間」(低活動期)に実行され、これらの元のログを構造化されたトピックファイルに蒸留します。



AI は「眠っている」間にメモリーを整理します。これはもはやエンジニアリングではなく、これはバイオミメティクスです。


6. 第五の秘密:エージェントではなく、集団であること


Claude Code に複雑なタスクを実行させた場合、それはおそらく次のことをこっそり行いました:



それはサブエージェントを生成します。


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



このコードは言っています:「あなたは労働者です、マネージャーではありません。他人を雇うことを考えず、自分で作業を行ってください。」


コーディネーターモード:マネージャーモード


コーディネーターモードでは、Claude Code は純粋なタスクコーディネーターとなり、自ら作業を行わずにタスクを割り当てます。



コア原則はコードコメントに記載されています:


「Parallelism is your superpower」 リードオンリータスク:並列実行。ファイル書き込みタスク:ファイルごとに直列実行(競合を回避)。


Prompt Cache の究極の最適化


子エージェントのキャッシュヒット率を最大化するために、全てのフォーク子エージェントのツール結果には同じプレースホルダーテキストが使用されています:


「Fork started—processing in background」


なぜなら、Claude API のプロンプトキャッシュはバイトレベルのプレフィックスマッチに基づいているからです。もし 10 個のサブエージェントのプレフィックスバイトが完全に一致する場合、最初のサブエージェントのみが「コールドスタート」する必要があり、残りの 9 つはキャッシュヒットします。


これは呼び出し毎に数セントを節約する最適化ですが、大規模に利用すると大幅なコスト削減につながります。


7. 第六の秘密:三層の圧縮、対話「永遠に超過しない」


全てのLLMにはコンテキストウィンドウの制限があります。対話が長くなるほど、メッセージの履歴が増え、最終的に制限を超えます。


Claude Code はこのために三層の圧縮を設計しました:


第一層:マイクロコンプレッション — 最小コスト



マイクロコンプレッションは古いツールの呼び出し結果のみを変更します — 「10分前に読んだ500行のファイルの内容」を [古いツールの結果コンテンツ消去] に置き換えます。


ヒントワードと対話のメインラインは完全に保持されます。


第二層:自動コンプレッション — 自発的縮小


トークン消費がコンテキストウィンドウの上下限の87%に近づくと(ウィンドウサイズ - 13,000バッファー)、自動的にトリガーされます。3回連続のコンプレッション失敗後に停止するブレーカーがあり、デッドロックを回避します。


第三層:完全コンプレッション — AI サマリー


AIに全体の会話の要約を生成させ、その要約ですべての履歴メッセージを置換します。要約の生成には厳格なプリインストラクションがあります:




なぜこのように厳しいのか?要約プロセス中にAIが再びツールを呼び出すと、さらにトークンが消費されてしまい、逆効果になります。このヒントワードは「あなたの仕事は要約です、他のことはやらないでください」と言っています。


コンプレッション後のトークン予算:


· ファイルリカバリ:50,000トークン

· 各ファイルの上限:5,000トークン

· スキルコンテンツ:25,000トークン


これらの数字は思い付きではありません — それらは「作業を継続するための十分なコンテキストを保持」および「新しいメッセージを受信するための十分なスペースを確保」するというバランスポイントです。


8. このソースコードを読んで学んだこと


AI エージェントの90%の作業量は「AI」以外にある


51万行のコードの中で、LLM API を実際に呼び出す部分はおそらく5%未満です。残りの95%は何でしょうか?


· セキュリティチェック(1つのBashTool用に18個のファイル)

· 権限システム(許可/拒否/要求/パススルーの4つの状態決定)

· コンテキスト管理(3つの層の圧縮 + AI メモリ検索)

· エラー リカバリ(サーキット ブレーカー、指数避け、Transcript 永続化)

· マルチエージェント 協調(スウォーム オーケストレーション + メール通信)

· UI インタラクション(140 個の React コンポーネント + IDE ブリッジ)

· パフォーマンス最適化(プロンプト キャッシュの安定性 + 起動時並列プリフェッチ)


AI エージェント プロダクトに取り組んでいる場合、これが本当に解決すべき問題です。モデルが十分に賢いかどうかではなく、あなたの骨組みが十分にしっかりしているかです。


良いプロンプト エンジニアリングはシステム エンジニアリングです


見栄えの良いプロンプトを書くだけではありません。Claude Code のプロンプトは次のとおりです:


· 7 階層のダイナミックな組み立て

· 各ツールには独自のマニュアルが付属

· キャッシュ境界の厳密な分割

· 内部バージョンと外部バージョンには異なる命令セットがある

· ツールの順序付けはキャッシュの安定性を保つために固定されています


これはエンジニアリングのプロンプト管理であり、職人技ではありません。


失敗に備えて設計する


すべての外部依存関係には対応する障害対策があります:



Anthropic は Claude Code をオペレーティング システムとして扱っています


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

ライブラリを選択
新しいライブラリを追加
キャンセル
完了
新しいライブラリを追加
自分のみが閲覧可
公開
保存
訂正/通報
送信