Lemmalog: Jak jsem přetvořil paměť LLM na analýzu programů

Experimentování s LLM vedlo k vytvoření Lemmalogu, Datalog enginu pro efektivní analýzu programů a zranitelností.

29. srpna 2026 Martin Šuránek

V posledních měsících jsem se intenzivně zabýval experimentováním s LLM (velkými jazykovými modely) v oblasti výzkumu zranitelností. Při těchto pokusech jsem zjistil, že LLM se překvapivě dobře orientují v rozsáhlých kódových základech a dokážou vysvětlit neznámé subsystémy. Nicméně, jakmile se vyšetřování protáhne na několik hodin, začal jsem narážet na problém: model postupně ztrácel přehled o tom, co jsme již zjistili.

Běžné paměťové systémy pro LLM obvykle fungují tak, že ukládají staré konverzace nebo pozorování a poté je při potřebě znovu vyhledávají. Tento přístup má své výhody, ale v kontextu výzkumu zranitelností jsem potřeboval něco jiného. Chtěl jsem, aby model udržoval aktuální stav a automaticky invalidoval závěry na základě změn v pozorováních.

Vytvoření Datalog enginu

Tato myšlenka mě přivedla k vytvoření Datalog enginu, nazvaného Lemmalog. Datalog je deklarativní logický programovací jazyk, který umožňuje definovat fakta a pravidla, ze kterých lze odvozovat nové závěry. Například, pokud víme, že:

controls(attacker, object_a) 
points_to(object_a, object_b) 
kernel_object(object_b) 

můžeme definovat pravidlo, které říká, že pokud útočník ovládá objekt A, který ukazuje na objekt B, a objekt B je jádrový objekt, pak útočník ovládá jádrový objekt.

Lemmalog se ukázal jako efektivní nástroj pro udržování stavu analýzy. Když se nějaké pozorování změní, například zjistíme, že points_to(object_a, object_b) bylo chybné, můžeme automaticky invalidovat všechny závěry, které na tomto faktu závisely. To je mnohem efektivnější než znovu rekonstruovat celou analýzu na základě starých informací.

Výsledky benchmarků

Lemmalog byl testován na dvou benchmarkových sadách: LongMemEval a LoCoMo. V benchmarku LongMemEval dosáhl skóre 0.463 +/- 0.010 F1, zatímco v LoCoMo dosáhl skóre 0.533 +/- 0.001 F1. Tyto výsledky naznačují, že Lemmalog je konkurenceschopný s jinými paměťovými systémy, i když zatím nedosahuje výkonu některých dedikovaných systémů, jako je PropMem.

Zajímavé je, že Lemmalog dosáhl skóre 0.579 v kategorii Knowledge Update, což je lepší výsledek než PropMem, který dosáhl 0.528. To ukazuje, že Lemmalog je efektivní při aktualizaci znalostí a udržování aktuálního stavu.

Praktické aplikace

Lemmalog zlepšuje efektivitu analýzy programů tím, že udržuje aktuální stav a automaticky invaliduje zastaralé závěry. To je zvláště důležité v kontextu výzkumu zranitelností, kde se může situace rychle měnit a je klíčové mít přesné a aktuální informace.

Je však třeba mít na paměti, že výsledky benchmarků jsou založeny na omezeném počtu otázek a nemusí být reprezentativní pro všechny scénáře. Také je důležité poznamenat, že Lemmalog zatím nedosahuje výkonu některých jiných paměťových systémů, což naznačuje prostor pro zlepšení.

Experimentování s Lemmalogem ukazuje, že je možné efektivně využívat LLM pro analýzu programů a výzkum zranitelností. Udržování aktuálního stavu a automatická invalidace závěrů na základě změn v pozorováních představují významný krok vpřed v oblasti analýzy programů.