בלוג

למה Claude Code קורא מחדש את כל הפרויקט ואיך לתקן זאת

Markdown

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

קריאת המאמר המלא

הנקודה המרכזית

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

התיעוד של Ailoot: API, מפתחות וחיבור.

למה Claude Code קורא מחדש את הפרויקט מההתחלה בכל פעם?

הנקודה המרכזית

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

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

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

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

כמה טוקנים זה באמת מבזבז?

הנקודה המרכזית

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

העלות מתחילה עוד לפני הבקשה שלכם. מדידה עצמאית אחת מראה זאת בפשטות: Claude Code שולח כ-33,000 טוקנים של הנחיית מערכת ותיאורי כלים לפני שקרא את התו הראשון בהודעה שלכם. לשם השוואה, OpenCode מתחיל בכ-7,000.

ואז מתחילה הקריאה החוזרת. כל חיפוש קובץ וכל קריאה מוסיפים טוקנים להקשר. התיעוד הרשמי של Claude Code אומר זאת במפורש: קריאת קבצים היא הגורם העיקרי לשימוש בהקשר. ניתוח של auth.ts בהיקף 2,400 טוקנים פירושו שרק Claude ראה 2,400 טוקנים, והדבר נכון גם לכל קובץ שהוא פותח במהלך הסריקה המקדימה.

עבור הקהל שלנו, המשמעות היא כסף ומגבלות. החשש מספר אחת בקרב מי שנכנסים לעולם ה-vibe coding הוא „שילמתי, והמגבלות נגמרו לחינם”. אם הסוכן סורק את הפרויקט וקורא קבצים מחדש מההתחלה בכל משימה, ההקשר מתמלא פי שניים מהר: תחילה בגלל תקורת המערכת, ואחר כך בגלל הסריקה המקדימה. במדריך „לאן הולכים הטוקנים של Claude Code” סקרתי את המפה המלאה של המקומות שבהם בדיוק נצרכים הטוקנים של Claude Code — קריאה מחדש של הפרויקט היא אחת מתשע התבניות שם.

מהו זיכרון קוד מתמשך?

הנקודה המרכזית

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

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

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

המפה הזאת מתחברת דרך MCP — הדרך התקנית לחבר כלי חיצוני ל-Claude Code (במדריך „שרתי MCP ל-Claude Code” סקרתי חיבור של שרתים אחרים). כלי זיכרון הקוד מוסיף פקודות משלו לחיפוש במפה, ו-Claude משתמש בהן בעצמו כשהוא צריך להתמצא בפרויקט.

בפועל, ההבדל הוא בין „לקרוא את כל התיקייה כדי למצוא פונקציה אחת” לבין „לשאול את המפה היכן הפונקציה הזאת נמצאת”. הראשון עולה עשרות אלפי טוקנים; השני — מאות.

שתי גישות לזיכרון קוד: במה הן שונות?

הנקודה המרכזית

יש שני כלים שימושיים, ושניהם בחינם ברישיון MIT. Serena מעניקה לסוכן ניווט בקוד כמו בסביבת פיתוח חכמה ומתאימה לעריכות מדויקות. claude-context מחפש לפי משמעות באמצעות embeddings, אך דורש מסד נתונים חיצוני ומפתח. ההבדל הוא במה שכל אחד מהם זוכר.

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

מה משוויםSerenaclaude-context
סוג הזיכרוןניווט בקוד באמצעות מנוע סביבת פיתוחחיפוש מבוסס משמעות באמצעות embeddings
מה הוא מוצאהגדרות, אתרי קריאה בפועל, עריכות לפי סמלקוד לפי תיאור: „איפה נמצאת לוגיקת התשלום”
תלויות חיצוניותמנהל החבילות uv; עבור TypeScript ו-JavaScript, גם Node 20+ ו-npmמסד נתונים חיצוני + מפתח + Node 20+
התקנהפקודה אחתפקודה עם שלוש הגדרות
חיסכון בטוקניםלא מפרסם אחוז מדויקכ-40% באיכות זהה
כוכבי GitHub26,46812,138
חוזקהרפקטורינג זהיר בכל בסיס הקודאיתור הנדרש בלי לדעת שמות מדויקים
חולשהפחות שפות, אין חיפוש לפי משמעותהגדרה מורכבת, דורש שירות ענן

מספרי הכוכבים ב-GitHub נכונים ל-15 ביולי 2026 (לפי GitHub API). שני הכלים בחינם ובקוד פתוח, שניהם עובדים עם Claude Code ושניהם מתחברים כשרתי MCP.

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

מתי כדאי לבחור ב-Serena או ב-claude-context?

הנקודה המרכזית

Serena שימושית כשחשובות עריכות מדויקות: שינוי שם של פונקציה בכל הפרויקט, החלפת הגוף שלה או איתור כל אתרי הקריאה בפועל שלה. היא פועלת באמצעות אותו מנוע שמשמש סביבות פיתוח חכמות ועורכת קוד לפי משמעות, לא באמצעות התאמת טקסט. בחרו ב-claude-context כשצריך לחפש קוד לפי תיאור ולא מפריע לכם להגדיר מסד נתונים חיצוני ומפתח.

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

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

ערכת כלים רבת עוצמה לקוד באמצעות MCP: חיפוש ועריכה סמנטיים — סביבת פיתוח לסוכן שלכם.

— Serena, https://github.com/oraios/serena

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

בחרו ב-claude-context אם אתם צריכים חיפוש מבוסס משמעות וההגדרה אינה מרתיעה אתכם. הוא ממיר קוד לווקטורים (טביעות אצבע מספריות של משמעות) ומחפש לפי תיאור: „מצאו היכן נמצאת לוגיקת התשלום שלנו”, גם אם אינכם יודעים את שמות הפונקציות. המחיר של החיפוש הזה הוא ההגדרה הנוספת.

בממוצע, claude-context מפחית את השימוש בטוקנים בכ-40% תוך שמירה על אותה איכות חיפוש.

— zilliztech/claude-context, https://github.com/zilliztech/claude-context

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

מה אפשר לעשות ישירות ב-Claude Code בלי כלים של צד שלישי?

הנקודה המרכזית

הפקודות המובנות פותרות חצי מהבעיה. /context מציג בדיוק מה צורך הקשר. /compact דוחס את ההיסטוריה, /clear מאפס אותה לפני משימה חדשה, ו-/doctor מאתר פריטים מיותרים ומציע לנקות אותם. קובץ CLAUDE.md קצר במקום קובץ מנופח חוסך אלפי טוקנים בכל הודעה.

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

  1. /context—מציג פירוט בזמן אמת של מה שתופס מקום בחלון: הנחיית מערכת, CLAUDE.md, זיכרון, כלים וקבצים. הפקודה /mcp מציגה את העלות של כל שרת מחובר, ו-/memory מראה מה נטען בעת ההפעלה.
  2. /compact—דוחס את היסטוריית השיחה לסיכום קצר וממשיך באותה משימה. אפשר לכוון את מוקד הסיכום על ידי הוספת הדברים שיש לשמר אל /compact.
  3. /clear—מוחק את כל ההיסטוריה. ההמלצה הרשמית היא להריץ אותו כשעוברים למשימה שאינה קשורה, כדי שהשיחה הישנה לא תדחק את הקבצים הדרושים לכם.
  4. /doctor (מכונה גם /checkup, הוצגה ב-8 ביולי 2026)—מאבחנת את ההגדרה ומציעה תיקונים: מסירה כפילויות ב-CLAUDE.md, מאתרת כלים ושרתים שאינם בשימוש ומזהה מטפלים איטיים.

הערה נפרדת על CLAUDE.md. הקובץ הזה נטען להקשר בתחילת כל הפעלה ונכלל בכל הודעה. אם הוא מנופח, ממשיכים לשלם עליו. ההמלצה הרשמית היא להשאיר אותו מתחת ל-200 שורות ולהעביר פרטי עזר ל-skills שנטענים לפי דרישה. במדריך הנפרד „איך להגדיר את CLAUDE.md” הסברתי איך להרכיב CLAUDE.md כראוי.

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

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

— Anthropic, https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents

האם שרת MCP נוסף יגדיל עוד יותר את ההקשר?

הנקודה המרכזית

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

ההיגיון שלפיו „עוד שרת פירושו עוד תקורה בהקשר” היה נכון בעבר, אבל Claude Code השתנה. תיאורי כלי MCP נדחים כעת כברירת מחדל: בעת ההפעלה נכללים בהקשר רק שמות השרתים, ותיאורים מלאים נטענים כשכלי מסוים דרוש למשימה. התיעוד אומר זאת במפורש.

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

— תיעוד Claude Code, https://code.claude.com/docs/en/mcp

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

כמה הסתייגויות כנות, כדי שלא תצפו לקסם. צריך לבנות את האינדקס מחדש מדי פעם — המפה משקפת את הקוד כפי שהיה בעת הסריקה, ולאחר עריכות גדולות צריך לעדכן אותה (הדבר משתנה לפי הכלי: יש כלים שעושים זאת אוטומטית ואחרים דורשים פקודה). וגם טענות גדולות כמו „פי 120 פחות טוקנים” מתארות את המקרה הטוב ביותר בשאילתות נבחרות, ולא את מה שתראו בכל משימה. החיסכון בפועל מתון יותר, אך עדיין מורגש. לניתוח מעמיק יותר על הימנעות ממיצוי המגבלות באופן כללי, יש לי מדריך נפרד: „איך להימנע מבזבוז המכסות של Claude Code”.

מאיפה כדאי להתחיל היום?

הנקודה המרכזית

התחילו במה שחינמי ומהיר. הריצו /doctor כדי לנקות פריטים מיותרים. צמצמו את CLAUDE.md ל-200 שורות. הצעדים האלה מצמצמים את מה ש-Claude נושא לכל משימה ומתחילים לחסוך בטוקנים ובמכסות שלכם.

אם מסירים את כל מה שמיותר, התוכנית להיום פשוטה:

  1. הריצו /doctor ונקו את מה שהוא מציע: כפילויות ב-CLAUDE.md וכלים שאינם בשימוש.
  2. צמצמו את CLAUDE.md ל-200 שורות והעבירו חומר עזר ל-skills.

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

אם אתם זקוקים לגישה למודלי AI דרך Ailoot, בקרו ב-Ailoot.

פרטים נוספים

שאלות ותשובות: למה Claude Code קורא מחדש את כל הפרויקט ואיך לתקן זאת

מתי לבחור ניווט בסמלים במקום חיפוש קוד לפי משמעות?

בחרו ניווט בסמלים בסגנון Serena להגדרות, אתרי קריאה ושינוי מבני מדויק. חיפוש לפי משמעות כגון claude-context עוזר כשאתם יודעים איזו התנהגות דרושה אבל לא את שם הסמל; הוא דורש הגדרה נוספת של מסד נתונים ו-embeddings.

האם אפשר להמשיך לסמוך על מפת הקוד אחרי שינויים?

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

כל המאמרים