דילוג לתוכן
תפריט

המוצר

פתרונות

אינטגרציות

מפתחים

שפה

המוצר

איך זיכרון מתיישן

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

מה מתיישן ומה נשאר

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

  • זיכרון עבודה

    הערות לסשן שרץ עכשיו. הן מסתיימות יחד איתו.

  • זיכרון אפיזודי

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

  • זיכרון סמנטי

    החלטות, מושגים ומלכודות. הם לא דועכים.

  • זיכרון פרוצדורלי

    כללים, נהלים ו-runbooks. הם לא דועכים.

המסלול בלי LLM

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

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

ציון השימור

  • עם ברירות המחדל, דף מאבד חצי מהציון שלו בערך כל 35 יום. מתחת ל-0.20 הוא נחשב קר.
  • כל קריאה מוסיפה לציון, וגם ההשפעה של קריאות ישנות דועכת.
  • פידבק Stale או Wrong מוריד את הדף לרמת הבולטות הנמוכה ביותר.
  • הציון קובע מה הסבב עושה. הוא אף פעם לא משנה את דירוג החיפוש.
קונפיגורציה של השרת
# שלושתן אופציונליות. בלעדיהן דפים קרים מפונים לפי עקומה אחת משותפת.
[decay]
compact_cold_episodic = true
dedup_cold_clusters = true

[decay.half_life_days]
working = 7
episodic = 365
  1. תמיד פועל

    קריאה משאירה דף בחיים

    תוצאות חיפוש, פתיחה של דף, הגעה אליו דרך קישור וקריאה ל-memory_explore נספרות כולן כקריאות. קריאות רק מעלות את הציון.

  2. כבוי כברירת מחדל

    זמן מחצית חיים לכל שכבה

    [decay.half_life_days] קובע כמה מהר כל שכבה דועכת, למשל חיים קצרים להערות טיוטה וחיים ארוכים להיסטוריית הסשנים. בלי ההגדרה הזו הציונים נשארים בדיוק כפי שהיו.

  3. כבוי כברירת מחדל

    לצמצם דף קר

    עם compact_cold_episodic, דף קר שומר על התקציר שלו, על הסיכום שבפסקה הראשונה ועל הטוקנים ששווה לשמור (נתיבי קבצים, כתובות URL, קטעי קוד, קודי שגיאה ומזהים), ומוותר על הפרוזה. בלי ההגדרה הזו הדף מפונה.

  4. כבוי כברירת מחדל

    למזג דפים כמעט זהים

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

  5. כבוי כברירת מחדל

    לדלג על סשנים ריקים

    מסנן אנטרופיה משאיר דפי סשן כמעט ריקים או חזרתיים מאוד מחוץ ל-experience pass, עוד לפני שנבנה פרומפט כלשהו ל-LLM.

  6. רץ עם memory_lint

    לסמן סתירות אפשריות

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

  7. תמיד פועל

    ציון ביטחון לכל דף

    כל דף מקבל ציון ביטחון בין 0 ל-0.95, לפי מספר הסשנים הנפרדים שתומכים בו, כמה עדכני האחרון שבהם, וכמה דפים סותרים אותו. רואים אותו בפלט של explain. הוא משפיע על הדירוג רק אם מעלים את belief_authority_weight מעל 0.

סבב החלום

dedup שומר את העובדות של אשכול. סבב החלום מוסר את אותו אשכול ל-LLM שלך, והוא משכתב אותו לדף קוהרנטי אחד. הסבב רץ כשאתם לא ליד המחשב ונעצר כשחוזרים.

תרשים: אחרי שמפעילים אותו, סבב החלום מחכה לחמש דקות בלי פעילות, לוקח אשכולות של דפים קרים כשהאשכול החדשני ביותר ראשון, ונותן ל-LLM לשכתב כל אשכול לדף ממוזג אחד. דפי המקור מסומנים כמוחלפים, כל פעילות מבטלת את הריצה, והכול נשאר בהיסטוריית git.
המתזמן שוקל ריצה פעם בשעה, וצריך חמש דקות שקטות כדי להתחיל. בכל ריצה הוא מטפל בשמונה אשכולות לכל היותר.
  • הוא צריך שלושה דברים

    [dream] enabled = true, ספק LLM ו-embedder. בלי ספק, ה-dedup שלא משתמש ב-LLM ממשיך לעבוד כרגיל.

  • הוא מחכה שתלכו

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

  • האשכול החדשני ביותר ראשון

    אשכולות שהכי רחוקים ממה שהוויקי כבר אומר מטופלים ראשונים. הסדר והטריגר של חוסר הפעילות הולכים בעקבות ה-Dreamer של Honcho.

  • המקורות מוחלפים

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

  • כל מיזוג מציין את המקורות שלו

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

קונפיגורציה של השרת
# נדרשים גם ספק LLM ו-embedder.
[dream]
enabled = true
idle_window_secs = 300
max_clusters_per_run = 8

מה אפשר לבטל, ומה לא

הצמצום, ה-dedup וסבב החלום משכתבים דרך הוויקי, ולכן כל שינוי הוא גרסה חדשה ו-commit ב-git.

  • שכתובים הם הפיכים

    ai-memory restore-page מחזיר את הדף המלא מהיסטוריית ה-git של הוויקי.

  • שדרוג לא משנה כלום

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

  • להצמיד את מה שחייב להישאר

    דף מוצמד אף פעם לא נכלל בסבב. דפים סמנטיים ופרוצדורליים לא דועכים.

עוד דרכים לשאול

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

  • תשובות עם ציטוטים

    memory_query עם answer: true מחזיר תשובה קצרה ואת נתיבי הדפים שמהם היא הגיעה. נדרש ספק LLM, והיכולת הולכת בעקבות ה-dialectic endpoint של Honcho. האיכות שלה עדיין לא הוערכה, אז כדאי לפתוח את הדפים שצוטטו.

  • רמות reasoning

    הארגומנט reasoning, מ-minimal ועד max, קובע את תקציב הטוקנים לתשובות ול-memory_explore.

  • דפים מוצמדים קודם

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

  • דפים קשורים

    memory_read_page עם include_related עובר על קישורים ועל קישורים נכנסים עד שלושה צעדים החוצה.

  • גרסאות ישנות לפי בקשה

    include_superseded מוסיף לחיפוש גרסאות שהוחלפו, וכל אחת מהן מסומנת.

  • איזה פרויקט ענה

    memory_status מדווח לאילו workspace ופרויקט הוא הגיע, ואיך הוא הגיע אליהם.

ליומן השינויים המלא

שאלות ותשובות

האם ai-memory מוחק זיכרונות ישנים?

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

האם התיישנות הזיכרון צריכה LLM?

לא. מתן הציונים, זמני מחצית החיים לכל שכבה, הצמצום, ה-dedup, סימון הסתירות וציון הביטחון לא משתמשים ב-LLM. ה-dedup וסימון הסתירות קוראים embeddings, שה-embedder המקומי של ברירת המחדל מייצר. רק סבב החלום קורא ל-LLM, והוא כבוי כברירת מחדל.

מה זה סבב החלום?

משימת רקע שהיא opt-in. אחרי חמש דקות בלי פעילות היא לוקחת אשכולות של דפים קרים וכמעט זהים, ונותנת ל-LLM שלך לשכתב כל אשכול לדף אחד. המקורות מסומנים כמוחלפים, והריצה נעצרת כשחוזרים.

האם שדרוג ישנה את הזיכרון הקיים שלי?

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

האם היכולות האלה משפרות את ציוני האחזור?

אף אחד עוד לא מדד את זה. הפרויקט מתייחס אליהן כיכולות ששוחררו, שהן opt-in ושלא הוכחו, עד שה-harness של ההערכה יראה שיפור.

תנו לסוכנים שלכם זיכרון, כבר היום.

חינם ובקוד פתוח, ברישיון MIT. בלי חשבון ובלי מפתח API.