לא, ודווקא ברגע שיש בצוות יותר מסוכן אחד השאלה הזאת נהיית קריטית: לקרוא את הכל בכל פעם מחדש זה עומס שרק מכפיל את עצמו עם כל סוכן שמצטרף. התיקון לזה הוא שכבת ניתוב אחת, קובץ קצר שהסוכן פותח ראשון, ורק ממנו הוא מבין אילו קבצים בכלל קשורים למשימה שמולו.
בקבוצה שלנו זה עלה בדיוק בניסוח הזה, "וזה תופס גם עם עשרות סוכנים?", ועלה שם מענה מלא באותו שבוע: קובץ ניתוב מרכזי אחד, שורה לכל סוכן שמסבירה מתי לפתוח אותו ומה יש בפנים, ומעליו כלל פשוט, משימה נכנסת ← בודקים בטבלה מי הכתובת ← פותחים רק את השורה הזאת. סוכן שמקבל משימה בודק קודם את השורה שלו באינדקס, במקום לעבור על הקבצים של עשרים סוכנים אחרים (מי שכתב את זה אצלנו קיבל תגובות נלהבות בקבוצה, ובצדק, כי אשכרה בנקודה הזאת תיק תיעוד הופך לארכיטקטורה).
אצלנו זה עובד בדיוק ככה: כל סוכן כותב שורת אינדקס משלו, ואני עדיין תופס את עצמי לפעמים פותח קובץ שלם רק כדי לגלות שהשורה כבר ענתה לי מראש (וזה בדיוק הסימן שהאינדקס עושה את העבודה, בלי קשר למהירות הקריאה שלי). כשהצוות גדל מכמה סוכנים לעשרות, ההבדל בין לקרוא הכל לבין לקרוא רק את השורה הרלוונטית מפסיק להיות עניין של נוחות, והופך למשהו שמפריד בין מערכת שסוגרת סשן בדקה לבין מערכת שנחנקת מהגודל של עצמה. בלי השכבה הזאת עלות הפתיחה של סשן מטפסת עם כל סוכן שמצטרף לצוות, ואיתה היא נשארת בערך קבועה, כי כל סוכן קורא רק את החלק שממש שייך אליו.
הכלל הפשוט: ברגע שסוכן פותח יותר קבצים ממה שהמשימה דורשת, מדובר נטו באינדקס שלא נכתב מספיק טוב.
פרומפט במתנה
בונים לי אינדקס ניתוב לצוות של כמה סוכנים, כל אחד עם קובץ הוראות משלו.
לכל סוכן, כתוב שורה אחת עם:
1. באיזה סוג משימה פותחים את הקובץ שלו (לא "תמיד", אלא מתי בדיוק).
2. תקציר של משפט או שניים על מה יש בפנים, כדי שאפשר להחליט בלי לפתוח אותו.
מעל הרשימה, תן לי כלל ניתוב אחד: כשמשימה חדשה נכנסת, איך יודעים תוך שנייה איזה סוכן (או שניים) רלוונטיים, לפני שפותחים אף קובץ.
בדוק את עצמך בסוף: אם צריך לפתוח יותר מקובץ אחד כדי לדעת מי הכתובת הנכונה, האינדקס עדיין לא עשה את העבודה שלו.
כותבים את זה פעם אחת, וכל סשן בהמשך הופך להרבה יותר קצר וגם הרבה יותר זול.





