Preskočiť na obsah
Kristián Partl
Späť

Môj druhý mozog má nočnú zmenu

Používam päť AI nástrojov a každý si pamätá niečo iné.

Claude v prehliadači má svoju pamäť. Claude v mobile inú. Claude Desktop má svoje projekty. Codex a Claude Code vedia to, čo leží v repe, v ktorom som ich spustil. A n8n nevie nič, kým mu to workflow nepodá. Päť pamätí a žiadne dve sa nezhodnú na tom, čo vlastne viem.

Predtým som mal poznámky v Obsidiane a dopadlo to tak, ako to s poznámkami dopadá.

Každý second brain umrie rovnako. Poznámky padajú do inboxu rýchlejšie, než ich niekto stihne roztriediť, inbox rastie a jedného dňa prestaneš veriť, že to, čo hľadáš, v ňom vôbec je. Zapisovať nikdy nebol problém. Problém je triediť, a triedenie je prvá vec, ktorú v náročnom týždni vynecháš.

Tak som prestal triediť ja. Každú noc jeden model prečíta môj inbox a navrhne, kam čo patrí. Druhý, nezávislý model každý návrh schváli alebo zamietne. A potom skript, ktorý nevie rozmýšľať, zapíše len to, čo prešlo. Schvaľovať som to mal ja. Nikdy som to nerobil, tak som sa z toho vyškrtol.

Jedno miesto pre všetkých

Všetko je v self-hosted Outline. Nie väčšina, všetko. Je to jediný zdroj pravdy pre všetko, čo má nejaká AI o mne vedieť.

Dôvod je MCP. Outline je dostupný cez MCP konektor, takže tú istú knowledge base vidí Claude chat, mobil, Claude Desktop, CLI agenti aj n8n workflowy. Päť klientov, jedna pamäť. Čo zapíšem v jednom, ostatné štyri prečítajú.

Najprv som zvažoval inžiniersku klasiku: poznámky v git repe ako zdroj a Outline len ako mirror na čítanie. Zahodil som to. Outline drží revíznu históriu každej stránky a tá robí presne to, na čo som chcel git diff. Mirror by mi pridal len druhé miesto, kde môžu byť veci neaktuálne.

Git repo v tom celom je, ale drží konfiguráciu agentov, nie znalosti. Inštrukcie, oprávnenia, nastavenia. Fakt o svete ide do Outline. Pravidlo o tom, ako sa má agent správať, ide do repa.

Jedna úprimná poznámka, kým pôjdem ďalej. Jediný zdroj pravdy je zároveň jediný bod zlyhania. Outline je teraz kritická služba a jediná kópia dát, takže funkčné a monitorované zálohy sú podmienka, nie bonus. Keby som ho nevedel obnoviť, neveril by som mu. A keby som mu neveril, mám zase päť pamätí.

Štruktúra, v ktorej sa vyzná aj agent

Knowledge base má šesť kolekcií:

Vstupným bodom je INDEX: jeden riadok TL;DR ku každému dokumentu, na ktorom záleží. Agent, ktorý začne tam, vie, ktorú stránku otvoriť, bez toho, aby čítal všetky.

Pravidlo pre stránky znie: jedna stránka, jedna téma. Každý dokument začína rovnakou hlavičkou:

Typ: znalost | zdroj | zaznam | projekt | oblast
Stav: aktivne
Aktualizovane: 2026-10-26
Suvisiace: [odkazy]
TL;DR: 1-3 vety, ktore staci na rozhodnutie, ci dokument otvorit.

Hlavička je rovnako pre agentov ako pre mňa. TL;DR sa dostane do INDEXu, Aktualizované hovorí, aká stará môže byť informácia, a Súvisiace nedovolí, aby sa zo stránky stal ostrov.

K tomuto tvaru ma dotlačili dve veci.

Prvou bol LLM Wiki od Andreja Karpathyho, “idea file”, ktorý zverejnil v apríli 2026. Oddeľuje surové zdroje, ktoré model číta, ale nikdy nemení, od wiki, ktorú model píše a udržiava. Má index so všetkými stránkami a jednoriadkovým zhrnutím, log, do ktorého sa len pridáva, čo sa kedy stalo, a pravidelný lint, pri ktorom model hľadá vo wiki problémy. Môj Inbox, INDEX a Log na to sedia skoro jedna k jednej. Lint je časť, ktorú ešte nemám.

Druhou bol experiment od LlamaIndexu, Did Filesystem Tools Kill Vector Search? Postavili agenta, ktorý prechádza súbory cez filesystem nástroje, proti klasickému RAG nad piatimi vedeckými článkami a odpovede hodnotil LLM na stupnici 0 až 10. Agent vyhral v správnosti (8,4 proti 6,4) aj v relevancii (9,6 proti 8,0). Autori pritom otvorene píšu, kde je háčik: ich súbory mali 22 až 52 strán a pri väčších by výhoda pravdepodobne zmizla.

Ten háčik je pravidlo, ktoré som si z toho zobral. Agent, ktorý sa preklikáva stránkami, porazí retrieval, kým sa každá stránka pohodlne zmestí do toho, čo dokáže prečítať. Takže: malé stránky a index taký dobrý, aby agent vedel, ktorú otvoriť.

Oprávnenia sú architektúra

Keby som to staval znova, toto by som nastavil ako prvé.

Každý klient sa prihlasuje ako vlastný technický používateľ, nikdy ako admin. Sú traja:

Kolekciakb-reader
chat, desktop
kb-agent
CLI agenti, n8n
kb-curator
nočný kurátor
00 Startčítaniečítaniečítanie, zapisuje Log a INDEX
10 Inboxzápiszápiszápis
20 Projektyzápisbez prístupuzápis
30 Oblastičítaniebez prístupuzápis
40 Znalostičítaniečítaniezápis
90 Archivčítaniebez prístupuzápis

Všetko nové ide do Inboxu. Tam môže zapisovať každý klient. Do 40 Znalosti, ktorej veria všetci agenti, zapisuje len kurátor. Keď agent uprostred nejakej úlohy usúdi, že sa naučil niečo dôležité, nemôže to položiť vedľa overenej znalosti. Dá to do Inboxu a rozhodne nočná zmena.

AI nič nemaže. Nie ako veta v prompte - kurátorov API kľúč na mazanie jednoducho nemá scope. Prompt sa dá ukecať. Chýbajúce oprávnenie nie.

Agenti nevidia môj život. kb-agent nevidí 20 Projekty, 30 Oblasti ani 90 Archiv. CLI agenti a n8n dostanú technickú znalosť a nič iné.

Každý konektor musí pred použitím prejsť krátkym akceptačným testom:

  1. Čítanie funguje.
  2. Úprava stránky v 40 Znalosti zlyhá.
  3. Zápis do Inboxu funguje.
  4. Agent nevidí osobné oblasti.

Podstatné sú body dva a štyri. Konektor, ktorý vie čítať všetko, nastavíš za pár minút. Test je tam na to, aby dokázal, že nevie to, čo nemá.

Nočná zmena

O 03:30 spustí systemd timer na VPS headless Claude Code - claude -p - ako používateľa kb-curator. To, čo nasleduje, je rozdelené na tri roly a celé je to práve o tom rozdelení.

Nočná zmena mojej knowledge basePoznámky z Claude chatu, mobilu, CLI agentov a n8n padajú do kolekcie 10 Inbox. O 03:30 spustí beh systemd timer. Krok 1: kurátor, model bez nástrojov a bez kľúčov, prečíta Inbox a napíše plán. Krok 2: nezávislý reviewer agent každú položku plánu schváli alebo zamietne. Schválené idú na krok 3: deterministický skript, ktorý vykoná len operácie z allowlistu (presun, zlúčenie, doplnenie hlavičky) a nikdy nemaže. Zapisuje do 20 Projekty, 30 Oblasti, 40 Znalosti a 90 Archiv a aktualizuje Log a INDEX. Zamietnuté ostávajú v Inboxe a ďalšiu noc sa navrhnú znova; po troch zamietnutiach dostane Log záznam Potrebuje vlastníka a pozrie sa na ne človek.ZDROJEClaude chat, mobil, CLI agenti, n8n10 Inbox03:30 systemd timer1Kurátor LLMbez nástrojov, bez kľúčovNAVRHUJEplán2Reviewer agentnezávislý, schváli alebo zamietneSCHVAĽUJEschválenézamietnuté3SkriptZAPISUJEdeterministickýallowlist: presun,zlúčenie, hlavičkanikdy nemažeOstáva v Inboxeďalšiu noc znova,po 3x: Potrebujevlastníka -> človek20 Projekty, 30 Oblasti,40 Znalosti, 90 Archiv+ Log + INDEX
Tri roly, ktoré sa nikdy neprekrývajú: jedna navrhuje, druhá schvaľuje, tretia zapisuje.

1. Kurátor navrhuje. Model prečíta Inbox a ku každému dokumentu navrhne, čo s ním: do ktorej kolekcie a pod ktorého rodiča patrí, či ho zlúčiť s dokumentom, ktorý už existuje, ktoré polia hlavičky doplniť a či obsahuje citlivé alebo klientske údaje, ktoré treba označiť. Výsledkom je plán. Model nemá nástroje ani kľúče, takže plán je jediné, čo vie vyrobiť.

2. Reviewer schvaľuje. Druhý, nezávislý agent si plán prečíta a každú položku schváli alebo zamietne. Návrh nepísal, takže nemá dôvod ho obhajovať.

3. Skript zapisuje. Deterministický skript vykoná len to, čo prešlo, a len operácie zo svojho allowlistu: presunúť dokument, zlúčiť dva, doplniť hlavičku, pridať riadok do Logu, prepočítať INDEX. Čo v zozname nie je, sa nevykoná, nech by zdôvodnenie znelo akokoľvek presvedčivo.

Duplicity sa zlúčia a pôvodný dokument ide do Archivu. Nič sa nemaže - to isté pravidlo ako pri oprávneniach, len vynútené druhýkrát.

Každá zmena skončí ako jeden riadok v Logu. Takto prácu nočnej zmeny čítam: neotváram dokumenty, prebehnem zoznam toho, čo sa kam presunulo. Do hry vstupujem, len keď je v ňom záznam “Potrebuje vlastníka”. Zamietnutý návrh sa nestratí: dokument ostane v Inboxe a ďalšiu noc dostane novú šancu. Po treťom zamietnutí ho kurátor prestane navrhovať a namiesto toho zapíše do Logu “Potrebuje vlastníka”. To je signál pre mňa.

Prečo Claude Code v termináli a nie n8n workflow s API kľúčom? Lebo Claude Code beží v rámci môjho predplatného. A keďže aj reviewer je Claude, osobné dokumenty z môjho Inboxu nechodia ďalšiemu vendorovi.

Dôvod rozdelenia na tri časti je jednoduchý. Model je dobrý v úsudku a zlý v tom, aby mu človek zveril právo zápisu. Skript je presne naopak. Model teda dostane úsudok bez prístupu, druhý model jeho úsudok skontroluje a skript dostane prístup bez úsudku. Ani jeden z nich sám nič nepokazí.

Vyhodil som sám seba

Na papieri so mnou prvá verzia počítala.

Raz týždenne mal kurátor vyrobiť triage dokument so zaškrtávacím políčkom pri každom návrhu. Ja by som ho otvoril v mobile, za päť minút zaškrtol, čo schvaľujem, a kurátor by vykonal len zaškrtnuté. Pravidlo malo byť tvrdé: do 40 Znalosti nič bez človeka.

Nikdy som to nespustil. Devätnásť dní stál Inbox s deviatimi dokumentmi a čakal na schválenie, ktoré som nemal v pláne robiť. Presne takto umiera každý second brain, len tentoraz som si krok, ktorý vynechávam, navrhol sám.

Tak som si priznal, čo vlastne chcem: pamäť, ktorá funguje bez mojej práce. Schvaľovanie prevzal reviewer agent a beh sa z týždenného zmenil na denný.

Ostali poistky, ktoré nikdy nestáli na mne:

Na papieri bol človek jedna poistka zo siedmich. V praxi jediná, ktorá nikdy nebežala. Vyhodiť jednu zo siedmich je úplne iné rozhodnutie než vyhodiť jedinú.

Čo zatiaľ nefunguje

Lint stále chýba. Karpathyho nápad má pravidelnú kontrolu zdravia a ja ju nemám. Osirelé stránky, stránky, na ktoré nikto nesiahol šesť mesiacov a viac, duplicity, ktoré kurátor prehliadol - nič ich zatiaľ automaticky nehľadá.

Outline zlepí hlavičku. Ak riadky hlavičky nie sú oddelené prázdnym riadkom, Outline ich vykreslí ako jeden odsek a z piatich úhľadných polí je jedna dlhá veta. Musí to vedieť každý agent, ktorý píše dokument, a preto to inštrukcie mojich agentov hovoria výslovne.

Postav si light verziu

Moje presné nastavenie nepotrebuješ. Poradie je dôležitejšie než jednotlivé diely:

  1. Self-hosted Outline.
  2. MCP konektor, aby každý AI klient čítal to isté.
  3. Technickí používatelia s najmenšími oprávneniami, ktoré ešte fungujú - jeden na každý typ klienta, nikdy admin.
  4. Inbox, kam padá všetko nové, a hlavička na každej stránke.
  5. Headless Claude Code na systemd timeri.
  6. Navrhnúť, posúdiť a zapísať ako tri oddelené kroky.
  7. Riadok v Logu za každú zmenu.

Keď skončíš po štvrtom bode, aj tak máš to najdôležitejšie: jednu pamäť a agentov, ktorí nevedia prepísať to, čomu veríš.

Pointa

Second brain neumiera preto, že si prestal zapisovať. Umiera preto, že to, čo si zapísal, nikto netriedi. Môj sa triedi, kým spím, dvoma modelmi, ktoré sa navzájom kontrolujú, a skriptom, ktorý nevie improvizovať.

Ak chceš ďalší článok, keď vyjde, formulár je hneď pod týmto.


Zdieľať článok:

Nové články e-mailom

Jeden e-mail, keď vyjde nový článok. Nič iné. E-maily píšem po anglicky.

Najprv ti príde potvrdzovací e-mail. E-maily za mňa posiela Buttondown (USA) a v každom je odkaz na odhlásenie jedným klikom. Ochrana súkromia

Radšej čítačka? Sleduj cez RSS


Predchádzajúci článok
Prestal som otvárať schránku, aby som zistil, či niečo prišlo
Nasledujúci článok
BLE Scale Sync na Raspberry Pi Zero 2 W: čo som kúpil a čo na ňom beží