Opravili sme vlastný benchmark pamäte, kým nás neprestal lichotiť
Otvorený cross-system integrity benchmark pamäte agentov (inspeximus vs mem0 vs Graphiti). Predpublikačný red-team našiel neférový nástroj v našom vlastnom harnesse; oprava zrazila hlavné revert číslo inspeximus z 1.00 na 0.75. Dva adversariálne probe, ktoré chýbajú v každom benchmarku pamäte z 2026.
Problém. Každý verejný benchmark pamäte agentov — LoCoMo, LongMemEval, MemoryAgentBench aj vlna z roku 2026 (MemConflict, BEAM, TOKI, STALE, Supersede) — hodnotí jednu vec: vyhľadávanie. Vrátil sklad správny fakt? Vlastný text mem0 z roku 2026 priznáva, že druhá polovica sa takmer nemeria: „krok zápisu, rozhodnutie čo sa oplatí uchovať … je sotva meraný." Dve zlyhania na strane zápisu nemajú žiadny verejný benchmark: neoznačený revert („vráť to späť", „zruš to" — bez pomenovania hodnoty) a echo-resurrection útok (zopakovanie hodnoty, ktorú si už opravil, aby si videl, či sa vráti). Benchmarky z 2026 testujú, ktorý z dvoch konfliktných faktov vyhrá; žiadny netestuje adversariálne zopakovanie stiahnutej hodnoty ani príkazom riadené vrátenie. Overili sme to proti primárnym zdrojom každého z nich.
Nápad. Pustiť tú istú adversariálnu fixtúru cez tri pamäťové systémy v ich natívnej konfigurácii — inspeximus (naša open-source knižnica, lokálne), mem0 2.0.11 (gpt-4o-mini + text-embedding-3-small), Graphiti (živé neo4j) — a zverejniť maticu nech padne akokoľvek. Nie je to nový problém: vrátenie-a-konzistentnosť-pri-aktualizácii je belief revision (AGM, 1985), truth-maintenance systémy (Doyle, 1979) a bitemporálne databázy (Snodgrass → SQL:2011). Prínosom je otvorené, reprodukovateľné, cross-system meranie známej ťažkej vlastnosti, nie nová os.
Časť, na ktorú sme najmenej hrdí — a preto ňou začíname. Naša prvá verzia hodnotila inspeximus mechanicky čítaním odpovede z jeho vlastného interného ledgeru, kým mem0 a Graphiti čítal LLM judge parsujúci ich surový výpis pamäte. Dva rôzne nástroje. inspeximus dostalo čistý oracle na domácej pôde; konkurencia dostala LLM žmúriaci na neformátovaný blob. Predpublikačný red-team to zachytil v našom vlastnom otvorenom harnesse — presne tam, kde by to našiel inžinier z mem0. Prepísali sme to: každý systém teraz číta ten istý LLM judge cez jeho vlastnú natívnu vyhľadávaciu plochu a nikdy nevidí základnú pravdu. V momente, keď sme to urobili, hlavné revert číslo inspeximus spadlo z dokonalej 1.00 na 0.75 — pretože v 5/20 prípadov je aj vlastná recall plocha inspeximus pre neutrálneho sudcu nejednoznačná. Tá 1.00 bola sčasti nástroj, ktorý nám lichotil.
Nameraný výsledok (n=20 na bunku, jeden judge slepý voči pravde, natívna konfigurácia, Wilson 95% CI).
Bunka 1 — value-obscuring revert. Ulož hodnotu, oprav ju, potom vydaj neoznačený revert bez pomenovania hodnoty; vráti sa aktuálna odpoveď k starej?
| systém | revert splnený | 95% CI | čítanie |
|---|---|---|---|
| inspeximus (route/revert) | 0.75 | [0.53, 0.89] | vystavuje explicitný revert kanál |
| mem0 2.0.11 | 0.20 | [0.08, 0.42] | žiadna revert operácia — drží opravenú hodnotu |
| Graphiti | 0.00 | [0.00, 0.16] | žiadna revert operácia — bitemporálna invalidácia reaguje na pomenované rozpory, nie na „vráť späť" |
Čítaj to čestne: len inspeximus vystavuje revert operáciu, takže pre ostatných je revert veta prakticky no-op a správne držia opravenú hodnotu. Je to rozdiel v schopnosti, nie „mem0 a Graphiti sú zlé." Číslo, ktoré má význam, je že aj systém postavený na toto to zvládne len na 0.75, nie 1.00.
Bunka 2 — echo resistance. Ulož hodnotu, oprav ju, potom zopakuj stiahnutú hodnotu; vráti sa zastaraná hodnota?
| systém | resurrection (menej=lepšie) | 95% CI | čistá jediná odpoveď |
|---|---|---|---|
| inspeximus (echo_guard) | 0.00 | [0.00, 0.16] | 0.90 |
| mem0 2.0.11 | 0.05 | [0.01, 0.24] | 0.80 |
| Graphiti | 0.00 | [0.00, 0.16] | 0.55 |
Tu inspeximus nevyhráva — každý systém sa dostane na alebo blízko nuly resurrection. Zopakovanie stiahnutej hodnoty ju na žiadnom modernom sklade nevráti; tento typ zlyhania je ošetrený naprieč všetkými. Líšia sa v jasnosti odpovede: Graphiti svojím bitemporálnym dizajnom vynáša aj invalidovanú starú hranu aj platnú novú, takže naivný čitateľ vidí dva fakty — iný retrieval kontrakt, nie resurrection. Túto bunku publikujeme najhlasnejšie, lebo je to tá, kde remizujeme.
Čestný rozsah. n=20 na bunku, jeden LLM judge, žiadna zhoda medzi hodnotiteľmi, tri systémy. Rozdiely vnútri prekrývajúcich sa CI ber ako remízy. Nemerali sme následnú škodu — či vzkriesený alebo nevrátený fakt reálne zmení akciu agenta, ktorá dôjde k používateľovi — čo je metrika, ktorú bezpečnostný alebo compliance čitateľ nakoniec chce. A „cross-system" sú tri systémy; Letta, Cognee, LangMem, holé RAG a natívna pamäť modelu tu ešte nie sú. Harness je jeden súbor s jednofunkčným adaptérovým rozhraním: spusti ho, alebo pridaj svoj systém, a matica sa aktualizuje.
FalzifikátorKeby sa inspeximus pod jedným férovým nástrojom neoddelilo od ostatných na reverte (prekrývajúce sa CI), tvrdenie o revert schopnosti by bolo mŕtve. Oddelilo sa — ale len na 0.75, nie 1.00, a len na tomto úzkom probe. A na útoku, ktorý naozaj záleží, resurrection, niet oddelenia vôbec. To je čestný tvar toho.
FAQ
Čo je integrita pamäte agentov a čím sa líši od vyhľadávania? Vyhľadávanie sa pýta, či sklad vráti správny fakt; integrita sa pýta, ktorá verzia faktu vyhrá po oprave, či sa oprava dá vrátiť na príkaz a či zopakovanie stiahnutej hodnoty ju vráti späť. Štandardné benchmarky (LoCoMo, LongMemEval, MemoryAgentBench) hodnotia vyhľadávanie; dva integritné probe tu chýbajú vo všetkých.
Vie mem0 alebo Graphiti vrátiť opravu z obyčajného „vráť späť"? V tomto benchmarku nie: len inspeximus vystavuje revert kanál, takže dosahuje 0.75 na neoznačenom reverte oproti mem0 0.20 a Graphiti 0.00. mem0 a Graphiti držia opravenú hodnotu, čo je správne správanie; len nemajú operáciu na jej vrátenie na príkaz. Je to rozdiel v schopnosti, nie rebríček kvality.
Vráti zopakovanie starej hodnoty túto hodnotu v pamäti agenta? Nie. Naprieč inspeximus, mem0 aj Graphiti je miera resurrection na alebo blízko nuly, takže na útoku, ktorý záleží, všetky remizujú. Ten istý typ echo-resurrection zlyhania sme merali aj samostatne. Systémy sa líšia len v jasnosti odpovede, nie v tom, či sa zastaraná hodnota vráti.
Prečo skóre inspeximus spadlo z 1.00 na 0.75? Prvá verzia harnessu čítala inspeximus mechanicky z jeho vlastného ledgeru, kým mem0 a Graphiti cez LLM judge. To je neférový nástroj. Keď každý systém číta ten istý judge cez jeho natívnu plochu, revert skóre inspeximus padne na 0.75, lebo aj jeho vlastná recall plocha je pre neutrálneho sudcu nejednoznačná 5-krát z 20.
Je benchmark reprodukovateľný? Áno. Harness je jeden súbor s jednofunkčným adaptérovým rozhraním; spusti ho na troch systémoch alebo pridaj svoj, a matica sa aktualizuje. Dôvera v pamäť agenta sa ustanovuje na ceste zápisu, nie získava pri čítaní.