Graft: Codebase-Karte für Coding-Agenten
Graft analysiert Ihr Repository mit tree-sitter und stellt über MCP eine abfragbare Codebase-Karte bereit, damit der Agent Strukturen nicht in jeder Sitzung neu ermittelt.
Was eine Codebase-Karte für Coding-Agenten ist
Eine Codebase-Karte für Coding-Agenten ist ein dauerhafter Index Ihres Repositorys. Der Agent schlägt darin Informationen nach, statt sich in jeder neuen Sitzung durch wiederholtes Greppen von Grund auf zu orientieren. Graft ist eine Implementierung dieses Konzepts. Das Tool analysiert Ihren Code mit tree-sitter, schreibt einen Ordner mit verknüpften Markdown-Knoten sowie einen Wiring-Graphen pro Symbol und stellt Abrufwerkzeuge über MCP (model context protocol, die Standardschnittstelle für Aufrufe externer Werkzeuge durch Coding-Agenten) bereit.
Graft ist weder ein Proxy noch ein Gateway. Zwischen Ihrem Agenten und der Model API befindet sich keine zusätzliche Komponente. Die Karte ist ein Ordner auf der Festplatte, den der Agent liest. Diese Unterscheidung bestimmt, welches Problem Sie lösen: ein selbst gehostetes Token-Gateway erfasst und leitet die Anfragen weiter, die Sie bereits senden, während eine Karte die Anzahl der Anfragen ändert, die Sie überhaupt senden müssen.
Die Technik ist älter als dieses Tool und wird es überdauern. Lernen Sie zuerst die Technik und anschließend die Mechanismen kennen.
Warum Coding-Agenten Kontext damit verbrauchen, die Struktur erneut zu ermitteln
Beobachten Sie, wie ein Agent die Arbeit an einem Repository beginnt, das er bereits fünfzigmal gesehen hat. Er listet Verzeichnisse auf. Er sucht mit grep nach einem Symbol. Er öffnet drei Dateien, um herauszufinden, in welcher die Funktion definiert ist, und anschließend eine vierte, um festzustellen, wer sie aufruft. Nichts davon gehört zur eigentlichen Aufgabe. Es dient nur der Orientierung und wird in jeder einzelnen Sitzung mit Eingabetokens bezahlt.
Die Ursache ist einfach. Ein Modell hat zwischen Sitzungen kein Gedächtnis. Alles, was der Agent über Ihr Layout gelernt hat, befand sich in einem Kontextfenster, das beim Ende der Sitzung verworfen wurde. Deshalb beginnt dieselbe Ermittlung jedes Mal wieder bei null und verursacht die vollen Kosten. In einem großen Repository kostet die Orientierungsphase mehr als die Änderung selbst: zehn Tool-Aufrufe, um den Code zu finden, und einer, um ihn zu ändern. Die Orientierung macht nur die eine Hälfte dieser Kosten aus, die Änderung die andere. Deshalb lohnt es sich, eine Fähigkeit, die den Agenten auf die kleinste funktionierende Änderung festlegt, mit einer Übersicht zu kombinieren, statt zwischen beiden zu wählen.
Eine Übersicht durchbricht diese Schleife, indem sie die Ermittlung vom Modell auf den Datenträger verlagert. Ein Parser durchläuft das Repository einmal, erfasst, wo welches Symbol definiert ist und welches Symbol welches andere aufruft, und hält diese Aufzeichnungen bei Änderungen am Code aktuell. Der Agent stellt eine Frage und erhält eine Antwort mit Datei und Zeilennummer. Wiederholte Erkundung wird zu einer kostengünstigen Abfrage.
Eine schwächere Variante davon verwenden Sie bereits. Eine AGENTS.md, in der Ihre Konventionen festgehalten sind, verhindert, dass der Agent Ihre Konventionen jedes Mal erneut ableitet. Eine generierte Übersicht verhindert, dass er Ihre Struktur erneut ableitet. Der Unterschied liegt darin, wer sie erstellt. Die Anweisungsdatei schreiben Sie selbst, daher bleibt sie klein. Ein Parser generiert die Übersicht, sodass sie zehntausend Dateien abdecken kann. Wenn Sie wissen möchten, wohin das Budget innerhalb einer Sitzung tatsächlich fließt, behandelt wie Claude Code sein Kontextfenster nutzt diese Aufteilung.
Was Graft tatsächlich erstellt
Zwei Artefakte, beide in einem graft/-Verzeichnis im Repository-Stammverzeichnis.
Das erste Artefakt ist ein als verknüpfte Markdown-Dateien angelegter Knotengraph mit einer Datei pro Knoten. Jeder Knoten enthält eine Zusammenfassung in einfachem Englisch, einen „Crux“ mit den wichtigen Logikzeilen aus dem Quelltext, die exakten Quelldateien mit einem Content-Hash, typisierte Wikilinks zu anderen Knoten (depends_on, part_of, uses, implements) sowie einen Notizabschnitt. Dieser bleibt bei der erneuten Generierung erhalten, damit Sie Kontext dokumentieren können, den ein Parser nicht ableiten kann.
Das zweite Artefakt ist graft/.graph/wiring.json, der strukturelle Graph pro Symbol, den tree-sitter extrahiert: Definitionen, Referenzen und die Aufrufkanten zwischen ihnen.
Diese Aufteilung ist wichtig, weil nur eine Hälfte ein Modell benötigt. graft build basiert vollständig auf tree-sitter und ruft nie ein LLM (large language model) auf. Dadurch ist es deterministisch und verursacht keine Kosten. graft build --deep ergänzt die schriftlichen Zusammenfassungen und die Cruxes pro Symbol. Dafür werden kostenpflichtige Modellaufrufe benötigt.
Die Sprachunterstützung ist abgestuft. Die Stufe gibt an, wie weit Sie einem Call Graph vertrauen können. TypeScript, JavaScript, Python, Go und Java erhalten eine bereichsbezogene, dateiübergreifende Auflösung. Rust, C, C++, C#, Ruby, PHP, Kotlin, Scala, Swift, Elixir, Solidity, OCaml, Zig und Dart erhalten Symbole sowie generische Aufrufkanten. Das bedeutet, dass eine Kante auf einem Namensvergleich statt auf einer aufgelösten Referenz beruhen kann. Compilerqualität bei den Kanten ist mit --lsp und einem Language Server wie rust-analyzer oder gopls optional aktivierbar.
Graft installieren und die Version festlegen
Graft benötigt Node.js 20 oder neuer und steht unter der MIT-Lizenz. Im August 2026 ist 0.10.1 die aktuelle Version. Die erste veröffentlichte Version 0.1.0 stammt aus dem Juli 2026. Behandeln Sie die Software als noch jung.
npm install -g @nanonets/graft@0.10.1
npm ls -g @nanonets/graftnpm ls -g sollte @nanonets/graft@0.10.1 ausgeben. Legen Sie diese Version bewusst fest. Ein unversioniertes npm install -g @nanonets/graft löst beim Ausführen das Tag latest auf. Bei einem Projekt, das mehrere Minor-Releases pro Monat veröffentlicht, verwenden Sie dadurch am Dienstag ein anderes Tool als Ihre Kollegin oder Ihr Kollege am Montag. Eine festgelegte Version hält CLI-Flags und Graphformat für alle gleich. Sie aktualisieren erst, wenn Sie sich dafür entscheiden.
Binden Sie es anschließend in ein Repository ein, das Sie verwalten:
cd /path/to/your/repo
graft init --dry-run
graft initgraft init fragt, welche Ihrer Coding-Agents eingebunden werden sollen, und erstellt anschließend den Graphen. Führen Sie zuerst --dry-run aus und lesen Sie die Liste der Dateien, die das Tool ändern möchte. Einige dieser Dateien liegen außerhalb des Repositorys. graft init ist idempotent und überschreibt keine vorhandenen Konfigurationen. Sie können den Befehl daher gefahrlos ein zweites Mal ausführen.
Im August 2026 unterstützt die Einbindung Claude Code, Cursor, Codex, GitHub Copilot, Google Gemini, Kiro, Windsurf und AdaL. Claude Code erhält die umfassendste Integration: einen MCP-Server-Eintrag, eine Statuszeile mit Graphgröße und Aktualität, Hooks nach Änderungen zum erneuten Erstellen des Graphen sowie eine Skill-Datei unter .claude/. Die übrigen Agents erhalten eine Anweisungs- oder Regeldatei, die dem Agent mitteilt, dass die Tools vorhanden sind. „Unterstützt“ bedeutet daher, dass Graft die Einbindung schreibt. Ein Agent, der seine eigene Regeldatei ignoriert, ignoriert auch die Karte. Das ist der übliche Grund, warum Agents die von Ihnen verfassten Anweisungen ignorieren. Das gilt hier genauso wie an anderer Stelle.
Was in Ihr Repository gelangt und was aus git herausbleibt
Nach graft init erwarten Sie Folgendes:
graft/: der Markdown-Knotengraph undgraft/.graph/wiring.json. Wird für Sie zu.gitignorehinzugefügt..mcp.json: registriert den graft-MCP-Server, damit Claude Code ihn startet..claude/settings.json: wird an Ort und Stelle zusammengeführt und ergänzt die Statuszeile sowie die Post-Edit-Hooks.AGENTS.md,GEMINI.md,.github/copilot-instructions.md,.cursor/rules/graft.mdc,.kiro/steering/graft.md,.windsurf/rules/graft.mdund.adal/skills/graft/SKILL.md: durch Marker begrenzte Abschnitte, die an die Dateien angehängt werden, die den von Ihnen ausgewählten Agents entsprechen.~/.codex/config.toml,~/.codex/hooks.jsonund~/.codex/hooks/graft/graft-hooks.cjs: gelten systemweit und werden nur geschrieben, wenn Sie Codex auswählen.graft init --no-globalüberspringt diese Dateien, undgraft init --no-hooksüberspringt den Hook-Shim selbstständig.
Der Graph ist ein Cache wie node_modules. Übergeben Sie ihn nicht an git. Er wird innerhalb weniger Sekunden aus dem Code neu erzeugt, ändert sich bei nahezu jeder Bearbeitung, und durch das Committen würde aus einer Korrektur in einer Zeile ein Diff mit mehreren hundert Dateien, den kein Reviewer lesen wird. Übergeben Sie stattdessen die Verdrahtung an git, darunter AGENTS.md und .mcp.json. Ein Teammitglied klont das Repository, führt graft build aus und erhält seinen eigenen lokalen Graphen.
Prüfen Sie vor Ihrem ersten Commit, ob die Ignore-Regel übernommen wurde:
grep -n graft .gitignore
git status --shortgrep sollte eine Zeile mit graft/ ausgeben, und git status --short sollte unter graft/ nichts auflisten. Wenn in dieser Ausgabe Dateien unter graft/ erscheinen, fehlt der Ignore-Eintrag oder er wird an anderer Stelle überschrieben. Beheben Sie das vor dem Commit, denn git verfolgt eine Datei weiterhin, sobald sie hinzugefügt wurde, und eine spätere Bearbeitung mit .gitignore hebt ihre Verfolgung nicht auf.
Wenn Sie den MCP-Server lieber manuell registrieren oder ihn auf dieselbe installierte Version festlegen möchten, ist der Eintrag klein:
{
"mcpServers": {
"graft": {
"command": "npx",
"args": ["-y", "@nanonets/graft@0.10.1", "mcp"]
}
}
}Die Retrieval-Tools, die Ihr Agent anstelle von grep aufruft
Graft stellt sechs Tools über MCP bereit. graft_find_code gibt für eine Aufgabenbeschreibung nach Rang sortierte Knoten mit Datei und Zeile zurück. graft_file_api gibt jede Signatur in einer Datei ohne Funktionskörper zurück. graft_trace_calls verfolgt Aufrufer oder aufgerufene Funktionen über mehrere Ebenen. graft_find_all gibt Treffer für reguläre Ausdrücke nach Symbol gruppiert zurück. graft_repo_map liefert einen ersten Überblick über ein unbekanntes Repository. graft_check_freshness meldet, ob der Graph noch mit dem Code übereinstimmt.
Für jedes Tool gibt es auch ein CLI-Gegenstück. Damit prüfen Sie, welche Informationen Ihr Agent tatsächlich erhält:
graft map .
graft ask "where do we validate the refresh token"
graft skeleton src/auth/session.ts
graft callers validateRefreshToken
graft callers validateRefreshToken --direction out
graft grep "refresh_token" --jsongraft ask sollte nach Rang sortierte Knoten mit file:line-Referenzen ausgeben, nicht den Dateiinhalt. Das ist der gesamte Mechanismus: Der Agent erhält einen Verweis und öffnet eine Datei, statt zehn Dateien zu lesen, um die richtige zu finden. graft viz öffnet unter localhost eine interaktive Ansicht, wenn Sie den Graphen selbst untersuchen möchten. Wenn graft ask auf eine Frage, die Sie in dreißig Sekunden beantworten könnten, nichts Brauchbares zurückgibt, ist der Graph veraltet oder Ihre Sprache gehört zur breiten Kategorie. Dann hilft die Abbildung auch Ihrem Agenten nicht.
Eine Auswirkung wird leicht übersehen. Für die gesamte Sitzung werden sechs Tooldefinitionen in den System-Prompt jeder Anfrage eingefügt. Diese Kosten fallen unabhängig davon an, ob der Agent die Abbildung verwendet. Bei einem Repository, das klein genug für den Context ist, kann dieser feste Aufwand größer sein als die eingesparte Erkundung.
Was passiert mit dem Graphen, wenn sich der Code ändert
Die strukturelle Aktualisierung ist schnell und erfolgt automatisch. Graft liest Ihren Arbeitsbaum statt git, daher sind eine nicht committete Änderung und eine bereits gestagte Änderung für Graft gleichermaßen sichtbar. Eine Abfrage analysiert nur die Dateien erneut, deren stat sich geändert hat. Laut Projektdokumentation verursacht das ungefähr 3 ms Overhead. Eine Neuerstellung am Ende eines Durchlaufs betrifft nur Dateien, in denen sich Code verschoben hat. Setzen Sie GRAFT_NO_REFRESH=1 oder übergeben Sie --no-refresh, um Antworten aus dem auf der Festplatte gespeicherten Graphen zu erhalten, ohne eine erneute Analyse durchzuführen. Übergeben Sie --no-reuse, um eine vollständige erneute Analyse zu erzwingen. Das ist nach einem Upgrade von Graft erforderlich.
Die von dem Modell erstellte Hälfte verhält sich anders. Dort treten Fehler unbemerkt auf. Zusammenfassungen und Kernaussagen werden zwischengespeichert. Jeder Knoten speichert einen Inhaltshash seiner Quellen. Wenn sich eine Quelldatei ändert, wird der Knoten als veraltet markiert und nicht mehr als aktuell dargestellt. Diese Markierung hilft nur, wenn etwas darauf reagiert. Aktualisieren Sie mit graft build --deep. Dabei werden erneut Modell-Token verbraucht.
Machen Sie veraltete Einträge sichtbar:
graft check .
echo $?Der Exit-Status 0 bedeutet, dass der Graph mit dem Code übereinstimmt. Der Exit-Status 1 bedeutet, dass eine Abweichung vorliegt. Führen Sie den Befehl in einem pre-push-Hook oder für den Branch in CI aus. So kann eine sechs Monate alte Karte nicht selbstsicher Fragen zu Code beantworten, der im März neu geschrieben wurde.
Lesen Sie die veröffentlichten Benchmark-Zahlen sorgfältig
Grafts zentrale Aussage lautet: „bis zu 4-mal günstiger und 3-mal schneller, bei gleichbleibender oder nicht beeinträchtigter Korrektheit“. Diese Angaben stammen aus den eigenen Benchmarks des Projekts, die in dessen README veröffentlicht sind. Hier sind die beiden vollständig berichteten Durchläufe.
The data behind this chart
[
{
"label": "Controlled sweep",
"run_count": 162,
"token_saving_pct": 42,
"tool_call_saving_pct": 46,
"correctness_pct": 93,
"baseline_correctness_pct": 93
},
{
"label": "SWE-bench Verified",
"run_count": 50,
"token_saving_pct": 23,
"tool_call_saving_pct": 25,
"correctness_pct": 66,
"baseline_correctness_pct": 54
}
]Der kontrollierte Durchlauf umfasst 162 Durchläufe über zwei Repositories, darunter Graft selbst, mit drei Tests pro Aufgabe. Dabei werden 42% weniger Tokens und 46% weniger Tool-Aufrufe angegeben. Der SWE-bench-Verified-Durchlauf umfasst 50 Instanzen mit demselben Modell in beiden Vergleichsgruppen und weist eine geringere Einsparung aus: 23% der Tokens und 25% der Tool-Aufrufe. In einem dritten Durchlauf wurden fünf zusammengeführte Pull Requests von PocketBase reproduziert. Die Kosten betrugen 11.02 US-Dollar gegenüber 13.91 US-Dollar für die Baseline.
Betrachten Sie alle diese Angaben als Hersteller-Benchmark. Zwei Punkte schränken die Aussagekraft ein. Der kontrollierte Durchlauf umfasst das eigene Repository von Graft, also die Codebasis, auf die die Autoren ihr System abgestimmt haben. SWE-bench Verified ist ein öffentliches Dataset mit Issues aus bekannten Open-Source-Python-Projekten. Öffentliche Datasets werden von Tools für gewöhnlich optimiert, unabhängig davon, ob dies beabsichtigt ist. Keine dieser Auswertungen ist eine Aussage über Ihr privates Monorepo. Dieses hat eigene Namenskonventionen und eigenen ungenutzten Code.
Die Korrektheit verdient eine gesonderte Betrachtung. Im kontrollierten Durchlauf änderte sie sich nicht: 93% mit der Map gegenüber 93% ohne die Map. Der Anstieg auf 66% gegenüber 54% tritt ausschließlich bei SWE-bench Verified auf. Ein Tool, das Ihre Tokenkosten senkt und die Qualität unverändert lässt, ist weiterhin eine gute Wahl. Übertragen Sie das Korrektheitsergebnis von SWE-bench jedoch nicht auf das Token-Ergebnis des kontrollierten Durchlaufs und geben Sie beides nicht als eine gemeinsame Aussage aus.
Messen Sie Ihre eigene Token-Differenz, bevor Sie irgendetwas davon glauben
Die einzige relevante Zahl stammt aus Ihrem Repository. Diese Methode dauert einen Nachmittag.
Wählen Sie eine Aufgabe, die Sie exakt wiederholen können. Eine Frage ist besser als eine Änderung, weil eine Änderung das Repository verändert und der zweite Durchlauf dann nicht mehr dasselbe Experiment ist. „Welches Modul erzwingt die Ratenbegrenzung für die Login-Route?“ hat die richtige Form.
Aktivieren Sie die Telemetrie und senden Sie sie an Ihr eigenes Terminal:
export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=console
claudeDer Konsolenexporter gibt die Metrikdatensätze aus, sobald sie erfasst werden. Relevant ist claude_code.token.usage. Dieses Feld enthält ein Attribut type mit dem Wert input, output, cacheRead oder cacheCreation. Die Orientierung wird in input und cacheRead erfasst, weil dort die Dateiinhalte abgelegt werden. Addieren Sie diese beiden Werte.
Führen Sie die Aufgabe dreimal in jeweils einer neuen Sitzung aus, wobei die Map eingebunden ist. Entfernen Sie anschließend den Graft-Eintrag aus .mcp.json und führen Sie die Aufgabe noch dreimal aus. Vergleichen Sie die Mediane statt einzelner Durchläufe, weil Agent-Durchläufe stark schwanken und ein ungünstiger Durchlauf das Gegenteil der Wahrheit nahelegen kann. Erfassen Sie außerdem die Anzahl der Tool-Aufrufe: Tool-Aufrufe sind der Mechanismus und Tokens sind der Effekt. Eine Token-Einsparung ohne weniger Tool-Aufrufe bedeutet, dass sich etwas anderes verändert hat.
Ziehen Sie anschließend die Kosten ab, die der Benchmark nicht anzeigt. graft build --deep verbraucht bei jeder vollständigen Aktualisierung Model-Tokens. Die sechs Tool-Schemas werden bei jeder Anfrage mitgesendet. Wenn Ihre Agents auf einem gemieteten Server laufen, macht eine harte Obergrenze für Agent-Ausgaben daraus statt einer Überraschung ein Budget. Was die Telemetrie eines Coding-Agents tatsächlich meldet beschreibt außerdem, welche Daten den Rechner verlassen, sobald Sie den Exporter aktivieren.
Wo hilft eine Codebasis-Karte nicht mehr weiter?
- Das Repository passt bereits in den Kontext. Ein einzelner kleiner Dienst benötigt keine Karte. Außerdem bezahlen Sie bei jeder Anfrage weiterhin für sechs Werkzeugschemas. Wenn Ihr Agent heute jede Datei mit ein oder zwei Tool-Aufrufen findet, verzichten Sie darauf.
- Ihre Sprache gehört zur allgemeinen Kategorie. Allgemeine Aufrufkanten können dazu führen, dass
graft callerseinen Aufrufer übersieht oder wegen einer Namenskollision einen falschen Aufrufer ermittelt. Prüfen Sie das mitgraft grep, bevor Sie die Auswirkungen einer Änderung bewerten. - Der Graph ist veraltet, ohne dass es jemand bemerkt hat.
graft checkwird bei Abweichungen mit Exit-Code 1 beendet. Das ist nur nützlich, wenn der Befehl ausgeführt wird. Verwenden Sie dafür einen Hook oder einen CI-Schritt, nicht bloß eine Gewohnheit. - Das Monorepo benötigt eine Eingrenzung. Ein einzelnes Git-Monorepo wird anhand einer Workspace-Datei,
go.mod,pyproject.tomloderCargo.tomlautomatisch aufgeteilt.graft ask "..." --in services/billing/begrenzt eine Abfrage auf ein Teilprojekt. Für die Karte gilt derselbe Ansatz wie bei verschachtelten AGENTS.md-Dateien pro Paket. - Der Agent ignoriert die Verknüpfungen. Beobachten Sie die Tool-Aufrufe in einer echten Sitzung, bevor Sie zu dem Schluss kommen, dass die Karte verwendet wird. Wenn ein Agent weiterhin
grepausführt, zeigt das, dass er die Regeldatei nie gelesen hat.
FAQ
Soll ich den Ordner graft/ in git committen?
Nein. graft build fügt graft/ automatisch zu Ihrem .gitignore hinzu, weil der Graph wie node_modules ein regenerierbarer Cache ist. Er ändert sich bei nahezu jeder Bearbeitung. Dadurch gehen echte Diffs zwischen Hunderten generierter Dateien unter. Committen Sie die Konfiguration, die den Agents die Existenz der Karte mitteilt, darunter AGENTS.md und .mcp.json. Lassen Sie jedes Teammitglied anschließend lokal graft build ausführen. Prüfen Sie dies mit grep -n graft .gitignore und git status --short vor Ihrem ersten Commit. git verfolgt eine Datei weiter, sobald sie hinzugefügt wurde. Eine nachträgliche Bearbeitung von .gitignore hebt diese Verfolgung nicht auf.
Kostet der Betrieb von Graft Geld?
Der strukturelle Teil nicht. graft build, graft ask, graft check und die sechs MCP-Retrieval-Tools verwenden tree-sitter-Operationen und rufen kein Modell auf. graft build --deep ist der kostenpflichtige Teil. Es erstellt die Zusammenfassungen in einfachem Englisch und die Cruxes für die einzelnen Symbole über ein LLM. Konfiguriert wird es mit GRAFT_PROVIDER, GRAFT_API_KEY und GRAFT_MODEL sowie mit GRAFT_BASE_URL für jeden OpenAI-kompatiblen Endpunkt. Sie können Graft nur mit der Struktur ausführen und dabei für den Graphen selbst kein Token verbrauchen.
Wie viel spart eine Codebase-Karte tatsächlich in meinem Repository?
Das lässt sich nur durch Messungen feststellen. Das Projekt berichtet 42% weniger Tokens bei einem eigenen Durchlauf mit 162 Durchläufen und 23% bei SWE-bench Verified. Beide Werte basieren auf einer Baseline ohne Karte. Es handelt sich um Anbieter-Benchmarks. Einer davon wurde teilweise im eigenen Repository von Graft ausgeführt. Keiner beschreibt Ihren privaten Code. Führen Sie eine wiederholbare Frage dreimal mit Karte und dreimal ohne Karte aus. Setzen Sie dabei CLAUDE_CODE_ENABLE_TELEMETRY=1 und OTEL_METRICS_EXPORTER=console. Vergleichen Sie anschließend den Median von claude_code.token.usage für die Typen input und cacheRead.
Was passiert bei einem Refactoring mit dem Graphen?
Die Struktur wird automatisch erneut geparst. Graft wertet den Arbeitsbaum aus und parst nur geänderte Dateien erneut. Daher wird eine Umbenennung bei der nächsten Abfrage erkannt. Der zusätzliche Aufwand beträgt ungefähr 3 ms. Nicht committete Änderungen werden ebenfalls erkannt, weil Graft Dateien statt der git-Historie liest. Veraltet werden die vom Modell geschriebenen Zusammenfassungen. Jeder Knoten speichert einen Content-Hash seiner Quellen. Eine geänderte Quelle markiert den Knoten als veraltet, statt ihn neu zu schreiben. Führen Sie graft check . aus, um die Abweichungen anzuzeigen. Verwenden Sie anschließend graft build --deep, um den geschriebenen Teil zu aktualisieren.
Welche Coding-Agents können Graft heute verwenden?
Stand August 2026 bindet graft init Claude Code, Cursor, Codex, GitHub Copilot, Google Gemini, Kiro, Windsurf und AdaL ein. Claude Code erhält die umfangreichste Integration: einen MCP-Server-Eintrag in .mcp.json, eine Statuszeile, Hooks nach Bearbeitungen und eine Skill-Datei unter .claude/. Codex erhält einen Abschnitt AGENTS.md sowie systemweite Einträge unter ~/.codex/. Diese überspringt graft init --no-global. Die übrigen Agents erhalten eine Rules- oder Steering-Datei. Jeder andere MCP-Client kann den Server direkt verwenden, indem er den Befehl npx -y @nanonets/graft@0.10.1 mcp registriert.