Skip to content

זיכרון עמיד

לסוכני Triggerfish יש זיכרון עמיד חוצה-סשנים. הסוכן יכול לשמור עובדות, העדפות והקשר ששורדים בין שיחות, אתחולים מחדש ואפילו התעוררויות טריגר. הזיכרון נשלט על ידי שערי סיווג -- הסוכן אינו יכול לקרוא מעל זיהום הסשן שלו או לכתוב מתחתיו.

כלים

memory_save

שמירת עובדה או פיסת מידע לזיכרון עמיד.

פרמטרסוגנדרשתיאור
keystringכןמזהה ייחודי (למשל user-name, project-deadline)
contentstringכןהתוכן לזכור
tagsarrayלאתגיות לסיווג (למשל ["personal", "preference"])

הסיווג מוגדר אוטומטית לרמת הזיהום הנוכחית של הסשן. הסוכן אינו יכול לבחור באיזו רמה זיכרון מאוחסן.

memory_get

אחזור זיכרון ספציפי לפי מפתח.

פרמטרסוגנדרשתיאור
keystringכןמפתח הזיכרון לאחזור

מחזיר את תוכן הזיכרון אם קיים ונגיש ברמת האבטחה הנוכחית. גרסאות בסיווג גבוה יותר מצלילות על נמוכות יותר.

חיפוש בכל הזיכרונות הנגישים באמצעות שפה טבעית.

פרמטרסוגנדרשתיאור
querystringכןשאילתת חיפוש בשפה טבעית
max_resultsnumberלאמקסימום תוצאות (ברירת מחדל: 10)

משתמש בחיפוש טקסט מלא SQLite FTS5 עם stemming. תוצאות מסוננות לפי רמת האבטחה הנוכחית של הסשן.

memory_list

רשימת כל הזיכרונות הנגישים, עם סינון אופציונלי לפי תגית.

פרמטרסוגנדרשתיאור
tagstringלאתגית לסינון לפיה

memory_delete

מחיקת זיכרון לפי מפתח. הרשומה נמחקת רכות (מוסתרת אך נשמרת לביקורת).

פרמטרסוגנדרשתיאור
keystringכןמפתח הזיכרון למחיקה

ניתן למחוק רק זיכרונות ברמת האבטחה הנוכחית של הסשן.

כיצד זיכרון עובד

חילוץ אוטומטי

הסוכן שומר באופן יזום עובדות חשובות שהמשתמש חולק -- פרטים אישיים, הקשר פרויקט, העדפות -- באמצעות מפתחות תיאוריים. זו התנהגות ברמת prompt מונחית על ידי SPINE.md. ה-LLM בוחר מה לשמור; שכבת המדיניות כופה באיזו רמה.

שערי סיווג

כל רשומת זיכרון נושאת רמת סיווג השווה לזיהום הסשן בזמן שנשמרה:

  • זיכרון שנשמר במהלך סשן CONFIDENTIAL מסווג CONFIDENTIAL
  • סשן PUBLIC אינו יכול לקרוא זיכרונות CONFIDENTIAL
  • סשן CONFIDENTIAL יכול לקרוא הן זיכרונות CONFIDENTIAL והן PUBLIC

זה נאכף על ידי בדיקות canFlowTo בכל פעולת קריאה. ה-LLM אינו יכול לעקוף זאת.

הצללת זיכרון

כאשר אותו מפתח קיים במספר רמות סיווג, רק הגרסה בסיווג הגבוה ביותר הנראית לסשן הנוכחי מוחזרת. זה מונע דליפת מידע בין גבולות סיווג.

דוגמה: אם user-name קיים הן ב-PUBLIC (הוגדר במהלך צ'אט ציבורי) והן ב-INTERNAL (עודכן במהלך סשן פרטי), סשן INTERNAL רואה את גרסת ה-INTERNAL, בעוד סשן PUBLIC רואה רק את גרסת ה-PUBLIC.

אחסון

זיכרונות מאוחסנים דרך ממשק StorageProvider (אותה הפשטה המשמשת לסשנים, משימות cron ו-todos). חיפוש טקסט מלא משתמש ב-SQLite FTS5 לשאילתות שפה טבעית מהירות עם stemming.

אבטחה

  • סיווג תמיד נכפה ל-session.taint בוו PRE_TOOL_CALL -- ה-LLM אינו יכול לבחור סיווג נמוך יותר
  • כל הקריאות מסוננות לפי canFlowTo -- שום זיכרון מעל זיהום הסשן לעולם אינו מוחזר
  • מחיקות הן מחיקות רכות -- הרשומה מוסתרת אך נשמרת לביקורת
  • הסוכן אינו יכול להעלות סיווג זיכרון על ידי קריאת נתונים בסיווג גבוה ושמירתם מחדש ברמה נמוכה יותר (מניעת כתיבה-למטה חלה)

אבטחה ה-LLM לעולם אינו בוחר סיווג זיכרון. הוא תמיד נכפה

לרמת הזיהום הנוכחית של הסשן על ידי שכבת המדיניות. זהו גבול קשיח שאינו ניתן להגדרה אחרת. :::