הבעיה: סוכן שממשיך לפעול אחרי שחלון-ההקשר מתמלא
חלון-ההקשר של מודל-שפה מוגבל בגודלו, וסוכן שמריץ עשרות או מאות צעדים ברצף — כל אחד מוסיף להיסטוריה את ההנחיה, הנימוק, קריאת-הכלי ותוצאתו — ממלא אותו בהדרגה. הערך זיכרון סוכן באתר הזה מתאר מה קורה כשהחלון מתמלא: הסוכן ממשיך לפעול על תמונה חלקית של המשימה, בלי לעצור ובלי להודיע. כיווץ-הקשר הוא המנגנון הקונקרטי שמונע מהתרחיש הזה לקרות בפועל: כשהשיחה מתקרבת לגבול חלון-ההקשר, המערכת מפעילה בעצמה קריאה נוספת למודל שמסכמת את כל מה שקרה עד כה, ופותחת חלון-הקשר חדש שמתחיל מהתקציר הזה במקום מההיסטוריה המלאה — כך שהסוכן יכול להמשיך לעבוד על אותה משימה לאורך זמן רב בהרבה ממה שחלון-הקשר בודד היה מאפשר.
המימוש המתועד ביותר: auto-compact ב-Claude Code
התיעוד הרשמי של Claude Code, כלי-הקידוד-הסוכני של Anthropic, מתאר תכונה בשם "חלון-כיווץ-אוטומטי" (Auto-Compact Window) שמפעילה כיווץ באופן אוטומטי כשהשיחה מתקרבת לגבול חלון-ההקשר של המודל. הסף המדויק תלוי בדגם: אצל מודלים עם חלון של 200 אלף טוקן הכיווץ מופעל בקרבת הגבול הזה, ואצל מודלים עם חלון-הקשר טבעי של מיליון טוקן ומעלה — ברירת-המחדל היא כ-967 אלף טוקן. אפשר לשנות את הסף עצמו בכמה דרכים: פקודת "/autocompact <גודל>" ששומרת את ההעדפה לצמיתות, דגל-שורת-פקודה לשימוש חד-פעמי, או משתנה-סביבה ייעודי; הטווח האפשרי הוא בין 100 אלף למיליון טוקן, כפוף לגבול-האמיתי של הדגם. מעבר לכיווץ האוטומטי, יש גם פקודה ידנית — "/compact", עם אפשרות להוסיף הנחיה כמו "התמקד בדוגמאות-קוד ובשימוש ב-API" — וגם אפשרות להגדיר הנחיות-כיווץ קבועות בקובץ ה-CLAUDE.md של הפרויקט.
למה לא פשוט להגדיר סף גבוה כמה שאפשר
אפשר להתפתות להגדיר את סף-הכיווץ קרוב ככל האפשר לגבול-האמיתי של המודל, כדי לדחות כיווץ למינימום ולהימנע מהעלות והסיכון-לאובדן-מידע שהוא כרוך בהם. אבל דחיית-כיווץ-יתר יוצרת סיכון הפוך: אם השיחה חוצה את הגבול-האמיתי לפני שהכיווץ מספיק להתבצע, הבקשה הבאה עלולה להיכשל לגמרי במקום להצטמצם בצורה מבוקרת. זו כנראה הסיבה שברירת-המחדל משאירה שולי-ביטחון — למשל כ-967 אלף טוקן מתוך מיליון אצל דגמים עם חלון-הקשר טבעי גדול — ושמומלץ להימנע מלדחוף את הסף הידני קרוב מדי לתקרה האמיתית של הדגם.
המנגנון: קריאה נפרדת למודל, לא "קיצוץ" פשוט
התיעוד הטכני מבהיר שכיווץ אינו פעולה חינמית: Claude Code שולחת בקשה נפרדת למודל, עם אותה הנחיית-מערכת ואותם כלים כמו בבקשה הרגילה, ומצרפת בסופה הנחיה לסכם את כל ההיסטוריה שנצברה; אז ההיסטוריה המקורית מוחלפת בתקציר שחזר. מכיוון שזו קריאה מלאה למודל שמעבדת את כל ההיסטוריה שהצטברה, התיעוד מציין אותה במפורש כאחד הגורמים לעלייה בצריכת-הטוקנים בסשן ארוך — ובמיוחד אם הסשן חזר לפעילות אחרי הפסקה שחרגה מחיי-מטמון-ההקשר (ראו הערך מטמון-הקשר), שכן אז הבקשה-לסיכום עצמה מעבדת את כל ההיסטוריה כקלט לא-ממוטמן, מה שמייקר אותה עוד יותר.
מה נשמר ומה נמחק
לא כל פרט מהשיחה שווה-ערך בעיני מנגנון-הכיווץ. לפי התיעוד, התקציר שנוצר שומר במפורש את בקשות-המשתמש והכוונה שלהן, מושגים-טכניים מרכזיים, קבצים שנבדקו או שונו לצד קטעי-קוד חשובים מהם, שגיאות ואיך תוקנו, משימות-ממתינות ועבודה נוכחית — ומוותר על פלטי-הכלים המלאים ועל שרשרת-הנימוק הביניימית שהובילה אליהם. כדי לפצות על האובדן הזה, Claude Code גם קוראת-מחדש עד חמישה מהקבצים שעודכנו לאחרונה, ומזריקה-מחדש את גוף כל אחת מיכולות-ההרחבה (Skills) שהופעלו בסשן (עד תקרה של 5,000 טוקן ליכולת) — אך לא את תיאורי-היכולות המקוריים שנטענו בתחילת הסשן. מנגנון קרוב אך נבדל, שהתיעוד מכנה "ניקוי תוצאות-כלים" (Tool Result Clearing), מוותר רק על פלטי-כלים ישנים בלי להפעיל סיכום מלא — נחשב לצורת-הכיווץ ה"קלה" ביותר.
כיווץ מול נקודות-בדיקה: /compact מול /rewind
כדאי להבדיל בין כיווץ לבין מנגנון קרוב אך שונה מהותית: נקודת-בדיקה (Checkpoint). התיעוד של Claude Code מציג את פקודת "/rewind" כחלופה לכיווץ במקרים מסוימים — היא לא מסכמת את ההיסטוריה אלא חותכת אותה בחזרה לנקודה מוקדמת יותר בשיחה — ומציעה תפריט-בחירה: לשחזר גם את הקוד וגם את השיחה, רק את השיחה (תוך שמירת הקוד הנוכחי), או רק את הקוד. התפריט כולל גם שתי אפשרויות-סיכום, כך ש-"/rewind" אינו בדיוק ההפך מכיווץ אלא מכיל אותו כאחת מאפשרויותיו. כיווץ, לעומת זאת, שומר תמצית של הכול ומאפשר להמשיך קדימה עם הידע שהצטבר, במחיר של פירוט. שתי הגישות משרתות תרחישים שונים: "/rewind" מתאים כשמתברר שכיוון-העבודה כולו היה שגוי וכדאי להתחיל אותו חלק מחדש; כיווץ מתאים כשהעבודה עצמה תקינה אבל היסטוריית-השיחה פשוט ארוכה מדי כדי להמשיך להחזיק אותה במלואה.
תכונה קרובה: חידוש-שיחה מתוך תקציר
מעבר לכיווץ שקורה תוך כדי סשן פעיל, התיעוד של Claude Code מזכיר גם תכונה קרובה אך נפרדת: כשמחדשים סשן ישן שהיה במצב-המתנה זמן ארוך, הכלי מציע לחדש אותו מתוך תקציר של השיחה הקודמת במקום מכל ההיסטוריה המקורית — עיקרון דומה לכיווץ עצמו (החלפת היסטוריה מלאה בתמצית), אבל מופעל בנקודת-כניסה שונה: לא כשחלון-ההקשר מתמלא תוך כדי עבודה רציפה, אלא כשמחליטים לחזור לעבודה ישנה אחרי הפסקה ארוכה. ההבחנה הזו ממחישה שכיווץ אינו אירוע חד-פעמי אלא דפוס חוזר, שיכול להתרחש בכמה נקודות שונות במחזור-החיים של סשן-סוכן.
למה זה קריטי דווקא בסוכני-קידוד
סוכני-קידוד מדגימים היטב למה כיווץ הפך תכונה חיונית ולא רק נוחות: משימת-פיתוח אמיתית עשוי לכלול עשרות קריאות-קבצים, הרצות-בדיקות שמחזירות פלט ארוך, וסבבי-תיקון חוזרים — כל אלה מצטברים מהר בתוך חלון-ההקשר. בלי כיווץ, סשן-קידוד ארוך היה פשוט נתקע ברגע שהחלון מתמלא, ומחייב את המשתמש לפתוח שיחה חדשה ולהסביר מחדש את כל ההקשר שכבר נצבר — בדיוק התרחיש שהערך זיכרון סוכן מתאר כבעיה מרכזית של סוכנים שרצים לאורך זמן. auto-compact הופך את המגבלה הזו לשקופה כמעט לגמרי מנקודת-המבט של המשתמש, ומאפשר לסשן להימשך שעות במקום להיעצר אחרי דקות.
התאמה אישית של הכיווץ דרך קובץ-הפרויקט
מעבר לברירת-המחדל, Claude Code מאפשרת להגדיר בקובץ CLAUDE.md של הפרויקט סעיף ייעודי בשם "הנחיות-כיווץ" (Compact Instructions), שמנחה את המודל מה לשמר ביתר-הקפדה כשהוא מבצע כיווץ בפרויקט הספציפי הזה — למשל להקפיד לשמר תמיד את רשימת-הבדיקות שעוד לא רצו, או את הפירוט המלא של החלטות-ארכיטקטורה שהתקבלו. זו דרך לתת לצוות-פיתוח שליטה על סדרי-העדיפויות של הכיווץ באופן שמתאים לאופי הפרויקט הספציפי, במקום להסתמך רק על ברירת-המחדל הכללית שמתאימה באותה מידה לכל פרויקט.
כיווץ ויכולות-הרחבה: מה נטען מחדש ומה לא
פרט טכני שממחיש כמה מדויק מנגנון-השחזור-לאחר-כיווץ: כשמסתיים כיווץ, Claude Code מזריקה-מחדש להקשר את גוף כל אחת מיכולות-ההרחבה (Skills) שהופעלו בסשן לפני הכיווץ, עד תקרה של 5,000 טוקן ליכולת אחת — כדי שהסוכן לא יאבד את ההנחיות המפורטות שהיכולת הזו כללה. אבל תיאורי-היכולות הכלליים שנטענו כאינדקס בתחילת הסשן, כדי לאפשר לסוכן לדעת אילו יכולות בכלל קיימות ולבחור ביניהן, אינם נטענים-מחדש אוטומטית אחרי כיווץ — כלומר הסוכן "זוכר" איך להשתמש ביכולות שכבר הפעיל, אבל לא בהכרח באילו יכולות נוספות הוא יכול להיעזר מעכשיו, אלא אם התקציר עצמו שימר את המידע הזה.
כיווץ ומטמון-הקשר: שני מנגנונים שיכולים להתנגש
כיווץ ומטמון-הקשר (ראו הערך הייעודי) פותרים בעיות שונות אך משפיעים זה על זה: מטמון-הקשר חוסך עלות כשהיסטוריית-השיחה נשארת יציבה וגדלה בהדרגה, ואילו כיווץ מחליף את ההיסטוריה כולה בתקציר חדש — כלומר הוא בהכרח שובר כל מטמון שהצטבר עד אז, כי הקידומת שהמטמון הכיר כבר לא קיימת. התיעוד של Claude Code מציין זאת ישירות: אם סשן מתחדש אחרי הפסקה ארוכה מחיי-המטמון, הבקשה-לכיווץ עצמה מתבצעת במחיר-מלא, בלי הנחת-המטמון, בדיוק בגלל הבעיה הזו. המשמעות המעשית: כיווץ תדיר-מדי לא רק מסכן אובדן-מידע אלא גם מבטל חלק מהיתרון הכלכלי שמטמון-ההקשר נועד לספק.
כיווץ מול זיכרון ארוך-טווח: מה נשאר בפנים, מה יוצא החוצה
יש להבדיל בין כיווץ לבין זיכרון ארוך-טווח, כפי שהוא מתואר בערך זיכרון סוכן: כיווץ פועל אך ורק על מה שכבר נמצא בתוך חלון-ההקשר הפעיל, ומצמצם אותו לתמצית שנשארת בפנים. זיכרון ארוך-טווח, לעומת זאת, מוציא מידע מחוץ לחלון-ההקשר לגמרי לתוך מחסן חיצוני, ומחזיר ממנו רק פריטים נבחרים כשצריך אותם. בפועל, מנגנון-כיווץ טוב יכול להשתמש בזיכרון ארוך-טווח כרשת-ביטחון: לפני שמידע נדחק החוצה במהלך הכיווץ, אפשר לשמור אותו במפורש בקובץ-זיכרון חיצוני — בדיוק העיקרון שמתואר בטכניקת "רישום-הערות מובנה" שהוזכרה קודם — כדי שגם אם התקציר עצמו מפספס פרט, עדיין יש דרך לשחזר אותו מהזיכרון החיצוני במקרה הצורך.
כיווץ כטכניקה בהנדסת-הקשר, ומה שעלול להשתבש
רשומת-הנדסה של Anthropic בשם "Effective Context Engineering for AI Agents" ממסגרת כיווץ כאחת הטכניקות המרכזיות בתחום הרחב יותר של הנדסת-הקשר (ראו הערך הייעודי באתר הזה): "הפרקטיקה של לקיחת שיחה שמתקרבת לגבול חלון-ההקשר, סיכום תוכנה, והתחלה-מחדש של חלון-הקשר חדש עם הסיכום" — ומכנה אותה "המנוף הראשון בהנדסת-הקשר להנעת קוהרנטיות ארוכת-טווח". אותה רשומה גם מזהירה במפורש: "כיווץ אגרסיבי מדי עלול לגרום לאובדן הקשר עדין אך קריטי" — כלומר הסיכום, מטבעו, בוחר מה חשוב ומה לא, וטעות בבחירה הזו נעלמת בלי סימן-אזהרה. הרשומה ממליצה גם על שתי טכניקות משלימות לכיווץ ולא תחליף לו: "רישום-הערות מובנה" (שמירת מידע חשוב בקובץ חיצוני-פרסיסטנטי לפני שהוא נמחק מההקשר) ו"ארכיטקטורת תת-סוכנים", שבה כל תת-סוכן מחזיר תקציר מכווץ בלבד להורה שלו במקום את כל ההקשר שאסף.