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
TypeScript
Für die Mehrheit derPython
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"
- Modellierung:
Haiku 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.md
Identitä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.md
Einfü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.md
Injizieren 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.
- Modellierung:
Sonnet 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:
getDiagnostics
Diagnose-Informationen wie Fehler und Warnungen in Ihrem Code abrufen.executeCode
Ausfü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文件
- Quotenanfrage(bei Inbetriebnahme abgeschlossen)
- 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文件创建" }
- System-Eingabeaufforderung:
- Core Agent Reminder & Tool Call:
- System-EingabeaufforderungSpleißen
System-Identity
undSystem-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 dieBash
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.
- System-EingabeaufforderungSpleißen
- Bash-Tool-Durchsetzungsrichtlinie:
- Bevor ein bestimmter Bash-Befehl ausgeführt wird, muss die
Claude 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
- Bevor ein bestimmter Bash-Befehl ausgeführt wird, muss die
- 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 Modellfalse
.
- 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.
- 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!\")" } }
- Nach dem Erstellen des Verzeichnisses fährt der Agent mit dem nächsten Schritt der Aufgabe fort, indem er die Funktion
- Ende der Ausführung des Schreibprogramms:
- Modellausgabe (Assistent):
Done! Created test_py/hello_world.py with a simple Hello World program.
- Modellausgabe (Assistent):
Benutzereingabe 2. > 修改为hello Hangzhou
- 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" }
- 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!\")" } }
- Der Agent versteht, dass der Benutzer die Absicht hat, die Datei zu ändern, und wählt daher die Funktion
- Das Werkzeug Bearbeiten wurde ausgeführt.:
- Modellausgabe (Assistent):
Modified to "Hello, Hangzhou!"
- Modellausgabe (Assistent):
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:
- Cue-Word-System vollständig migriert:
- Platzierung:
pywen/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, dieClaude Code
Eckpfeiler des Verhaltensmodells.
- Platzierung:
- Werkzeugdefinition Genaue Reproduktion:
- Platzierung:
pywen/agents/claudecode/tools/tool_adapter.py
- realisieren: Verwenden Sie das Adapter-Pattern der Entwurfsmuster für die
Pywen
Die nativen Tools ersetzen dynamisch dieClaude 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 desClaude Code
genau das gleiche, so dass das Verhalten beim Aufruf des Werkzeugs genau nachgebildet wird.
- Platzierung:
- Systematischer Erinnerungsmechanismus taucht wieder auf:
- Platzierung:
pywen/agents/claudecode/system_reminder.py
- realisieren:
Claude Code
von Systemwarnungen basiert auf kontextbezogener Smart Injection.Pywen
wird durch eineSystemReminder
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.
- Platzierung:
- Todo Kurzzeit-Speicherverwaltung:
- Platzierung:
pywen/agents/claudecode/tools/todo_tool.py
- realisierenDateisystem-basierte Task-Statuspersistenz ist gekapselt in einem
TodoTool
die 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).
- Platzierung:
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.