קלוד קוד: מה עושים אם רשימת הכלים השתנתה באמצע הסשן, וה-cache נפל איתה
מאת ירון דויטשר עודכן לאחרונה:
יומן השינויים של גרסה 2.1.267, שיצאה ב-9 בספטמבר, מונה 53 שורות. תשע מהן מזכירות במפורש את cache הפרומפט או חשיבה שנזרקה — וכולן, ביחד, מתארות מקרה אחד.
המקרה הזה שווה הסבר, כי הוא לא נראה כמו באג. הוא נראה כמו מכסה שנגמרה מוקדם.
הכלל: ה-cache של הפרומפט משתווה על תחילת הבקשה, והגדרות הכלים יושבות שם. כל דבר שמשנה את רשימת הכלים באמצע סשן מבטל את התחילית — ועד 2.1.267 זה קרה בלי שהמשתמש נגע בכלום.
מה בדיוק נשבר
השכבה הראשונה בכל בקשה היא הנחיות המערכת, ובתוכה הגדרות הכלים. זה כבר מתועד כאן בעלות סשן ו-cache הפרומפט, עם המשפט שקובע את הכול: שינוי בשכבה הראשונה מבטל את כל מה שאחריה.
מה שחדש ביומן השינויים הוא רשימת הדרכים שבהן השכבה הזאת זזה לבד:
- חידוש שיחה: סשן שחודש כתב מחדש את מערך הכלים כששרת MCP התחבר מחדש בתזמון שונה מהקודם. באותו מקבץ תוקן גם מקרה שבו סשן מחודש רינדר מחדש את התיאורים של הכלים במקום לנגן את אלה שהוקלטו, כשהתור הראשון הריץ כלי
- כלי שנעלם באמצע שיחה, משרת MCP שהתנתק או משדרוג גרסה: היעלמות של כלי אחד כתבה מחדש את כל רשימת הכלים
- החלפת מודל:
/model שלח מחדש את כל הגדרות הכלים. זו החטאה נוספת על זו שכבר הייתה מוכרת, כי המודל עצמו הוא חלק ממפתח ה-cache (הפירוט) - סוכן רקע שנגזר מהשיחה הוסיף כלי לבלוק הכלים שלה באמצע הסשן
- מצב הדפסה שחודש אינטראקטיבית: שיחה שהתחילה עם
-p וחודשה בטרמינל שינתה את תחילית הנחיות המערכת
שימו לב למה שמשותף לכולם: אף אחד מהם אינו פעולה שהמשתמש בחר לעשות מתוך הבנה שהיא עולה כסף. חידוש שיחה הוא הפעולה השגרתית ביותר שיש, ושרת MCP שמתחבר מחדש הוא פשוט רשת.
החלק שכמעט לא דובר: החשיבה נזרקת
ארבע מתשע השורות אינן על כסף. הן על חשיבה.
כשרשימת הכלים נכתבה מחדש באמצע שיחה, קלוד קוד זרק את הנימוק שקלוד כבר ייצר. זה קרה כששרת MCP שלח מחדש כלי שהמודל כבר טען, כשכלי נעלם מהשיחה, וכששרת של Claude.ai שינה את הכלים שלו בין סשן לחידוש שלו.
ההבדל בין שתי התקלות חשוב. החטאת cache היא בזבוז: משלמים שוב על קלט שהיה אמור להיקרא בזול. חשיבה שנזרקה היא גם בזבוז וגם נזק — הטוקנים של החשיבה נספרו, והמודל נכנס לתור הבא בלי המסקנות שהגיע אליהן קודם.
צריך לומר את זה ביושר: אנתרופיק לא פרסמה כמה זה עלה, לא בטוקנים ולא באחוזים. יומן השינויים מתעד שהתקלות היו ושהן תוקנו, לא את הגודל שלהן. מי שרוצה מספר יצטרך למדוד אצלו.
למה זה נגע בקבוצה אחת יותר מכולן
כאן נכנס מנגנון שאין לו עדיין עמוד בעברית, והוא זה שמסביר למה רוב המשתמשים לא הרגישו כלום: tool search.
התיעוד מנסח אותו בשורה אחת — הוא “שומר על שימוש נמוך בקונטקסט על ידי דחיית הגדרות הכלים עד שקלוד צריך אותן”, וכך רק שמות הכלים והוראות השרת נטענים בתחילת הסשן. כלומר אצל מי שהוא דלוק, הגדרות הכלים של MCP אינן יושבות בתחילית מלכתחילה, ולכן שינוי ברשימה עולה פחות.
הוא דלוק כברירת מחדל. השאלה היא אצל מי הוא כבוי, והתיעוד מונה בדיוק את הקבוצות:
-
ANTHROPIC_BASE_URL שמצביע על מאחסן שאינו של אנתרופיק: קלוד קוד מכבה שם את tool search מעצמו, כי רוב השערים אינם מעבירים את בלוקי tool_reference. זו הקבוצה הגדולה בישראל — כל מי שעובד דרך שער LLM ארגוני - פריסה של Microsoft Foundry שמתארחת על Azure: הדחייה מגיעה מהשרת, ומשתנה הסביבה אינו יכול לעקוף אותה
- מודלים בפלטפורמת הסוכנים של גוגל מדור מוקדם מ-4.5: הכלים נטענים מלפנים
- מי שהגדיר
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS: זה משאיר את tool search כבוי, ואין דרך להחזיר אותו ידנית -
ENABLE_TOOL_SEARCH=false — כיבוי מפורש
מכאן הכלל המעשי: מי שמריץ קלוד קוד מול ה-API של אנתרופיק ישירות, עם מודל מדור 4.5 ומעלה, קיבל את התיקונים כשדרוג נחמד. מי שנמצא באחת מחמש הקבוצות למעלה החזיק את כל הגדרות הכלים בתחילית — ושילם על כל שינוי ברשימה במחיר מלא.
ושווה לדייק דווקא במה שהתיעוד אינו אומר: פריסה על ספק ענן אינה מכבה את tool search מעצם היותה פריסה. בפלטפורמת הסוכנים של גוגל הוא דלוק כברירת מחדל על מודלים מדור 4.5 ומעלה, בדיוק כמו מול ה-API. הקבוצות שלמעלה הן הרשימה, לא דוגמאות ממנה.
מה לעשות היום
- לעדכן. זו הפעולה שקונה את כל תשע השורות בבת אחת
- לבדוק באיזו קבוצה אתם. אם יש
ANTHROPIC_BASE_URL בסביבה שלכם, הניחו ש-tool search כבוי עד שתבדקו אחרת - להכיר את ההגדרה האמצעית.
auto אינו כן-או-לא: הוא טוען את הכלים מלפנים כל עוד ההגדרות שלהם קטנות מ-10% מחלון הקונטקסט, ודוחה את כולן כשהן עוברות את הרף. אפשר לקבוע רף אחר
# רף מותאם של 5% במקום 10%
ENABLE_TOOL_SEARCH=auto:5 claude
# דחייה מלאה, גם מאחורי proxy שתומך בזה
ENABLE_TOOL_SEARCH=true claude
- לשאול את קלוד קוד למה ה-cache הוחטא. מגרסה 2.1.260
/cost מציג סיבה משוערת להחטאה, ו”הגדרות הכלים השתנו” היא אחת מהן במפורש (הפירוט)
שורה תחתונה
הגדרות הכלים הן קונטקסט, והן יושבות במקום היקר ביותר בבקשה. תשע שורות בגרסה אחת תוקנו כדי שהמקום הזה יישאר יציב כשהסביבה סביבו זזה — וזה בדיוק סוג התיקון שאיש אינו מבחין בו, כי הוא נמדד במשהו שלא קרה.
מי שעובד מול ה-API של אנתרופיק יכול להמשיך הלאה. מי שעובד מאחורי שער ארגוני צריך לדעת שהתחילית שלו בנויה אחרת מזו שכל המדריכים מתארים, ושזה נכון גם אחרי התיקון.
התמונה המלאה של מה שנשלח בכל בקשה: עלות סשן ו-cache הפרומפט. מה עוד יושב בקונטקסט בכל תור בלי שביקשתם: סקיל שאף פעם לא הופעל. ומה זה MCP מלכתחילה: המדריך.