SSD Nodes Learn 8GB RAM — $66/שנה
מדריכים Matt Connorמאת Matt Connor · עודכן 2026-08-01

איך מוסיפים ל-Claude Code זיכרון ב-VPS עם Recall

Recall מתעד כל הפעלת Claude Code ומייצר סיכום מקומי שאפשר להמשיך ממנו. הגדירו אותו ב-VPS, בדקו את דרישות Python וחסכו קריאה חוזרת לקוד.

Verified Every command ran end-to-end on a fresh Ubuntu 24.04 server, July 30, 2026.

מה Recall עושה עבור הזיכרון של Claude Code

Recall הוא תוסף עבור Claude Code, שמספק לכל פרויקט זיכרון בין הפעלות. הוא כותב שני קובצי markdown בתיקייה .recall/ בתוך הפרויקט: יומן שניתן להוסיף אליו בלבד, המתעד את מה שהתרחש, וסיכום קצר של המקום שבו הפסקתם. שני הקבצים נוצרים במחשב שבו אתם עובדים, באמצעות מסכם Python מקומי. לכן הזיכרון עצמו אינו צורך אסימוני API.

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

גרסה 0.4.0 של Recall היא הגרסה הנוכחית נכון ליולי 2026, והפרויקט מופץ ברישיון MIT. זהו תוסף. הוא אינו מבצע קריאות רשת.

מה דרוש לכם ב-VPS

ווי הלכידה של Recall הם סקריפטים של Python שמגיעים עם התוסף. אין להם תלויות של צד שלישי, ולכן הדרישה המעשית היחידה היא מפרש.

python3 -V

Ubuntu 24.04 מחזיר Python 3.12.3. Recall תומך ב-Python 3.9 ובגרסאות חדשות יותר. תמונות קונטיינר מינימליות עשויות שלא לכלול מפרש כלל, ואז ה-shell מחזיר python3: command not found. התקינו מפרש לפני שתמשיכו.

sudo apt update && sudo apt install -y python3

NumPy הוא מאיץ אופציונלי של שלב אחד בתהליך יצירת הסיכום. אין צורך בו.

python3 -c "import numpy"

ModuleNotFoundError: No module named 'numpy' הוא פלט תקין במקרה זה. למייצר הסיכומים יש נתיב המבוסס על Python טהור, וחבילת הבדיקות של הפרויקט מוודאת ששני הנתיבים בוחרים את אותם משפטים.

לזיכרון של הפעלות יש חשיבות רבה יותר בשרת מאשר במחשב נייד, משום שעבודת שרת מתבצעת בביקורים קצרים הפרוסים על פני ימים. אם כבר יש לכם Claude Code פועל בתוך tmux ב-VPS, Recall הוא הרכיב שמעביר את ההפעלה של אתמול להפעלה של היום.

התקנת Recall ממרקטפלייס התוספים

יש להקליד שתי פקודות בתוך סשן של Claude Code:

/plugin marketplace add raiyanyahya/recall
/plugin install recall@recall

הפקודה השנייה קוראת את plugin@marketplace. שני השמות הם recall כאן. הדבר נראה כמו שגיאה בהעתקה ובהדבקה, אך זו אינה שגיאה.

בדקו את ההתקנה באמצעות אחת מהפקודות של התוסף:

/recall:show

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

כדי להריץ את התוסף מתוך checkout, יש לשכפל תחילה את המאגר ולאמת אותו:

git clone https://github.com/raiyanyahya/recall ~/recall
cd ~/recall && claude plugin validate .

claude plugin validate . קוראת את המניפסט מתוך .claude-plugin/ ומדווחת אם מבנה התוסף תקין. לאחר מכן הפעילו את Claude Code מתוך ספריית הפרויקט באמצעות claude --plugin-dir ~/recall.

מה כותבות ה-hooks ומתי

Recall רושם שלושה hooks של Claude Code. כל אחד מהם מריץ סקריפט Python מתוך ספריית ה-plugin.

  • SessionStart מופעל בעת האתחול, החידוש והניקוי. הוא מציג את context.md, כדי שהסשן ייפתח כשהסיכום שלך גלוי.
  • Stop מופעל בכל פעם ש-Claude מסיים תגובה. הוא מוסיף את הסבב הזה ליומן.
  • SessionEnd מופעל עם סגירת הסשן, ויכול ליצור מחדש את הסיכום.

כתוצאה מכך נוצרים שני קבצים, ושניהם נמצאים בתוך .recall/.

  • history.md הוא הרשומה שנוספים אליה בלבד: הנחיות, תגובות, קבצים שנעשה בהם שימוש ופקודות שהורצו.
  • context.md הוא התקציר שנוצר: המטרה, סיכום, השלבים הבאים, קבצים שנעשה בהם שימוש, פקודות שהורצו והקשר של git.

לאחר סשן אמיתי אחד, בדוק את הספרייה.

ls -la .recall/

אתה אמור לראות את history.md עם תוכן בתוכו. ייתכן שלא תראה כלל את context.md, וזוהי התנהגות ברירת המחדל ולא תקלה. auto_save_context הוא off, אלא אם הגדרת אותו, ולכן הסיכום נכתב רק כאשר אתה מבקש זאת:

/recall:save

פקודה זו מריצה את המסכם המקומי על history.md ומשכתבת את context.md. האלגוריתם הוא דירוג TF-IDF (תדירות מונח, תדירות מסמך הפוכה) שמזין דירוג משפטים באמצעות TextRank. האלגוריתם דטרמיניסטי ומבוסס על חילוץ, כלומר הוא בוחר משפטים שכבר קיימים ביומן. לא מופעל שום מודל, ולכן שלב זה אינו כרוך בעלות ופועל גם כשהמחשב מנותק מהרשת.

הגדרת Recall עבור פרויקט אחד

התצורה נמצאת בקובץ recall.config.json בספריית השורש של הפרויקט. אלה ערכי ברירת המחדל שסופקו:

{
  "output_dir": ".recall",
  "capture_history": true,
  "summary_sentences": 8,
  "redact": true,
  "include_git": true,
  "max_input_chars": 200000
}
  • output_dir קובע היכן נשמרים שני הקבצים. יש להשאיר אותם בתוך הפרויקט.
  • capture_history מפעיל ומשבית את יומן history.md.
  • auto_save_context מקבל את הערכים off או on_end, וערך ברירת המחדל הוא off.
  • summary_sentences קובע כמה משפטים נשמרים בתוך context.md. הגדלת הערך יוצרת סיכום ארוך יותר ומגדילה מעט את העומס בעת התחלת הפעלה.
  • redact מסיר תבניות נפוצות של סודות לפני כתיבה כלשהי לדיסק.
  • include_git מוסיף לסיכום את ה-diff הנוכחי ואת ה-commits האחרונים.
  • max_input_chars מגביל את כמות history.md שהמסכם קורא בכל מעבר.

בפרויקט שפועל ב-VPS, השינוי השימושי הוא שמירה אוטומטית. הפעלה בשרת מסתיימת לעיתים קרובות כאשר הטרמינל מתנתק, ולא כאשר מחליטים לעצור אותה.

{
  "auto_save_context": "on_end",
  "summary_sentences": 12
}

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

touch .recall/.capture-paused

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

כמה Recall חוסך בטוקנים?

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

ChartTypical cost of resuming work, per session
The data behind this chart
[
  {
    "label": "Recall context.md",
    "char_count": "4,800",
    "est_tokens": "1,200"
  },
  {
    "label": "Hand-written CLAUDE.md",
    "char_count": "3,200",
    "est_tokens": "800"
  },
  {
    "label": "Re-reading the repo",
    "char_count": "120,000",
    "est_tokens": "30,000"
  },
  {
    "label": "Full transcript replay",
    "char_count": "340,000",
    "est_tokens": "85,000"
  }
]

אלה נתונים אופייניים לפרויקט בגודל בינוני, ולא מדידה של הפרויקט שלך. סיכום של Recall נטען בכ־1,200 טוקנים, בהתאם לטענה שפורסמה בפרויקט ולפיה חידוש הפעלה דורש 1 עד 2 אלף טוקנים. הפעלה מחדש של תמליל מלא מהפעלה קודמת טוענת מחדש את כל השיחה, בהיקף של כ־85,000 טוקנים. כאשר המודל משחזר את הידע על הפרויקט באמצעות קריאת קבצים, הצריכה נמצאת בין שתי האפשרויות, בסביבות 30,000 טוקנים, והיא גדלה עם גודל המאגר. השורה CLAUDE.md נועדה לספק קנה מידה: היא זולה יותר משום שהיא קצרה וסטטית, והיא מוסרת למודל את הכללים הקבועים שלך במקום את אירועי ההפעלה הקודמת.

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

wc -c .recall/context.md .recall/history.md
echo $(( $(wc -c < .recall/context.md) / 4 ))

בתוך הפעלה, /context מציגה את מה שנטען כעת לחלון ההקשר, ו־/cost מדווחת את הסיכומים המצטברים של ההפעלה. התחל הפעלה אחת ללא הקשר קודם, התחל את ההפעלה הבאה כאשר סיכום כבר זמין, והשווה ביניהן. לקבלת התמונה המלאה של אופן חלוקת הטוקנים בפועל במהלך הפעלה, כיצד Claude Code משתמש בטוקנים כולל פירוט.

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

בניית הסיכום מחדש ללא הפעלה

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

python3 ~/recall/scripts/make_context.py --help

פלט העזרה מפרט את הדגלים שהוא מקבל: --cwd עבור שורש הפרויקט, --transcript עבור קובץ תמלול מפורש, --quiet לדיכוי הפלט, ו---harness לבחירה בין claude לבין opencode. הפנה אותו לפרויקט:

python3 ~/recall/scripts/make_context.py --cwd /srv/projects/api

הוא קורא את תמלול ההפעלה ואת history.md, ולאחר מכן כותב את context.md תחת הספרייה שציינת. אם התקנת דרך marketplace, התוסף נמצא בספרייה ש-Claude Code מנהל, ו-/recall:save היא הדרך הנתמכת לבצע את אותה משימה.

מדוע לא נכתב דבר

אין תיקיית .recall/ לאחר הפעלה מלאה. ה־hooks לא הופעלו. הקלד /recall:show כדי לוודא שהתוסף נטען, ולאחר מכן הרץ python3 -V. פקודת ה־hook מנסה תחילה את python3 ולאחר מכן את python, ולכן מחשב שאין בו אף אחד מהם אינו כותב דבר ואינו מציג הודעה על כך.

history.md גדל, אך context.md אינו משתנה לעולם. auto_save_context הוא off כברירת מחדל. הרץ /recall:save, או הגדר את המפתח ל־on_end ותן ל־SessionEnd hook לבצע זאת.

הקבצים מופיעים תחת הפרויקט הלא נכון. Recall כותב נתיבים יחסיים לתיקייה שממנה הופעל Claude Code, ולכן הפעלת session מתיקיית הבית שומרת שם את הזיכרון. התחל מתיקיית השורש של הפרויקט, והשתמש ב־ls -la .recall/ כדי למצוא היכן הקבצים נשמרו בפועל.

הלכידה נעצרה ולא התקבלה שום אזהרה. בדוק אם קיים סמן ההשהיה באמצעות ls -a .recall/. קובץ .capture-paused שיצרת בשבוע שעבר עדיין פעיל ומבצע את תפקידו.

הסיכום דל לאחר session ארוך. max_input_chars מגביל את קלט המסכם ל־200000 תווים, ולכן יומן ארוך מאוד נחתך. בצע רוטציה שלו.

mv .recall/history.md .recall/history-2026-07-30.md

לאחר מכן הרץ session קצר ובדוק שוב את ls -la .recall/ כדי לוודא שנוצר history.md חדש.

היכן Recall מפסיק

Recall הוא יומן יחד עם מסכם, וחשוב להבהיר מה אינו נכלל בכך.

המסכם הוא מחלץ. TextRank בוחר משפטים שכבר נמצאים בתוך history.md, ולכן אינו בוחן אם החלטה הייתה נכונה. החלטה שגויה שתועדה ביום שלישי נקראת בדיוק כמו החלטה טובה שתועדה ביום רביעי. כאשר ההשלכות משמעותיות, קראו את context.md ותקנו אותו ידנית. זהו קובץ markdown, ושום דבר אינו מונע מכם לערוך אותו.

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

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

הסיכום מטופל כקלט שאינו מהימן, כברירת מחדל מתוכננת. context.md מוזרק בתוך בלוק fenced ומסומן בהתאם, ו-Claude שואל לפני שהוא מסתמך עליו. התכנון הזה קיים משום שספריית .recall/ שנכללת ב-commit היא מקום שבו כל מי שיש לו הרשאת commit יכול לכתוב טקסט שהסוכן שלכם יקרא. קבעו פעם אחת אם .recall/ הוא אישי או משותף: הוסיפו אותו אל .gitignore עבור זיכרון אישי, או כללו אותו ב-commit ובדקו אותו כמו כל תרומה אחרת. אם הסוכן פועל ללא השגחה, הפעלת Claude Code באופן בטוח ב-VPS עוסקת בגבול הרחב יותר.

הסרת מידע רגיש מתבצעת במידת האפשר. היא מכוונת לדפוסים נפוצים, כגון מפתחות API, אסימונים, בלוקי PEM והקצאות .env. קראו את .recall/ לפני שתכללו אותו ב-commit.

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

FAQ

האם Recall שולח את הקוד או את תמלילי השיחות שלי למקום כלשהו?

לא. מנגנוני הלכידה ומחולל התקצירים הם סקריפטים של Python שפועלים במחשב שלך, התוסף אינו מכיל מפתח API ואינו מבצע קריאות רשת. יצירת התקציר משתמשת ב-TF-IDF וב-TextRank במקום במודל, ולכן הפעולה אינה כרוכה בעלות ופועלת גם כשהמחשב מנותק מהרשת. החיסרון הוא שהתקציר הוא מחלץ: הוא בוחר משפטים מתוך היומן שלך במקום לנסח משפטים חדשים.

מדוע .recall/context.md חסר או אינו מעודכן?

auto_save_context מוגדר כברירת מחדל ל-off, ולכן התקציר נוצר מחדש רק כאשר מריצים את /recall:save. הגדר את "auto_save_context": "on_end" ב-recall.config.json כדי שהתקציר ייכתב מחדש עם סיום כל הפעלה. אם גם history.md חסר, מנגנוני הלכידה אינם פועלים כלל: ודא שהתוסף נטען באמצעות /recall:show, ולאחר מכן ודא ש-python3 -V מחזיר תשובה בשרת הזה, מכיוון שמנגנוני הלכידה הם סקריפטים של Python.

כמה Recall חוסך בכל הפעלה?

טעינת תקציר צורכת בערך 1,200 אסימונים, לעומת בדרך כלל 30,000 אסימונים עבור מודל שנדרש לקרוא מחדש את המאגר שלך כדי להבין היכן הוא נמצא. אלה נתונים אופייניים. מדוד את הנתונים שלך באמצעות wc -c .recall/context.md ופקודת /context בתוך הפעלה, והשווה בין הפעלה מאפס לבין הפעלה שממשיכה מתקציר.

האם עדיין נחוץ לי קובץ CLAUDE.md?

כן, ולשני הקבצים יש תפקידים שונים. CLAUDE.md הוא קובץ שאתה כותב במכוון: הכללים הקבועים ופקודות הבנייה. context.md נוצר על סמך מה שהתרחש בפועל בהפעלה הקודמת, ולכן הוא כולל את ההעברה שנמצאת באמצע ושלעולם לא היית חושב לתעד. שמור את שני הקבצים.

האם VPS יחיד יכול לשמור זיכרון עבור כמה פרויקטים?

כן. Recall שומר את הזיכרון ב-.recall/ בתוך ספריית כל פרויקט, ולכן שני פרויקטים באותו שרת שומרים יומנים ותקצירים נפרדים. הפעל את Claude Code מספריית הבסיס של הפרויקט בכל פעם, מכיוון שהקבצים משויכים לספריית העבודה ולא לחשבון המשתמש.