
החוקר הפך בטעות את זיכרון ה-LLM לניתוח תוכניות
בניסיון למנוע מסוכני LLM לשכוח מה שנקבע בחקירת פגיעות, בנה ג'ורדי זומר את Lemmalog — מנוע בסגנון Datalog שמחזיק עובדות, כללים ומקוריות במקום היסטוריית שיחה.
בחודשים האחרונים השתמש חוקר האבטחה ג'ורדי זומר בסוכני LLM לחקר פגיעויות. בפוסט שפורסם ב-28 באוגוסט הוא מתאר כיצד הניסיון לתקן את בעיות הזיכרון שלהם הפך למנוע ניתוח תוכניות בסגנון Datalog בשם Lemmalog.
הבעיה אינה שסוכנים מתקשים לנווט בקודי מקור גדולים — בכך הם מפתיעים לטובה. אבל כשחקירה נמשכת שעות, המודל מאבד לאט לאט את מה שכבר נקבע: הוא מציע גישה שכבר נפסלה, שוכח שהנחה התבררה כשגויה, או ממשיך להסיק מממצא שכבר אינו תקף. אמירה ל-LLM שמשהו שגוי אינה גורמת לו להפסיק להאמין לכל מה שהיה תלוי בכך.
זיכרון כניתוח תוכניות
מערכות זיכרון קיימות שומרות בדרך כלל שיחות וממצאים מהעבר, מטמיעות אותם ומאחזרות את הרלוונטיים. זומר טוען שכך מוסתרות שתי בעיות שונות תחת מילה אחת. אחזור עונה על השאלה "מה מהעבר רלוונטי לשאלה הזו?", אך לא על השאלה "בהינתן כל מה שנלמד, מה נכון כעת?". מסד נתונים וקטורי עשוי להציף את הרשומה ש-object_a מצביע ל-object_b מפני שהיא רלוונטית סמנטית, אך הוא אינו יודע שהקביעה הופרכה שעתיים אחר כך, או שחמש מסקנות היו תלויות בה.
Lemmalog מפצל את המלאכה: ה-LLM מטפל בחלק ה"מטושטש" — הוא הופך שפה טבעית, קוד ופלט דיבאגר לעובדות מובנות — והמנוע מטפל בחלק הדטרמיניסטי: עובדות וכללים מפיקים עובדות נגזרות.
ביטולים, מקוריות וזמן
הסרת עובדה קשה מהוספה. אם למסקנה יש כמה נגזרות, מחיקת עובדה תומכת אחת לא אמורה למחוק את המסקנה כל עוד אחרת תקפה — דבר נפוץ בחקר פגיעויות, שבו מועמד עשוי להיות מנוצל בכמה מסלולים בלתי תלויים. לכן המנוע עוקב אחר אופן הגזירה של כל עובדה, מעדכן תמיכה כשמשהו משתנה ויכול להסביר מדוע מסקנה נחשבת נכונה. אם אין מקור מאחורי טענה, היא אינה חלק מהמצב המתוחזק — שימושי כשמודל טוען בביטחון ש"כבר קבענו" משהו שמעולם לא נקבע. עובדות גם משתנות ולא רק נעלמות, ולכן Lemmalog שומר מרווחי תוקף עבורן.
תוצאות הבנצ'מרקים
זומר חיבר את המערכת ל-MemEval ובדק אותה ב-LongMemEval וב-LoCoMo עם קוראים ושופטים סטנדרטיים של הבנצ'מרק, כשהחילוץ מתבצע פעם אחת לכל שיחה באמצעות Claude Sonnet 4.6. ב-LongMemEval (102 שאלות) השיג Lemmalog 0.463 F1 (±0.010) ודיוק 0.575 — טוב מ-OpenClaw (0.244) ומהקשר מלא (0.222), אך פחות מ-PropMem (0.550) ומ-SimpleMem (0.480). הוא היה החזק ביותר בעדכון ידע (0.579 מול 0.528 של PropMem) והחלש ביותר בחשיבה רב-מושבית (0.211). ב-1,986 השאלות של LoCoMo הוא השיג בממוצע 0.533 F1 (±0.001): פחות מ-PropMem ומ-OpenClaw, אך טוב מהקשר מלא בשאלות עם הנחות שגויות (0.707 מול 0.509). מודל המשיב מקבל ב-LongMemEval כ-2,700 טוקנים לשאלה במקום כ-104,000 — כ-38 פעמים פחות הקשר, כי החילוץ משולם פעם אחת בלבד.
חלק ניכר מהשיפור בא מתיקונים לא זוהרים: הוראה שנועדה לצמצם הזיות גרמה לקורא לסרב ל-32 שאלות שהיו ניתנות למענה, כלל ריבוי שהתעלם ממילים קצרות מחמש אותיות השליך בשקט ראיות לספירה, ותאריכים שהושוו כסימבולים של Datalog הושוו לפי מזהים פנימיים. זומר מבהיר ש-PropMem עדיין מוביל בסך הכול ושמדגם LongMemEval קטן. הניסוי הבא, לדבריו, הוא זה שלשמו הכול החל: חקירת פגיעות ארוכה.
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.