Benzi is een geavanceerde AI-coding agent die codebase-analyse benadert door eerst een 'resolved map' (een kaart van aanroepen, datastromen en referenties) te compileren. In tegenstelling tot traditionele agents die vertrouwen op context-dumps of embeddings, navigeert Benzi via een gestructureerde index.
Kernpunten uit het artikel:
- Technische werking: Benzi ondersteunt tien programmeertalen en maakt gebruik van drie 'truth tiers' (proven, candidate en observed edges) om de nauwkeurigheid van verbindingen in de code te bepalen. Een runtime tracer legt bovendien werkelijke argumentwaarden en returns vast.
- Architectuur: Het systeem werkt via een loop van compileren → traceren → bewerken → re-indexeren. Wijzigingen worden syntax-gecontroleerd, waarbij foutieve parses automatisch leiden tot een revert en de 'blast radius' (de impact op andere delen van de code) wordt gerapporteerd.
- Onderscheidend vermogen: Waar tools als Claude Code grep gebruiken en Cursor embeddings, indexeert Benzi de volledige opgeloste structuur. Dit maakt O(1) snelheid mogelijk voor functies zoals
trace_path en backflow.
- Verificatie: De agent schrijft contextbewuste reproductie-testcases die onder een echte call tracer draaien om wijzigingen te verifiëren zonder gebruik van mocks.
Benzi: De AI die code leest
Hoe het werkt
Specificaties:
- 10 Talen
- 3 Truth Tiers (waarheidsniveaus)
- 21 Bronbestanden
- Oneindige backends
Bevindingen uit zelfanalyse
Door de eigen compiler op de eigen repository te richten, zijn de volgende feiten naar boven gekomen—zonder gissingen of marketingpraat, enkel gebaseerd op wat de kaart aangaf:
01 — Resolutie: Drie niveaus van waarheid
- Proven edges: Verbindingen die met bewijs zijn vastgesteld.
- Candidate edges: Verbindingen waarbij de compiler weigert te gissen.
- Observed edges: Verbindingen gebaseerd op echte runtime-traces.
02 — Executie: Runtime tracer De tool koppelt elke aanroep tijdens de uitvoering (runtime), inclusief werkelijke argumentwaarden, returns en dispatch. Dit wordt over de statische kaart gelegd, zonder speculatie.
03 — Dekking: Taal-agnostisch Ondersteuning voor Python, JavaScript, TypeScript, Java, C#, C++, C, Go, Rust en Ruby. Er is één compiler en één kaart. Tree-sitter is de enige echte afhankelijkheid; al het andere zijn grammar-plugins.
04 — Flexibiliteit: Model-agnostisch Werkt met Anthropic, OpenAI of elke compatibele API. De intelligentie zit in de tools en de kaart, niet in het model.
05 — Continuïteit: Persistent geheugen Duurzame feiten per repository overleven restarts. Conventies en valkuilen die eenmaal zijn geleerd, hoeven niet bij elke sessie opnieuw te worden afgeleid.
06 — Full stack: Dual-engine voor code en markup Er is een aparte index voor HTML/CSS/DOM-JS voor cascade-resolutie en JS-grabs, inclusief frontend-elementen die zijn ingebed in Python-strings.
Waarin Benzi verschilt
Architectuur
Compiler + Agent Loop Een tree-sitter compiler produceert een 'resolved map'. Een agent loop navigeert hierin, voert bewerkingen uit, draait de code en indexeert opnieuw. Elke schrijfactie controleert de syntax en rapporteert de 'blast radius' (de reikwijdte van de impact).
Aanpak
Gecompileerde kaart in plaats van een context-dump Voordat er één vraag wordt beantwoord, parseert Benzi alle bestanden parallel, lost imports op, bouwt de klassenhiërarchie op en traceert elke identifier naar de definitie. Dit resulteert in een doorzoekbare index in plaats van een blok tekst.
Flow
Call flow + data flow in één join Wie roept wie aan en waar een waarde vandaan komt, wordt apart geïndexeerd en bij elke call-site samengevoegd. Hierdoor kan een foutieve waarde met één tool-aanroep worden teruggevoerd naar de oorsprong.
Tools
Gestructureerde ontdekking in plaats van grep Functies zoals skim, backflow, forwardflow, trace_path en profile hebben een O(1) snelheid binnen de resolved index. Daarnaast is er directe CLI-toegang om te draaien, testen en itereren.
Zoeken
Voorbij grep en embeddings Terwijl Claude Code zoekt met grep, Cursor met embeddings en Aider met tree-sitter signatures, indexeert Benzi de volledige opgeloste structuur: aanroepen, datastroom en scoped identifiers.
Veiligheid
Syntax-gated edits + blast radius Elke wijziging wordt gecontroleerd met de echte taal-parser. Een foutieve parse leidt tot een automatische revert. Elke succesvolle bewerking rapporteert het gewijzigde symbool, de aanroepers ervan en de houders.
Verificatie
Contextbewuste runtime testcases Benzi schrijft een gerichte reproductie (repro) voor de code die zojuist is gewijzigd, draait deze onder de echte call tracer en geeft de geobserveerde waarden terug—zonder gissingen of mock-harnesses. De testcase wordt gegenereerd vanuit de context, niet uit een prompt.
Iteratie
Shell-toegang + complete loop Echte commando's, testcases onder de tracer en volledige iteratie (compileren → traceren → bewerken → re-indexeren → herhalen). Het is geen one-shot prompt, maar een volwaardige agent loop.
Benzi: De AI die code leest
Hoe het werkt
Specificaties:
- 10 Talen
- 3 Truth Tiers (waarheidsniveaus)
- 21 Bronbestanden
- Oneindige backends
Bevindingen uit zelfanalyse
Door de eigen compiler op de eigen repository te richten, zijn de volgende feiten naar boven gekomen—zonder gissingen of marketingpraat, enkel gebaseerd op wat de kaart aangaf:
01 — Resolutie: Drie niveaus van waarheid
- Proven edges: Verbindingen die met bewijs zijn vastgesteld.
- Candidate edges: Verbindingen waarbij de compiler weigert te gissen.
- Observed edges: Verbindingen gebaseerd op echte runtime-traces.
02 — Executie: Runtime tracer De tool koppelt elke aanroep tijdens de uitvoering (runtime), inclusief werkelijke argumentwaarden, returns en dispatch. Dit wordt over de statische kaart gelegd, zonder speculatie.
03 — Dekking: Taal-agnostisch Ondersteuning voor Python, JavaScript, TypeScript, Java, C#, C++, C, Go, Rust en Ruby. Er is één compiler en één kaart. Tree-sitter is de enige echte afhankelijkheid; al het andere zijn grammar-plugins.
04 — Flexibiliteit: Model-agnostisch Werkt met Anthropic, OpenAI of elke compatibele API. De intelligentie zit in de tools en de kaart, niet in het model.
05 — Continuïteit: Persistent geheugen Duurzame feiten per repository overleven restarts. Conventies en valkuilen die eenmaal zijn geleerd, hoeven niet bij elke sessie opnieuw te worden afgeleid.
06 — Full stack: Dual-engine voor code en markup Er is een aparte index voor HTML/CSS/DOM-JS voor cascade-resolutie en JS-grabs, inclusief frontend-elementen die zijn ingebed in Python-strings.
Waarin Benzi verschilt
Architectuur
Compiler + Agent Loop Een tree-sitter compiler produceert een 'resolved map'. Een agent loop navigeert hierin, voert bewerkingen uit, draait de code en indexeert opnieuw. Elke schrijfactie controleert de syntax en rapporteert de 'blast radius' (de reikwijdte van de impact).
Aanpak
Gecompileerde kaart in plaats van een context-dump Voordat er één vraag wordt beantwoord, parseert Benzi alle bestanden parallel, lost imports op, bouwt de klassenhiërarchie op en traceert elke identifier naar de definitie. Dit resulteert in een doorzoekbare index in plaats van een blok tekst.
Flow
Call flow + data flow in één join Wie roept wie aan en waar een waarde vandaan komt, wordt apart geïndexeerd en bij elke call-site samengevoegd. Hierdoor kan een foutieve waarde met één tool-aanroep worden teruggevoerd naar de oorsprong.
Tools
Gestructureerde ontdekking in plaats van grep Functies zoals skim, backflow, forwardflow, trace_path en profile hebben een O(1) snelheid binnen de resolved index. Daarnaast is er directe CLI-toegang om te draaien, testen en itereren.
Zoeken
Voorbij grep en embeddings Terwijl Claude Code zoekt met grep, Cursor met embeddings en Aider met tree-sitter signatures, indexeert Benzi de volledige opgeloste structuur: aanroepen, datastroom en scoped identifiers.
Veiligheid
Syntax-gated edits + blast radius Elke wijziging wordt gecontroleerd met de echte taal-parser. Een foutieve parse leidt tot een automatische revert. Elke succesvolle bewerking rapporteert het gewijzigde symbool, de aanroepers ervan en de houders.
Verificatie
Contextbewuste runtime testcases Benzi schrijft een gerichte reproductie (repro) voor de code die zojuist is gewijzigd, draait deze onder de echte call tracer en geeft de geobserveerde waarden terug—zonder gissingen of mock-harnesses. De testcase wordt gegenereerd vanuit de context, niet uit een prompt.
Iteratie
Shell-toegang + complete loop Echte commando's, testcases onder de tracer en volledige iteratie (compileren → traceren → bewerken → re-indexeren → herhalen). Het is geen one-shot prompt, maar een volwaardige agent loop.