3.6 KiB
compact-memory
Audit a zhuštění memory/MEMORY.md — zahazuje záznamy, které už neplatí, opakují se, jsou příliš
detailní nebo jednorázové, a slučuje související odrážky. Mění jen memory/MEMORY.md;
USER.md, SOUL.md a keep.md čte pouze pro detekci duplicit.
Dva režimy
| Interaktivní | Noční | |
|---|---|---|
| Spouštěč | uživatel v chatu („compact memory") | crontab 0 2 * * * → scripts/compact_memory_auto.py |
| Kdo aplikuje změnu | agent svými file tooly | skript (agent nesmí nic zapsat) |
| Výstup | číslovaný návrh v chatu, čeká na apply | keep <čísla> | delete <čísla> | cancel |
Telegram zpráva složená skriptem |
| Backup | ne (dohledatelnost přes log/memory-clean.log) |
backup/<YYYY-MM-DD_HHMM>_memory.backup.md |
Co se maže a slučuje
| Kategorie | Co znamená |
|---|---|
superseded |
překonáno novějším faktem, práce dokončená, už neplatí |
detail |
konkrétní příkazy, cesty, čísla, odkazy do kódu — patří do skillu nebo kódu, ne do paměti |
duplicate |
stejný fakt už je v USER.md, SOUL.md nebo keep.md |
ephemeral |
jednorázový debug, dočasný stav, vyřešený incident, průběh běhu |
stale-section |
celá ##/### sekce, jejíž obsah je celý překonaný nebo jednorázový |
merge |
sloučení souvisejících odrážek do jedné — jen v rámci téže ### podsekce |
Noční běh krok za krokem
- Skript spustí agenta přes
Nanobot.from_config(model_preset="kimi")s vždy novýmsession_key(compact-memory-auto:<timestamp>), aby noční běhy nekontaminovaly živý chat ani sebe navzájem. Celý běh má timeout 10 min. - Agent provede audit a odpoví jedním JSON blokem se seznamem
changes(prázdný seznam = není co měnit). Prózu agenta nikdo nečte. - Skript change-set zvaliduje proti aktuálnímu obsahu
MEMORY.mda ověří sha256, že agent soubor sám nezměnil. - Odmítnutý change-set → retry ve stejné session s výpisem chyb validátoru, celkem max 3 pokusy.
- Platný change-set → backup, přepis
MEMORY.md, append dolog/memory-clean.log, Telegram report (počty + jeden řádek na změnu s důvodem).
Proč takhle: model rozhoduje co se má smazat, skript řeší jak — doručená zpráva tak nezávisí na tom, jestli model dodržel formát výstupu.
Validace
Skript change-set přijme jen když přesně sedí na aktuální soubor: každý blok v original musí být
zkopírovaný znak po znaku a v souboru se smí vyskytovat jen jednou, bloky se nesmí překrývat
a sloučený text musí být kratší než původní. Navíc platí limity na délku (reason je krátká česká
věta) a change-set nesmí smazat víc než polovinu souboru. Přesná čísla jsou v SKILL.md
a v konstantách skriptu.
Cesty (relativně k workspace)
| Cesta | Role |
|---|---|
memory/MEMORY.md |
jediný soubor, který se mění |
backup/ |
snapshot před nočním přepisem |
log/memory-clean.log |
append-only audit smazaných/sloučených položek |
log/compact_memory_auto_cron.log |
stdout/stderr cronu — odpověď modelu a důvod odmítnutí per pokus |
skills/compact-memory/scripts/compact_memory_auto.py |
noční runner |
Když noční běh spadne
- Zpráva začínající
Memory compact: CHYBA —znamená, že se nic neaplikovalo. - Detail (odpovědi modelu, chyby validátoru) je v
log/compact_memory_auto_cron.log. - Ruční spuštění:
uv run skills/compact-memory/scripts/compact_memory_auto.py— pozor, reálně mění paměť a pošle Telegram zprávu.