What should an AI agent forget? No single rule wins — but two tiers doČo má AI agent zabudnúť? Žiadne jedno pravidlo nevyhráva — ale dve vrstvy áno
An agent's memory-eviction rule decides what it keeps. LRU, LFU, and value each win one regime and fail the others — a poison flood drives pure recency to zero. A two-tier store (value-protected + recency-aged) matches the best in all three at once. Measured.Politika vyhadzovania pamäte agenta rozhoduje, čo si udrží. LRU, LFU aj value každé vyhrá jeden režim a v ostatných zlyhá — otravná záplava zrazí čistú recency na nulu. Dvojvrstvový sklad (value-chránený + recency-starnúci) vyrovná najlepšie vo všetkých troch naraz. Odmerané.
An agent's memory is finite. When it fills up, something has to go. The eviction policy — what to forget — quietly decides whether the agent keeps the memory it will actually need. We measured the common rules, found none is universal, then found an architecture that is. Minimal, fully-reproducible simulation.
Three rules, three regimes
Hold a fixed-capacity store; drive it with three access patterns and measure the served hit-rate (the fraction of future accesses that land on a still-kept memory):
- temporal locality — a drifting working set (recent things are needed soon).
- rare-but-critical — a few items accessed seldom but each worth a lot.
- poison flood — a real working set buried under a stream of unique junk.
| policy | locality | rare-critical | poison flood |
|---|---|---|---|
| LRU (recency) | 0.80 | 0.13 | 0.00 |
| LFU (frequency) | 0.14 | 0.11 | 0.00 |
| value (keep highest-value) | 0.22 | 0.65 | 0.57 |
Each rule owns one regime and fails the others. Recency (LRU) tracks a drifting working set but is wiped to zero by a flood — the junk is always "most recent". Value protects rare-critical and flood-targeted items but starves a drifting working set, clinging to stale high-value memories. Frequency is worst of the three here. No single policy is safe across all of them.
A blend isn't enough
The obvious fix — one estimator that mixes value with a recency decay (a GDSF-style aging score) — does not rescue it. The poison flood pumps the aging clock: every junk eviction advances "time", so the very decay that handles a drifting working set ages the real memories out under attack. Aging-for-drift and no-aging-for-robustness are in direct tension inside one number.
Two tiers are
Split the budget. Keep a small value-protected tier (top items by raw value, immune to recency and to the flood) and fill the rest by decay-weighted value (recency-aware). That two-tier store matches or beats the best single rule in every regime at once:
| locality | rare-critical | poison flood | |
|---|---|---|---|
| best single rule | 0.80 | 0.65 | 0.57 |
| two-tier | 0.81 | 0.64 | 0.57 |
The protected tier keeps the rare-critical and flood-targeted memories; the recency-aged tier serves the drifting working set. The regime-dependence dissolves into one architecture and one knob — the protected fraction.
If you build agent memory
Don't pick LRU, LFU, or a value score and hope — each is a trap in some regime, and a poison flood drives pure recency to zero. Use a two-tier store: a small value-protected segment plus a recency-aged segment, with the protected fraction tuned to how adversarial your input stream is. (This is exactly the change we shipped into our open memory core.)
The falsifierEach single rule had to win its own regime and lose the others — it did (recency 0.80 on locality but 0.00 on the flood; value 0.65 / 0.57 but 0.22 on locality) — and the two-tier had to match-or-beat the best single rule in all three at once with no regression — it did. Had any single rule been universal, the two-tier would be needless.
FAQ
What is the best memory-eviction policy for an AI agent? There is no single best rule — each wins one regime and fails the others. LRU (recency) scores 0.80 on a drifting working set but 0.00 under a poison flood; value-based keeps 0.65 rare-critical and 0.57 under flood but only 0.22 on locality. A two-tier store (value-protected + recency-aged) matches or beats the best single rule in all three regimes at once, with no regression.
Why does recency (LRU) collapse under a memory poison flood? Because injected junk is always “most recent,” so a pure recency rule keeps the flood and evicts the real memories — it drops to 0.00 exactly when it is attacked.
Why not just keep the highest-value memories? Value-based eviction protects rare-critical and flood-targeted items (0.65 / 0.57) but starves a drifting working set (0.22 on locality) by clinging to stale high-value memories. It wins two regimes and loses the one that matters most day to day.
What does a two-tier memory store mean in practice? Split the store: a value-protected tier that recency pressure cannot evict, plus a recency-aged tier for the working set. The protected tier survives floods; the aged tier tracks drift — together they cover every regime that breaks a single rule.
Related research
Pamäť agenta je konečná. Keď sa naplní, niečo musí von. Politika vyhadzovania (eviction) — čo zabudnúť — potichu rozhoduje, či si agent udrží pamäť, ktorú naozaj bude potrebovať. Odmerali sme bežné pravidlá, žiadne nie je univerzálne; potom sme našli architektúru, ktorá je. Minimálna, plne reprodukovateľná simulácia.
Tri pravidlá, tri režimy
Drž sklad s pevnou kapacitou; žeň ho tromi prístupovými vzormi a meraj served hit-rate (podiel budúcich prístupov, ktoré trafia stále uloženú pamäť):
- temporálna lokalita — driftujúci working set (nedávne veci budú čoskoro treba).
- vzácne-ale-kritické — pár položiek používaných zriedka, ale každá veľa vážiaca.
- otravná záplava — skutočný working set pochovaný pod prúdom unikátneho junku.
| politika | lokalita | vzácne-kritické | otravná záplava |
|---|---|---|---|
| LRU (recency) | 0.80 | 0.13 | 0.00 |
| LFU (frekvencia) | 0.14 | 0.11 | 0.00 |
| value (drž najhodnotnejšie) | 0.22 | 0.65 | 0.57 |
Každé pravidlo vlastní jeden režim a v ostatných zlyhá. Recency (LRU) sleduje driftujúci working set, ale záplava ho zmaže na nulu — junk je vždy „najnovší". Value chráni vzácno-kritické a otravou-cielené položky, ale vyhladuje driftujúci working set a drží sa starých hodnotných pamätí. Frekvencia je tu najhoršia. Žiadna jedna politika nie je bezpečná naprieč všetkými.
Blend nestačí
Zrejmá oprava — jeden estimátor miešajúci hodnotu s recency-decay (GDSF-štýl starnúce skóre) — to nezachráni. Otravná záplava napumpuje starnúce hodiny: každé vyhodenie junku posunie „čas", takže práve to starnutie, čo zvláda drift, vyhodí skutočné pamäte pri útoku. Starnutie-pre-drift a žiadne-starnutie-pre-odolnosť sú v priamom napätí v jednom čísle.
Dve vrstvy áno
Rozdeľ rozpočet. Drž malú value-chránenú vrstvu (top položky podľa surovej hodnoty, imúnne voči recency aj záplave) a zvyšok plň podľa decay-váženej hodnoty (recency-aware). Taký dvojvrstvový sklad vyrovná alebo prekoná najlepšie jedno pravidlo v každom režime naraz:
| lokalita | vzácne-kritické | otravná záplava | |
|---|---|---|---|
| najlepšie jedno pravidlo | 0.80 | 0.65 | 0.57 |
| dvojvrstva | 0.81 | 0.64 | 0.57 |
Chránená vrstva drží vzácno-kritické a otravou-cielené pamäte; recency-starnúca vrstva obsluhuje driftujúci working set. Režimová závislosť sa rozplynie do jednej architektúry a jedného gombíka — podielu chránenej vrstvy.
Ak staviaš pamäť agenta
Nevyber LRU, LFU ani hodnotové skóre a nedúfaj — každé je v nejakom režime pasca a otravná záplava zráža čistú recency na nulu. Použi dvojvrstvový sklad: malý value-chránený segment plus recency-starnúci segment, s podielom chránenej vrstvy naladeným podľa toho, aký adversariálny je tvoj vstupný prúd. (Presne túto zmenu sme nasadili do nášho open-source pamäťového jadra.)
FalzifikátorKaždé jedno pravidlo muselo vyhrať svoj režim a prehrať ostatné — dokázalo to (recency 0.80 na lokalite, ale 0.00 na záplave; value 0.65 / 0.57, ale 0.22 na lokalite) — a dvojvrstva musela vyrovnať-či-prekonať najlepšie jedno pravidlo vo všetkých troch naraz bez regresie — dokázala to. Keby bolo akékoľvek jedno pravidlo univerzálne, dvojvrstva by bola zbytočná.
FAQ
Aká je najlepšia politika eviction pre pamäť AI agenta? Žiadne jediné pravidlo nie je najlepšie — každé vyhrá jeden režim a zlyhá v ostatných. LRU (recency) skóruje 0.80 na driftujúcej pracovnej množine, ale 0.00 pri poison flood; value-based drží 0.65 rare-critical a 0.57 pri flood, ale len 0.22 na locality. Dvojvrstvové úložisko (chrániace hodnotu + starnúce podľa recency) sa vyrovná alebo prekoná najlepšie jediné pravidlo vo všetkých troch režimoch naraz, bez regresie.
Prečo recency (LRU) kolabuje pri poison flood pamäte? Pretože vstreknutý odpad je vždy „najnovší“, takže čisté recency pravidlo si nechá flood a vyhodí skutočné pamäte — klesne na 0.00 práve vtedy, keď je napadnuté.
Prečo si jednoducho nenechať pamäte s najvyššou hodnotou? Value-based eviction chráni rare-critical a flood-cielené položky (0.65 / 0.57), ale vyhladuje driftujúcu pracovnú množinu (0.22 na locality) tým, že lipne na zastaraných vysoko-hodnotných pamätiach. Vyhrá dva režimy a prehrá ten, ktorý je každodenne najdôležitejší.
Čo znamená dvojvrstvové úložisko pamäte v praxi? Rozdeľ úložisko: vrstvu chrániacu hodnotu, ktorú recency tlak nevie vyhodiť, plus recency-starnúcu vrstvu pre pracovnú množinu. Chránená vrstva prežije floods; starnúca vrstva sleduje drift — spolu pokryjú každý režim, ktorý zlomí jediné pravidlo.