Skip to content

Latest commit

 

History

History
324 lines (266 loc) · 21.6 KB

File metadata and controls

324 lines (266 loc) · 21.6 KB

Claude Code v2.1.88 — ソースコード分析

免責事項: 本リポジトリのすべてのソースコードは AnthropicおよびClaude の知的財産です。本リポジトリは技術研究、学習、教育目的の交流のためにのみ提供されます。商用利用は厳禁です。 いかなる個人、機関、団体も、本コンテンツを商業目的、営利活動、違法行為、その他の無許可の用途に使用することはできません。本コンテンツがお客様の法的権利、知的財産権、その他の利益を侵害する場合は、ご連絡いただければ直ちに確認・削除いたします。

npmパッケージ @anthropic-ai/claude-code 2.1.88 バージョンから抽出。 配布パッケージはバンドルされた単一の cli.js(約12MB)のみを含む。本リポジトリの src/ ディレクトリにはnpmターボールから抽出したバンドル前のTypeScriptソースが格納されている。

言語: English | 中文 | 한국어 | 日本語


目次


詳細分析レポート (docs/)

v2.1.88デコンパイルソースコードに基づく分析レポート。英語/中国語/韓国語/日本語の4言語で提供。

docs/
├── en/                                        # English
│   ├── [01-telemetry-and-privacy.md]          # Telemetry & Privacy — what's collected, why you can't opt out
│   ├── [02-hidden-features-and-codenames.md]  # Codenames (Capybara/Tengu/Numbat), feature flags, internal vs external
│   ├── [03-undercover-mode.md]                # Undercover Mode — hiding AI authorship in open-source repos
│   ├── [04-remote-control-and-killswitches.md]# Remote Control — managed settings, killswitches, model overrides
│   └── [05-future-roadmap.md]                 # Future Roadmap — Numbat, KAIROS, voice mode, unreleased tools
│
├── ja/                                        # 日本語
│   ├── [01-テレメトリとプライバシー.md]          # テレメトリとプライバシー — 収集項目、無効化不可の理由
│   ├── [02-隠し機能とコードネーム.md]           # 隠し機能 — モデルコードネーム、feature flag、内部/外部ユーザーの違い
│   ├── [03-アンダーカバーモード.md]             # アンダーカバーモード — オープンソースでのAI著作隠匿
│   ├── [04-リモート制御とキルスイッチ.md]       # リモート制御 — 管理設定、キルスイッチ、モデルオーバーライド
│   └── [05-今後のロードマップ.md]               # 今後のロードマップ — Numbat、KAIROS、音声モード、未公開ツール
│
├── ko/                                        # 한국어
│   ├── [01-텔레메트리와-프라이버시.md]          # 텔레메트리 및 프라이버시 — 수집 항목, 비활성화 불가 이유
│   ├── [02-숨겨진-기능과-코드네임.md]          # 숨겨진 기능 — 모델 코드네임, feature flag, 내부/외부 사용자 차이
│   ├── [03-언더커버-모드.md]                   # 언더커버 모드 — 오픈소스에서 AI 저작 은폐
│   ├── [04-원격-제어와-킬스위치.md]            # 원격 제어 — 관리 설정, 킬스위치, 모델 오버라이드
│   └── [05-향후-로드맵.md]                     # 향후 로드맵 — Numbat, KAIROS, 음성 모드, 미공개 도구
│
└── zh/                                        # 中文
    ├── [01-遥测与隐私分析.md]                    # 遥测与隐私 — 收集了什么,为什么无法退出
    ├── [02-隐藏功能与模型代号.md]                # 隐藏功能 — 模型代号,feature flag,内外用户差异
    ├── [03-卧底模式分析.md]                     # 卧底模式 — 在开源项目中隐藏 AI 身份
    ├── [04-远程控制与紧急开关.md]                # 远程控制 — 托管设置,紧急开关,模型覆盖
    └── [05-未来路线图.md]                       # 未来路线图 — Numbat,KAIROS,语音模式,未上线工具

ファイル名をクリックすると該当レポートに移動します。

# テーマ 主要発見 リンク
01 テレメトリとプライバシー 二層分析パイプライン(1P→Anthropic、Datadog)。環境フィンガープリント、プロセスメトリクス、全イベントにセッション/ユーザーID。ユーザー向け無効化設定なし。 OTEL_LOG_TOOL_DETAILS=1 で全ツール入力記録可能。 EN · 日本語
02 隠し機能とコードネーム 動物コードネーム体系(Capybara v8、Tengu、Fennec→Opus 4.6、Numbat 次期)。Feature flagにランダム単語ペアで目的を難読化。内部ユーザーは優遇プロンプトと検証エージェントを利用可能。隠しコマンド: /btw/stickers EN · 日本語
03 アンダーカバーモード Anthropic社員は公開リポジトリで自動的にアンダーカバーモードに突入。モデルへの指示: 「正体を明かすな」 — 全AI帰属表示を除去し、人間が書いたようにコミット。強制無効化オプションなし。 EN · 日本語
04 リモート制御とキルスイッチ 1時間ごとに /api/claude_code/settings をポーリング。危険な変更時にブロッキングダイアログ — 拒否=アプリ終了。6以上のキルスイッチ(パーミッションバイパス、Fastモード、音声モード、分析シンク)。GrowthBookで同意なくユーザー動作変更可能。 EN · 日本語
05 今後のロードマップ Numbat コードネーム確認。Opus 4.7 / Sonnet 4.8開発中。KAIROS = 完全自律エージェントモード、<tick>ハートビート、プッシュ通知、PR購読。音声モード(push-to-talk)準備完了。未公開ツール17個発見。 EN · 日本語

欠損モジュール案内(108モジュール)

このソースは不完全である。 feature() ゲートで分岐した108モジュールがnpmパッケージに含まれていない。 これらはAnthropicの内部モノレポにのみ存在し、コンパイル時にデッドコード除去される。 cli.jssdk-tools.d.ts、その他配布アーティファクトから復元できない

Anthropic内部コード(約70モジュール、未公開)

npmパッケージにソースファイルが一切ないモジュール。Anthropic内部インフラに該当する。

全リスト展開
Module 用途 Feature Gate
daemon/main.js バックグラウンドデーモン管理 DAEMON
daemon/workerRegistry.js デーモンワーカーレジストリ DAEMON
proactive/index.js 先行通知システム PROACTIVE
contextCollapse/index.js コンテキスト縮小サービス(実験的) CONTEXT_COLLAPSE
contextCollapse/operations.js 縮小操作 CONTEXT_COLLAPSE
contextCollapse/persist.js 縮小永続化 CONTEXT_COLLAPSE
skillSearch/featureCheck.js リモートスキル機能検査 EXPERIMENTAL_SKILL_SEARCH
skillSearch/remoteSkillLoader.js リモートスキルローダー EXPERIMENTAL_SKILL_SEARCH
skillSearch/remoteSkillState.js リモートスキル状態 EXPERIMENTAL_SKILL_SEARCH
skillSearch/telemetry.js スキル検索テレメトリ EXPERIMENTAL_SKILL_SEARCH
skillSearch/localSearch.js ローカルスキル検索 EXPERIMENTAL_SKILL_SEARCH
skillSearch/prefetch.js スキルプリフェッチ EXPERIMENTAL_SKILL_SEARCH
coordinator/workerAgent.js マルチエージェントコーディネーターワーカー COORDINATOR_MODE
bridge/peerSessions.js ブリッジピアセッション管理 BRIDGE_MODE
assistant/index.js KAIROSアシスタントモード KAIROS
assistant/AssistantSessionChooser.js アシスタントセッション選択 KAIROS
compact/reactiveCompact.js リアクティブコンテキスト圧縮 CACHED_MICROCOMPACT
compact/snipCompact.js スニップベース圧縮 HISTORY_SNIP
compact/snipProjection.js スニッププロジェクション HISTORY_SNIP
compact/cachedMCConfig.js キャッシュマイクロ圧縮設定 CACHED_MICROCOMPACT
sessionTranscript/sessionTranscript.js セッショントランスクリプトサービス TRANSCRIPT_CLASSIFIER
commands/agents-platform/index.js 内部エージェントプラットフォーム ant(内部)
commands/assistant/index.js アシスタントコマンド KAIROS
commands/buddy/index.js Buddyシステム通知 BUDDY
commands/fork/index.js Forkサブエージェントコマンド FORK_SUBAGENT
commands/peers/index.js マルチピアコマンド BRIDGE_MODE
commands/proactive.js 先行コマンド PROACTIVE
commands/remoteControlServer/index.js リモート制御サーバー DAEMON + BRIDGE_MODE
commands/subscribe-pr.js GitHub PR購読 KAIROS_GITHUB_WEBHOOKS
commands/torch.js 内部デバッグツール TORCH
commands/workflows/index.js ワークフローコマンド WORKFLOW_SCRIPTS
jobs/classifier.js 内部タスク分類器 TEMPLATES
memdir/memoryShapeTelemetry.js メモリ形状テレメトリ MEMORY_SHAPE_TELEMETRY
services/sessionTranscript/sessionTranscript.js セッショントランスクリプト TRANSCRIPT_CLASSIFIER
tasks/LocalWorkflowTask/LocalWorkflowTask.js ローカルワークフロータスク WORKFLOW_SCRIPTS
protectedNamespace.js 内部ネームスペースガード ant(内部)
protectedNamespace.js (envUtils) 保護ネームスペースランタイム ant(内部)
coreTypes.generated.js 生成されたコアタイプ ant(内部)
devtools.js 内部開発ツール ant(内部)
attributionHooks.js 内部帰属フック COMMIT_ATTRIBUTION
systemThemeWatcher.js システムテーマウォッチャー AUTO_THEME
udsClient.js / udsMessaging.js UDSメッセージクライアント UDS_INBOX

Feature-Gatedツール(約20モジュール)

型シグネチャは存在するが、実装がコンパイル時に除去されたツール。

全リスト展開
Tool 用途 Feature Gate
REPLTool インタラクティブREPL(VMサンドボックス) ant(内部)
SnipTool コンテキストスニッピング HISTORY_SNIP
SleepTool エージェントループ内スリープ/遅延 PROACTIVE / KAIROS
MonitorTool MCPモニタリング MONITOR_TOOL
OverflowTestTool オーバーフローテスト OVERFLOW_TEST_TOOL
WorkflowTool ワークフロー実行 WORKFLOW_SCRIPTS
WebBrowserTool ブラウザ自動化 WEB_BROWSER_TOOL
TerminalCaptureTool ターミナルキャプチャ TERMINAL_PANEL
TungstenTool 内部パフォーマンス監視 ant(内部)
VerifyPlanExecutionTool 計画実行検証 CLAUDE_CODE_VERIFY_PLAN
SendUserFileTool ユーザーへのファイル送信 KAIROS
SubscribePRTool GitHub PR購読 KAIROS_GITHUB_WEBHOOKS
SuggestBackgroundPRTool バックグラウンドPR提案 KAIROS
PushNotificationTool プッシュ通知 KAIROS
CtxInspectTool コンテキスト検査 CONTEXT_COLLAPSE
ListPeersTool アクティブピア一覧 UDS_INBOX
DiscoverSkillsTool スキル探索 EXPERIMENTAL_SKILL_SEARCH

テキスト/プロンプトリソース(約6ファイル)

File 用途
yolo-classifier-prompts/auto_mode_system_prompt.txt autoモード分類器システムプロンプト
yolo-classifier-prompts/permissions_anthropic.txt Anthropic内部権限プロンプト
yolo-classifier-prompts/permissions_external.txt 外部ユーザー権限プロンプト
verify/SKILL.md 検証スキルドキュメント
verify/examples/cli.md CLI検証例
verify/examples/server.md サーバー検証例

欠損の理由

  Anthropic内部モノレポ                  配布npmパッケージ
  ──────────────────────               ─────────────────────
  feature('DAEMON') → true    ──ビルド──→   feature('DAEMON') → false
  ↓                                         ↓
  daemon/main.js  ← 含む        ──バンドル──→  daemon/main.js  ← 除去 (DCE)
  tools/REPLTool  ← 含む        ──バンドル──→  tools/REPLTool  ← 除去 (DCE)
  proactive/      ← 含む        ──バンドル──→  (参照のみ、src/に不在)

Bunの feature()コンパイル時組込関数:

  • Anthropic内部ビルドで true 返却 → コードがバンドルに含まれる
  • 配布ビルドで false 返却 → デッドコード除去
  • 108モジュールが配布アーティファクトに存在しない

著作権および免責事項

Copyright (c) Anthropic. All rights reserved.

本リポジトリのすべてのソースコードはAnthropicおよびClaudeの知的財産です。
本リポジトリは技術研究および教育目的でのみ提供されます。商用利用は禁止です。

著作権者として本リポジトリがお客様の権利を侵害すると判断される場合は、
リポジトリ所有者にご連絡いただければ直ちに削除いたします。

統計

項目 数量
ソースファイル (.ts/.tsx) 約1,884
コード行数 約512,664
最大単一ファイル query.ts(約785KB)
組込ツール 約40以上
スラッシュコマンド 約80以上
依存関係 (node_modules) 約192パッケージ
ランタイム Bun(Node.js >= 18バンドルにコンパイル)

エージェントモード

                    コアループ
                    ========

    ユーザー --> messages[] --> Claude API --> レスポンス
                                          |
                                stop_reason == "tool_use"?
                               /                          \
                             はい                         いいえ
                              |                             |
                        ツール実行                      テキスト返却
                        tool_result追加
                        ループ再突入 -----------------> messages[]


    これが最小のエージェントループである。Claude Codeはこのループの上に
    プロダクショングレードのハーネスをラップする: 権限、ストリーミング、
    並行性、圧縮、サブエージェント、永続化、MCP。

ディレクトリ参照

src/
├── main.tsx                 # REPLブートストラップ、4,683行
├── QueryEngine.ts           # SDK/headlessクエリライフサイクルエンジン
├── query.ts                 # メインエージェントループ(785KB、最大ファイル)
├── Tool.ts                  # ツールインターフェース + buildToolファクトリ
├── Task.ts                  # タスクタイプ、ID、状態ベースクラス
├── tools.ts                 # ツール登録、プリセット、フィルタリング
├── commands.ts              # スラッシュコマンド定義
├── context.ts               # ユーザー入力コンテキスト
├── cost-tracker.ts          # APIコスト累積
├── setup.ts                 # 初回実行セットアップフロー
│
├── bridge/                  # Claude Desktop / リモートブリッジ
│   ├── bridgeMain.ts        #   セッションライフサイクルマネージャ
│   ├── bridgeApi.ts         #   HTTPクライアント
│   ├── bridgeConfig.ts      #   接続設定
│   ├── bridgeMessaging.ts   #   メッセージリレー
│   ├── sessionRunner.ts     #   プロセススポーン
│   ├── jwtUtils.ts          #   JWTリフレッシュ
│   ├── workSecret.ts        #   認証トークン
│   └── capacityWake.ts      #   容量ベースウェイク
│
├── cli/                     # CLIインフラ
│   ├── handlers/            #   コマンドハンドラ
│   └── transports/          #   I/Oトランスポート(stdio, structured)
│
├── commands/                # 約80スラッシュコマンド
├── components/              # React/InkターミナルUI
├── entrypoints/             # アプリエントリポイント
├── hooks/                   # React hooks
├── services/                # ビジネスロジック層
├── state/                   # アプリ状態
├── tasks/                   # タスク実装
├── tools/                   # 40以上のツール実装
├── types/                   # 型定義
├── utils/                   # ユーティリティ(最大ディレクトリ)
└── vendor/                  # ネイティブモジュールソーススタブ

アーキテクチャ概要

┌─────────────────────────────────────────────────────────────────────┐
│                         エントリ層                                   │
│  cli.tsx ──> main.tsx ──> REPL.tsx(インタラクティブ)               │
│                     └──> QueryEngine.ts(headless/SDK)              │
└──────────────────────────────┬──────────────────────────────────────┘
                               │
                               ▼
┌─────────────────────────────────────────────────────────────────────┐
│                       クエリエンジン                                  │
│  submitMessage(prompt) ──> AsyncGenerator<SDKMessage>               │
│    ├── fetchSystemPromptParts()    ──> システムプロンプト組立        │
│    ├── processUserInput()          ──> /コマンド処理                 │
│    ├── query()                     ──> メインエージェントループ      │
│    │     ├── StreamingToolExecutor ──> 並列ツール実行               │
│    │     ├── autoCompact()         ──> コンテキスト圧縮             │
│    │     └── runTools()            ──> ツールオーケストレーション    │
│    └── yield SDKMessage            ──> コンシューマにストリーミング  │
└──────────────────────────────┬──────────────────────────────────────┘

ビルド案内

このソースは本リポジトリから直接コンパイルできない:

  • tsconfig.json、ビルドスクリプト、Bunバンドラー設定がない
  • feature() 呼び出しはBunコンパイル時組込関数 — バンドリング時に解決される
  • MACRO.VERSION はビルド時に注入される
  • process.env.USER_TYPE === 'ant' 分岐はAnthropic内部用
  • コンパイル済み cli.js は自己完結型12MBバンドル、Node.js >= 18のみ必要

ビルドの詳細は QUICKSTART.md を参照。


ライセンス

本リポジトリのすべてのソースコードは AnthropicおよびClaude の著作物です。本リポジトリは技術研究および教育目的でのみ提供されます。完全なライセンス条項は元のnpmパッケージを参照してください。