- Die Kernstruktur eines KI-Coding-Assistenten besteht nicht aus komplexer Magie, sondern aus etwa 200 Zeilen einfachem Python-Code
- Das System basiert auf einer Gesprächsschleife mit dem LLM: Fordert das LLM einen Tool-Aufruf an, führt lokaler Code diesen aus und übergibt das Ergebnis zurück
- Die grundlegenden benötigten Tools sind drei: Datei lesen (
read), Dateien auflisten (list) und Datei bearbeiten (edit); damit sind Projekterkundung und Codeänderungen möglich
- Das LLM entscheidet auf Basis der Signaturen und Beschreibungen (Docstrings) der Tools selbst, welches Tool wann aufgerufen werden soll
- Diese Struktur entspricht dem Kern kommerzieller Produkte wie Claude Code, und selbst mit einer einfachen Struktur lässt sich ein leistungsfähiger Coding-Agent implementieren
Grundkonzept eines Coding-Agenten
- Ein Coding-Agent ist ein gesprächsbasiertes System mit einem LLM, das Benutzeranweisungen entgegennimmt und über Tool-Aufrufe echte Dateioperationen ausführt
- Der Benutzer gibt etwa eine Anfrage wie „Erstelle eine neue Datei mit einer
hello world-Funktion“ ein
- Das LLM antwortet mit den erforderlichen Tool-Aufrufen im JSON-Format
- Das Programm führt das jeweilige Tool aus und gibt das Ergebnis wieder an das LLM zurück
- Das LLM greift nicht direkt auf das Dateisystem zu, sondern stellt nur Anfragen; die eigentliche Arbeit übernimmt lokaler Code
Die drei benötigten Tools
- read_file: Liest den vollständigen Inhalt der angegebenen Datei und gibt ihn zurück
- list_files: Gibt die Liste der Dateien und Ordner in einem Verzeichnis zurück
- edit_file: Ersetzt einen vorhandenen String durch einen neuen oder erstellt eine neue Datei, wenn
old_str leer ist
- Falls der zu ersetzende String nicht vorhanden ist, wird „old_str not found“ zurückgegeben
- Schon mit diesen drei Tools sind Dateierstellung, Bearbeitung und Erkundung möglich
Tool-Registrierung und LLM-Integration
- Alle Tools werden mit Namen und Funktion im TOOL_REGISTRY registriert, sodass das LLM sie aufrufen kann
- Die Docstrings und Signaturen jedes Tools werden extrahiert und an das LLM übergeben
- Der System-Prompt teilt dem LLM die „Liste der verfügbaren Tools“ und das „Aufrufformat“ klar mit
- Tool-Aufrufe sind auf das Format
'tool: TOOL_NAME({JSON_ARGS})' beschränkt
- Die Ergebnisse der Tool-Ausführung werden dem LLM in Form von
tool_result(...) übergeben
Parsing von Tool-Aufrufen und Verarbeitung von LLM-Antworten
- In der Antwort des LLM werden Zeilen gesucht, die mit
tool: beginnen, und daraus werden Tool-Name und Argumente (JSON) extrahiert
- Nach Ausführung jedes Tools wird das Ergebnis als JSON serialisiert und dem Gesprächsverlauf hinzugefügt
- Die Funktion execute_llm_call ruft die LLM-API auf und gibt den Antworttext zurück
- run_coding_agent_loop nimmt Benutzereingaben entgegen und hält die Gesprächsschleife mit dem LLM aufrecht
- Die interne Schleife wird wiederholt, bis das LLM keine weiteren Tool-Aufrufe mehr anfordert
Ausführungsbeispiele und Erweiterbarkeit
- Beispielhafte Dialoge:
- „Erstelle die Datei
hello.py und implementiere hello world“ → Neuerstellung einer Datei per Aufruf von edit_file
- „Füge
hello.py eine Funktion hinzu, die zwei Zahlen multipliziert“ → Aufruf von read_file, gefolgt von edit_file
- Ein vollständiger Coding-Assistent lässt sich mit rund 200 Zeilen Code umsetzen
- Kommerzielle Produkte ergänzen darauf Fehlerbehandlung, Streaming-Antworten, Kontextverwaltung, zusätzliche Tools und Freigabeprozesse
- Die Kernstruktur bleibt gleich und besteht aus einer einfachen Schleife, in der das LLM entscheidet und der Code ausführt
Praxis und Erweiterung
- Der vollständige Quellcode umfasst etwa 200 Zeilen und lässt sich durch Austausch des LLM-Anbieters oder Hinzufügen weiterer Tools erweitern
- Selbst mit einer einfachen Struktur lässt sich direkt ein leistungsfähiger Prototyp eines KI-Coding-Agenten umsetzen
Noch keine Kommentare.