Lemmalog؛ حافظهٔ ایجنت با موتور Datalog
خلاصهٔ کاملتر
جوردی زومر توی این پست تعریف میکنه که چند ماه با ایجنتهای LLM روی vulnerability research (یعنی گشتن دنبال باگ امنیتی توی کدهای بزرگ) کار کرده و همیشه به یه دیوار خورده: بعد از چند ساعت، مدل کمکم گم میکنه که چه چیزی رو قبلاً رد کردن. به گفتهٔ نویسنده، حتی وقتی بهش میگی یه فرض غلط بوده، نتیجههایی که روی همون فرض ساخته شده بودن هنوز سر جاشون میمونن.
مشکل از نظر اون این نیست که مدل حرفهای قبلی رو یادش نمیمونه. حافظههای معمولی گفتگوهای قدیمی رو embed میکنن و بعد مرتبطترین تیکهها رو برمیگردونن. ولی چیزی که توی یه تحقیق امنیتی لازمه این نیست که «چی گفتیم»، اینه که «الان چی میدونیم». و این دقیقاً همون کاریه که سالهاست توی program analysis انجام میدن: فکت داری، قانون داری، و اگه یه ورودی عوض شد، فقط خروجیهای وابسته رو دوباره حساب میکنی.
برای همین Lemmalog رو نوشته، یه موتور Datalog (زبان منطقیِ اعلانی که بهجای دستور، فکت و قانون مینویسی) که کنار مدل میشینه. تقسیم کار سادهست: LLM بخش فازی رو برمیداره، یعنی خروجی LLDB و کد و یادداشت آدم رو به فکت ساختاریافته ترجمه میکنه، و موتور بخش قطعی رو:
controls_kernel_object(Attacker) :-
controls(Attacker, ObjectA),
points_to(ObjectA, ObjectB),
kernel_object(ObjectB).حالا اگه دو ساعت بعد معلوم شه اون points_to اشتباه بوده، موتور دقیقاً میدونه کدوم نتیجه روش سوار بوده و خودش باطلش میکنه. چون منشأ هر فکت (provenance، یعنی اینکه از کدوم مشاهده و کدوم قانون دراومده) ذخیره میشه، میتونی از ایجنت بپرسی «چرا فکر میکنی این درسته؟»؛ اگه پشتوانهای نباشه، اصلاً جزو دانستهٔ فعلی نیست. فکتها بازهٔ اعتبار زمانی هم دارن، پس «قبلاً فکر میکردیم درسته» و «الان غلطه» میتونن کنار هم بمونن.
نویسنده Lemmalog رو با MemEval روی LongMemEval و LoCoMo تست کرده و هر بنچمارک رو سه بار اجرا کرده تا شانسی نباشه. توی LongMemEval امتیاز F1 برابر ۰٫۴۶۳ شده، پشت سر PropMem با ۰٫۵۵۰ و SimpleMem با ۰٫۴۸۰، ولی توی دستهٔ Knowledge Update با ۰٫۵۷۹ از همه جلو زده. جالبتر اینکه کانتکستی که به مدل پاسخدهنده میرسه حدود ۲٬۷۰۰ توکن برای هر سواله، در برابر حدود ۱۰۴٬۰۰۰ توکن حالت full context.
نکات کلیدی:
- Lemmalog یه موتور Datalog با MCP server ـه، پس ایجنت میتونه مستقیم باهاش کار کنه.
- توی LongMemEval امتیاز کل ۰٫۴۶۳ F1، ولی توی Knowledge Update امتیاز ۰٫۵۷۹ در برابر ۰٫۵۲۸ برای PropMem.
- کانتکست هر سوال حدود ۲٬۷۰۰ توکن، یعنی نزدیک ۳۸ برابر کمتر از پاسدادن کل گفتگو.
- توی LoCoMo با ۱۹۸۶ سوال امتیاز ۰٫۵۳۳ گرفته و بین سیستمهای حافظه سوم شده.
- ضعف اصلی سوالهای multi-session ـه با ۰٫۲۱۱، چون خیلی از فکتها اصلاً استخراج نمیشن.
- درستکردن نرمالسازی تاریخها امتیاز temporal رو از ۰٫۲۵۷ به ۰٫۴۵۴ رسوند.




