Zugang aus Übersee: www.kdjingpai.com
Ctrl + D Lesezeichen für diese Seite
Derzeitige Position:Abb. Anfang " Praktische AI-Tutorials

Uncovering Claude Code: Ein tiefes Reverse Engineering und eine Open-Source-Implementierung

Anthropic bringt AI-Programmierassistent auf den Markt Claude Code Mit seinen leistungsstarken Code-Generierungs- und Interaktionsmöglichkeiten hat es in der Entwicklergemeinde große Aufmerksamkeit erregt. Da es sich jedoch um ein Closed-Source-Produkt handelt, ist sein interner Arbeitsmechanismus für die Außenwelt stets eine "Black Box", was es Entwicklern nicht nur erschwert, die Entscheidungslogik vollständig zu verstehen, sondern auch eine tiefgreifende Anpassung und Optimierung für bestimmte Technologie-Stacks einschränkt.

In diesem Artikel nehmen wir eine detaillierte Aufschlüsselung einer Anwendung für Claude Code Reverse-Engineering-Verfahren. Durch das Abfangen und Analysieren der API-Kommunikation mit dem Modell gelang es den Forschern, den komplexen Mechanismus des Agentenbetriebs aufzudecken und schließlich dessen Kernfunktionen in den offenen Quellcode zu migrieren. Python Abb. Muster Pywen in einer transparenten und anpassbaren Alternative für die Gemeinschaft.

Motivation: Warum sollte man einen KI-Assistenten dekonstruieren, der nicht im Internet verfügbar ist?

(tun Sie es einfach) ohne zu zögern Claude Code Leistungsstark, aber die Tatsache, dass es sich um einen geschlossenen Quellcode handelt, bringt einige zentrale Herausforderungen mit sich:

  • Intransparente EntscheidungslogikEntwickler sind nicht in der Lage, ihre internen Cue-Word-Designs, Tool-Aufrufstrategien und Kontextmanagement-Mechanismen zu untersuchen, was die Fehlersuche und Optimierung bei Problemen erschwert.
  • Schranke für die Integration des TechnologiestapelsSeine native Umgebung basiert auf TypeScriptFür die Mehrheit der Python Für Entwickler gibt es gewisse Integrations- und Nutzungsbarrieren.
  • Begrenzte AnpassungsmöglichkeitenDie Unfähigkeit, ihre Verhaltensmuster und Reaktionsweisen auf spezifische geschäftliche Anforderungen oder persönliche Vorlieben abzustimmen.
  • Kostenkontrolle unbekanntOhne die Möglichkeit, in die Strategie ihrer API-Aufrufe einzugreifen, ist es für die Nutzer schwierig, die Nutzungskosten durch Optimierung der Modellauswahl oder der Kontextlänge wirksam zu kontrollieren.

Das Ziel dieses Reverse Engineering ist also ganz klar: die vollständige Dekonstruktion der Claude Code arbeitet, extrahiert seine wichtigsten Stichworte und Werkzeugdefinitionen und reproduziert seine Fähigkeiten nativ in der Pywen In diesem Rahmen.

Reverse Engineering: Aufdecken der Black Box mit Monkey Patch

Aufgrund des fehlenden direkten Zugangs Claude Code des Quellcodes hat das Reverse Engineering einen geschickten Einstiegspunkt gewählt:Abfangen seiner Beziehung zu Claude Die gesamte API-Kommunikation zwischen Modellen. Sein gesamtes intelligentes Verhalten, sei es die Codegenerierung oder der Aufruf von Tools, muss über API-Anfragen erfolgen.

Die Kerntechnologie verwendet "Monkey Patching", eine Technik, bei der der Code zur Laufzeit dynamisch geändert oder ersetzt wird. Dies wird erreicht durch claude-code-reverse Programm, das im Rahmen des Projekts angeboten wurde, konnten die Forscher Claude Code Das Webanforderungsmodul fügt benutzerdefinierte Logik ein, um die vollständigen Anfrage- und Antwortdaten für jeden API-Aufruf zu erfassen.

Führen Sie eine modifizierte Claude Code Die API erstellt detaillierte Kommunikationsprotokolle. Durch die Analyse dieser Protokolle wird ein ursprünglich undurchsichtiger "Denkprozess" vollständig wiederhergestellt.

Reverse Discovery: Die acht Kernmechanismen von Claude Code

Durch die eingehende Analyse umfangreicher API-Protokolle kann dieClaude Code Der gesamte Arbeitsablauf wird schrittweise entschlüsselt, und sein Kernmechanismus besteht hauptsächlich aus den folgenden acht Teilen:

1) Quotenabfrage

Jedes Mal, wenn das Programm startet, sendet es zunächst eine Anfrage an die Claude Das Modell sendet eine einfache Dialoganfrage, um zu überprüfen, ob die API-Quote des Nutzers ausreicht.

  • Einfuhr"quota"
  • ModellierungHaiku 3.5
  • Ziel: Fakultativ Haiku Modelle ermöglichen eine schnelle und kostengünstige API-Quotenvalidierung unter Beibehaltung der Funktionalität.

2. themenbezogene Erkennung

Nach jeder Eingabe des Benutzers verwendet das System eine Datei namens check-new-topic eines bestimmten Aufforderungsworts, um festzustellen, ob die aktuelle Eingabe ein neues Thema eröffnet. Es ist anzumerken, dass diese Erkennung den historischen Dialogkontext nicht einbezieht und ihr Hauptzweck darin besteht, den Titel der Sitzung auf der Terminalschnittstelle zu aktualisieren.

Wenn zum Beispiel in derselben Sitzung der Inhalt der Diskussion wechselt, gibt das Modell das folgende JSON-Objekt zurück:

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

3. der Core-Agent-Prozess

dies ist Claude Code Die Hauptarbeitsschleife des Prozesses wird von einem Hauptagenten gesteuert. Dieser Prozess verwendet den leistungsfähigeren Sonnet 4 Modell und besteht aus fünf zentralen Prompter-Komponenten, die zusammen die Anweisungen auf Systemebene des Modells bilden (System Prompt).

  • system-identity.prompt.mdIdentität: Definiert die Identität und Rolle des Agenten.
  • system-workflow.prompt.md:: Beschreiben Sie die wichtigsten Arbeitsabläufe, Verhaltensregeln und Reaktionsweisen.
  • system-reminder-start.prompt.mdEinfügen von dynamisch generierten Umgebungsinformationen, wie z.B. das aktuelle Arbeitsverzeichnis, der IDE-Status usw.
  • Tatsächliche Benutzereingabe:: Die ursprüngliche Anfrage des Benutzers.
  • system-reminder-end.prompt.mdInjizieren Sie den Aufgabenstatus, z.B. die aktuelle Todo-Liste.

4. kontextbezogene Komprimierung (Kompakt)

Wenn die Menge der Token in der Dialoghistorie die Obergrenze des Kontextfensters des Modells erreicht, wird dieClaude Code Ein Kontextkompressionsmechanismus wird entweder automatisch oder auf manuelle Auslösung durch den Benutzer aktiviert.

  • ModellierungSonnet 4
  • MaschineDie gesamte Geschichte des Dialogs mit Hilfe eines speziellen komprimierten Stichworts in eine einzige Zusammenfassung bringen.
  • Ziel:: Diese Zusammenfassung dient als Ausgangskontext für den nächsten Dialog und schafft so Platz für neue Dialoginhalte, wobei die Kernaussagen erhalten bleiben.

5. die IDE-Integration

Claude Code Enge Integration mit IDEs (z. B. VS Code) durch MCP (ein Kommunikationsprotokoll), die Möglichkeit, Informationen über die aktuell geöffnete Datei zu lesen und spezielle Tools zu registrieren, um mit der IDE zu interagieren:

  • getDiagnosticsDiagnose-Informationen wie Fehler und Warnungen in Ihrem Code abrufen.
  • executeCodeAusführen von Codeschnipseln in einer IDE-Umgebung.
  • Außerdem behebt es automatisch Linting-Fehler mit diesen Werkzeugen.

6. todo Kurzzeitspeicherverwaltung

Claude Code Es wird ein Kurzzeitspeichersystem auf der Grundlage eines lokalen Dateisystems zur Verwaltung von Aufgabenlisten implementiert.

  • auf HaldeDer Aufgabenstatus wird im JSON-Format in der Datei ~/.claude/todos/ Katalog.
  • Rahmenwerk:
    {
    "todos": [
    {
    "content": "Run tests",
    "status": "in_progress",
    "activeForm": "Running tests"
    }
    ]
    }
    
  • MaschineDas System lädt und aktualisiert diese JSON-Datei in Echtzeit, um sicherzustellen, dass der Agent sich an die aktuelle Aufgabe erinnert und diese zwischen den Interaktionen fortsetzt.

7. das Subagentensystem

Um komplexe Aufgaben zu bewältigen und eine Verunreinigung des Kontextes des Hauptagenten zu vermeiden, wird derClaude Code Es wurde der Mechanismus des Unteragenten eingeführt, der durch eine Task Werkzeuge für die Zusammenarbeit von Multiagenten.

  • Arbeitsabläufe: Der Hauptagent kann eine komplexe Teilaufgabe zuweisen.
  • IncommunicadoDer Unteragent führt diese Aufgabe in einem völlig isolierten Kontext aus.
  • zurückkommen (oder gehen)Dieser Mechanismus verhindert effektiv, dass redundante Informationen in den Zwischenschritten den Hauptdialogprozess stören, was das so genannte "dirty context"-Problem darstellt.

8. historische Zusammenfassung des Dialogs

Am Ende der Sitzung verwendet das System die leichtgewichtige Haiku 3.5 Das Modell generiert einen prägnanten Titel für diese Konversation, der es den Nutzern erleichtert, historische Konversationen zu verwalten und zu überprüfen.

Testfälle: Aufschlüsselung eines vollständigen Interaktionsablaufs

Hier ist eine einfache Aufgabe zum "Erstellen und Ändern einer Datei", die deutlich zeigt, wie die oben genannten Mechanismen zusammenwirken.

Benutzereingabe 1. > 当前目录创建test_py文件夹,写一个hello world Python文件

  1. Quotenanfrage(bei Inbetriebnahme abgeschlossen)
  2. Thema Erkennung:

    • System-Eingabeaufforderung:
      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.
      
    • Modellleistung:
      { "isNewTopic": true, "title": "Python文件创建" }
      
  3. Core Agent Reminder & Tool Call:

    • System-EingabeaufforderungSpleißen System-IdentityundSystem-Workflow Mehrere Stichwortkomponenten wie z.B..
    • NachrichtDynamische Warnmeldungen einfügen, z. B. vom Benutzer in der IDE ausgewählter Code.
      <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>
      
    • Werkzeuge: Geben Sie eine detaillierte Beschreibung aller verfügbaren Werkzeuge ein.
    • Modellausgabe (Assistent):: Zuerst den Gedankengang exportieren "I'll create a test_py folder and write a hello world Python file in it."und rufen dann die Bash Werkzeuge.
      {
      "command": "mkdir test_py",
      "description": "Create test_py directory"
      }
      

      Anmerkungen:Bash Die Beschreibung des Tools ist sehr detailliert, einschließlich Sicherheitstipps, Git-Operationsspezifikation, PR-Erstellungsprozess und so weiter, mehr als 400 Zeilen Inhalt, die hier nicht vollständig gezeigt werden.

  4. Bash-Tool-Durchsetzungsrichtlinie:

    • Bevor ein bestimmter Bash-Befehl ausgeführt wird, muss dieClaude Code Ein weiteres Modell wird eingesetzt, um die Sicherheit von Befehlen zu analysieren und Befehlspräfixe zu extrahieren, um Angriffe durch Befehlsinjektion zu verhindern.
    • System-Eingabeaufforderung:
      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...
      
    • Nachricht:
      ... Command: mkdir test_py
      
    • Modellleistung:
      mkdir
      
  5. Das Dienstprogramm Bash führt Nachbearbeitungen durch:

    • Nach der Ausführung ruft das System das Modell erneut auf, um festzustellen, ob der Befehl den Dateiinhalt angezeigt hat, um zu entscheiden, ob die Ausgabe auf der CLI-Schnittstelle angezeigt werden soll.mkdir Befehl zeigt den Inhalt der Datei nicht an, daher gibt das Modell false.
  6. Aufrufen des Schreibwerkzeugs:

    • Nach dem Erstellen des Verzeichnisses fährt der Agent mit dem nächsten Schritt der Aufgabe fort, indem er die Funktion Write um die Datei zu erstellen.
    • Modellausgabe (Tool Call):
      {
      "name": "Write",
      "input": {
      "file_path": "/home/capios/test_py/hello_world.py",
      "content": "print(\"Hello, World!\")"
      }
      }
      
  7. Ende der Ausführung des Schreibprogramms:

    • Modellausgabe (Assistent):
      Done! Created test_py/hello_world.py with a simple Hello World program.
      

Benutzereingabe 2. > 修改为hello Hangzhou

  1. Erkennung neuer Themen:

    • Nach dem gleichen Verfahren stellt das Modell fest, dass es sich um ein neues Thema handelt.
    • Modellleistung:
      { "isNewTopic": true, "title": "Hangzhou Greeting" }
      
  2. Aufrufen des Bearbeitungswerkzeugs:

    • Der Agent versteht, dass der Benutzer die Absicht hat, die Datei zu ändern, und wählt daher die Funktion Edit Werkzeuge.
    • Modellausgabe (Tool Call):
      {
      "name": "Edit",
      "input": {
      "file_path": "/home/capios/test_py/hello_world.py",
      "old_string": "print(\"Hello, World!\")",
      "new_string": "print(\"Hello, Hangzhou!\")"
      }
      }
      
  3. Das Werkzeug Bearbeiten wurde ausgeführt.:

    • Modellausgabe (Assistent):
      Modified to "Hello, Hangzhou!"
      

Umstellung auf Pywen: Open-Source-Migration von TypeScript zu Python

In einem vollständigen Verständnis von Claude Code Der nächste Schritt, nachdem die Kernmechanismen der Pywen Rahmen. Dieser Prozess ist nicht nur eine Übersetzung von Code, sondern auch eine Reproduktion von Designideen.

Zentrale Migrationsstrategie

Alle durch Reverse Engineering extrahierten Kernkomponenten wurden einzeln in die Pywen Innerhalb dieses Rahmens wurde eine modulare Implementierung durchgeführt:

  1. Cue-Word-System vollständig migriert:
    • Platzierungpywen/agents/claudecode/prompts.py
    • realisierenAlle aus den Protokollen extrahierten Hinweise, einschließlich Identitätsdefinitionen, Arbeitsabläufe, dynamische Warnungen, Themenerkennung und Richtlinien zur Kontextkomprimierung, werden in die Datenbank integriert. prompts.py in der Datei. Diese Stichwörter enthalten eine große Anzahl detaillierter Anweisungen, die Claude Code Eckpfeiler des Verhaltensmodells.
  2. Werkzeugdefinition Genaue Reproduktion:
    • Platzierungpywen/agents/claudecode/tools/tool_adapter.py
    • realisieren: Verwenden Sie das Adapter-Pattern der Entwurfsmuster für die Pywen Die nativen Tools ersetzen dynamisch die Claude Code Version der Beschreibung. Das bedeutet, dass die zugrundeliegende Werkzeugfunktionalität gleich bleibt, aber die Werkzeugbeschreibungen, die dem größeren Sprachmodell zur Verfügung gestellt werden (d.h. das Werkzeugschema aus der Sicht des LLM), sind die gleichen wie die des Claude Code genau das gleiche, so dass das Verhalten beim Aufruf des Werkzeugs genau nachgebildet wird.
  3. Systematischer Erinnerungsmechanismus taucht wieder auf:
    • Platzierungpywen/agents/claudecode/system_reminder.py
    • realisierenClaude Code von Systemwarnungen basiert auf kontextbezogener Smart Injection.Pywen wird durch eine SystemReminder Modul, um diesen Mechanismus nachzubilden, wie z.B. die Benachrichtigung der Aufgabenverwaltung, wenn die Todo-Liste leer ist, oder der Vorschlag, nach mehreren Dateibearbeitungen einen Test durchzuführen.
  4. Todo Kurzzeit-Speicherverwaltung:
    • Platzierungpywen/agents/claudecode/tools/todo_tool.py
    • realisierenDateisystem-basierte Task-Statuspersistenz ist gekapselt in einem TodoTooldie es ermöglicht, Aufgaben hinzuzufügen, zu löschen, zu ändern und zu überprüfen und in drei Zuständen zu verwalten (ausstehend/im Gange/erledigt).

Architektonische Vorteile des Pywen Frameworks

Pywen Ein flexibles und vollständiges Architekturdesign machte diesen komplexen Migrationsprozess effizient und reibungslos:

  • Vollständige InfrastrukturDer Rahmen bietet BaseAgent Kernkomponenten wie Basisklassen, Werkzeugregistrierungssystem, Sitzungsverwaltung, Spuraufzeichnung usw. müssen die Entwickler nicht von Grund auf neu entwickeln.
  • Flexibles AgentensystemKoexistenz von mehreren Agenten wird unterstützt. /agent Befehl auf verschiedenen Agenten (z.B. claude Der Agent kann jederzeit zwischen dem Standardmodus und dem Standardmodus umgeschaltet werden, und jeder Agent hat seine eigene Konfiguration, ohne sich gegenseitig zu stören.
  • Reichhaltige ÖkosystemeDas Framework verfügt über eingebaute grundlegende Werkzeuge zur Dateibearbeitung, Code-Editierung, Websuche usw., die je nach Bedarf kombiniert werden können, um die Claude Code bietet die Grundlage für ein komplexes Instrumentarium.

Ergebnis: Claude Code in Pywen

Sobald die Migration abgeschlossen ist, können die Benutzer nun Pywen nahtlos die gleichen Vorteile wie das native System zu nutzen. Claude Code Äußerst kohärent und leistungsstark.

  • GitHub-Links: 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

Dieses erfolgreiche Reverse-Engineering und die Open-Source-Implementierung offenbaren nicht nur das interne Design eines erstklassigen Closed-Source-KI-Produkts, sondern, was noch wichtiger ist, sie bringen diese fortschrittlichen Ideen der Agentenarchitektur in die Open-Source-Gemeinschaft ein und fördern so die Transparenz und den gemeinsamen Fortschritt in der Technologie.

Alle Analysen in diesem Artikel basieren auf öffentlich zugänglichen API-Protokollen und sind für den technischen Unterricht und die Kommunikation gedacht.

Empfohlen

Sie können keine AI-Tools finden? Versuchen Sie es hier!

Geben Sie einfach das Schlüsselwort Barrierefreiheit Bing-SucheDer Bereich KI-Tools auf dieser Website bietet eine schnelle und einfache Möglichkeit, alle KI-Tools auf dieser Website zu finden.

Neue Veröffentlichungen

zurück zum Anfang

de_DEDeutsch