18 resultaten

op je machine

skills

Nekyia

Doorzoek lokale sessiegeschiedenis van meerdere agentclients en hervat een sessie of start met een briefing.

Nekyia (Νέκυια) is de naam van het ritueel in boek XI van de Odyssee, waarin Odysseus de doden ondervraagt.
Op deze paginaDoorzoek bestaande sessiegeschiedenis

nek starten, 22 sessies filteren tot één met "retry tenant" en de geselecteerde sessiegeschiedenis openen

Doorzoek bestaande sessiegeschiedenis ​

Een eerdere sessie kan de context bevatten die je nodig hebt, maar is na weken werk in verschillende mappen en clients soms lastig terug te vinden. Zonder die geschiedenis moet je het probleem mogelijk opnieuw beschrijven en betalen voor herhaalde modelverwerking.

Nekyia doorzoekt de transcripties die je agent-CLI's al op schijf bewaren, rangschikt resultaten en start de client. Bij clients met een getest hervatcommando wordt de geselecteerde sessie op ID hervat. Andere clients starten een nieuwe sessie met een briefing uit de geïndexeerde prompts, aangeraakte bestanden en de branch. De interface vermeldt expliciet dat dit een briefing is, geen herstelde sessiestaat. Berichten blijven volledig en genummerd, zodat een prompt van meerdere regels als één opdracht bewaard blijft.

Sessiekiezer met resultaten uit meerdere agent-CLI's en details van de geselecteerde sessie: map, branch, prompts en aangeraakte bestanden

Het verschil tussen een hervatte sessie en een nieuwe sessie met briefing is zichtbaar voordat je verdergaat.

Snel starten ​

Vereist Bun 1.1 of nieuwer. Zowel nekyia als het kortere nek werkt als commandonaam. Deze voorbeelden gebruiken nek.

bash
bun install -g nekyia
nek index

De eerste uitvoering toont de gegevensbronnen en vraagt toestemming voordat een transcriptie-opslag wordt geopend of een index wordt aangemaakt. Met --yes sla je die vraag over nadat je de reikwijdte hebt bekeken.

Sessiekiezer ​

De picker opent met resultaten voor het huidige project. Vanuit je home-map, de root van het bestandssysteem of een map zonder onderliggende geïndexeerde sessies opent de volledige index.

Typen filtert de resultaten direct en markeert de overeenkomende tekst in elke titel.

Zoekresultaten in de picker met gemarkeerde zoektermen in titels en de geselecteerde regel gemarkeerd in de kantlijn

tab breidt het zoekbereik uit naar alle mappen. Nogmaals drukken beperkt de resultaten tot het project van de geselecteerde regel. Het aantal naast de zoekregel benoemt het zoekbereik en bevat bij één project ook de projectnaam.

Picker beperkt tot één project, met de projectnaam naast het aantal sessies

Bij een leeg resultaat verschijnt een suggestie om de zoekopdracht aan te passen.

Leeg zoekresultaat met de melding "Nothing came up. Try fewer words."

ctrl+f wisselt alleen tussen clients die in de index voorkomen. ctrl+p kopieert de openingsprompt en ctrl+y het startcommando. Prompts van meerdere regels worden volledig gekopieerd.

Codebuff en Freebuff delen dezelfde chatopslag, dus elke chat verschijnt één keer. Als beide clients geïnstalleerd zijn, opent de eerste Enter op een gedeelde chat een clientkeuze. Daarna wissel je met ctrl+l. De regel vermeldt welke client Enter zal starten.

De statusregel toont de leeftijd van de index: groen bij een recente index, daarna geel en rood wanneer de index mogelijk niet meer overeenkomt met de bestanden op schijf. Zodra de index verouderd is, verschijnt ctrl+r tussen de sneltoetsen. Opnieuw indexeren sluit de picker, draait zichtbaar in de terminal en opent de picker opnieuw met bijgewerkte resultaten. Stel autoReindexAfterHours in om automatisch te verversen na een bepaalde leeftijd, of 0 om bij elke opening te verversen. Deze instelling staat standaard uit, dus automatisch herindexeren is uitgeschakeld.

Bekijk een sessie vóór het hervatten ​

ctrl+o opent de geselecteerde sessie in een schermvullende weergave met prompts, antwoorden en aangeraakte bestanden in gespreksvolgorde. Lange antwoorden worden afgebroken binnen het scherm. De pijltjestoetsen scrollen één regel, page up en page down één scherm en esc sluit de weergave.

Schermvullende sessiegeschiedenis met het gesprek in volgorde, voorbij de kop gescrold

De picker past zich aan de terminalbreedte aan en behoudt dezelfde interface in smallere vensters.

Pickerweergave in een terminal van tachtig kolommen

Gebruik op de commandoregel ​

Deze uitvoer is op deze machine geproduceerd en ingekort met '…'.

Geïnstalleerde clients en indexstatus:

bash
$ nek doctor
clients
  agy          155 sessions  (built-in)
  claude       197 sessions  (built-in)
  codebuff      65 sessions  (built-in)  [partial]
  codex         19 sessions  (built-in)
  copilot        0 sessions  (built-in)
  cursor         1 sessions  (built-in)
  goose          not installed  (built-in)
  kilo           1 sessions  (built-in)
  opencode       5 sessions  (built-in)

index
  441 sessions, 21 size-capped, 0 partly unreadable, 0 missing from disk
  size-capped: claude:1bb60c1e-2883-442b-8012-c6ff3cd73488
  …

Tien clients delen één index. Zes ondersteunen hervatten op ID; de andere vier starten met een briefing. doctor toont welke modus beschikbaar is. Codebuff en Freebuff delen één regel, omdat beide dezelfde opslag gebruiken. Sessies met een groottelimiet worden apart geteld van onleesbare sessies: de limiet verhogen en opnieuw indexeren kan de eerste groep herstellen, zonder dat dit iets zegt over de onleesbare sessies.

Zoeken zonder de picker:

bash
$ nek search reconnect race
$ nek search reconnect --json      # machine-readable, with the transcript paths
$ nek search reconnect --ids       # just the ids, one per line, for show and forget
$ nek blame src/sse.ts             # sessions that touched this exact file
$ nek timeline --dir .             # every file operation recorded under a directory
$ nek last                         # newest session under this directory
$ nek show <uid>                   # the handover, as Markdown, before you send it

--ids drukt alleen sessie-ID's af voor gebruik met andere commando's. Bijvoorbeeld: nek search "sse reconnect" --ids | head -1 | xargs nek show maakt een briefing voor het eerste resultaat zonder JSON te hoeven verwerken om een ID uit te lezen.

Zoeken blijft standaard binnen de huidige map. --all breidt het bereik uit, --client <id> beperkt het tot één client en --file <path> vindt sessies waarin een bestand is aangeraakt. blame vult het pad aan vanuit de huidige map en zoekt overal, met de nieuwste sessies eerst. "Aangeraakt" betekent dat het pad in geïndexeerde tool-input voorkomt, niet noodzakelijk dat het bestand veranderd is. Met --json bevat elke regel transcriptiepaden, zodat een agent het origineel kan lezen in plaats van de geïndexeerde samenvatting te gebruiken.

Geschiedenis van bestandsbewerkingen ​

blame toont sessies voor één bestand. timeline toont vastgelegde bewerkingen onder een map, gegroepeerd per sessie.

bash
$ nek timeline --dir . --since 7d --limit 2

/home/dev/work/api-gateway · 2 sessions · 12 events · git was not consulted
exact order inside a session, end-time order between them

*  claude      23m  api-gateway       the retry budget is shared across tenants, it should be per tenant
      2  read    src/gateway/retry-budget.ts
      3  edit    src/gateway/retry-budget.ts
      8  read    src/gateway/tenant.ts
      9  edit    src/gateway/tenant.ts
     14  read    test/retry-budget.test.ts
     15  write   test/retry-budget.test.ts

o  codex        6h  api-gateway       add structured logging around the upstream timeout path
      2  read    src/gateway/logging.ts
      3  edit    src/gateway/logging.ts

Het getal vóór elke bewerking is de beurt waarin de bewerking plaatsvond en verwijst naar de sessiegeschiedenis.

Binnen een sessie is de bewerkingsvolgorde exact. Tussen sessies bevat de index alleen eindtijden, dus blijven bewerkingen gegroepeerd in plaats van samengevoegd tot een schijnbaar precieze tijdlijn. In een git-repository krijgen niet-gevolgde paden de markering untracked. Als git niet bevraagd kan worden, vermeldt de kop dat expliciet, zodat een ontbrekende markering geen tracking suggereert. Bekijk zowel gevolgde als niet-gevolgde paden: een gevolgd pad garandeert niet dat git de laatste wijzigingen bevat. Sessies die elders zijn gestart en met relatieve paden naar deze bestanden verwijzen, worden hier niet gevonden; blame heeft dezelfde beperking.

Bestandsbewerkingen worden vastgelegd wanneer een sessie opnieuw in de index wordt ingelezen. Sessies die vóór deze functie zijn geïndexeerd, tonen bestanden zonder bewerkingen. Een gewone nek index vult ongewijzigde transcripties niet aan, omdat alleen gewijzigde transcripties opnieuw worden gelezen. Gebruik nek index --rebuild om die records aan te vullen. De uitvoer benoemt sessies zonder bewerkingsrecords in plaats van te suggereren dat er niets is uitgevoerd.

Indexering ​

Indexeren heeft twee fases. De eerste leest begrensde metadata en een stabiele vingerafdruk per sessie. De tweede draait alleen voor gewijzigde sessies en schrijft metadata en zoekfacetten atomair naar SQLite. FTS5 gebruikt verschillende gewichten voor titels, gebruikersprompts en geselecteerde assistenttekst, en weegt relevantie af tegen een halfwaardetijd voor recentheid. Fork-ketens worden samengevoegd tot één regel.

Tool-output wordt niet geïndexeerd. Commandoresultaten en bestandsdumps zijn groot, bevatten veel ruis en kunnen privégegevens bevatten; deze tekst wordt niet gebruikt om een sessie terug te vinden.

Configuratie en lokale gegevens ​

De index staat in ~/.local/share/nekyia/index.db en de configuratie in ~/.config/nekyia/config.json. Beide volgen XDG_DATA_HOME en XDG_CONFIG_HOME.

Er is geen netwerkdienst, API key of telemetrie. Briefings zijn deterministisch en vereisen geen modelaanroep. De index bewaart een kopie van tekst die al op schijf staat. Die kopie blijft bestaan na verwijdering van de brontranscriptie. Deze commando's beheren de bewaarde gegevens:

bash
nek forget <uid>              # one session, and every facet of it
nek prune --missing           # sessions whose source files are gone
nek exclude '/work/private'   # then: nek index

Een uitsluiting geldt voor een map en alle onderliggende mappen. Relatieve paden worden aangevuld vanuit de map waarin het commando draait. De volgende nek index verwijdert bestaande indexgegevens binnen dat bereik, ook van sessies waarvan de brontranscripties al zijn verwijderd.

exclude en hiddenClients begrenzen de indexering. De standaardwaarden bij ontbrekende instellingen zijn ruim, dus het negeren van een onleesbare configuratie zou de opgeslagen gegevens kunnen uitbreiden. Indexering stopt daarom vóór het schrijven als uitsluitingen niet kunnen worden toegepast en vermeldt het configuratiebestand. Zoeken blijft beschikbaar, maar meldt op stderr dat de configuratie niet is toegepast. Bestaande geschiedenis blijft zo toegankelijk.

De index is niet versleuteld en er is geen garantie dat secrets worden weggelakt. Bekijk uitvoer van show, doctor en --json voordat je deze openbaar deelt.

Extra clients zijn in te stellen met lokale manifesten in ~/.config/nekyia/clients/*.json. nek doctor --sniff inspecteert waarschijnlijke transcriptie-opslagplaatsen en maakt een conceptmanifest in plaats van een pad aan te nemen.