Cassandra
Leg mislukte toolaanroepen vast en signaleer ongewijzigde herhalingen na compactie, in nieuwe sessies en in subagents.
Mislukte calls kunnen na compactie, tussen sessies of in subagents uit de context verdwijnen. Opgeslagen records maken eerdere fouten beschikbaar bij herhaling.
- TypeScript
- Bun
- Claude Code
- hooks
GitHub (opent in een nieuw tabblad)README (opent in een nieuw tabblad)Changelog (opent in een nieuw tabblad)
Op deze paginaLeg fouten vast en herken herhalingen
Leg fouten vast en herken herhalingen
Cassandra is een Claude Code-plugin die hooks gebruikt tijdens een toolaanroep. Mislukte Bash- en mcp__*-calls worden vastgelegd. Wordt dezelfde call opnieuw uitgevoerd zonder een vastgestelde projectwijziging, dan krijgt het model één regel met de eerdere poging en het resultaat.
De herkenning gebruikt een vingerafdruk van tool_name en tool_input, beide gestructureerde JSON. Bij Bash wordt witruimte aan het begin en einde verwijderd en worden opeenvolgende witruimtetekens samengevoegd. Paden worden niet genormaliseerd, flags niet herschikt en afsluitende pipes niet verwijderd, omdat die bewerkingen verschillende commando's kunnen samenvoegen.
Edit en Write zijn uitgesloten. Ook functioneel gelijke wijzigingen herhalen zich niet byte voor byte, waardoor een index van deze payloads geen overeenkomstige records zou opleveren.
Gebruik bij contextovergangen
Binnen een intacte context staat de mislukte call meestal nog in de transcriptie en voegt een waarschuwing weinig toe. Cassandra is bedoeld voor drie situaties waarin die context ontbreekt:
- Na compactie kan een mislukte call uit de context verdwijnen, terwijl het record blijft bestaan.
- Een nieuwe sessie bevat de mislukte pogingen uit de vorige sessie niet.
- De context van een subagent bevat de eerdere pogingen van de hoofdagent niet.
Buiten deze overgangen worden waarschuwingen onderdrukt.
Snel starten
claude plugin marketplace add https://github.com/AraneaDev/aranea-marketplace
claude plugin install cassandra@araneaHooks worden bij het begin van een sessie gebonden. De hook-binary staat niet in de repository: de eerste sessie na installatie bouwt deze op de achtergrond en toont een melding. Vanaf de tweede sessie is de plugin actief.
De binary is ongeveer 79 MB doordat bun build --compile de Bun-runtime insluit. Daarom wordt de binary lokaal gebouwd en niet meegeleverd. Zonder Bun op je PATH blijft de plugin inactief en verschijnt bij het begin van de sessie één melding.
Controles vóór een waarschuwing
Bij PreToolUse berekent de plugin een vingerafdruk van de call en zoekt de hash op. Meestal is er geen overeenkomst en volgt geen uitvoer. Een overeenkomst start de versheidscontrole. Is de werkmap sinds de mislukking veranderd, dan volgt geen waarschuwing. Zonder vastgestelde wijziging krijgt het model de waarschuwing.
In een git-repository gebruikt de controle een hash van HEAD en git status --porcelain. Buiten git worden de wijzigingstijden in de werkmap met een begrensde scan gecontroleerd. Als de uitkomst onzeker is, volgt geen waarschuwing om onterechte meldingen te beperken.
De controle heeft twee beperkingen. Buiten git kan een bestand met andere inhoud van dezelfde lengte en een teruggezette wijzigingstijd onopgemerkt blijven. Ook wijzigingen buiten het project, globaal geïnstalleerde packages en gewijzigde omgevingsvariabelen laten de projectstempel ongewijzigd. Daarom benoemt de waarschuwing de reikwijdte: "er is niets veranderd in deze repository".
Overhead en waarschuwingsstatistieken
De gemeten overhead is ongeveer 12 ms per hookaanroep op een rustige machine en 17 ms onder belasting, bij een ontwerpbudget van 20 ms. Een geslaagde toolaanroep voert zowel PreToolUse als PostToolUse uit en start de binary dus twee keer, voor ongeveer 25 ms in totaal. Per hookaanroep past dit binnen het budget; per geslaagde toolaanroep wordt het budget overschreden.
PostToolUse verwerkt de openstaande markering, zodat de plugin kan registreren dat een call na een waarschuwing toch slaagde. Zonder deze hook kan cassandra stats het aandeel onterechte waarschuwingen niet berekenen. Dat aandeel is nodig om de versheidscontrole te beoordelen.
cassandra stats toont het aandeel onterechte waarschuwingen en het aandeel waarschuwingen zonder contextovergang. Het eerste wijst op mogelijke verbeteringen aan de controle. Het tweede toont hoe vaak meldingen informatie herhalen die al in de context staat. Een hoog aandeel is een reden om de plugin te verwijderen in plaats van de controle bij te stellen.
Gegevensopslag en beperkingen
Cassandra blokkeert geen calls en wijst geen calls af of herschrijft deze. De enige toevoeging is één regel additionalContext. De plugin leest je prompts en de tekst van het model niet.
Het opgeslagen record bevat een fragment van 240 tekens uit de foutmelding of weigeringsreden van de tool, zodat de waarschuwing de eerdere fout kan toelichten. Dit is commando-uitvoer, geen tekst van de gebruiker of het model, en wordt als onvertrouwd behandeld. Stuurtekens worden vóór opslag verwijderd. In de waarschuwing staat het fragment tussen backticks en is het als tool-uitvoer gemarkeerd, niet als instructie.
Alle gegevens blijven op je machine, binnen de datamap van de plugin. Er is geen netwerkverkeer, telemetrie of API key.