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
コード内のエラーや警告などの診断情報を取得します。executeCode
IDE環境でコード・スニペットを実行します。- さらに、これらのツールによるリンティング・エラーを自動的に修正する。
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文件
- クォータ照会: (スタートアップ時に完了)
- トピック検出:
- システムプロンプト:
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文件创建" }
- システムプロンプト:
- コア・エージェント・リマインダー&ツール・コール:
- システムプロンプトスプライシング
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行以上のコンテンツが含まれています。
- システムプロンプトスプライシング
- 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
- 特定のbashコマンドを実行する前に
- Bashユーティリティが後処理を行う:
- 実行後、システムはモデルを再度呼び出し、コマンドによってファイルの内容が表示されたかどうかを判断し、CLIインターフェイスに出力を表示するかどうかを決定する。
mkdir
コマンドはファイルの内容を表示しないので、モデルはfalse
.
- 実行後、システムはモデルを再度呼び出し、コマンドによってファイルの内容が表示されたかどうかを判断し、CLIインターフェイスに出力を表示するかどうかを決定する。
- 書き込みツールの呼び出し:
- ディレクトリを作成した後、エージェントは次のステップに進みます。
Write
ツールを使ってファイルを作成する。 - モデル出力(ツールコール):
{ "name": "Write", "input": { "file_path": "/home/capios/test_py/hello_world.py", "content": "print(\"Hello, World!\")" } }
- ディレクトリを作成した後、エージェントは次のステップに進みます。
- 書き込みツール実行終了:
- モデル出力(アシスタント):
Done! Created test_py/hello_world.py with a simple Hello World program.
- モデル出力(アシスタント):
ユーザー入力 2. > 修改为hello Hangzhou
- 新しいトピックの検出:
- 同じプロセスを経て、モデルはこれが新しいテーマであると判断する。
- モデル出力:
{ "isNewTopic": true, "title": "Hangzhou Greeting" }
- 編集ツールの呼び出し:
- エージェントは、ユーザーの意図がファイルを変更することであることを理解する。
Edit
道具だ。 - モデル出力(ツールコール):
{ "name": "Edit", "input": { "file_path": "/home/capios/test_py/hello_world.py", "old_string": "print(\"Hello, World!\")", "new_string": "print(\"Hello, Hangzhou!\")" } }
- エージェントは、ユーザーの意図がファイルを変更することであることを理解する。
- 編集ツールが実行された。:
- モデル出力(アシスタント):
Modified to "Hello, Hangzhou!"
- モデル出力(アシスタント):
Pywenへの移行:TypeScriptからPythonへのオープンソース移行
を完全に理解することである。 Claude Code
の核となるメカニズムの次のステップである。 Pywen
フレームワークの構築である。このプロセスはコードの翻訳だけでなく、デザイン・アイデアの再現でもある。
コア移行戦略
リバースエンジニアリングによって抽出されたすべてのコアコンポーネントは、個別に Pywen
フレームワークの中でモジュラー実装が行われた:
- キューワードシステム完全移行:
- プレースメント:
pywen/agents/claudecode/prompts.py
- 気付くアイデンティティ定義、ワークフロー、ダイナミックアラート、トピック検出、文脈圧縮ポリシーなど、ログから抽出されたすべてのキューワードは、次のように統合されています。
prompts.py
ファイル内のこれらのキュー・ワードには、以下のような詳細な指示が多数含まれている。Claude Code
行動モデルの礎石。
- プレースメント:
- 道具の定義 正確な再現:
- プレースメント:
pywen/agents/claudecode/tools/tool_adapter.py
- 気付くには、デザインパターンの Adapter パターンを使用します。
Pywen
ネイティブツールはClaude Code
バージョンの記述である。これは、基本的なツール機能は変わらないが、より大きな言語モデル(すなわち、LLMから見たツールスキーマ)に提供されるツール記述がClaude Code
ツール起動時の動作を正確に再現している。
- プレースメント:
- 組織的なリマインダーの仕組みが再び登場:
- プレースメント:
pywen/agents/claudecode/system_reminder.py
- 気付く:
Claude Code
システムアラートは、コンテクスチュアルなステートスマートインジェクションに基づいている。Pywen
を通過する。SystemReminder
モジュールを使って、Todoリストが空になったときにタスク管理にアラートを出したり、複数のファイル編集後にテストの実行を提案するなど、このメカニズムを再現することができる。
- プレースメント:
- 東堂短期メモリ管理:
- プレースメント:
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ログに基づいており、技術的な学習とコミュニケーションを目的としている。