המוצר
ההרגלים שלכם עוברים איתכם לפרויקט הבא
לכל פרויקט יש זיכרון משלו, ולכן אפשר להחליף סוכן בלי להסביר הכול מחדש. הפרופיל נושא את החצי השני: איך אתם עובדים בדרך כלל, כפי שנלמד מהפרויקטים ונמסר לכל פרויקט חדש בתחילת הסשן.
שתי תנועות, זיכרון אחד
הצידה, מסוכן אחד לאחר, הזיכרון של הפרויקט נשאר. קדימה, מפרויקט אחד לבא אחריו, הפרופיל הולך איתכם.
אותו פרויקט, כל סוכן
Claude Code
ai-memory
Codex
OpenCode
פרויקט A
פרויקט B
פרויקט C
פרופיל
פרויקט חדש
מה סשן חדש שומע ראשון
הסשן נפתח בבלוק קצר מגודר, לפני ההעברה והתקציר של הפרויקט: שורה אחת לכל רשומה, עם שם הדף שממנו באה, מסונן לפי ה-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
סבב בשרת רץ בסיום כל סשן ופעם בשעה. הוא קורא את מה שחדש ורק אותו.
המילים שלכם
נראה ב-2 פרויקטים
רשומה אחת
כל תחילת סשן
המילים שלכם
עוד לא
המילים שלכם
פרומפטים שנקראים כהעדפה: תמיד, אף פעם, מעדיפים 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מסיר רשומה ומונע למידה מחדש מאותן ראיות. ראיות חדשות יכולות ליצור אותה שוב. היסטוריית git וגיבויים קודמים עשויים לשמור עותקים.העריכות שלכם מנצחות
רשומה שנערכה ביד היא שלכם מאותו רגע. הסבב אף פעם לא משכתב דף שהוא לא כתב, או דף שהשתנה מאז.
החרגת פרויקט מהפרופיל
הסימון של פרויקט יכול להגדיר
contribute = falseכדי שלא יילמד ממנו דבר, ו-consume = falseכדי שלא יקבל את התקציר.סקירה ובנייה מחדש
profile reviewמראה כל רשומה עם הראיות שלה ואת ההרגלים שעוד לא הגיעו לסף.profile rebuildקורא מחדש כל פרויקט מההתחלה, אף פעם לא מסיר רשומה, ולא נוגע במה שנערך או הוסר.
מה המחיקה מסירה ומה עשוי להישאר בהיסטוריה
# הפרויקט הזה לא מלמד את הפרופיל ולא מקבל אותו
[profile]
contribute = false
consume = false
אדם אחד, פרופיל אחד. צוות, בהסכמה.
בשרת למפעיל יחיד הפרופיל פעיל ומשותף לכל ה-workspaces. בשרת מרובה משתמשים הוא כבוי עד שמפעילים אותו.
פרטי לכל מפעיל
כשמפעילים זאת לחשבונות משתמשים במסד הנתונים, כל אדם מקבל פרופיל מוגבל שרק הוא ו-root יכולים לקרוא. זהויות של trusted-proxy אינן כפופות לגבול ההרשאות הזה; האחריות להרשאות היא של ה-proxy.
פרופיל צוות דורש שני קולות
share = "global"או"workspace"יוצר פרופיל שכולם מקבלים. הרגל מצטרף אליו רק לפי ראיות מלפחות שני מפעילים, והתקציר נפתח בכותרת ברירות מחדל של הצוות, כדי שהסוכן ידע שהן משותפות.עבודה ופרטי בנפרד
share = "workspace"שומר פרופיל אחד לכל workspace, לשני לקוחות או לעבודה ולבית.
# שרת משותף: פרופיל פרטי אחד לכל מפעיל
[profile]
enabled = true
share = "auto"
min_projects = 2
שאלות ותשובות
האם הפרופיל עוקף את הכללים של הפרויקט?
לא. ההוראות שלכם באות ראשונות, אחריהן קובץ הכללים של הריפוזיטורי, ואחריו הזיכרון של הפרויקט. הפרופיל הוא ברירת המחדל האחרונה, ונעשה בו שימוש רק כשאף דבר ספציפי יותר לא קובע, והסוכן מציין באיזו ברירת מחדל נעזר.
האם הוא צריך LLM?
לא. האיסוף וההתכנסות עובדים על רשימות מילים ועל ההצהרה החדשה ביותר. כשספק מוגדר, הסבב משתמש בו כדי לסווג ולנסח מחדש רשומות בקריאות עם בדיקת סכמה, וחוזר למסלול בלי LLM בכל שגיאה. מגדירים llm = false כדי לשמור אותו אופליין לגמרי.
האם הוא יכול ללמוד משהו מהקוד של לקוח?
הוא קורא את הפרומפטים שלכם ואת הדפים המוכנים של הפרויקט, אף פעם לא פלט של כלים, ולכן טקסט שסוכן רק ראה לא יכול להפוך להעדפה. פרויקט עם contribute = false בסימון שלו נשאר מחוץ לתמונה לגמרי, כולל ראיות שנאספו קודם.
מה קורה בשרת משותף?
הפרופיל כבוי עד שמפעילים אותו. אז חשבונות משתמשים במסד הנתונים מקבלים פרופילים פרטיים שרק האדם ו-root יכולים לקרוא. פרופיל צוות משותף הוא בחירה נפרדת, ודורש ראיות משני מפעילים. זהויות של trusted-proxy מסתמכות על ההרשאות של ה-proxy.
אפשר לכבות אותו?
כן. enabled = false או share = "off" בקונפיגורציית השרת מסירים אותו לגמרי. inject_on_session_start = false משאיר את התקציר מחוץ לתחילת הסשן, והפרופיל ממשיך לענות על שאילתות.
תנו לסוכנים שלכם זיכרון, כבר היום.
חינמי וקוד פתוח ברישיון MIT. יכולות הזיכרון הבסיסיות לא דורשות מפתח API למודל; סוכן הקוד עשוי לדרוש חשבון משלו.
