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

מה סשן חדש שומע ראשון
הסשן נפתח בבלוק קצר מגודר, לפני ההעברה והתקציר של הפרויקט: שורה אחת לכל רשומה, עם שם הדף שממנו באה, מסונן לפי ה-stack של הפרויקט. הוא נשאר זהה בייט לבייט בין סשנים, ולכן הוא יושב בפרומפט המאוחסן במטמון של ה-harness.
> 🧭 ai-memory: your usual choices (cross-project profile)
> Your usual choices from other projects. Use them as defaults when this
> project's rules and the user say nothing; say which default you applied.
- [javascript] Use pnpm, not npm. (profile/tools/pnpm.md)
- Keep integration tests in tests/suite. (profile/testing/layout.md)
קודם הכללים, הזיכרון כברירת מחדל
- ההוראות שלכם בשיחה
- קובץ הכללים של הריפוזיטורי: AGENTS.md, CLAUDE.md או הקובץ של ה-harness עצמו
- הזיכרון של הפרויקט: הדפים, הכללים וההחלטות שלו
- הפרופיל: מה שאתם עושים בדרך כלל בין פרויקטים
כשקובץ הכללים אומר npm, פרופיל שאומר pnpm לא חל. כשאף אחד לא אומר, הסוכן משתמש בפרופיל במקום לשאול שוב, ומציין באיזו ברירת מחדל נעזר.
איך הוא לומד, בלי LLM
סבב בשרת רץ בסיום כל סשן ופעם בשעה. הוא קורא את מה שחדש ורק אותו.

המילים שלכם
פרומפטים שנקראים כהעדפה: תמיד, אף פעם, מעדיפים X על Y, מעכשיו, כברירת מחדל, וגם הצורות בפורטוגזית. שאלות, בלוקי קוד וכל מה שכלי הדפיס לא נקראים לעולם.
דפים מוכנים וה-stack
גם הכללים, ההחלטות, ה-gotchas והנהלים שנבחרו בפרויקט נחשבים, והשפות שלו הופכות לרשומות stack. דפים שהמתזמן אישר אוטומטית נשללים; דפים שאדם אישר עדיין נחשבים.
שני פרויקטים, או הצהרה כללית אחת
בחירה מצטרפת לפרופיל כשהיא מופיעה בשני פרויקטים לפחות, או כשקובעים בעצמכם שהיא חלה מעבר לפרויקט, למשל "בכל הפרויקטים שלי". ההכרעה החדשה ביותר מנצחת, והישנה נשארת בהיסטוריית הדף.
ראיות בכל רשומה
כל רשומה שומרת את הפרויקטים והתאריכים שממנה באה, את המילים שלכם, כמה פרויקטים תומכים בה ומה רמת הביטחון בה. כש-LLM מוגדר, הסבב מסווג ומנסח מחדש רשומות בקריאות עם בדיקת סכמה, וחוזר לרשימות המילים בכל שגיאה.
פרויקט חדש מתחיל מקדמה
ריפוזיטורי בלי זיכרון עדיין מקבל בסיס גדול יותר, ופקודה אחת הופכת את הבחירות הרגילות שלכם לכללים שכולם רואים.
ai-memory profile apply כותב את הרשומות שמתאימות לריפוזיטורי לבלוק מנוהל בקובץ הכללים שלו, בין שני סמנים, ולא נוגע בשום דבר מחוצה להם. מריצים שוב ורק הבלוק משתנה. זו הפקודה היחידה שכותבת לתוך הריפוזיטורי שלכם, והיא רצה רק כשמריצים אותה.
# רואים את הבלוק ואת הקובץ שאליו הוא ייכתב
ai-memory profile apply --dry-run
# כותבים אותו
ai-memory profile apply
# מוציאים אותו שוב
ai-memory profile apply --remove
אתם נשארים בשליטה
הרשומות הן דפי ויקי רגילים: markdown ב-git, עם גרסה לכל שינוי.
שוכחים, וזה נשאר נשכח
ai-memory profile forgetמסיר רשומה, והסבב לא יצור אותה מחדש מאותן ראיות. היא חוזרת רק אם תגידו אותה שוב.העריכות שלכם מנצחות
רשומה שנערכה ביד היא שלכם מאותו רגע. הסבב אף פעם לא משכתב דף שהוא לא כתב, או דף שהשתנה מאז.
עבודה ללקוחות ו-NDA נשארת בחוץ
הסימון של פרויקט יכול להגדיר
contribute = falseכדי שלא יילמד ממנו דבר, ו-consume = falseכדי שלא יקבל את התקציר.סקירה ובנייה מחדש
profile reviewמראה כל רשומה עם הראיות שלה ואת ההרגלים שעוד לא הגיעו לסף.profile rebuildקורא מחדש כל פרויקט מההתחלה, אף פעם לא מסיר רשומה, ולא נוגע במה שנערך או הוסר.
# הפרויקט הזה לא מלמד את הפרופיל ולא מקבל אותו
[profile]
contribute = false
consume = false
אדם אחד, פרופיל אחד. צוות, בהסכמה.
בשרת למפעיל יחיד הפרופיל פעיל ומשותף לכל ה-workspaces. בשרת מרובה משתמשים הוא כבוי עד שמפעילים אותו.
פרטי לכל מפעיל
כשהוא מופעל בשרת משותף, כל אדם מקבל פרופיל מוגבל שרק הוא ו-root יכולים לקרוא. שום דבר שהסוכנים של אדם אחד לומדים לא מגיע לאחר.
פרופיל צוות דורש שני קולות
share = "global"או"workspace"יוצר פרופיל שכולם מקבלים. הרגל מצטרף אליו רק לפי ראיות מלפחות שני מפעילים, והתקציר נפתח בכותרת ברירות מחדל של הצוות, כדי שהסוכן ידע שהן משותפות.עבודה ופרטי בנפרד
share = "workspace"שומר פרופיל אחד לכל workspace, לשני לקוחות או לעבודה ולבית.
# שרת משותף: פרופיל פרטי אחד לכל מפעיל
[profile]
enabled = true
share = "auto"
min_projects = 2
שאלות ותשובות
האם הפרופיל עוקף את הכללים של הפרויקט?
לא. ההוראות שלכם באות ראשונות, אחריהן קובץ הכללים של הריפוזיטורי, ואחריו הזיכרון של הפרויקט. הפרופיל הוא ברירת המחדל האחרונה, ונעשה בו שימוש רק כשאף דבר ספציפי יותר לא קובע, והסוכן מציין באיזו ברירת מחדל נעזר.
האם הוא צריך LLM?
לא. האיסוף וההתכנסות עובדים על רשימות מילים ועל ההצהרה החדשה ביותר. כשספק מוגדר, הסבב משתמש בו כדי לסווג ולנסח מחדש רשומות בקריאות עם בדיקת סכמה, וחוזר למסלול בלי LLM בכל שגיאה. מגדירים llm = false כדי לשמור אותו אופליין לגמרי.
האם הוא יכול ללמוד משהו מהקוד של לקוח?
הוא קורא את הפרומפטים שלכם ואת הדפים המוכנים של הפרויקט, אף פעם לא פלט של כלים, ולכן טקסט שסוכן רק ראה לא יכול להפוך להעדפה. פרויקט עם contribute = false בסימון שלו נשאר מחוץ לתמונה לגמרי, כולל ראיות שנאספו קודם.
מה קורה בשרת משותף?
הפרופיל כבוי עד שמפעילים אותו. אז כל אדם מקבל פרופיל פרטי שרק הוא ו-root יכולים לקרוא. פרופיל צוות הוא בחירה נפרדת, והוא מקבל הרגל רק לפי ראיות משני מפעילים.
אפשר לכבות אותו?
כן. enabled = false או share = "off" בקונפיגורציית השרת מסירים אותו לגמרי. inject_on_session_start = false משאיר את התקציר מחוץ לתחילת הסשן, והפרופיל ממשיך לענות על שאילתות.
תנו לסוכנים שלכם זיכרון, כבר היום.
חינם ובקוד פתוח, ברישיון MIT. בלי חשבון ובלי מפתח API.