海外からのアクセス:www.kdjingpai.com
Ctrl + D このサイトをブックマークする

クロード・コードの発見:ディープ・リバース・エンジニアリングとオープンソース実装

Anthropic、AIプログラミング・アシスタントを発表 Claude Code その強力なコード生成とインタラクション機能により、開発者コミュニティで広く注目を集めている。しかし、クローズドソースの製品であるため、内部の動作メカニズムは常に外部に対して「ブラックボックス」であり、開発者がその意思決定ロジックを完全に理解することが難しいだけでなく、特定のテクノロジースタックにおける詳細なカスタマイズや最適化も制限されている。

この記事では、その詳細な内訳を分解する。 Claude Code リバースエンジニアリングの実践。モデルとのAPI通信を傍受し分析することで、研究者たちはその複雑なAgent操作メカニズムを明らかにすることに成功し、最終的にそのコア機能をオープンソースに移行した。 Python 図案 Pywen 透明性が高く、カスタマイズ可能な代替案を地域社会に提供する。

動機:なぜクローズドソースのAIアシスタントを解体するのか?

(躊躇なく Claude Code 強力だが、クローズドソースであるため、いくつかの課題がある:

  • 不透明な意思決定ロジック開発者は、内部的なキュー・ワードの設計、ツールの呼び出し戦略、コンテキスト管理メカニズムを調査することができないため、問題が発生したときのデバッグや最適化が難しくなります。
  • 技術スタック統合の壁ネイティブ環境は TypeScript大半は Python 開発者にとっては、ある種の統合と利用の障壁がある。
  • 限られたカスタマイズ能力特定のビジネスニーズや個人的嗜好に合わせて行動パターンや対応スタイルを調整することができない。
  • コスト管理は不明APIコール戦略に介入する能力がなければ、ユーザーはモデルの選択やコンテキストの長さを最適化することで、利用コストを効果的にコントロールすることは難しい。

したがって、このリバースエンジニアリングの目標は非常に明確である。 Claude Code その中核となるキューワードとツール定義を抽出し、その機能をネイティブに再現する。 Pywen 枠組みの中で。

リバースエンジニアリング:モンキーパッチでブラックボックスを解明する

直接アクセスできないため Claude Code ソースコードのリバースエンジニアリングは、巧妙なエントリーポイントを選んだ:との関係を遮断する。 Claude モデル間のすべてのAPI通信.コード生成やツールの起動など、インテリジェントな動作はすべてAPIリクエストを通じて行わなければならない。

コア・テクノロジーは「モンキー・パッチ」を使用しており、これは実行時に動的にコードを修正または置換する技術である。これを実現するのは claude-code-reverse プロジェクトが提供するプログラムによって、研究者たちは以下のことが可能になった。 Claude Code ウェブ・リクエスト・モジュールは、各APIコールの完全なリクエストとレスポンス・データを取得するカスタム・ロジックを注入する。

修正された Claude Code APIは詳細な通信ログを生成する。これらのログを分析することで、もともと不透明だった「思考プロセス」が完全に復元される。

逆発見:クロード・コードの8つの核心メカニズム

膨大なAPIログの綿密な分析を通じてClaude Code 完全なワークフローは徐々に復号化され、そのコアメカニズムには主に以下の8つの部分が含まれる:

1.クォータ・クエリー

番組がスタートするたびに、まずリクエストを Claude このモデルは、ユーザーのAPIクォータが十分であることを確認するために、軽量のダイアログリクエストを送信する。

  • 輸入"quota"
  • モデリングHaiku 3.5
  • ゴールオプション Haiku モデルは、機能を維持しながら、高速で低コストのAPIクォータ検証を可能にする。

2.トピック検出

ユーザーからの各入力を受け取った後、システムはファイル名 check-new-topic の特定のプロンプト単語を検出し、現在の入力が新しいトピックを開くかどうかを判断する。この検出には、過去の対話コンテキストは含まれず、その主な目的は、端末インターフェイスのセッションタイトルを更新することであることは注目に値する。

たとえば、同じセッションで、ディスカッションの内容が切り替わると、モデルは次のようなJSONオブジェクトを返します:

{ "isNewTopic": true, "title": "Python文件创建" }

3.コア・エージェント・プロセス

これは Claude Code プロセスの主要な作業ループは、マスター・エージェントによって駆動される。このプロセスは Sonnet 4 このプロンプターは、5つのコア・プロンプター・コンポーネントから構成されており、これらのコンポーネントが一緒になって、このモデルのシステムレベルの命令(システム・プロンプト)を構築する。

  • system-identity.prompt.mdエージェントのアイデンティティと役割を定義します。
  • system-workflow.prompt.md:: 中心的なワークフロー、行動規範、対応スタイルについて説明する。
  • system-reminder-start.prompt.md: 現在の作業ディレクトリやIDEの状態など、動的に生成される環境情報を注入します。
  • 実際のユーザー入力:: ユーザーのオリジナルリクエスト。
  • system-reminder-end.prompt.md現在のTodoリストのようなタスクのステータスを注入する。

4.コンテキスト圧縮(コンパクト)

ダイアログ履歴のトークン量がモデルのコンテキストウィンドウの上限に近づくとClaude Code コンテクスト圧縮機構は、自動またはユーザーによる手動トリガーで作動する。

  • モデリングSonnet 4
  • 機械特殊な圧縮キューワードを使用して、対話の履歴全体を1つの要約に抽出します。
  • ゴールこの要約は、次回のダイアログの最初の文脈として機能するため、重要なメッセージを保ちつつ、新しいダイアログのためのスペースを確保することができる。

5. IDEとの統合

Claude Code MCP(通信プロトコル)を介したIDE(VS Codeなど)との緊密な統合、現在開いているファイルに関する情報の読み取り、IDEと対話するための特別なツールの登録機能など:

  • getDiagnosticsコード内のエラーや警告などの診断情報を取得します。
  • executeCodeIDE環境でコード・スニペットを実行します。
  • さらに、これらのツールによるリンティング・エラーを自動的に修正する。

6.藤堂短期メモリ管理

Claude Code タスクリストを管理するためのローカルファイルシステムに基づく短期記憶システムが実装されている。

  • ざいこタスクのステータスはJSON形式で ~/.claude/todos/ カタログ
  • フレームワーク:
    {
    "todos": [
    {
    "content": "Run tests",
    "status": "in_progress",
    "activeForm": "Running tests"
    }
    ]
    }
    
  • 機械システムはこのJSONファイルをリアルタイムでロード・更新し、エージェントがインタラクションの間に現在のタスクを記憶・継続することを保証します。

7.サブエージェントシステム

複雑なタスクを処理し、メインエージェントのコンテキストの汚染を避けるためにClaude Code サブ・エージェントのメカニズムが導入された。 Task マルチエージェントコラボレーションのためのツール。

  • ワークフローメインエージェントは複雑なサブタスクを割り当てることができます。
  • インコノミカドサブ・エージェントは、完全に孤立した状況でこのタスクを実行する。
  • かえるタスクが完了した後、サブエージェントは最終結果をメインエージェントに返します。このメカニズムにより、中間ステップの冗長な情報がメインの対話プロセスを妨げる、いわゆる「ダーティコンテキスト」問題を効果的に回避することができます。

8.対話の歴史的要約

セッションが終了すると、システムは軽量な Haiku 3.5 このモデルは、この会話に簡潔なタイトルを生成し、ユーザーが過去の会話を簡単に管理・確認できるようにする。

テストケース:完全なインタラクションフローを分解する

上記のメカニズムがどのように連動するかを明確に示す、「ファイルの作成と変更」というシンプルなタスクを紹介しよう。

ユーザー入力 1. > 当前目录创建test_py文件夹,写一个hello world Python文件

  1. クォータ照会: (スタートアップ時に完了)
  2. トピック検出:

    • システムプロンプト:
      Analyze if this message indicates a new conversation topic. If it does, extract a 2-3 word title that captures the new topic. Format your response as a JSON object with two fields: 'isNewTopic' (boolean) and 'title' (string, or null if isNewTopic is false). Only include these fields, no other text.
      
    • モデル出力:
      { "isNewTopic": true, "title": "Python文件创建" }
      
  3. コア・エージェント・リマインダー&ツール・コール:

    • システムプロンプトスプライシング System-IdentityそしてSystem-Workflow など、複数のキュー・ワード・コンポーネントがある。
    • メッセージIDEでユーザーが選択したコードなど、動的な警告を注入する。
      <system-reminder> The user selected the lines 16 to 16 from /home/capios/.nvm/versions/node/v18.20.8/lib/node_modules/@anthropic-ai/claude-code/cli.js: USERPROFILE
      This may or may not be related to the current task. </system-reminder>
      
    • ツール利用可能なすべてのツールの詳細な説明に合格する。
    • モデル出力(アシスタント):: まず思考プロセスを輸出 "I'll create a test_py folder and write a hello world Python file in it."を呼び出す。 Bash 道具だ。
      {
      "command": "mkdir test_py",
      "description": "Create test_py directory"
      }
      

      注釈Bash ツールの説明は非常に詳細で、セキュリティに関するTips、gitの操作仕様、PRの作成プロセスなど、400行以上のコンテンツが含まれています。

  4. Bashツール施行方針:

    • 特定のbashコマンドを実行する前にClaude Code 別のモデルは、コマンドの安全性を分析し、コマンドインジェクション攻撃を防ぐためにコマンドの接頭辞を抽出するために呼び出される。
    • システムプロンプト:
      Your task is to process Bash commands that an AI coding agent wants to run. This policy spec defines how to determine the prefix of a Bash command...
      
    • メッセージ:
      ... Command: mkdir test_py
      
    • モデル出力:
      mkdir
      
  5. Bashユーティリティが後処理を行う:

    • 実行後、システムはモデルを再度呼び出し、コマンドによってファイルの内容が表示されたかどうかを判断し、CLIインターフェイスに出力を表示するかどうかを決定する。mkdir コマンドはファイルの内容を表示しないので、モデルは false.
  6. 書き込みツールの呼び出し:

    • ディレクトリを作成した後、エージェントは次のステップに進みます。 Write ツールを使ってファイルを作成する。
    • モデル出力(ツールコール):
      {
      "name": "Write",
      "input": {
      "file_path": "/home/capios/test_py/hello_world.py",
      "content": "print(\"Hello, World!\")"
      }
      }
      
  7. 書き込みツール実行終了:

    • モデル出力(アシスタント):
      Done! Created test_py/hello_world.py with a simple Hello World program.
      

ユーザー入力 2. > 修改为hello Hangzhou

  1. 新しいトピックの検出:

    • 同じプロセスを経て、モデルはこれが新しいテーマであると判断する。
    • モデル出力:
      { "isNewTopic": true, "title": "Hangzhou Greeting" }
      
  2. 編集ツールの呼び出し:

    • エージェントは、ユーザーの意図がファイルを変更することであることを理解する。 Edit 道具だ。
    • モデル出力(ツールコール):
      {
      "name": "Edit",
      "input": {
      "file_path": "/home/capios/test_py/hello_world.py",
      "old_string": "print(\"Hello, World!\")",
      "new_string": "print(\"Hello, Hangzhou!\")"
      }
      }
      
  3. 編集ツールが実行された。:

    • モデル出力(アシスタント):
      Modified to "Hello, Hangzhou!"
      

Pywenへの移行:TypeScriptからPythonへのオープンソース移行

を完全に理解することである。 Claude Code の核となるメカニズムの次のステップである。 Pywen フレームワークの構築である。このプロセスはコードの翻訳だけでなく、デザイン・アイデアの再現でもある。

コア移行戦略

リバースエンジニアリングによって抽出されたすべてのコアコンポーネントは、個別に Pywen フレームワークの中でモジュラー実装が行われた:

  1. キューワードシステム完全移行:
    • プレースメントpywen/agents/claudecode/prompts.py
    • 気付くアイデンティティ定義、ワークフロー、ダイナミックアラート、トピック検出、文脈圧縮ポリシーなど、ログから抽出されたすべてのキューワードは、次のように統合されています。 prompts.py ファイル内のこれらのキュー・ワードには、以下のような詳細な指示が多数含まれている。 Claude Code 行動モデルの礎石。
  2. 道具の定義 正確な再現:
    • プレースメントpywen/agents/claudecode/tools/tool_adapter.py
    • 気付くには、デザインパターンの Adapter パターンを使用します。 Pywen ネイティブツールは Claude Code バージョンの記述である。これは、基本的なツール機能は変わらないが、より大きな言語モデル(すなわち、LLMから見たツールスキーマ)に提供されるツール記述が Claude Code ツール起動時の動作を正確に再現している。
  3. 組織的なリマインダーの仕組みが再び登場:
    • プレースメントpywen/agents/claudecode/system_reminder.py
    • 気付くClaude Code システムアラートは、コンテクスチュアルなステートスマートインジェクションに基づいている。Pywen を通過する。 SystemReminder モジュールを使って、Todoリストが空になったときにタスク管理にアラートを出したり、複数のファイル編集後にテストの実行を提案するなど、このメカニズムを再現することができる。
  4. 東堂短期メモリ管理:
    • プレースメントpywen/agents/claudecode/tools/todo_tool.py
    • 気付くファイル・システム・ベースのタスク状態の永続性は、次のようにカプセル化される。 TodoToolタスクを追加、削除、変更、チェックし、3つの状態(保留中/進行中/完了)で管理することができる。

パイウェン・フレームワークのアーキテクチャ上の利点

Pywen 柔軟で完全なアーキテクチャ設計が、この複雑な移行プロセスを効率的かつスムーズにした:

  • 完全なインフラフレームワークは以下を提供する。 BaseAgent 基本クラス、ツール登録システム、セッション管理、トラック記録などのコア・コンポーネントは、開発者がゼロから構築する必要はない。
  • 柔軟なエージェント・システム複数のエージェントの共存をサポート。 /agent コマンドを実行する。 claude エージェントはいつでもデフォルトモードと切り替えることができ、各エージェントは互いに干渉することなく独自のコンフィギュレーションを持ちます。
  • 豊かな生態系フレームワークには、ファイル操作、コード編集、ウェブ検索などのための基本的なツールが組み込まれており、必要に応じてこれらを組み合わせて使用することで、次のような作業を再現することができる。 Claude Code は複雑なツールセットの基礎を提供する。

結果:パイウェンのクロード・コード

移行が完了すると、ユーザーは次のことができるようになる。 Pywen のフレームワークと同じメリットをシームレスに体験できる。 Claude Code 首尾一貫性が高く、力強い。

  • GitHubリンクhttps://github.com/PAMPAS-Lab/Pywen
# 启动 Pywen
$ pywen
# 切换到 Claude Code Agent 模式
> /agent claude
# 现在可以开始使用完整的 Claude Code 能力
> Help me refactor this code and add tests
# Todo 工具将自动激活并进行任务管理
Creating todo list:
1. Analyzing code structure
2. Refactoring implementation
3. Adding test cases

このリバースエンジニアリングとオープンソース実装の成功は、一流のクローズドソースAI製品の内部設計を明らかにするだけでなく、より重要なことは、これらの高度なエージェントアーキテクチャのアイデアをオープンソースコミュニティにもたらし、技術の透明性と共通の進歩を促進することである。

この記事の分析はすべて、公開されているAPIログに基づいており、技術的な学習とコミュニケーションを目的としている。

おすすめ

AIツールが見つからない?こちらをお試しください!

キーワードを入力する アクセシビリティこのサイトのAIツールセクションは、このサイトにあるすべてのAIツールを素早く簡単に見つける方法です。

新着情報

トップに戻る

ja日本語