Je beste context zit in een sessie die je niet terugvindt
6m leestijd

Je beste context zit in een sessie die je niet terugvindt

Elke agent-CLI bewaart een volledig transcript van alles wat je ooit gevraagd hebt, en ziet alleen zichzelf. Zo doorzoek je je agent-sessies over al je clients heen, en dit is het enige wat de tool weigert te beloven.

Scroll ver genoeg terug en je vindt hem. De sessie waarin je precies dit hebt uitgezocht. Drie weken geleden, in een andere map, waarschijnlijk zelfs in een andere client.

Je weet nog dat je het opgelost hebt. Je weet er niet genoeg meer van om erop te kunnen zoeken.

Dus leg je het opnieuw uit aan een nieuwe agent, en betaal je twee keer voor hetzelfde denkwerk.

Wat er werkelijk op je schijf staat

Elke agent-CLI die je gebruikt bewaart een volledig transcript van alles wat je er ooit aan gevraagd hebt. Het gesprek zelf, elke tool-aanroep, elk bestand dat het aanraakte, weggeschreven op het moment dat het gebeurde.

Op deze machine staan er alleen van Claude Code al 833. 729 MB, verdeeld over 50 mappen, één voor elk project waarin ik hem ooit gedraaid heb. Tel de andere clients erbij die hier geïnstalleerd staan en het zijn 264 sessies over zes tools.

Dat is de grootste stapel context die ik bezit, en de enige waar niets een index op legt.

De picker houdt op waar de client ophoudt

Claude Code kan zijn eigen historie doorzoeken. Op 2.1.241 neemt claude --resume een optionele zoekterm aan en opent een picker, en dat werkt prima.

Hij ziet Claude Code-sessies.

Deze site bouw ik samen met Claude Code en agy. De 99 sessies die agy op deze machine heeft, bestaan niet voor die picker, en de 102 Claude Code-sessies bestaan niet voor agy. Elke client houdt zijn eigen store bij, in zijn eigen formaat, onder zijn eigen map, en geen van hen heeft ooit van de andere gehoord.

De lock-in zat nooit in het model. Van model wissel je tussen de middag door. Drie maanden context gaat niet mee.

In geheugen ging alle moeite zitten

Het antwoord van de industrie hierop was geheugen. CLAUDE.md, memory-tools, notities die je bijhoudt zodat de volgende sessie met iets in handen begint.

Geheugen is iets wat je onderhoudt. Het legt vast wat je besloot op het moment dat je het besloot, en daarna raakt het achterop bij code die blijft bewegen.

Met transcripties zit het precies omgekeerd. Niemand houdt ze bij, en juist daarom zijn ze compleet. In de sessie waarin een beslissing echt viel staat de redenering nog, plus de aanpak die je eerst probeerde en die omviel, en het bestand dat je om 23:40 aanraakte en maandag vergeten was.

Een geheugenbestand bewaart de conclusie. De sessie bewaarde het argument.

Eén lopende sessie schoonhouden is een vak apart. Dit is het probleem dat daarna begint: wat er gebeurt met de sessies die je al afgesloten hebt.

Dus bouwde ik het ding dat ze leest

Nekyia legt een index op de stores die er toch al staan en doorzoekt ze allemaal tegelijk.

Het gaat in twee fases, want 729 MB opnieuw inlezen bij elke aanroep zou een probleem op zich zijn. De eerste fase leest een goedkope vingerafdruk per sessie. De tweede verwerkt alleen wat veranderd is, en schrijft metadata en zoekfacetten atomair naar SQLite. Zoeken gaat via FTS5. Titels tellen voor acht, mijn eigen prompts voor vier, het proza van het model voor één, want wat ik vroeg zegt meer over een sessie dan wat eruit kwam. Daarna mengt relevantie met een halfwaardetijd van veertien dagen, want de sessie van dinsdag wint meestal van een even relevante uit maart.

De index over die 264 sessies is 33 MB. Alles draait lokaal, tegen bestanden die je al hebt.

Hervatten, of een briefing die toegeeft dat het een briefing is

Dit is wat mij betreft het deel waar iets te bespreken valt.

Drie van die zes zitten in de resume-tier: Claude Code, Codex en Antigravity, waar het exacte hervat-commando is nagelopen in plaats van aangenomen. De andere drie niet, en elk om zijn eigen reden. opencode en Codebuff namen echte lokale ID's aan en startten iets op, en uit het resultaat bleek nergens dat ze op de context waren aangehaakt waar ik om vroeg. Kilo gebruikt hetzelfde storeformaat als opencode, maar zijn executable stond niet geïnstalleerd toen ik de commando's naliep, dus ook die mag ik niet hervatbaar noemen.

Dus zegt Nekyia niet dat hij ze hervat heeft. Hij bouwt een briefing uit de geïndexeerde prompts, de aangeraakte bestanden en de branch, start daarmee een nieuwe sessie, en zet in de eerste regel dat dit een briefing is en geen teruggehaalde staat.

Die eerlijkheid kost me een regel op de featurelijst, en die betaal ik liever. Een tool die belooft staat te herstellen die hij niet herstellen kan, maakt dezelfde fout als een agent die zelfverzekerd de verkeerde functiesignatuur opgeeft. Het ziet er goed uit tot het moment dat je erop vertrouwt.

Wat het bewust niet doet

Tool-output komt niet in de index. Commando-resultaten en bestandsdumps zijn groot en rommelig, en het is de plek waar het vaakst iets privés tussen zit. Het is ook niet hoe iemand zich een sessie herinnert. Je herinnert je wat je vroeg.

Er is geen netwerkdienst, geen API-sleutel en geen telemetrie. De briefing is deterministisch, dus er komt geen modelaanroep aan te pas en hij kost geen tokens.

Wat de index wél bewaart is een kopie van tekst die al op je schijf stond, en die kopie overleeft de transcriptie waar hij vandaan komt. Daarom verwijdert forget één sessie en elk doorzoekbaar facet ervan, ruimt prune --missing de sessies op waarvan het bronbestand verdwenen is, en neemt exclude een glob aan die een map voorgoed buiten de index houdt. Het belooft geen weggelakte secrets en geen versleutelde index, en dat staat met zoveel woorden in de README.

Het is pre-release, v0.0.5, en staat nog niet op npm. Je installeert het vanuit de repository, en de eerste run laat zien wat hij van plan is te lezen voordat hij iets opent.

De data stond er al die tijd

Vijf dagen geleden schreef ik over een plugin die een klok in een Claude Code-sessie zet, omdat het transcript geen tijd bijhoudt en noch jij noch het model kan zeggen hoe lang iets duurde. Dit is hetzelfde soort probleem, een verdieping hoger. De informatie stond er de hele tijd. Er keek alleen niets naar.

De context die je nodig hebt voor waar je nu aan begint, zit vaker dan prettig is in een sessie die je in juli had.

Nekyia staat op GitHub, is MIT en heeft Bun nodig.