סוכנים משניים: מתי לפצל ומתי לא

מתי להשתמש ב-sub agents ומתי לא


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

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

איך סוכנים משניים עובדים

אי אפשר לקרוא ישירות לכלי Agent מתוך CLAUDE.md או מפקודות slash — Claude Code מחליט בעצמו אם להשתמש בו. אבל אפשר להשפיע על ההחלטה דרך ה-prompts.

אופן הפעולה:

  1. הסוכן הראשי מפעיל סוכן משני עם prompt מוגדר
  2. הסוכן המשני מבצע את המשימה בהקשר עצמאי, עם גישה לרוב הכלים (קריאת קבצים, חיפוש, הרצת פקודות וכו')
  3. בסיום, הסוכן המשני מחזיר את התוצאות כהודעה אחת לסוכן הראשי
  4. הסוכן הראשי ממשיך לעבוד עם התוצאות

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

שלושה תרחישים שבהם כדאי להשתמש בסוכנים משניים

1. חיפוש ומחקר מקבילי

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

למשל שואלים: "איך מימוש האימות בפרויקט הזה?"

בלי סוכנים משניים, Claude Code יבצע ברצף: קורא auth controller ← קורא middleware ← קורא routes ← קורא model ← קורא config… צעד אחר צעד, לאט.

עם פיצול לסוכנים משניים:

הפעלת 3 סוכנים משניים במקביל:
- סוכן 1: בודק את לוגיקת האימות בשכבת controller ו-middleware
- סוכן 2: בודק את עיצוב המשתמשים וה-sessions בשכבת model
- סוכן 3: בודק הגדרות אימות בקבצי קונפיגורציה ומשתני סביבה

שלושה כיוונים רצים במקביל, ואז מאחדים את התוצאות. אפשר להנחות את זה ב-CLAUDE.md:

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

2. הגנה על ההקשר הראשי

חלון ההקשר של Claude Code מוגבל. אם תת-משימה דורשת קריאה של כמות גדולה של קבצים אבל בסוף צריך רק מסקנה אחת, סוכן משני חוסם את "זבל התהליך" מחוץ להקשר הראשי.

דוגמאות טיפוסיות:

  • חיפוש ב-50 קבצים אחרי כל המקומות שבהם נקרא API מסוים, וניתוח דפוסי השימוש
  • ניתוח קובץ קונפיגורציה גדול כדי לחלץ כמה ערכים קריטיים בלבד
  • סקירת קבצי בדיקות כדי להעריך אם הכיסוי מספיק

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

3. בידוד פעולות מסוכנות

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

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

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

מתי לא להשתמש בסוכנים משניים

משימות פשוטות וישירות

"שנה את שם הפונקציה מ-camelCase ל-snake_case" — פשוט עושים את זה. העלות של הפעלת סוכן משני (בניית הקשר, המתנה לתשובה, פירוש תוצאות) איטית יותר מביצוע ישיר.

כלל אצבע: אם Grep אחד + Edit אחד מספיקים, אל תפצל לסוכנים.

משימות רציפות עם תלויות חזקות

"קרא קונפיגורציה ← שנה קוד לפי הקונפיגורציה ← עדכן בדיקות לפי השינויים"

שרשרת תלויות כזו, שבה כל שלב תלוי בקודם. אם מפצלים לסוכנים משניים, צריך להעביר תוצאות ביניים דרך prompts — מסובך ופוגע במידע. עדיף לבצע ברצף.

שינויים שדורשים דיוק גבוה

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

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

כשההקשר עדיין רחב

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

השוואה מעשית

ניקח תרחיש אמיתי: חקירה של כל ה-controllers שמשתמשים ב-before_action בפרויקט Rails, וניתוח דפוסי אימות והרשאות.

בלי סוכן משני:

Claude Code קורא קבצי controller אחד אחרי השני, וכל קובץ תופס מקום בהקשר הראשי. אם יש 20 controllers, תוכן הקבצים לבדו עלול לבלוע כמות גדולה של tokens. כשמגיע הניתוח הסופי, הפרטים מקודם עלולים כבר להיעלם בגלל דחיסה.

עם סוכן משני:

הפעלת סוכן משני: "קרא את כל ה-controllers ב-app/controllers/,
מצא את כל ה-callbacks מסוג before_action,
נתח דפוסי אימות והרשאות, ותן סיכום מסווג."

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

הנחיית שימוש בסוכנים משניים ב-CLAUDE.md

אי אפשר לכפות על Claude Code להשתמש או לא להשתמש בסוכנים משניים, אבל אפשר לבטא העדפות ב-CLAUDE.md:

## העדפות שימוש בסוכנים

### משימות מתאימות לפיצול לסוכנים משניים
- מחקר חוצה מודולים (חיפוש ביותר מ-3 תיקיות)
- חיפוש וסטטיסטיקות בהיקף רחב של קוד
- ריפקטורינג ניסיוני (עם בידוד worktree)

### משימות שלא מפצלים לסוכנים משניים
- שינוי בקובץ בודד
- פעולות מרובות שלבים עם תלויות רציפות
- תיקון באג שהמיקום שלו ידוע בדיוק

כלל הזהב במשפט אחד

האם ה"תהליך" במשימה הזו גדול בהרבה מה"מסקנה"?

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

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