Nekyia
Het ritueel om de doden te ondervragen, gericht op de sessie die je kwijt bent.
Nekyia (Νέκυια) is het ritueel uit boek XI van de Odyssee. Odysseus graaft een kuil aan de rand van de wereld en de doden komen omhoog om ondervraagd te worden. Hij is er niet om ze te betreuren: Teiresias weet de weg naar huis en hij niet.
Wat het doet
De context die je nodig hebt zit meestal in een sessie die je al hebt gehad. Je hebt het probleem drie weken geleden uitgezocht, in een andere map, misschien in een andere client, en om het terug te vinden moet je er genoeg van weten om erop te kunnen zoeken. Dus leg je het uit aan een nieuwe agent en betaal je twee keer voor hetzelfde denkwerk.
Nekyia doorzoekt de transcripties die je agent-CLI's toch al op schijf bewaren, rangschikt wat eruit komt en start de client. Is het hervat-commando van die client getest, dan komt hij op ID terug in precies die sessie. Zo niet, dan begint hij een nieuwe sessie met een briefing uit de geïndexeerde prompts, de aangeraakte bestanden en de branch, en zegt er onomwonden bij dat het een briefing is en geen teruggehaalde staat.
Dat onderscheid is het hele ontwerp. Een tool die beweert alles te hervatten en stilletjes iets nieuws begint, is slechter dan een tool die minder doet en je vertelt welke van de twee het werd.
Snel starten
Nekyia heeft Bun 1.1 of nieuwer nodig. Het is pre-release en staat nog niet op npm, dus je installeert vanuit de repository. Beide namen werken: nekyia en het kortere nek.
bun install -g github:AraneaDev/Nekyia
nekyia indexDe eerste run laat zien wat hij van plan is te lezen en wacht op je toestemming voordat hij een transcriptie-store opent of een index aanmaakt. Met --yes sla je die vraag over, zodra je die grens een keer bekeken hebt.
Voorbeelden
Echt gedraaid op deze machine, ingekort met '…'.
Wat hij vond:
$ nekyia doctor
clients
agy 99 sessions (built-in)
claude 102 sessions (built-in)
codebuff 56 sessions (built-in) [partial]
codex 0 sessions (built-in)
kilo 1 sessions (built-in)
opencode 2 sessions (built-in)
index
264 sessions, 16 size-capped, 1 missing from disk
size-capped: codebuff:18843754-fafe-4461-bf1a-6b9b878dc4a8
…Zes clients, één index, en hij benoemt de sessies die hij niet in hun geheel kon meenemen in plaats van er stilletjes een afgekapte kopie van te indexeren. Drie van die zes hervatten op ID; de andere drie beginnen met een briefing, en bij doctor zie je welke van de twee het wordt voordat het uitmaakt.
Zoeken zonder de picker:
$ nekyia search reconnect race
$ nekyia search reconnect --json # machine-readable
$ nekyia last # newest session under this directory
$ nekyia show <uid> # the handover, as Markdown, before you send itZoeken blijft standaard binnen de huidige map. --all trekt dat open, --client <id> beperkt tot één client, en --file <path> vindt de sessies die een bestand hebben aangeraakt.
Mogelijkheden
De picker is de interactieve helft. Tikken filtert meteen mee en het stuk dat matcht licht op in elke titel, zodat de lijst antwoord geeft op elke toetsaanslag in plaats van alleen korter te worden. Met ctrl+o open je de sessie onder de cursor en krijgt die het hele scherm: wat je vroeg, wat eruit kwam, welke bestanden er verschoven. tab trekt het open naar alle mappen, en nog een keer drukken beperkt het tot het project van de regel waar je staat, dus je kunt overal beginnen en ergens specifieks uitkomen. Het aantal naast de zoekregel benoemt altijd wat er doorzocht wordt, en een zoekopdracht die niets oplevert zegt wat je kunt proberen in plaats van je op een leeg scherm achter te laten.
Alles wat de picker doet is ook een commando, met --json op de commando's waar scripten zin heeft.
Indexeren gaat in twee fases. De eerste leest begrensde metadata en een stabiele vingerafdruk per sessie; de tweede draait alleen voor wat veranderd is, en schrijft metadata en zoekfacetten atomair naar SQLite. Zoeken gaat via FTS5, dat titels, jouw prompts en delen van wat de assistent terugschreef verschillend weegt, en relevantie daarna mengt met een halfwaardetijd op recentheid. Fork-ketens vallen samen tot één regel.
Tool-output wordt niet geïndexeerd. 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 waar je een sessie op terugzoekt.
Configuratie
De index staat in ~/.local/share/nekyia/index.db en de configuratie in ~/.config/nekyia/config.json, die allebei XDG_DATA_HOME en XDG_CONFIG_HOME volgen.
Er is geen netwerkdienst, geen API-sleutel en geen telemetrie, en de briefing is deterministisch, dus er komt geen modelaanroep aan te pas. 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. Daar zijn drie commando's voor:
nekyia forget <uid> # one session, and every facet of it
nekyia prune --missing # sessions whose source files are gone
nekyia exclude '/work/private/**' # then: nekyia index --rebuildHet belooft niet dat secrets worden weggelakt, en de index is niet versleuteld, dus lees wat show, doctor en --json uitprinten voordat je er iets van in een openbaar issue plakt.
Een client die hij nog niet kent, kun je zelf beschrijven: gebruikersmanifesten staan in ~/.config/nekyia/clients/*.json, en nekyia doctor --sniff inspecteert waarschijnlijke transcriptie-stores en zet een concept klaar in plaats van naar een pad te gissen.