סוכן שמתעלם מהוראה שכתבת לו בבירור. סוכן שפתאום "לא יכול" לעשות משהו שעשה בשבוע שעבר. רוב האנשים מאשימים את המודל, מנסחים מחדש את הבקשה ומקווים לטוב. כשעשיתי אודיט ל-215 תיקיות פרויקט, הבעיות שמצאתי לא ישבו במודל. הן ישבו בקבצים שמסביבו.
🚀 קחו את העסק שלכם לשלב הבא עם מה לומדים מאודיט של 215 תיקיו...
השאירו פרטים וקבלו ייעוץ חינם עבור שירותי מה לומדים מאודיט של 215 תיקיו...!
הלקח, בשורה אחת: הסביבה של סוכן AI מתקלקלת בשקט, ולכן צריך לבדוק אותה כמו שבודקים קוד. באודיט מצאתי שלושה דברים שכדאי לספר עליהם: רודמאפ של 100 אלף טוקנים שנטען בכל סשן, קונפיג הורה שחסם בשקט 15 פרויקטים, וסודות בקבצי הגדרות. אף אחד מהם לא נראה כמו תקלה מבחוץ.
אני בשיווק דיגיטלי מאז 2015, ובשנה האחרונה אני בונה עוזרי AI ואוטומציות לעסקים קטנים, כל אחד תפור לתהליך אחד. אני עובד עם Claude Code ועם סביבות סוכנים, וכשיש הרבה פרויקטים כאלה במקביל, הקבצים שסביבם מצטברים מהר יותר ממה שמספיקים לעקוב אחריהם. הפוסט הזה מיועד למי שמריץ כמה פרויקטים כאלה בעצמו. אם המונח עוד חדש, יש הסבר קצר במה זה סוכן בינה מלאכותית.
מה נמצא באודיט של 215 תיקיות פרויקט
נמצאו שלושה ממצאים, וכל אחד מהם הוא סוג אחר של בעיה. הראשון הוא עומס: קובץ גדול שהסוכן קורא בכל פעם שהוא מתחיל לעבוד. השני הוא התנגשות: הגדרה שנכתבה במקום אחד ומשפיעה על מקומות אחרים בלי שאף אחד ביקש. השלישי הוא חשיפה: מידע רגיש שנמצא בקובץ שלא נועד להחזיק אותו.
מה שמחבר בין שלושתם הוא שאף אחד מהם לא שובר את העבודה באופן שרואים. הסוכן ממשיך לענות. הפרויקט ממשיך לרוץ. הקובץ ממשיך לשבת בתיקייה. לכן הם שורדים זמן רב.
קונפיגורציה שנכשלת בשקט מסוכנת יותר מקונפיגורציה שנכשלת ברעש, כי לרעש מישהו מגיב.
מה עושה לקונטקסט רודמאפ שנטען בכל סשן?
הוא תופס מקום בקונטקסט של הסוכן עוד לפני שהעבודה מתחילה. רודמאפ של 100 אלף טוקנים שנטען בכל סשן (סשן הוא שיחת עבודה אחת עם הסוכן, מהפתיחה ועד הסגירה) אומר שבכל פעם שהסוכן ניגש למשימה, הוא קודם קורא מסמך תכנון שלם, גם כשהמשימה היא לתקן שורה אחת.
קל להבין איך זה קורה. מתחילים פרויקט, כותבים רודמאפ, ומחברים אותו לקובץ ההוראות שהסוכן קורא בפתיחה (ב-Claude Code זה CLAUDE.md, קובץ שהסוכן טוען אוטומטית). הרודמאפ גדל עם הפרויקט. אף אחד לא חוזר לבדוק כמה הוא שוקל.
מה זה קונטקסט, ולמה הוא נגמר
קונטקסט הוא כל מה שהמודל מחזיק מולו בזמן סשן: ההוראות, הקבצים שקרא, השיחה עצמה ומה שחזר מהכלים שהפעיל. טוקן הוא יחידת הטקסט שהמודל סופר, בערך חלק של מילה. לחלון הקונטקסט יש גבול, וכשהוא מתמלא, משהו צריך לצאת, להתקצר או להיבלע.
אני חושב שזו הסיבה שקובץ ענק בפתיחה הוא טעות גם כשהמודל "מסוגל" לקרוא אותו. כל טוקן של רודמאפ הוא טוקן שלא הולך לקוד, ללוגים או לשאלה שבאמת שאלת. רודמאפ הוא מסמך לאדם שמתכנן. סוכן שעושה משימה אחת צריך את הקטע שנוגע לה, לא את כל התוכנית.
הדרך שאני ממליץ עליה: קובץ ההוראות מחזיק הפניה קצרה, משפט או שניים שאומרים איפה הרודמאפ נמצא ומתי לקרוא אותו. הסוכן פותח אותו כשהמשימה דורשת, ולא בכל פעם. מי שעוד בונה את הבסיס של ניסוח הוראות לסוכן ימצא את הרקע ביסודות הנדסת הפרומפט.
קונפיג הורה שחסם בשקט 15 פרויקטים
קובץ הגדרות בתיקיית אב יכול לחול גם על כל התיקיות שמתחתיו, ולכן כלל שנכתב עבור מקום אחד פוגע בכל מה שיושב מתחתיו. באודיט מצאתי קונפיג כזה שחסם בשקט 15 פרויקטים. לא הופיעה שגיאה, ושום דבר לא אמר "החסימה מגיעה מלמעלה".
מבפנים, פרויקט חסום יכול להיראות כמו סוכן עקשן. מבקשים ממנו פעולה, והוא לא מבצע. מחפשים את הסיבה בתוך הפרויקט, בהוראות שלו ובקוד שלו, והיא לא שם. היא יושבת תיקייה או שתיים למעלה, בקובץ שנכתב פעם לצורך אחר לגמרי.
ההיגיון של הורשה בהגדרות נכון בדרך כלל: מגדירים פעם אחת ונהנים בכל מקום. הבעיה מתחילה כשתיקיית האב היא גם מקום עבודה וגם קורת גג לפרויקטים אחרים. מי שמשנה הגדרה עבור העבודה שלו עכשיו לא חושב על החמישה-עשר שמתחת.
הבדיקה שמונעת את זה פשוטה. לכל פרויקט שואלים: אילו קבצי הגדרות חלים עליו בפועל, מהתיקייה שלו ועד השורש? אם התשובה כוללת קובץ שלא ידעת עליו, מצאת את החשוד הראשון.
סודות בקבצי הגדרות: מה עושים כשמוצאים אחד
מוציאים את הסוד מהקובץ, מחליפים אותו, ומוודאים שהקובץ לא נכנס לגיט. זה הסדר, וכל שלב בו נחוץ.
לא אפרט כאן מה בדיוק נמצא ואיפה, וזה מכוון. מה שכן אפשר לומר: באודיט נמצאו סודות בקבצי הגדרות, כלומר בקבצים שאמורים להחזיק העדפות והוראות, לא פרטי גישה.
סוד, בהקשר הזה, הוא כל דבר שמי שמחזיק אותו יכול להיכנס איתו למקום שלא שלו. מפתח API, טוקן גישה, סיסמה, מחרוזת התחברות למסד נתונים. הם מגיעים לקובץ הגדרות מסיבה מובנת: צריך שמשהו יעבוד עכשיו, ההדבקה בקובץ הכי קרובה, ו"אחר כך אסדר". אחר כך לא מגיע.
מה עושים, שלב אחרי שלב:
- להעביר את הסוד למקום שנועד לסודות, משתנה סביבה או מנהל סודות, ולהשאיר בקובץ רק הפניה אליו.
- להחליף את הסוד עצמו. מפתח שישב בקובץ גלוי צריך להיחשב כמפתח שנחשף, גם אם אין לך שום סימן שמישהו ראה אותו.
- להוסיף את הקובץ, או את הקבצים מהסוג הזה, לרשימת ההתעלמות של גיט.
- לבדוק את ההיסטוריה. אם הקובץ כבר נדחף ל-GitHub, מחיקה שלו היום לא מוחקת אותו מהקומיטים הקודמים.
השלב השני הוא זה שמדלגים עליו. להוציא את הסוד מהקובץ מרגיש כמו תיקון. בפועל זה רק מפסיק את הדליפה הבאה.
איך עושים אודיט קטן כזה לתיקיות שלך
לא צריך 215 תיקיות כדי שזה ישתלם. מי שמפעיל סוכני AI בשלושה או ארבעה פרויקטים במקביל כבר נמצא בדיוק במצב שבו קבצים גדלים, הגדרות זולגות וסודות נשכחים. ההבדל הוא רק בכמות.
הקבצים שסוכן קורא לפני שהוא מתחיל לעבוד הם חלק מהעבודה שלו, ומישהו צריך לבדוק אותם כמו שבודקים קוד.
שלוש בדיקות שאפשר להריץ היום
- כמה נטען בפתיחה. לכל פרויקט, פותחים את קובץ ההוראות (CLAUDE.md או המקביל שלו) ועוברים על כל קובץ שהוא מפנה אליו או מטמיע. מה שגדול ולא נחוץ בכל משימה עובר להפניה.
- אילו הגדרות חלות על כל פרויקט. עולים מתיקיית הפרויקט עד השורש ורושמים כל קובץ הגדרות שבדרך. קובץ בתיקיית אב שיש מתחתיה כמה פרויקטים מקבל תשומת לב מיוחדת: האם מה שכתוב בו נכון לכולם, או רק לאחד?
- חיפוש סודות. סורקים את קבצי ההגדרות וההוראות אחרי מחרוזות שנראות כמו מפתחות, טוקנים או סיסמאות. כל ממצא עובר את ארבעת השלבים מהסעיף הקודם, כולל ההחלפה.
אפשר לבקש מהסוכן עצמו להריץ את הסריקה ולהחזיר רשימה. בתנאי אחד: הוא מדווח, ואדם מחליט מה לתקן. סוכן שמוחק הגדרות או מזיז סודות לבד עלול לשבור בדיוק את מה שהאודיט נועד להגן עליו.
שאלות נפוצות
מה בודקים באודיט של פרויקטי AI?
שלושה דברים: כמה קונטקסט נטען בכל סשן, אם קובץ הגדרות של תיקיית אב משפיע בשקט על פרויקטים אחרים, והאם יש סודות בקבצי הגדרות. אלה בדיוק סוגי הבעיות שצצו באודיט של 215 התיקיות.
למה קובץ אחד גדול מזיק לסוכן?
כי הוא נטען בכל סשן ותופס מקום מהקונטקסט שהסוכן צריך לעבודה עצמה. ככל שהקובץ גדול יותר, נשאר פחות מקום לקוד, לשיחה ולתוצאות של הכלים.
איך קונפיג הורה חוסם פרויקט בלי להציג שגיאה?
הגדרות בתיקיית אב יכולות לחול על התיקיות שמתחתיה. אם הגדרה כזו מגבילה פעולה, הסוכן בפרויקט הבן פשוט לא מבצע אותה, ומבפנים זה נראה כמו התנהגות של הסוכן ולא כמו חסימה.
מה עושים עם סוד שנמצא בקובץ הגדרות?
מוציאים אותו מהקובץ, מחליפים אותו ומוודאים שהקובץ לא נכנס לגיט. אם הקובץ כבר נדחף למאגר, בודקים גם את ההיסטוריה שלו.
כל כמה זמן כדאי לחזור על הבדיקה?
אני חושב שהטריגר חשוב יותר מהלוח. כל פעם שמוסיפים קובץ הגדרות בתיקייה שיש מתחתיה פרויקטים אחרים, וכל פעם שקובץ הוראות מתחיל לגדול. קבצים כאלה לא מודיעים כשהם משתנים, ולכן מי שאחראי להם צריך לזכור לפתוח אותם.
