המוצר
עוד דברים שאפשר לעשות
העברות וחיפוש הם השימוש היום-יומי. אלה שאר הדברים שזיכרון שחי בשרת אחד יכול לעשות בשבילכם, מהעברת עבודה בין פרויקטים ועד הפרדה בין הזיכרון של לקוח אחד לזה של לקוח אחר.
סוכן אחד מבקש משהו מהסוכן של פרויקט אחר
שני repositories שמדברים דרך API, לכל אחד סוכן משלו וזיכרון משלו. הסוכן של ה-frontend מכיר את הפרוטוקול. במקום לקרוא את כל ה-repository של ה-API, הוא כותב בקשה מלאה ומניח אותה ב-inbox של הפרויקט ההוא.

איך זה נראה
ב-repository של ה-frontend
> תבקש מהסוכן ב-default/api להוסיף endpoint /v1/export שמזרים NDJSON, לשמור על ה-auth middleware הקיים, ותשלח את זה דרך ai-memory.
הסוכן קורא ל-memory_message_send עם גוף הודעה שעומד בפני עצמו. הבקשה חייבת להסתדר לבד, כי מי שקורא אותה לא רואה את הפרויקט הזה.
מאוחר יותר, ב-repository של ה-API
📬 ai-memory: הודעה 1 מפרויקט אחר ממתינה ב-inbox של הפרויקט הזה.
> תבדוק את ה-inbox שלי ב-ai-memory.
הסוכן קורא ל-memory_message_pop, מקבל את הבקשה יחד עם מי ששלח אותה, ועובד לפיה. משיכה שנייה לא מחזירה כלום.
# שולחים מהפרויקט הנוכחי
ai-memory message send --to-workspace default --to-project api \
--subject "export endpoint" "Add a /v1/export endpoint that streams NDJSON…"
# בפרויקט השני: מציגים בלי לצרוך, או תופסים את הוותיקה ביותר
ai-memory message list
ai-memory message pop
# מתחרטים לפני שההודעה נתפסה
ai-memory message cancel --id <message-id>
ממוענת לפרויקט
הודעה נשלחת ל-workspace ולפרויקט, וכל סשן בפרויקט הזה יכול לתפוס אותה. אחרי שנתפסה היא יוצאת מהתור, כמו העברת מקל.
שום דבר לא נכנס להקשר מעצמו
ההודעה בתחילת הסשן נושאת רק ספירה. טקסט ההודעה מגיע לסוכן רק במשיכה מכוונת, מגודר ומסומן כלא מהימן, כשהשולח מוצג מחוץ לגדר.
נכשל במצב סגור
פרויקט היעד חייב להיות קיים, ולכן שגיאת הקלדה נדחית במקום לנחות ב-inbox שאף אחד לא קורא. כל inbox מחזיק לכל היותר 256 הודעות ממתינות.
ניתן לביטול, נרשם ביומן
השולח יכול לבטל הודעה עד שהיא נתפסת. סודות מוסרים בשליחה, גודל הגוף מוגבל, ובשרת משותף כל הודעה רושמת מי שלח אותה.
מפרידים בין לקוחות, mono-repos ועבודה אישית
הזיכרון מתויק לפי workspace ופרויקט. checkout עם git remote מתויק לפי ה-remote הזה, כך שאותו repository שעבר clone פעמיים חולק זיכרון אחד, ותיקייה בלי remote משתמשת בשם שלה. קובץ קטן משנה את השאר.

workspace אחד לכל לקוח
מניחים
.ai-memory.tomlב-~/work/client-a/, וכל repository שמתחתיו מתויק תחת ה-workspace הזה. שום דבר מלקוח A לא צץ בזמן שעובדים בשביל לקוח B.Mono-repo כפרויקט אחד
קובץ סימון שמגדיר project מצמיד אליו את כל תתי-התיקיות, כך שהחבילות חולקות זיכרון אחד. בלי project, כל חבילה שומרת על זיכרון משלה.
Git worktrees
worktrees מקושרים מתמפים ל-repository הראשי, כך ש-branch שעשו לו checkout במקום אחר שומר על אותו זיכרון.
שני סוכנים בפרויקט אחד
המצביע לפרויקט הנוכחי מבודד לכל קורא, ולכן Claude Code ו-Codex יכולים לרוץ זה לצד זה באותה תיקייה בלי להתבלבל.
מחשב אחד, שני מעסיקים
רושמים כל שרת עם
ai-memory server addונותנים לו שם בקובץ הסימון עםserver = "team-b". ה-hooks מהעץ הזה הולכים לשם ולשום מקום אחר, ושם שלא נפתר לא שולח כלום.identity מוצמד
identity = "acme/platform"מתייק checkout תחת המפתח הזה בכל מקום שהוא נמצא, גם בלי remote.
# כל repository מתחת לתיקייה הזאת מתויק תחת ה-workspace client-a
workspace = "client-a"
כללים שמגיעים לכל סשן
אומרים לסוכן לזכור משהו לתמיד, וזה הופך לדף בוויקי. כללים מתויקים בנפרד מעובדות, ותדריך הסשן יכול להציב אותם מול הסוכן עוד לפני הפרומפט הראשון.
אומרים פעם אחת
"תזכור: לפני שנוגעים בקוד התשלומים, קוראים את הערות ה-PCI." הסוכן כותב דף קבוע. מבקשים שזה יהיה כלל גלובלי, והוא חל על כל הפרויקטים שלכם.
התדריך מכניס אותם
עם
inject_on_session_start = trueבקובץ הסימון של הפרויקט, דפים מוצמדים, כללים ומשבצות נוספים לתחילת ההקשר של כל סשן חדש.ה-lint מציע קידום
כשכלל נראה יציב מספיק,
memory_lintמציע להעתיק אותו ל-CLAUDE.mdאו ל-AGENTS.md. ai-memory אף פעם לא עורך את הקבצים האלה בעצמו.רשומות ההחלטות נשארות שלכם
ai-memory אף פעם לא כותב לתוך ה-repository שלכם. שומרים תיקיית ADR, ורושמים אותה תחת
[capture] ignore_pathsכדי שהוויקי לא יחזיק עותק מיושן שלה.
# מוסיפים דפים מוצמדים, כללים ומשבצות לתחילת כל סשן
[briefing]
inject_on_session_start = true
פתקים שפגים, ומשוב שמסדר מחדש
תזכור את זה עד יום שישי
דף שנכתב עם
expires_atיוצא מהחיפוש אחרי התאריך הזה. הוא עדיין שם בשביל חיפוש שמבקש במפורש דפים שפגו.הדף הזה היה שגוי
memory_feedbackרושם על דף מועיל, לא מועיל, מיושן או שגוי. מיושן ושגוי מורידים אותו בדירוגים הבאים ומזרזים את ההתיישנות שלו. משוב אף פעם לא מוחק.מעבירים סשן
סשן שנלכד בפרויקט הלא נכון, אחרי
cdלתיקיית scratch, אפשר לחבר מחדש עםai-memory move-session. התצפיות והדף שלו עוברים איתו.מתאוששים מצמצום הקשר
כש-Claude Code או Codex מצמצמים את ההקשר שלהם, hook כותב קודם דף סשן טרי, כך שמה שנחתך אפשר לשלוף בחזרה.
קוראים בדפדפן, לוקחים לכל מקום
ממשק web לקריאה בלבד
מפעילים את השרת עם
--enable-web, והדפים של כל הפרויקטים נגישים לדפדוף, מקובצים למושגים, החלטות, מלכודות וסשנים, עם JSON API תחת/api/v1.פורמט פתוח
כל פרויקט הוא bundle של Open Knowledge Format.
ai-memory export-okfאורז אותו לכל כלי שקורא OKF, ולכל השאר הקבצים הם markdown פשוט.Skills לסוכן שלכם
ai-memory install-mcpמתקין גם קטע ניתוב קצר ו-Agent Skills מנוהלים, כך שהסוכן יודע איזה כלי עונה על "דיברנו כבר על זה?" ואיזה שולח הודעות.
המטלות שה-launcher לוקח על עצמו
ai-memory run מפעיל את הסוכן דרך שרת הזיכרון. הוא גם שומר את הקובץ הבינארי מעודכן, סוגר סשנים, ומזהיר לפני שהוא מנטרל משהו.

שדרוג בפקודה אחת
ai-memory upgradeמוריד את הגרסה המתאימה, בודק את ה-checksum, מחליף את הקובץ הבינארי ומרענן את ה-hooks. התקנות Docker, Homebrew, AUR ו-RPM שומרות על המסלול שלהן.אזהרה לפני שההגנות יורדות
ai-jail ב-GitHubai-memory run --yoloאומר מה הוא עומד לנטרל, וב-Linux וב-macOS עם ai-jail זמין, מציע להריץ מחדש את הסשן בתוך ה-sandbox עם checklist של מה שהסשן המגודר יכול לראות.--jailנכנס ישר פנימה עם ברירות מחדל סבירות.סביבה בשביל ה-harness
--env KEY=VALUEו---env-fileמגיעים גם לסוכן שמופעל וגם לחיפוש הסשן העצמי של ai-memory, כך ש-CLAUDE_CONFIG_DIRלכל חשבון לא צריך script wrapper.סשנים נסגרים ביציאה
סוכנים בלי hook של סיום סשן (Command Code, Kiro CLI, Antigravity CLI) מקבלים את הסיכום וההעברה שלהם כש-launcher יוצא.
finalize-session --reopenמכסה שיחה שהמשיכה אחרי זה.התחברות לממשק ה-web
בוויקי המובנה יש דפי login והחלפת סיסמה למשתמשי סיסמה, ודף שרק ל-root יש גישה אליו לאישור או דחייה של הצעות auto-improvement ממתינות על פני כל הפרויקטים.
Stopwords בשפה שלכם
[search.fts] stopwordsמפרט את מילות הפונקציה של השפה שלכם, כך שדירוג טקסט מלא בוויקי בפורטוגזית לא מוטה על ידיdeו-que.
שאלות ותשובות
סוכן בפרויקט אחד יכול לקרוא את הזיכרון של פרויקט אחר?
לא. הזיכרון מתויק לפי פרויקט, וההודעות הן החצייה המכוונת היחידה: פרויקט רואה רק הודעות שממוענות אליו או שנשלחו ממנו. גוף ההודעה חייב לעמוד בפני עצמו, כי מי שקורא אותו לא רואה את הקבצים של השולח.
הודעה שהתקבלה מטופלת כהוראות?
לא. הודעה שנמשכה מגודרת כקלט לא מהימן מפרויקט אחר ונושאת הערה שאומרת את זה. הסוכן בוחן אותה איתכם כבקשת משימה, והשולח מוצג מחוץ לגדר כדי שתוכלו לשפוט קודם אם לסמוך עליו.
מה קורה אם שני סשנים בודקים את אותו inbox?
המשיכה הראשונה תופסת את ההודעה והשנייה לא מקבלת כלום. הודעה נתפסת פעם אחת בדיוק, אותו כלל שחל על העברות.
חייבים להגדיר workspaces?
לא. בלי קובץ סימון הכול מתויק תחת workspace בשם default, עם ה-git remote בתור הפרויקט, או שם התיקייה כשאין remote. מוסיפים .ai-memory.toml רק כשרוצים הפרדה בין לקוחות, mono-repo כפרויקט אחד, הפרדה בין זיכרון עבודה לזיכרון אישי, או שרת שני.
תנו לסוכנים שלכם זיכרון, כבר היום.
חינם ובקוד פתוח, ברישיון MIT. בלי חשבון ובלי מפתח API.