Codebase Memory
Was dieser Artikel behandelt
- Was Codebase Memory bedeutet und wozu es dient.
- Wie ein Code-Agent aus einem Repository Wissen aufbauen kann.
- Welche Werkzeuge und Ansätze es dafür gibt.
- Wie man eine eigene Code-Wissensdatenbank aufbaut.
- Typische Herausforderungen und Lösungen.
Einleitung
Code-Agenten wie OpenHands oder AutoGen können zwar Code lesen und bearbeiten, aber sie vergessen zwischen den Sitzungen oder übersehen Zusammenhänge. Codebase Memory soll das ändern: Es baut ein Langzeitgedächtnis aus dem Projekt auf, das Agenten bei neuen Aufgaben wieder abfragen können. Statt jedes Mal alle Dateien neu zu lesen, greift der Agent auf eine vorbereitete Wissensdatenbank zurück.
Codebase Memory kurz erklärt
Stell Dir vor, ein Agent würde eine Datei lesen und sich merken: “Die API-Keys werden in config.py geladen, die Validierung passiert in auth.py, und der E-Mail-Versand nutzt den Service aus mailer.py.” Dieses Wissen wird in Vektoren oder einem Graphen gespeichert. Bei der nächsten Aufgabe sucht der Agent danach und muss nicht wieder alles durchforsten.
Ansatz und Werkzeuge
Codebase Memory ist kein einzelnes Tool, sondern ein Konzept. Typische Bausteine sind:
- Parser - Dateien in sinnvolle Teile zerlegen.
- Embeddings - Code in Vektoren umwandeln.
- Vektordatenbank - Chroma, Qdrant oder pgvector speichern das Wissen.
- Graphen - Abhängigkeiten zwischen Klassen und Funktionen abbilden.
Eigene Codebase Memory aufbauen
- Repository parsen: Verwende ein Tool wie
tree-sitteroderast-grep, um Funktionen, Klassen und Imports zu extrahieren. - Chunks erzeugen: Teile den Code in sinnvolle Blöcke.
- Embeddings erzeugen: Nutze ein Code-Embedding-Modell wie
jina-embeddingsoderBAAI/bge-base-en-v1.5. - Vektordatenbank füllen: Speichere Chunks mit Metadaten wie Dateipfad und Zeilennummer.
- Abfrage bauen: Der Agent fragt: “Welche Funktionen bearbeiten E-Mail-Validierung?”
Ein simples Beispiel mit Python und Chroma:
import chromadb
from sentence_transformers import SentenceTransformer
client = chromadb.PersistentClient(path="./code_memory")
collection = client.create_collection(name="codebase")
model = SentenceTransformer('BAAI/bge-small-en-v1.5')
# Beispiel-Code-Chunk einfügen
collection.add(
documents=["def validate_email(email): return '@' in email"],
metadatas=[{"file": "auth.py"}],
ids=["id1"]
)
# Abfrage
query = model.encode(["E-Mail Validierung"]).tolist()
results = collection.query(query_embeddings=query, n_results=3)
print(results)
Wofür ist Codebase Memory geeignet?
| Einsatzgebiet | Nutzen |
|---|---|
| Große Projekte | Agent findet schnell relevante Stellen |
| Onboarding | Neue Entwickler können Fragen an den Code-Agenten stellen |
| Refactoring | Wissen über Abhängigkeiten hilft bei Änderungen |
| Dokumentation | Automatische Zusammenfassungen aus dem Code |
Typische Stolpersteine
- Code ändert sich - Eine Codebase Memory muss regelmäßig aktualisiert werden.
- Qualität der Chunks - Zu große oder zu kleine Blöcke verschlechtern die Suche.
- Privater Code - Bei sensiblen Projekten sollte alles lokal bleiben.
Weiterführende Links
FAQ - Typische Fragen
Brauche ich ein spezielles Tool für Codebase Memory?
Nein. Du kannst es mit einer Vektordatenbank und einem Embedding-Modell selbst bauen. Spezialisierte Tools reduzieren den Aufwand.
Ist Codebase Memory nur für große Projekte sinnvoll?
Nein, aber der Nutzen wächst mit der Projektgröße. Schon bei mittleren Codebases lohnt sich der schnelle Zugriff auf Zusammenhänge.


