בסרטון על ענפים ו-worktrees, שמרנו את פיצ'רי המשחק של שני הסוכנים בתיקיות נפרדות, סקרנו את השינויים שלהם, ומיזגנו אותם לתוך main. כך יכולנו לעבוד על שני פיצ'רים בבת אחת בלי לערבב את העריכות שלהם. הסרטון הזה מסביר איך לעשות את זה ב-Claude Code. נסתכל על תת-סוכנים, על הרצה של כמה סשנים זה לצד זה, ועל איך הזמן שלכם לענות על שאלות ולסקור תוצאות מגביל כמה סוכנים אתם יכולים להריץ ביעילות.
יש מפעיל אחד בדוגמה הזו, וזה אתם. המשתתפים האחרים הם סוכנים שאתם מפעילים בעצמכם או מבקשים מסוכן אחר להפעיל.
הגישה הראשונה נשארת בתוך סשן אחד. הסוכן שאתם מדברים איתו הוא הסוכן הראשי, והוא יכול להפעיל סוכנים אחרים לחלקים מהעבודה. אלה נקראים תת-סוכנים. אתם נותנים את המשימה לסוכן הראשי, והוא מתאם את העבודה שלהם.
הדרך השנייה היא לפתוח כמה סשנים בעצמכם, טרמינל לכל אחד, ולהריץ אותם זה לצד זה. כל אחד מהם הוא סשן רגיל עם סוכן משלו, ואתם מדברים עם כל אחד ישירות.
שתי הדרכים האלה להרצת כמה סוכנים מתאימות למשימות שונות. עד סוף הסרטון, אתם אמורים לדעת לבחור בין האצלת משימה לבין מעקב אחריה בסשן נפרד.
הנה הסשן שלכם. הסוכן שאתם מדברים איתו שם הוא הסוכן הראשי. יש לו חלון הקשר משלו, עם השיחה שהתנהלה עד כה בתוכו, וכשיש לו שאלה, הוא עוצר ושואל אתכם.
כשהסוכן הראשי מאציל משימה, הוא מפעיל סוכן שני ונותן לו תדריך שמתאר את העבודה. עבור תת-סוכן חדש, התדריך הזה מספק את הרקע הספציפי למשימה מתוך השיחה שלכם.
לתת-סוכן החדש יש חלון הקשר משלו. הוא לא יורש את השיחה הקודמת שלכם ולא את התוכן של קבצים שהסוכן הראשי קרא. ההגדרה שלו מספקת גם הוראות וכלים, ויכולה לטעון הוראות של הפרויקט. לכן התדריך צריך לכלול את ההחלטות הקודמות שחשובות למשימה הזו.
תת-סוכן רגיל עובד מהתדריך הזה ומהמידע שהוא קורא בעצמו. הוא לא יכול להשתמש בכלי השאלות הרגיל כדי לעצור ולשאול אתכם. אם התדריך משאיר החלטה פתוחה, הוא עלול להניח משהו או לדווח שהוא לא הצליח לסיים.
כשהוא מסיים, הוא שולח דוח חזרה לסוכן הראשי, לא אליכם. הסוכן הראשי קורא את הדוח ומחליט מה לומר לכם. לסוכן השני הזה אנחנו קוראים תת-סוכן. זה סוכן שני שהסוכן הראשי מפעיל למשימה אחת שהואצלה.
היתרון של החלון הנפרד מתברר כשמסתכלים על מה שהתת-סוכן מכניס לתוכו. הוא מתחיל מהתדריך.
אז הוא קורא קבצים, מריץ פקודות, נתקל בשגיאות, ומנסה שוב. כל זה נכנס לחלון שלו, ועד שהוא מסיים החלון יכול להיות די מלא.
הדוח חוזר לחלון של הסוכן הראשי. קריאות הקבצים, הפקודות, השגיאות והניסיונות החוזרים נשארים בהקשר הנפרד של התת-סוכן במקום שיועתקו לשיחה הראשית. התמליל שלו יכול להישאר זמין אם נצטרך לבחון את העבודה או להמשיך אותה.
ההפרדה הזו שימושית כי חלון ההקשר מוגבל. בסיס קוד גדול יכול להכיל הרבה יותר מידע ממה שנכנס לחלון אחד. כל תת-משימה יכולה לאסוף את ההקשר שהיא צריכה, בעוד שהסוכן הראשי מחזיק את המסקנות שהוא צריך כדי לתאם את העבודה. לכן תת-סוכנים עוזרים לנהל הקשר גם כשהם רצים משימה אחת בכל פעם. הרצה של תת-משימות עצמאיות במקביל יכולה גם לחסוך זמן.
יש שתי נקודות פתיחה שכדאי להבחין ביניהן. תת-סוכן חדש מתחיל עם תדריך משימה ועם ההוראות שהוגדרו לו, בלי השיחה הקודמת. זה מתאים למשימה עצמאית שצריכה הקשר קטן וממוקד.
הסוג השני נקרא fork. fork מתחיל עם עותק של כל השיחה עד עכשיו. יש לו אותה היסטוריה, אותם כלים ואותו מודל כמו לסוכן הראשי, אז אתם יכולים למסור לו משימה שתלויה בכל מה שכבר נדון, בלי לכתוב שום דבר מזה לתוך תדריך. בגרסה שמוצגת כאן, אתם יכולים להפעיל fork על ידי הקלדת /subtask ואחריה המשימה. גם הסוכן הראשי יכול להפעיל אחד כשהעבודה צריכה את כל ההיסטוריה.
כך או כך, הקריאה והניסוי והטעייה של ה-fork נשארים מחוץ לחלון של הסוכן הראשי, ורק התוצאה שלו חוזרת. אז הבחירה היא בנקודת הפתיחה. משימה שעומדת בפני עצמה מקבלת תת-סוכן חדש. משימה שצריכה את מה שכבר גיבשתם יחד מקבלת fork.
אז איך בעצם מבקשים כמה תת-סוכנים? אומרים את זה, במילים. הנה פרומפט לאתר שאנחנו בונים. בבקשה פתח ארבעה תת-סוכנים, אחד לכל וריאציה של דף הנחיתה, מינימלי, נועז, כהה ושובב. הרץ אותם במקביל, כל אחד על ענף משלו ב-worktree משלו, ודווח לי כשכל הארבעה יסיימו.
הסוכן הראשי מפעיל את ארבעת התת-סוכנים וכותב תדריך לכל וריאציה. אתם יכולים לבקש את זה בשפה רגילה, ואז לבדוק שארבע המשימות וה-worktrees הנפרדים שלהן תואמים למה שביקשתם.
בואו נסתכל מה הפרומפט האחד הזה מניע. הוא ביקש ארבע וריאציות במקביל, תת-סוכן אחד לכל אחת, כל אחד על ענף משלו ב-worktree משלו, בלי לגעת ב-main.
הסוכן הראשי מפעיל ארבעה תת-סוכנים, וכל אחד מקבל תדריך שמתאר את הווריאציה שלו.
כל תת-סוכן עובד על ענף משלו ב-worktree משלו. בקשו מהסוכן הראשי לסדר את התיקיות האלה לפני שהתת-סוכנים מתחילים לערוך. זו אותה הפרדה שהשתמשנו בה עם שני פיצ'רי המשחק בסרטון על ענפים ו-worktrees. כאן יש לנו ארבעה דפי נחיתה חלופיים, כדי שנוכל להשוות ביניהם ולבחור מה לשמור. אנחנו לא צריכים למזג את כל ארבע החלופות.
ההוראה היא להשאיר את main ללא שינוי ולחכות לסקירה שלכם לפני המיזוג. בדקו את ארבע התוצאות ובחרו איזו עבודה לשמור. תנו לכל תת-סוכן תדריך שלם כדי שהוא יוכל לעבוד בלי להזדקק לשיחה. אם תשאירו את אותה החלטה פתוחה, ארבעת הסוכנים עלולים לבחור בארבע דרכים שונות.
בזמן שהתת-סוכנים רצים, אתם יכולים לראות אותם בשני מקומות. הראשון הוא התמליל. הוא מציג שורה בשם Agent, עם המשימה בסוגריים, ומתחתיה שורת התקדמות עם כמה כלים הוא הפעיל וכמה טוקנים הוא צרך.
השני הוא פאנל שמופיע מתחת לשורת הקלט בזמן שתת-סוכנים רצים. יש בו שורה אחת לסוכן הראשי ושורה אחת לכל תת-סוכן, ולכל שורה סטטוס משלה. החצים למעלה ולמטה מנווטים בין השורות, Enter פותח את התמליל של התת-סוכן שנבחר, x עוצר אותו, ו-Esc מחזיר אתכם לשורת הקלט.
הפאנל מציג את התת-סוכנים שרצים בסשן הזה. תת-סוכן שסיים בהצלחה נעלם מהפאנל, והדוח שלו מגיע לסוכן הראשי.
יש עוד רשימה אחת, והיא כוללת יותר מתת-סוכנים. הפקודה /tasks מציגה את כל מה שהסשן מריץ ברקע. זה כולל את התת-סוכנים, אלה שרצים ואלה שסיימו לאחרונה, וגם פקודות רקע, כמו בנייה או הרצת בדיקות שהסוכן התחיל ולא חיכה להן.
השתמשו ב-/tasks כשאתם רוצים לבדוק את עבודת הרקע שמשויכת לסשן הזה, כולל הפקודות והתת-סוכנים שלו.
אתם עדיין יכולים לתת לתת-סוכן תיקון תוך כדי שהוא עובד. פתחו את השורה שלו עם Enter, קראו את התמליל שלו, והקלידו הודעה. התת-סוכן מקבל את ההודעה הזו ויכול להשתמש בה בהמשך.
גם הסוכן הראשי יכול לעשות את זה. בזמן שתת-סוכן רץ, הסוכן הראשי יכול לשלוח לו הודעות, וכשהתת-סוכן מסיים, הסוכן הראשי מקבל התראה ומקבל את הדוח שלו. ככה תיקון שאתם נותנים לסוכן הראשי יכול להגיע לתת-סוכן שכבר נמצא באמצע.
תת-סוכן יכול גם להזדקק להרשאה לפעולה. בקשת ההרשאה הזו מופיעה בסשן הראשי שלכם עם השם של התת-סוכן. אתם יכולים לאשר או לדחות את הפעולה. אם תדחו אותה, הסוכן עשוי למצוא גישה אחרת או לדווח שהוא חסום.
תדריך שלם מאפשר לתת-סוכן רגיל לעבוד בלי לשאול, בעוד שהודעות מאפשרות לכם או לסוכן הראשי לתקן אותו תוך כדי ההרצה. ה-fork שומר את כל הכלים של הסוכן הראשי, כולל כלי השאלות, שתת-סוכן רגיל מאבד.
את הדרך השנייה להריץ כמה סוכנים קל יותר להסביר. אתם פותחים יותר מסשן אחד. הנה אחד, בטרמינל משלו, שעובד על טופס יצירת הקשר של האתר.
הנה עוד שניים, כל אחד בטרמינל משלו, אחד על דף התמחור ואחד על פריסת הבלוג. אלה סשנים רגילים, בדיוק כמו זה שאתם משתמשים בו מאז שבוע 1, רק שיש כמה כאלה באותו זמן.
לכל סשן יש טרמינל, חלון הקשר ומצב הרשאות משלו. אחד יכול להיות במצב תכנון בזמן שאחר במצב אישור עריכות. הסשנים האלה עובדים באופן עצמאי, אז אתם צריכים לספר לכל אחד על החלטות שמשפיעות על המשימה שלו.
סשן שאתם עוקבים אחריו יכול לעצור ולחכות בכל פעם שהוא צריך את התשובה שלכם. שניים משלושת הסשנים כאן מחכים, אחד על בקשת הרשאה ואחד על שאלה.
כדי לעזור לכם לעקוב אחרי כמה סשנים, Claude Code מספק מסך שנקרא agent view. לחיצה על החץ שמאלה בשורת קלט ריקה מעבירה את הסשן הנוכחי לרקע ופותחת את התצוגה הזו. סשנים אחרים בטרמינל מופיעים אחרי שגם אותם תעבירו לרקע. כל שורה היא סשן, והשורות מקובצות לפי מצב. השורות הראשונות מציגות סשנים שצריכים קלט וסשנים שעדיין עובדים.
לחיצה על Enter בשורה פותחת את הסשן הזה בטרמינל שלכם, והחץ שמאלה בשורת קלט ריקה מחזיר אתכם לרשימה. לחיצה על Space, לעומת זאת, מציגה הצצה לפלט האחרון של הסשן, ואתם יכולים להקליד תשובה בדיוק שם בלי לצאת מהרשימה. מאותו מסך אתם יכולים גם להתחיל סשן חדש. אתם מקלידים משימה למטה ולוחצים Enter, וסשן חדש מתחיל לעבוד עליה. לפני שהוא עורך משהו, הוא עובר ל-worktree משלו.
בדקו באופן קבוע את הקבוצה שצריכה את הקלט שלכם. הסשנים האלה נעצרו בשביל שאלה או אישור, אז ברגע שתענו להם, העבודה שלהם תמשיך.
אם שני סשנים עורכים את אותה תיקייה, הם יכולים לשנות את אותם קבצים באותו זמן. אחד עלול לדרוס שינוי שהשני בדיוק עשה, או להמשיך מתוכן שכבר השתנה. הקובץ המשולב עלול להיות משהו שאף אחד מהסוכנים לא התכוון אליו.
עם worktree אחד לכל סשן, כל סוכן עורך את קבצי העבודה שלו על הענף שלו. ה-worktrees חולקים את ההיסטוריה ואת ההפניות של המאגר, אבל עריכות קבצים בתיקיית עבודה אחת לא משנות את קבצי העבודה של השנייה. אתם מחליטים מתי למזג את השינויים שלהם. worktree מפריד בין עריכות, אבל הוא לא סביבה מבודדת מבחינת אבטחה.
בקשו מהסוכן להקים את ה-worktree שלו לפני שהוא מתחיל את המשימה. בדקו את התיקייה לפני שהוא עורך, כי יצירת worktree מאוחר יותר לא מפרידה בין שינויים שהוא כבר עשה בתיקייה המשותפת.
עכשיו, אילו משימות הולכות לתת-סוכן, ואילו מקבלות סשן משלהן? משימה שהתדריך שלה שלם אפשר להתפצל עליה בין כמה סוכנים. אם אתם יכולים לתאר כותרת תחתונה עם הכתובת, אייקון אתר, או באנר עוגיות מספיק טוב כך שלא יהיה צורך לשאול שום דבר, תת-סוכן יכול לבנות את זה בלעדיכם.
משימה שתצטרך שיחה מקבלת סשן שאתם עוקבים אחריו. דף תמחור מעלה שאלות לפני שאפשר לבנות אותו, תהליך הרשמה צריך החלטות לאורך הדרך, וסכמת צבעים צריך להראות לכם ולכוונן יחד איתכם. אלה צריכות אתכם מעורבים, אז תנו לכל אחת סשן והישארו איתו.
השאלה שצריך לשאול היא פשוט אם המשימה תצטרך אתכם במהלך ההרצה. אם לא, האצילו אותה. אם כן, החזיקו אותה במקום שבו אתם יכולים לענות.
התרשים הזה ממחיש איך שאלות יכולות להגביל עבודה מקבילה. המקטעים הכחולים מייצגים עבודה של סוכן, והמקטעים הכתומים מייצגים המתנה לתשובה שלכם. עם סשן אחד בדוגמה הזו, אתם עונים מהר וההמתנות קצרות.
עם שלושה סשנים בדוגמה, אתם עונים לאחד בזמן שהאחרים מחכים. זמני ההמתנה שלהם גדלים כי השאלות שלהם מצטרפות לאותו תור לתשומת הלב שלכם.
עם חמישה סשנים בדוגמה, השניים האחרונים מחכים רוב הזמן. החמישי שאל שאלה מוקדם ועדיין לא קיבל תשובה. פתיחת הסשנים הנוספים האלה הוסיפה מעט מאוד עבודה מוגמרת.
כשסשן נעצר לתשובה או לאישור שלכם, העבודה הזו מחכה עד שתגיבו. אם כמה סשנים צריכים אתכם בבת אחת, הוספת עוד יכולה להאריך את התור במקום להגדיל את כמות העבודה שמושלמת. לכן תשומת הלב שלכם היא מגבלה אחת על מקביליות מועילה, לצד הקיבולת ומגבלות השימוש של הכלי. נסו מספרים שונים של סשנים וגלו לכמה אתם מספיקים לענות ולסקור בלי שנוצר עומס מצטבר.
הפקודה /cost מציגה מידע על השימוש בסשן. הדוגמה כוללת עלות מוערכת של 55 סנט ושני משכי זמן. עם שימוש שכלול במנוי, הערכה במחירי API היא לא חשבון נוסף, אם כי שימוש נוסף שהופעל בנפרד יכול לגרור חיובים. משכי הזמן עוזרים לנו לבחון לאן הלך הזמן של הסשן.
משך ה-API מודד זמן שהושקע בבקשות למודל, בעוד שמשך ה-wall מודד את הזמן שחלף בסשן. כאן הם 6 דקות ו-20 שניות, ו-41 דקות ו-10 שניות. התצוגה גם מתעדת 212 שורות שנוספו ו-38 שהוסרו.
ההפרש הוא 34 דקות ו-50 שניות, בערך 35 דקות מחוץ לבקשות למודל. זה יכול לכלול המתנה לכם, אבל גם הרצה של כלים ועיכובים אחרים, אז זה לא מדד ישיר לזמן התגובה שלכם. אספו את משכי הזמן האלה מכמה סשנים מקבילים והשוו אותם לשאלות שנשארו ממתינות. יחד, הם יכולים לעזור לכם לשפוט אחרי כמה סשנים אתם מסוגלים לעקוב.
תת-סוכן שימושי כשאתם יכולים לתת לו משימה שלמה ולסקור את הדוח שלו. סשן נפרד שימושי כשאתם מצפים לשיחה ורוצים להכריע בשאלות ככל שהן עולות. תת-סוכנים גם משאירים את העבודה המפורטת שלהם מחוץ להקשר של הסוכן הראשי.
לעריכה מקבילה, תנו לכל סוכן worktree משלו לפני שהוא משנה קבצים. ואז שימו לב כמה עבודה מחכה לתשובות ולסקירה שלכם, כי סוכנים נוספים עוזרים רק כשאתם מדביקים את קצב ההחלטות האלה. עכשיו אתם יכולים לבחור איך לחלק את העבודה: להאציל משימות עם תדריכים ברורים, לעקוב אחרי משימות שצריכות דיון בסשנים נפרדים, ולהשתמש ב-worktrees כדי לשמור על העריכות שלהן נפרדות עד לסקירה.