העברות הקשר בטוחות-מקביליות ל-Claude Code
הבעיה עם קובץ אחד
כל סשן של Claude Code מתחיל מאפס. סוגרים את הטרמינל, ההקשר נעלם. אין זיכרון של מה שבניתם, מה נשבר, אילו החלטות קיבלתם, מה בחצי בנייה.
העברות הקשר מתקנות את זה. בסוף כל סשן, כותבים מסמך מובנה. בתחילת הסשן הבא, קוראים אותו. עכשיו לסשן החדש יש הקשר מלא.
הגרסה הראשונה היא תמיד קובץ בודד. ~/.claude/context-handoff.md. כל סשן קורא אותו בהתחלה, כותב אליו בסוף. פשוט. אפקטיבי.
עד שפותחים טרמינל שני.
טרמינל A מסיים וכותב את ההעברה שלו. טרמינל B מסיים 30 שניות אחר כך ודורס אותו. ההקשר של טרמינל A נעלם. לעולם לא שמים לב כי הקובץ עדיין שם. פשוט יש בו את התוכן הלא נכון.
זהו מצב מרוץ של last-write-wins. וזה מחמיר ככל שמגדילים. אני מריץ 4 עד 6 טרמינלים של Claude Code במקביל. עם קובץ בודד, 3 עד 5 סשנים של הקשר נהרסים בשקט כל יום. המערכת נראית בריאה כי קובץ העברה תמיד קיים. אתם פשוט לא רואים מה חסר בו.
איך הגעתי לכאן
האבולוציה נראתה ככה:
ללא העברות. כל סשן מתחיל קר. מסבירים מחדש הכל. מבזבזים את 10 הדקות הראשונות להכוונת המודל. פה רוב האנשים נמצאים.
קובץ בודד. ~/.claude/context-handoff.md. CLAUDE.md אומר למודל לקרוא אותו בהתחלה ולכתוב אליו בסוף. סשנים מצטברים במקום להתאפס. שדרוג עצום. עבד מצוין במשך חודשים.
השבירה. התחלתי להריץ טרמינלים במקביל. תוכן באחד. תשתית באחר. דיבאגינג בשלישי. בניית ויקי ברביעי. כולם כותבים לאותו קובץ. הקשר התחיל להיעלם. לא שמתי לב במשך שבועות כי קובץ ההעברה תמיד היה מלא. פשוט חסרו בו 80% מהסשנים.
התיקון. כתיבה מקבילית מבוססת תיקייה. קבצים עם חותמת זמן. קריאת-הכל-בהתחלה. צריכת סימון-כנקרא. לקח 30 דקות ליישום.
החלק המתסכל הוא כמה התיקון היה מובן מאליו בדיעבד. בזבזתי שבועות של אובדן הקשר לפני שהבנתי שהארכיטקטורה היא הבעיה, לא המודל.
הארכיטקטורה
למערכת ההעברה הבטוחה-מקבילית המלאה יש 4 פעולות.
כתיבה. כל סשן כותב ל-~/.claude/handoffs/YYYY-MM-DD_HHMMSS_slug.md. חותמת הזמן מבטיחה ייחודיות. שני סשנים לא מתנגשים. ה-slug מתאר על מה הסשן עבד.
קריאה. בתחילת סשן, רשימת כל הקבצים שלא מסתיימים ב-_done.md. קריאת כל אחד ואחד. מיזוג כל ההקשר לסשן הנוכחי.
צריכה. אחרי הקריאה, שינוי שם של כל קובץ מ-file.md ל-file_done.md. סשנים עתידיים מדלגים על קבצים שנצרכו. התוכן המקורי נשאר על הדיסק לעיון.
ניקוי. מעת לעת מוחקים העברות שנצרכו שישנות מ-7 ימים. העברות שלא נצרכו לעולם לא נמחקות.
הנה מחזור החיים המלא:
התחלת סשן:
ls ~/.claude/handoffs/*.md (skip *_done.md)
--> קריאת כל העברה שלא נצרכה
--> שינוי שם file.md ל-file_done.md
--> מיזוג כל ההקשר לסשן הנוכחי
סיום סשן:
--> כתיבה ל-~/.claude/handoffs/YYYY-MM-DD_HHMMSS_slug.md
--> לעולם לא לדרוס קובץ של סשן אחר
ניקוי (תקופתי):
find ~/.claude/handoffs -name '*_done.md' -mtime +7 -delete
זו המערכת כולה. ללא מסד נתונים. ללא קבצי נעילה. ללא תיאום בין סשנים. כל סשן פועל באופן עצמאי והתיקייה מטפלת במיזוג.
שדרוג הזיכרון
תוך כדי תיקון ההעברות, נתקלתי באותה בעיה עם קבצי זיכרון.
MEMORY.md היה קובץ בודד שכל סשן טען. הוא התחיל ב-30 שורות. אחרי כמה שבועות שכל סשן הוסיף אליו, הוא הגיע ל-400+ שורות. Claude טוען את 200 השורות הראשונות של קבצי זיכרון אוטומטי. כל מה שאחרי שורה 200 היה בלתי נראה. החלטות, העדפות, הערות ארכיטקטוניות - הכל נחתך בשקט.
התיקון עוקב אחרי אותו דפוס. תפסיקו לשים הכל בקובץ אחד.
MEMORY.md הופך לאינדקס רזה. מתחת ל-200 שורות. כותרות מקטעים, סיכומים בשורה אחת, וקישורים לקבצי נושא.
קבצי נושא מחזיקים את הפרטים. identity.md לנתוני זהות ופרופיל. voice-rules.md לעיון מהיר במערכת קול. infrastructure.md למודלים, משימות מתוזמנות, נתיבים מרכזיים. completed-work.md ליוזמות שהושלמו.
MEMORY.md תמיד נטען. קבצי נושא נטענים לפי דרישה כשהמשימה רלוונטית. האינדקס נשאר מתחת למגבלת החיתוך. הפרטים זמינים כשצריך.
אותו עיקרון כמו תיקיית ההעברה. מבנה מחליף קובץ בודד עמוס.
הלפני והאחרי
לפני:
- קובץ העברה אחד ב-
~/.claude/context-handoff.md - הטרמינל האחרון שכותב מנצח, כל שאר ההקשר אבד
- קובץ MEMORY.md אחד שגדל ללא הגבלה
- תוכן אחרי שורה 200 בלתי נראה בשקט
- סשנים מפספסים הקשר באקראי ללא שגיאות נראות
אחרי:
- תיקיית העברה ב-
~/.claude/handoffs/ - כל סשן כותב קובץ בשם ייחודי
- כל ההעברות שלא נצרכו מתמזגות בתחילת סשן
- MEMORY.md הוא אינדקס של 200 שורות המקשר לקבצי נושא
- קבצי נושא נטענים לפי דרישה, לעולם לא נחתכים
- אפס אובדן הקשר בין טרמינלים מקביליים
מערכת ההעברה המקבילית רצה כבר שבוע. שישה טרמינלים, סשנים מקביליים, ללא הקשר שאבד. סשן הבוקר קורא 3-5 העברות מהיום הקודם ומתחיל עם מודעות מלאה לכל מה שקרה.
גנבו את הארכיטקטורה
הנה הבלוק של CLAUDE.md שאתם צריכים. העתיקו אותו לפרויקט שלכם.
## Context Handoff System
Handoffs are parallel-safe. Multiple terminals can write handoffs
without overwriting each other.
### On Session Start
1. Read all unconsumed handoffs:
ls ~/.claude/handoffs/*.md 2>/dev/null | grep -v '_done.md$'
2. Also check legacy location: ~/.claude/context-handoff.md
3. After reading, mark each consumed:
rename file.md to file_done.md
4. Clean up old consumed handoffs:
find ~/.claude/handoffs -name '*_done.md' -mtime +7 -delete
### On Session End
Write handoff to ~/.claude/handoffs/YYYY-MM-DD_HHMMSS_slug.md
Never overwrite another session's handoff.
מבנה התיקייה:
~/.claude/
handoffs/
2026-02-27_091522_blog-pipeline.md (לא נצרך)
2026-02-27_093401_wiki-entries.md (לא נצרך)
2026-02-26_201145_deploy-fix_done.md (נצרך)
2026-02-26_184230_content-batch_done.md (נצרך)
כל מסמך העברה מכיל 5 מקטעים:
- סיכום סשן. פסקה אחת. מה הייתה המטרה ומה קרה.
- מה השתנה. קבצים שנוצרו, שונו, נמחקו. נתיבים ספציפיים.
- מה עדיין צריך עבודה. משימות שלא הושלמו, באגים ידועים, צעדים הבאים.
- החלטות מפתח. בחירות ארכיטקטוניות, פשרות, דברים שהסשן הבא לא צריך לפתוח מחדש.
- הקשר פעיל. שם branch, תהליכים רצים, מצב סביבה.
שמרו על העברות עובדתיות. ללא פרשנות. סשן שקורא את זה ב-6 בבוקר צריך נתיבי קבצים וסטטוס, לא דעות על הרפקטור.
התובנה הרקורסיבית שווה מתן שם. תשתית הנדסת הקשר צריכה הנדסת הקשר משלה. מערכת ההעברה שמנהלת הקשר סשנים הייתה בעצמה שבורה מבעיית הקשר - סשנים דורסים אחד את השני כי הארכיטקטורה לא התחשבה במקביליות. התיקון היה להחיל את אותם עקרונות שאני משתמש בהם לכל דבר אחר: מבנה, מוסכמות שמות, ולעולם לא לשים את כל המצב בקובץ אחד.
קשור: ויקי העברות הקשר - מדריך העברות סשן מקביליות - איך להקים עוזר AI משלך