6.3 סוכני משנה הרצאה
אחת המגבלות הבסיסיות של עבודה עם agent היא context window. ככל שהשיחה מתארכת ומתמלאת בפלט של חיפושים, לוגים ותוכן קבצים, כך נשאר פחות מקום למה שבאמת חשוב, והagent נעשה איטי ומבולבל. בהרצאה הזו נכיר tool מרכזי שמתמודד עם הבעיה: סוכני משנה - subagents. הsub-agent הוא עוזר ייעודי שמקבל משימה תחומה, מבצע אותה בcontext window נפרד משלו, ומחזיר רק את הסיכום. נבין מתי זה עוזר, מתי זה דווקא מזיק, איך מגדירים sub-agent מותאם, ואיך מריצים כמה במקביל.
הרעיון המרכזי - context isolation¶
תארו לעצמכם שאתם באמצע משימה מורכבת, ואתם צריכים למצוא איפה בקוד מוגדרת פונקציה מסוימת. חיפוש כזה עלול לייצר עשרות תוצאות, קטעי קוד ולוגים - כל זה נכנס לשיחה הראשית וגודש אותה, למרות שאחרי שמצאתם את התשובה, רוב הפלט הזה כבר לא רלוונטי.
הsub-agent פותר בדיוק את זה. במקום שהחיפוש ילכלך את השיחה שלכם, אתם מאצילים אותו לsub-agent. הוא עושה את כל העבודה המלוכלכת בcontext window שלו, ומחזיר לכם רק את המסקנה: "הפונקציה מוגדרת בקובץ X שורה Y". השיחה הראשית נשארת נקייה.
זה העיקרון החשוב ביותר להבנה: לכל sub-agent יש context window טרי ומבודד. הוא לא רואה את היסטוריית השיחה שלכם, את הקבצים שכבר קראתם, או את הsub-agents שכבר הרצתם. הagent הראשי מרכיב עבורו הודעת האצלה שמסכמת את המשימה, והsub-agent עובד ממנה.
+---- the main conversation (expensive context window) ----+
| |
| "find where handleLogin is defined" |
| | |
| v delegation |
| +--- sub-agent (separate window) ---+ |
| | search -> 40 results | |
| | reading 8 files | |
| | analysis | |
| +--- returns: "auth.ts:52" -----+ |
| | |
| v only the summary returns |
| "found in auth.ts line 52" |
+---------------------------------------+
מה sub-agents נותנים - benefits¶
מעבר לשמירה על הcontext, sub-agents נותנים כמה דברים:
- שמירה על context: פלט מפורט נשאר אצל הsub-agent, רק הסיכום חוזר.
- אכיפת מגבלות: אפשר להגביל אילו tools sub-agent יכול להשתמש בהם - למשל, agent חוקר שהוא קריאה בלבד ולא יכול לערוך קבצים.
- התמחות: פרומפט מערכת ממוקד לתחום מסוים, כמו סוקר קוד או מאתר באגים.
- שליטה בעלות: אפשר לנתב משימות למודל זול ומהיר יותר כמו Haiku.
הsub-agents המובנים - built-in subagents¶
Claude Code מגיע עם כמה sub-agents מובנים שהagent הראשי משתמש בהם אוטומטית. שלושה עיקריים:
| agent | tools | מטרה |
|---|---|---|
| Explore | קריאה בלבד (בלי Write/Edit) | חיפוש והבנה של בסיס קוד |
| Plan | קריאה בלבד | מחקר קוד לצורך בניית תוכנית |
| general-purpose | כל הtools | משימות מורכבות שדורשות גם חקירה וגם שינוי |
הagent Explore הוא הדוגמה הנפוצה ביותר. כשאתם מבקשים למצוא משהו בקוד, Claude מאציל ל-Explore, וכך תוצאות החיפוש נשארות בcontext נפרד. שימו לב לפרט חשוב: Explore ו-Plan מדלגים על קריאת קובצי CLAUDE.md ועל מצב ה-git, כדי להישאר מהירים וזולים. שאר הsub-agents טוענים את CLAUDE.md כרגיל.
הגדרת sub-agent מותאם - custom subagents¶
מעבר למובנים, אפשר להגדיר sub-agents משלכם. הsub-agent הוא פשוט קובץ Markdown עם כותרת YAML. המיקום קובע את הטווח:
.claude/agents/ - project agents (go into git, shared with the team)
~/.claude/agents/ - personal agents (available in all your projects)
הנה דוגמה לקובץ sub-agent שסוקר קוד. שמים אותו למשל ב-.claude/agents/code-reviewer.md:
---
name: code-reviewer
description: Reviews code for quality and best practices. Use proactively after code changes.
tools: Read, Glob, Grep
model: sonnet
---
You are a code reviewer. When invoked, analyze the code and provide
specific, actionable feedback on quality, security, and best practices.
Do not modify files. Report issues grouped by severity.
בואו נפרק את השדות. רק name ו-description הם חובה:
- name: מזהה ייחודי באותיות קטנות ומקפים.
- description: מתי Claude צריך להאציל לagent הזה. זה השדה הכי חשוב - כתבו אותו בבירור, ובמידת הצורך הוסיפו "use proactively" כדי לעודד האצלה.
- tools: אילו tools מותרים. אם משמיטים, הagent יורש את כל הtools. כאן הגבלנו לקריאה בלבד.
- model:
sonnet,opus,haiku, מזהה מלא כמוclaude-opus-4-8, אוinherit. ברירת המחדל היאinherit- אותו מודל כמו השיחה הראשית.
הגוף של הקובץ (הטקסט אחרי ה-YAML) הוא פרומפט המערכת של הsub-agent. הוא מגדיר את ההתנהגות והטון. הsub-agent מקבל רק את הפרומפט הזה בתוספת פרטי סביבה בסיסיים, לא את כל פרומפט המערכת של Claude Code.
הדרך הקלה ביותר ליצור agent היא פשוט לבקש מ-Claude: "צור sub-agent אישי ב-~/.claude/agents/ שסורק קבצים ומציע שיפורים, קריאה בלבד, על Sonnet". Claude יכתוב את הקובץ.
איך מפעילים - invocation¶
יש שלוש דרכים להפעיל sub-agent, מהעדינה לחזקה:
- שפה טבעית: פשוט מזכירים את הagent בבקשה, ו-Claude מחליט אם להאציל. אין תחביר מיוחד.
- אזכור עם @: מקלידים
@ובוחרים את הagent מהרשימה. זה מבטיח שהagent הספציפי ירוץ, ולא משאיר את הבחירה ל-Claude. - סשן שלם: הדגל
--agent <name>מפעיל סשן שבו כל השיחה משתמשת בפרומפט ובמודל של אותו agent.
בנוסף, יש האצלה אוטומטית: Claude קורא את שדה ה-description של כל agent ומחליט בעצמו מתי להאציל, לפי הבקשה שלכם והcontext.
עבודה במקביל - parallel work¶
אחד השימושים החזקים ביותר הוא הרצת כמה sub-agents במקביל לחקירות עצמאיות. אם צריך לחקור שלושה מודולים שלא תלויים זה בזה, אפשר לבקש:
כל agent חוקר את התחום שלו בו-זמנית, ואז Claude מסנתז את הממצאים. זה עובד הכי טוב כשנתיבי החקירה אינם תלויים זה בזה. חשוב לדעת: החל מגרסאות אחרונות, sub-agents רצים ברקע כברירת מחדל, כך שאתם יכולים להמשיך לעבוד בזמן שהם עובדים.
אפשר גם לשרשר agents: "השתמש בסוקר הקוד כדי למצוא בעיות ביצועים, ואז בagent האופטימיזציה כדי לתקן אותן". כל agent מסיים ומעביר תוצאות ל-Claude, שמעביר context רלוונטי לagent הבא.
מתי זה מזיק - when it hurts¶
sub-agents הם tool חזק, אבל לא תשובה לכל דבר. הנה מתי לא להשתמש:
- משימה שדורשת הלוך-ושוב תכוף: אם צריך דיוק ותיקון איטרטיביים, השיחה הראשית עדיפה. הsub-agent מתחיל טרי ולוקח לו זמן לאסוף context.
- שלבים שחולקים הרבה context: תכנון, מימוש ובדיקה שקשורים זה בזה - עדיף לעשות בשיחה אחת, אחרת כל agent צריך לקבל את כל הרקע מחדש.
- שינוי קטן וממוקד: לא שווה את התקורה של הפעלת agent חדש.
ויש מלכוד עדין וחשוב: כשsub-agents מסיימים, התוצאות שלהם חוזרות לשיחה הראשית. אם מריצים הרבה sub-agents שכל אחד מחזיר תוצאה מפורטת, גם זה גודש את הcontext. הרווח מגיע דווקא כשהsub-agent בולע פלט גדול ומחזיר סיכום קצר. אם הוא מחזיר סיכום ארוך, ביטלתם את היתרון.
הכלל המנחה: השתמשו בsub-agent כשהמשימה מייצרת פלט מפורט שאתם לא צריכים בcontext הראשי, כשאתם רוצים לאכוף הגבלות tools, או כשהעבודה עצמאית ויכולה להחזיר סיכום.
בחירת מודל לפי עלות - choosing a model¶
שדה ה-model הוא tool חשוב לשליטה בעלות. לא כל משימה צריכה את המודל החזק ביותר. הנה השיקול:
opus - the strongest model, for complex tasks that need deep judgment
sonnet - a good balance of capability and speed, a good default for most cases
haiku - fast and cheap, for simple, repetitive tasks
inherit - the same model as the main conversation (the default)
לagent חיפוש שרק סורק קבצים ומחזיר מיקום, Haiku לרוב מספיק ועולה הרבה פחות. לagent שסוקר ארכיטקטורה ומחליט החלטות עיצוב, שווה Sonnet או Opus. הדפוס: נתבו משימות רועשות אך פשוטות למודל זול, ושמרו את המודל היקר לחשיבה. אפשר גם להשתמש במזהה מלא כמו claude-haiku-4-5-20251001 אם רוצים לקבע גרסה מדויקת.
המשך עבודה של agent - resuming¶
כל הפעלה של sub-agent יוצרת מופע חדש עם context טרי. אבל לפעמים רוצים להמשיך עבודה של agent במקום להתחיל מחדש. אפשר לבקש מ-Claude להמשיך:
use the code reviewer agent to review the auth module
[the agent finishes]
continue that review, and now also analyze the permissions logic
[Claude continues the same agent with the full context from before]
הagent שממשיך שומר את כל היסטוריית השיחה שלו - קריאות tools, תוצאות ושיקולים. הוא ממשיך בדיוק מהמקום שבו עצר. שימו לב: agents של Explore ו-Plan הם חד-פעמיים ולא ניתן להמשיך אותם; למשימות שצריך להמשיך, השתמשו ב-general-purpose או בagent מותאם.
הגבלת tools והרשאות - restricting tools¶
כמו שראינו בדוגמה, אפשר להגביל את הtools. יש שתי דרכים:
זו שכבת הגנה שימושית. agent חוקר שהוא קריאה בלבד לא יכול לשנות קבצים בטעות, גם אם משהו בתוכן שהוא קרא ניסה להטות אותו. בפרק על MCP הזכרנו הזרקת פרומפט - הגבלת tools לsub-agent היא אחת הדרכים להכיל את הסיכון הזה.
סיכום¶
בהרצאה הזו למדנו:
- סוכן משנה - subagent הוא עוזר שמקבל משימה תחומה, מבצע אותה בcontext window טרי ומבודד משלו, ומחזיר רק את הסיכום. כך פלט מפורט לא גודש את השיחה הראשית.
- כל sub-agent מתחיל נקי: הוא לא רואה את היסטוריית השיחה או הקבצים שכבר נקראו, אלא מקבל הודעת האצלה שמסכמת את המשימה.
- Claude Code כולל agents מובנים: Explore ו-Plan (קריאה בלבד, לחקירה), ו-general-purpose (כל הtools). Explore ו-Plan מדלגים על CLAUDE.md כדי להישאר מהירים.
- sub-agent מותאם הוא קובץ Markdown עם YAML ב-
.claude/agents/(פרויקט) או~/.claude/agents/(אישי). שדות חובה:nameו-description. שדות נפוצים:tools,model. הגוף הוא פרומפט המערכת. - מפעילים בשלוש דרכים: שפה טבעית, אזכור עם
@, או--agentלסשן שלם. יש גם האצלה אוטומטית לפי ה-description. - אפשר להריץ כמה agents במקביל לחקירות עצמאיות, ולשרשר אותם לזרימות רב-שלביות.
- זה מזיק כשהמשימה דורשת הלוך-ושוב תכוף, כשהשלבים חולקים הרבה context, או כשמריצים הרבה agents שכל אחד מחזיר תוצאה ארוכה - כי גם התוצאות החוזרות גודשות את הcontext.
- הגבלת tools (
toolsאוdisallowedTools) היא שכבת הגנה: agent קריאה בלבד לא יכול לשנות קבצים, מה שמכיל סיכוני הזרקת פרומפט.