7 שלב 2 — בניית יכולות

Fleet ו-Sub-agents — עבודה במקביל

איך להפוך פקודה אחת בטרמינל לצוות של סוכנים שעובדים בו-זמנית. /fleet מפרק משימות מורכבות, מזהה תלויות, משגר sub-agents במקביל, ומאחד תוצאות — כמו Tech Lead שמנהל צוות מפתחים אוטומטי. בנוסף: יצירת סוכנים מותאמים עם .agent.md, השוואת fleet מול runSubagent, וחישוב עלות מדויק לפני כל הרצה. עדכני לאפריל 2026, כולל Copilot CLI GA ו-Custom Agents.

מה יהיה לכם בסוף הפרק הזה
מה תוכלו לעשות אחרי הפרק הזה
לפני שמתחילים
🔗 המשך הפרויקט

בפרק הקודם (פרק 6: Copilot CLI) למדת לעבוד עם Copilot ישירות מהטרמינל — התקנת את ה-CLI, הכרת את 4 הסוכנים המובנים (Explore, Task, Plan, Code-review), ניהלת זיכרון cross-session, ובחרת מתי CLI מתאים יותר מ-VS Code. בפרק הזה תלמד להכפיל את הכוח של ה-CLI: להריץ כמה סוכנים במקביל עם /fleet, לפרק משימות מורכבות לחלקים עצמאיים, לעקוב אחרי ביצוע עם /tasks, וליצור סוכנים מותאמים שמתמחים במשימות ספציפיות. בפרק הבא (פרק 8: Copilot ב-GitHub.com) תעבור לסביבת הענן — שם תכיר את Coding Agent שפותח PRs מ-issues, Code Review אוטומטי, ו-Copilot Spaces.

מילון מונחים — פרק 7
מונח באנגלית הסבר בעברית
/fleet פקודת slash ב-Copilot CLI שמפעילה ריצה מקבילית של מספר סוכנים על משימה אחת
Task Decomposition פירוק משימה — חלוקת משימה מורכבת לתתי-משימות עצמאיות שאפשר לעבוד עליהן בנפרד
Orchestrator מתזמר — הסוכן הראשי שמנתח את הפרומפט, מחלק משימות, ומנהל את כל ה-sub-agents ב-fleet
Sub-agent סוכן משנה — מופע עצמאי של Copilot שמטפל בתת-משימה אחת עם context window נפרד
Dependency תלות — קשר בין משימות שמחייב סדר ביצוע: משימה B חייבת לחכות שמשימה A תסתיים
Custom Agent סוכן מותאם — פרופיל שמוגדר בקובץ .agent.md עם הנחיות, כלים ומודל ייעודיים
Agent Profile פרופיל סוכן — קובץ Markdown עם YAML frontmatter שמגדיר שם, תיאור, כלים ומודל לסוכן
Result Merging מיזוג תוצאות — התהליך שבו ה-orchestrator מחבר את הפלטים של כל ה-sub-agents לתוצאה אחודה
runSubagent כלי ב-VS Code שמפעיל סוכן משנה בהקשר מבודד — עובד סדרתית, לא במקביל
Cost Multiplier Effect אפקט כפל עלות — כל sub-agent צורך premium requests בנפרד, כך ש-fleet עלול לעלות יותר מסוכן בודד
תרחיש מהשטח — הצוות של אדם והרפקטורינג שלקח 3 ימים

אדם, מפתח Backend בחברת פינטק ישראלית, קיבל משימה: לעשות refactoring ל-4 מודולים של מערכת התשלומים — payments/, invoices/, webhooks/, ו-reports/. כל מודול צריך מעבר מ-callback style ל-async/await, עדכון טיפוסים, ותוספת error handling אחיד.

בשיטה הרגילה, אדם ישב עם Copilot CLI ועבד על מודול אחד בכל פעם. כל מודול לקח כ-45 דקות. אחרי יום וחצי — 4 מודולים, 3 שעות עבודה בפועל. לא רע, אבל מתסכל — כי כל מודול היה עצמאי לגמרי. שום סיבה שהם לא יכלו לרוץ במקביל.

בשבוע שאחרי, אדם למד על /fleet. הוא כתב פרומפט אחד:

/fleet Refactor these 4 modules from callbacks to async/await, add proper TypeScript types, and implement consistent error handling with our AppError class:
1. src/payments/ — payment processing module
2. src/invoices/ — invoice generation module
3. src/webhooks/ — webhook handler module
4. src/reports/ — reporting module
Each module is independent. Use the patterns from src/shared/error-handler.ts as reference.

Fleet חילק את המשימה ל-4 sub-agents, כל אחד עבד על מודול אחד. אחרי 14 דקות — כל 4 המודולים עודכנו, עם עקביות מלאה. במקום 3 שעות סדרתיות — רבע שעה. אדם חסך 85% מהזמן על משימה שנולדה מקבילית.

מה שהפתיע את אדם: לא רק המהירות, אלא העקביות. כשהוא עבד סדרתית, המודול הרביעי נכתב בסגנון קצת שונה מהראשון — כי הוא שכח את ה-pattern שהשתמש בו שעה קודם. עם fleet, כל 4 ה-sub-agents קראו את אותו reference file (src/shared/error-handler.ts) — וכולם יישמו את אותם patterns באופן זהה. fleet לא רק מהיר — הוא יותר עקבי מסוכן בודד על משימות ארוכות.

מה זה /fleet ולמה זה משנה את המשחק

מתחיל 5 דקות חינם מושג

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

/fleet (פליט) משנה את זה. זו פקודת slash ב-Copilot CLI שהופכת סוכן בודד לצוות שלם של סוכנים שעובדים במקביל. במקום שסוכן אחד יעבוד על 4 מודולים ברצף, fleet מפעיל 4 סוכנים שעובדים על כולם בו-זמנית.

תחשבו על זה כמו צוות פיתוח:

אתם ה-Tech Lead. אתם מגדירים את המשימה. /fleet לוקח את התפקיד של מנהל הצוות — מפרק, מחלק, מנטר, ומאחד תוצאות.

ארכיטקטורת fleet — מסוכן בודד לצוות מקבילי אתה — הפרומפט Orchestrator — מתזמר Sub-agent 1 payments/ Sub-agent 2 invoices/ Sub-agent 3 webhooks/ Sub-agent 4 reports/ רץ במקביל ↓ תוצאה מאוחדת

הנקודה הקריטית: fleet לא רק מאיץ — הוא משנה את אופי העבודה. במקום לחשוב "איך אני עושה את זה", אתם מתחילים לחשוב "איך אני מפרק את זה לחלקים עצמאיים." וזו חשיבה של מנהל פרויקט, לא של מפתח בודד.

מה fleet לא עושה

חשוב להבהיר מראש: fleet לא קסם. הוא לא הופך משימה סדרתית מטבעה לפתאום מקבילית. הוא לא פותר merge conflicts בשבילכם. והוא לא חוסך premium requests — הוא בדרך כלל צורך יותר. fleet חוסך זמן, לא כסף. אם המשימה שלכם היא "תתקן את הבאג הזה בקובץ X" — fleet לא יעזור כי אין מה לפרק. fleet מבריק כשיש לכם משימה שמורכבת מכמה חלקים עצמאיים שיכולים לרוץ בו-זמנית.

מי יכול להשתמש ב-fleet?

fleet זמין לכל מי שמשתמש ב-Copilot CLI עם מנוי פעיל (Pro, Pro+, Business, Enterprise). Copilot CLI הגיע ל-General Availability ב-25 בפברואר 2026, ו-fleet היה חלק מהשחרור. אם ה-CLI שלכם מעודכן לגרסה האחרונה — fleet זמין ומוכן לשימוש. אין צורך בהתקנה נפרדת או הפעלה — זו פקודת slash מובנית שעובדת מהרגע הראשון.

דרישות מינימום:

📊 מספרים

לפי דוחות של GitHub, מפתחים שמשתמשים ב-fleet מדווחים על חיסכון של 40-80% בזמן על משימות מקביליות. המספר המדויק תלוי בכמה חלקים עצמאיים יש במשימה, כמה גדול כל חלק, ובאיזה מודל משתמשים. הערכה מייצגת: משימה של 4 מודולים שלוקחת שעה סדרתית — תיקח ~15-20 דקות עם fleet (כולל overhead).

✎ עשו עכשיו 2 דקות

פתחו את הפרויקט שלכם ורשמו 3 משימות שנתקלתם בהן לאחרונה שהיו מרובות קבצים ועצמאיות. לדוגמה: "לעדכן את כל קבצי הטסט לפורמט חדש", "להוסיף error handling ל-3 מודולים", "לכתוב תיעוד ל-4 endpoints". שמרו את הרשימה — תשתמשו בה בתרגילים.

איך fleet עובד — מאחורי הקלעים

בינוני 8 דקות חינם מושג

כשאתם כותבים /fleet לפני הפרומפט, Copilot CLI לא פשוט "מריץ מהר יותר". מופעל תהליך מסודר של 4 שלבים שמנוהל על ידי Orchestrator (מתזמר) — סוכן ראשי שלא כותב קוד בעצמו, אלא מנהל את הצוות:

ארבעת השלבים של fleet 1 ניתוח פרומפט מה המשימה? אפשר לפרק? כמה חלקים? 2 פירוק + תלויות חלוקה למשימות מה עצמאי? מה תלוי? 3 שיגור מקבילי sub-agents יוצאים כל אחד עם context נפרד ומבודד 4 מיזוג תוצאות polling + המתנה גל הבא אם צריך תוצאה מאוחדת Orchestrator מנהל את כל התהליך מקצה לקצה

שלב 1: ניתוח הפרומפט

ה-Orchestrator קורא את הפרומפט שלכם ומחליט: האם המשימה הזו ניתנת לפירוק? אם כתבתם "תתקן את הבאג בקובץ X" — אין מה לפרק, וfleet ירוץ כמו סוכן רגיל. אם כתבתם "תעדכן 4 מודולים" — ה-Orchestrator מזהה שזה ניתן לפיצול.

כלל מפתח: ככל שהפרומפט שלכם יותר ספציפי ומפורט, כך ה-Orchestrator מסוגל לפרק טוב יותר. פרומפט כללי כמו "תשפר את הקוד" יגרום לריצה סדרתית — כי ה-Orchestrator לא יכול לזהות חלקים עצמאיים.

שלב 2: פירוק וזיהוי תלויות

ה-Orchestrator מחלק את המשימה לwork items (יחידות עבודה) ובונה גרף תלויות (Dependency Graph). לכל work item הוא מגדיר:

Work items עצמאיים מסומנים כ"מוכנים לשיגור". Work items תלויים נכנסים לתור המתנה.

שלב 3: שיגור מקבילי

ה-Orchestrator משגר sub-agents (סוכני משנה) — כל אחד מקבל work item אחד. הנקודה החשובה: כל sub-agent מקבל context window נפרד ומבודד. הוא לא רואה את מה שה-sub-agents האחרים עושים. זה כמו 4 מפתחים שכל אחד יושב בחדר נפרד עם מפרט ברור.

ההפרדה הזו היא גם יתרון וגם מגבלה:

שלב 4: מיזוג תוצאות

ה-Orchestrator עושה polling — בודק כל כמה שניות אם sub-agents סיימו. כשכל ה-sub-agents של הגל הנוכחי מסיימים:

המיזוג הוא החלק הרגיש ביותר. ה-Orchestrator צריך לחבר שינויים מכמה sub-agents לתוצאה אחת קוהרנטית. ברוב המקרים, כשה-sub-agents עבדו על קבצים שונים — זה פשוט: כל sub-agent שינה קבצים שלו, ואין התנגשות. אבל אם שני sub-agents נגעו באותו קובץ (למשל — שניהם הוסיפו exports ל-index.ts) — ייתכנו merge conflicts. ה-Orchestrator ינסה לפתור אותם, אבל לא תמיד יצליח.

למה context isolation חשוב: כל sub-agent מקבל context window נפרד — הוא לא רואה את הקבצים ששאר ה-sub-agents עובדים עליהם, ולא יודע מה השתנה מחוץ ל-scope שלו. זה מה שמאפשר parallelism אמיתי (אין "ריצה" על shared state), אבל גם מה שיוצר סיכון: שני sub-agents יכולים לקבל החלטות סותרות אם לא נתתם להם הנחיות ברורות. למשל — אם ביקשתם "add error handling" בלי לציין איך, כל sub-agent עלול ליצור מנגנון error שונה.

💡 טיפ: Reference file = עקביות

הדרך הטובה ביותר להבטיח עקביות בין sub-agents: ציינו reference file. כתבו בפרומפט "Use the patterns from src/shared/error-handler.ts as reference." כל sub-agent יקרא את הקובץ הזה וישתמש באותם patterns — גם בלי לדעת מה ה-sub-agents האחרים עושים.

✎ עשו עכשיו 1 דקה

חשבו על המשימה האחרונה שעבדתם עליה עם Copilot CLI. האם היא הייתה ניתנת לפירוק ל-2+ חלקים עצמאיים? אם כן — כתבו ביום שורה אחת: "X חלקים עצמאיים: [רשימה]". אם לא — למה לא?

הפעלת /fleet — מהלכה למעשה

בינוני 10 דקות חינם תרגול

הסינטקס בסיסי — מוסיפים /fleet לפני הפרומפט:

/fleet [הפרומפט שלכם כאן]

אבל ההבדל בין fleet שעובד מעולה לבין fleet שרץ סדרתי ולא עוזר — הוא באיכות הפרומפט. הנה ההבדלים:

פרומפט חלש (fleet לא יצליח לפרק)

/fleet Fix all the issues in the project

למה זה נכשל: ה-Orchestrator לא יכול לזהות חלקים עצמאיים. "all the issues" זה כללי מדי. fleet יחזור לריצה סדרתית של סוכן בודד — בזבוז.

פרומפט טוב (fleet יפרק ביעילות)

/fleet Perform the following independent tasks:
1. Add input validation to src/api/users.ts — validate email, name length, password strength
2. Add input validation to src/api/products.ts — validate price range, SKU format, description length
3. Add input validation to src/api/orders.ts — validate order items, quantities, shipping address
4. Write unit tests for all 3 validators in tests/validators/

למה זה עובד: כל item ממופה לקבצים ספציפיים, כל item עצמאי, ויש deliverable ברור לכל אחד. ה-Orchestrator יזהה ש-items 1-3 יכולים לרוץ במקביל, ו-item 4 צריך לחכות שהם יסיימו (כי הטסטים תלויים בקוד שנכתב).

מה לצפות אחרי ההרצה

כשfleet מתחיל לרוץ, תראו בטרמינל הודעה שמציינת כמה sub-agents נוצרו ומה כל אחד עושה. למשל:

Fleet: Decomposing task into 4 subtasks...
  [1/4] Adding validation to users.ts — dispatching sub-agent
  [2/4] Adding validation to products.ts — dispatching sub-agent
  [3/4] Adding validation to orders.ts — dispatching sub-agent
  [4/4] Writing tests — waiting for 1-3 to complete

ברגע שה-sub-agents הראשונים יוצאים, תראו התקדמות ב-output. כשכולם מסיימים, fleet מציג סיכום של מה בוצע, אילו קבצים שונו, ואם הייתה בעיה. תמיד בדקו את הסיכום — אם sub-agent נכשל, fleet יציין את זה.

מה קורה כשfleet לא מצליח לפרק?

אם הפרומפט שלכם כללי מדי, ה-Orchestrator לא יזהה חלקים עצמאיים. במקרה הזה, fleet פשוט ירוץ כסוכן רגיל — בלי parallelism. לא תקבלו שגיאה, אלא ריצה סדרתית רגילה. זה לא נורא — אבל זה מבזבז את ה-overhead של fleet (ניתוח הפרומפט) בלי תועלת. אם אתם רואים שfleet רץ סדרתי — תעצרו, שפרו את הפרומפט, ונסו שוב.

טעות נפוצה: פרומפט כללי מדי

מה קורה: כותבים "/fleet Improve the codebase" בלי פירוט.

למה זה מפתה: fleet אמור "לפרק אוטומטית" — אז למה שאני אפרק בעצמי?

מה לעשות במקום: פרטו: אילו קבצים, מה בדיוק לעשות בכל אחד, ומה התוצאה הצפויה. ה-Orchestrator מצוין בניהול — אבל הוא צריך מכם הנחיות ברורות, בדיוק כמו Tech Lead שנותן brief לצוות.

אנטומיה של fleet prompt מוצלח

בואו ננתח את הפרומפט הטוב שראינו למעלה ונבין למה כל חלק חשוב:

5 כללים לכתיבת fleet prompt מנצח

כלל דוגמה טובה דוגמה גרועה
ציינו קבצים ספציפיים src/api/users.ts "the API files"
הגדירו deliverable לכל item "Add validation function that returns errors array" "Improve validation"
סמנו תלויות אם יש "Item 4 depends on items 1-3" (לא מציינים שום תלות)
הפרידו לנקודות ממוספרות "1. ... 2. ... 3. ..." פסקה אחת ארוכה
ציינו reference files "Use patterns from src/shared/" "Follow best practices"
✎ עשו עכשיו 3 דקות

קחו אחת מ-3 המשימות שרשמתם קודם. כתבו לה /fleet prompt לפי 5 הכללים — עם קבצים ספציפיים, deliverables, ותלויות. אל תריצו עדיין — רק כתבו את הפרומפט בקובץ טקסט.

✎ עשו עכשיו 5 דקות

עכשיו הריצו את הפרומפט שכתבתם: פתחו טרמינל בתיקיית הפרויקט, הקלידו copilot (או ghcs), הדביקו את הפרומפט עם /fleet בהתחלה, ולחצו Enter. צפו ב-Orchestrator שמפרק את המשימה — כמה sub-agents הוא יצר? האם הוא זיהה תלויות?

🛠 תרגיל 1: הרצת fleet ראשונה — refactoring מרובה קבצים

זמן משוער: 15 דקות

מה תייצרו: הרצת fleet מוצלחת עם 2+ sub-agents שעובדים במקביל.

  1. בחרו פרויקט עם 3-4 קבצים שצריכים אותו סוג שינוי (למשל: הוספת JSDoc, מעבר ל-async/await, תוספת error handling)
  2. כתבו fleet prompt עם קבצים ממוספרים ו-deliverable לכל אחד
  3. הריצו: /fleet [הפרומפט שלכם]
  4. צפו ב-output — כמה sub-agents נוצרו? מה כל אחד עושה?
  5. כשהפעולה מסתיימת, בדקו: האם כל הקבצים עודכנו? האם יש עקביות בין הקבצים?
  6. הריצו git diff ובדקו את השינויים — תעדו: כמה זמן לקח fleet, ואיך זה משתווה להערכה שלכם של עבודה סדרתית

תוצאה צפויה: שינויים עקביים ב-3-4 קבצים, שנעשו במקביל, עם זמן קצר משמעותית ממה שהייתם עושים סדרתית.

תלויות בין משימות — מקביל vs סדרתי

בינוני 7 דקות חינם מושג

לא כל משימה ניתנת להרצה מקבילית. ה-Orchestrator חייב להבין מה תלוי במה כדי להחליט מה רץ ביחד ומה מחכה. הנה שני דפוסים קלאסיים:

דפוס 1: מקביל מלא (Fully Parallel)

כל המשימות עצמאיות — אין תלויות ביניהן:

/fleet
1. Add error handling to src/services/auth.ts
2. Add error handling to src/services/payment.ts
3. Add error handling to src/services/notification.ts
4. Add error handling to src/services/search.ts

כאן כל 4 המשימות רצות בו-זמנית. שום אחת לא תלויה באחרת. זה התרחיש האידיאלי ל-fleet.

דפוס 2: גלים (Waves / Staged)

חלק מהמשימות תלויות בתוצאות של אחרות:

/fleet
1. Create shared error types in src/types/errors.ts
2. Create shared validation utils in src/utils/validation.ts
3. Refactor src/api/users.ts to use the new error types and validation (depends on 1,2)
4. Refactor src/api/products.ts to use the new error types and validation (depends on 1,2)
5. Update tests in tests/ for all changed files (depends on 3,4)

ה-Orchestrator יזהה 3 גלים:

גרף תלויות — גלים מקביליים וסדרתיים גל 1 גל 2 גל 3 1. error types 🟢 2. validation utils 🟢 ⬤ מקביל 3. refactor users.ts 🟡 4. refactor products.ts 🟡 ⬤ מקביל 5. update tests 🔴 ממתין לגל 2 ⏲ סדרתי — ממתין

טיפ מעשי: אם אתם יודעים שיש תלויות, ציינו אותן במפורש בפרומפט. כתבו "(depends on 1,2)" או "after items 1-3 are done". ה-Orchestrator מנסה לזהות תלויות לבד, אבל הוא יעשה עבודה טובה יותר אם אתם עוזרים לו.

דפוס 3: סדרתי מלא (Fully Sequential)

לפעמים אין שום parallelism. כל שלב תלוי בשלב הקודם:

# לא מתאים ל-fleet!
1. Create database schema migration
2. Update ORM models to match new schema (depends on 1)
3. Update API routes to use new models (depends on 2)
4. Update frontend to match new API (depends on 3)

במקרה כזה, אל תשתמשו ב-fleet. ה-Orchestrator ירוץ סדרתי (גל 1 = item 1, גל 2 = item 2, וכו') — ותשלמו את ה-overhead של fleet בלי שום parallelism. עדיף סוכן בודד שיעבוד ברצף.

איך לזהות תלויות בפרויקט שלכם

שאלו את עצמכם 3 שאלות על כל זוג items:

  1. האם item B קורא קובץ ש-item A כותב? אם כן — B תלוי ב-A.
  2. האם item B מייבא (import) מקובץ ש-item A משנה? אם כן — B תלוי ב-A.
  3. האם ניתן להריץ את item B גם אם item A לא קיים? אם כן — הם עצמאיים.

אם כל שני items עוברים את שאלה 3 בהצלחה — הם מתאימים ל-parallelism. אם לא — סמנו תלות.

✎ עשו עכשיו 2 דקות

חשבו על משימה עם תלויות: כתבו 4-5 items שיש ביניהם גם חלקים מקביליים וגם סדרתיים. סמנו ליד כל item: "🟢 עצמאי" או "🟡 תלוי ב-X". זה יעזור לכם לכתוב fleet prompts טובים יותר.

טעות נפוצה: fleet על משימות תלויות בלי לציין

מה קורה: כותבים "/fleet Refactor the data model, then update the API to use it, then fix the tests" — בלי לציין תלויות.

למה זה מפתה: fleet אמור "לזהות אוטומטית" — אז למה להתאמץ?

מה לעשות במקום: ציינו תלויות במפורש: "(depends on 1)", "(after 1,2 complete)". ה-Orchestrator טוב — אבל לא מושלם. אם הוא לא יזהה תלות, שני sub-agents יעבדו על קבצים שמשפיעים אחד על השני, ותקבלו merge conflicts או קוד שבור.

ניטור: /tasks ומעקב אחרי fleet

מתחיל 5 דקות חינם כלי

אחרי שfleet יוצא לדרך, אתם לא צריכים לשבת ולחכות בחושך. הפקודה /tasks היא חלון הבקרה שלכם — היא מציגה את כל המשימות הרקע בסשן הנוכחי, כולל כל sub-agent שfleet יצר.

איך להשתמש ב-/tasks

פשוט מקלידים /tasks בזמן שfleet רץ. נפתח דיאלוג עם רשימת כל המשימות:

מקש פעולה
↑ ↓ ניווט בין משימות ברשימה
Enter צפייה בפרטים של sub-agent — מה הוא עושה עכשיו, אילו קבצים שינה
k Kill — עצירת sub-agent תקוע או שגוי
r Remove — הסרת משימות שהסתיימו או נהרגו מהרשימה

מתי להתערב

טיפ: תזמון /tasks

אין סיבה להריץ /tasks מיד — fleet צריך כמה שניות להפעיל את ה-sub-agents. המלצה: חכו 10-15 שניות אחרי שfleet מתחיל, ואז הריצו /tasks. ככה תראו את כל ה-sub-agents כשהם כבר בפעולה, ולא רשימה ריקה.

אפשר להריץ /tasks כמה פעמים במהלך fleet — זה לא מפריע לריצה. כל פעם תראו סטטוס מעודכן. אם sub-agent סיים, הסטטוס שלו יעבור מ-"running" ל-"completed".

דוגמה: מה אתם רואים ב-/tasks
Background tasks (4 total):
  [1] ✅ Add validation to users.ts       — completed (2m 14s)
  [2] 🔄 Add validation to products.ts    — running (1m 48s)
  [3] ✅ Add validation to orders.ts       — completed (1m 52s)
  [4] ⏳ Write tests for validators        — waiting (depends on 1,2,3)

בדוגמה הזו, שני sub-agents סיימו, אחד עדיין רץ, ואחד מחכה שהשלושה הראשונים יסיימו. ברגע ש-agent 2 יסיים — agent 4 ייצא לדרך אוטומטית.

✎ עשו עכשיו 2 דקות

בפעם הבאה שאתם מריצים /fleet, הקלידו /tasks אחרי 15 שניות. נווטו ברשימה, לחצו Enter על אחד מה-sub-agents כדי לראות פרטים. תעדו לעצמכם: כמה sub-agents נוצרו ומה הסטטוס של כל אחד. חכו עד שfleet מסיים ובדקו שכל המשימות בסטטוס "completed".

עלות fleet — חישוב premium requests מראש

בינוני 7 דקות חינם ניתוח

זה אולי הנושא הכי חשוב בפרק הזה, וגם הכי מוזנח: fleet עולה יותר מסוכן בודד. לא "קצת יותר" — אלא כפולות. כל sub-agent הוא מופע עצמאי שצורך premium requests בנפרד.

הנוסחה

עלות fleet = סכום (אינטראקציות של כל sub-agent × מכפיל המודל)

בואו נראה דוגמה מעשית:

תרחיש סוכן בודד fleet (3 sub-agents)
מודל: GPT-4.1 (0x = חינם) 10 אינטראקציות × 0 = 0 credits 3 × ~5 אינטראקציות × 0 = 0 credits
מודל: Claude Sonnet (0.5x) 10 × 0.5 = 5 credits 3 × ~5 × 0.5 = 7.5 credits
מודל: Claude Opus (3x) 10 × 3 = 30 credits 3 × ~5 × 3 = 45 credits
מודל: o3-pro (30x) 10 × 30 = 300 credits 3 × ~5 × 30 = 450 credits

שימו לב: fleet עם 3 sub-agents לא בהכרח עולה 3 פעמים יותר, אבל הוא כמעט תמיד עולה יותר מסוכן בודד. הסיבה: כל sub-agent מתחיל מ-context ריק, כך שהוא צריך כמה אינטראקציות ראשוניות "להבין את הסביבה" — overhead שלא קיים בסוכן בודד שכבר מכיר את הפרויקט.

חישוב מעשי: כמה credits ל-fleet?

בואו נחשב דוגמה ריאלית. נניח שיש לכם משימה שדורשת refactoring של 4 מודולים:

עם מודל 0x (חינם) — שני המקרים עולים 0 credits. fleet הוא כלי חינמי בפועל.

עם Claude Sonnet (0.5x): סוכן בודד = 10×0.5 = 5 credits. Fleet = 23×0.5 = 11.5 credits. fleet עולה כפול.

עם Opus (3x): סוכן בודד = 10×3 = 30 credits. Fleet = 23×3 = 69 credits. fleet עולה 2.3 פעמים יותר.

המסקנה ברורה: fleet + מודל 0x = win-win. fleet + מודל יקר = חישוב עלות-תועלת.

מתי העלות המוגברת מוצדקת?

התשובה תלויה בזמן שלכם. אם fleet חוסך שעה ועולה 20 credits נוספים — ושעת עבודה שלכם שווה יותר מ-$0.80 (20 × $0.04) — fleet מוצדק מבחינה כלכלית. ברוב המקרים, הזמן שfleet חוסך שווה הרבה יותר מהעלות הנוספת. אבל אם אתם קרובים למגבלת ה-credits החודשית ולא רוצים להיכנס ל-overage — כדאי לשקול.

💡 טריק חיסכון: fleet + מודל חינמי

כלל האצבע המרכזי: הריצו fleet עם מודלים 0x (חינמיים) כמו GPT-4.1. ב-0x, fleet עולה אפס — לא משנה כמה sub-agents רצים. זה הופך את fleet לכלי פרודוקטיביות ללא עלות. שמרו את המודלים היקרים (Opus, o3) לסוכן בודד על משימות שדורשות עומק.

מסגרת החלטה: האם fleet שווה את העלות?
שאלה כן → fleet לא → סוכן בודד
יש 3+ חלקים עצמאיים? ✔ fleet יפרק ויקביל ✖ אין מה לפרק
המודל הנבחר הוא 0x (חינם)? ✔ fleet בחינם — תמיד שווה ⚠ חישוב עלות מול זמן
הזמן שייחסך > 30 דקות? ✔ עלות Premium מוצדקת ✖ חיסכון לא מצדיק
אין קבצים משותפים? ✔ אין סיכון merge conflicts ✖ סיכון גבוה לקונפליקטים

כלל אצבע: אם אפילו תשובה אחת היא "לא" — שקלו סוכן בודד. אם כל התשובות "כן" — fleet בהחלט.

Overage — מה קורה כשנגמרים הקרדיטים?

כל מנוי Copilot כולל מספר קבוע של premium requests לחודש (למשל: Pro = 300). כשנגמרים, כל request נוסף עולה $0.04. עכשיו תחשבו: fleet של 4 sub-agents עם Claude Opus (3x) שצורך ~70 credits בהפעלה אחת — אם אתם כבר ב-overage, זה $2.80 על הפעלה אחת. לא הרבה — אבל אם אתם מריצים fleet 5 פעמים ביום, זה $14 ביום, $280 בחודש עבודה. תמיד בדקו כמה credits נשארו לפני fleet עם מודל יקר.

מצד שני, fleet עם GPT-4.1 (0x) — אפס עלות, אפס overage, ללא הגבלה. לרוב המשימות (refactoring, docs, tests) GPT-4.1 מספיק. שמרו את Opus ו-Sonnet לסוכן בודד על משימות שדורשות הבנה עמוקה.

✎ עשו עכשיו 3 דקות

חשבו על fleet prompt שכתבתם או שתכתבו. חשבו: כמה sub-agents צפויים? איזה מודל תשתמשו? חשבו את העלות המשוערת: (מספר sub-agents) × (~5 אינטראקציות) × (מכפיל מודל). רשמו את המספר — האם זה שווה לכם? אם יוצא מעל 20 credits — שקלו מודל 0x במקום.

מתי fleet מושלם — 5 תרחישים אידיאליים

בינוני 5 דקות חינם אסטרטגיה

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

1. Refactoring מרובה קבצים

3-10 קבצים שצריכים את אותו סוג שינוי: מעבר ל-async/await, הוספת types, שינוי import style.

/fleet Refactor the following services from class-based to functional:
1. src/services/user-service.ts
2. src/services/order-service.ts
3. src/services/payment-service.ts
Use arrow functions, remove 'this' references, export individual functions.

2. יצירת Test Suite

כתיבת טסטים ל-N מודולים שכל אחד עצמאי:

/fleet Write comprehensive unit tests for each module:
1. tests/auth.test.ts for src/auth/ — test login, register, forgot-password
2. tests/cart.test.ts for src/cart/ — test add, remove, update quantity
3. tests/checkout.test.ts for src/checkout/ — test payment flow, validation

3. עדכון תיעוד

כתיבת/עדכון docs למספר components:

/fleet Update JSDoc documentation for all public functions in:
1. src/components/Button.tsx
2. src/components/Modal.tsx
3. src/components/Table.tsx
4. src/components/Form.tsx
Follow the documentation style in src/components/Input.tsx as reference.

4. Migration של dependencies

מעבר מספריה A לספריה B ב-N קבצים:

/fleet Migrate from moment.js to date-fns in all files:
1. src/utils/date-formatter.ts
2. src/components/DatePicker.tsx
3. src/api/reports.ts
4. src/hooks/useCountdown.ts
Replace all moment() calls with equivalent date-fns functions.

5. Feature חוצה שכבות

פיצ'ר שדורש שינויים ב-API + UI + tests כשכל שכבה עצמאית:

/fleet Implement dark mode support:
1. Add theme types and context in src/theme/
2. Update all CSS variables in src/styles/variables.css
3. Add toggle component in src/components/ThemeToggle.tsx
4. Write tests for theme switching in tests/theme.test.ts (depends on 1,3)

מה משותף ל-5 התרחישים?

שימו לב לדפוס: בכל 5 התרחישים יש הפרדה ברורה של קבצים. כל sub-agent עובד על קובץ/תיקייה אחרים, ואין חפיפה. זה הסוד של fleet: ככל שהחלוקה נקייה יותר — התוצאה טובה יותר. אם אתם יכולים להצביע על כל item ולומר "זה נוגע רק בקובץ X" — fleet יעבוד מצוין.

כלל האצבע: אם כל item בפרומפט ממופה ל-קובץ או תיקייה ייחודיים — fleet הוא הבחירה הנכונה. אם items חולקים קבצים — חשבו פעמיים.

✎ עשו עכשיו 3 דקות

מתוך 5 התרחישים למעלה, בחרו אחד שרלוונטי לפרויקט שלכם. התאימו את ה-prompt — שנו את שמות הקבצים ואת סוג השינוי. שמרו את ה-prompt לרשימת ה-deliverables שלכם — תשתמשו בו בתרגיל הבא.

מתי לא להשתמש ב-fleet — מלכודות נפוצות

בינוני 5 דקות חינם אסטרטגיה

fleet הוא לא "תמיד טוב יותר". יש מצבים שבהם fleet מזיק יותר מאשר עוזר:

❌ תרחיש 1: משימות סדרתיות

"תבנה את ה-database schema, אחר כך ה-API, אחר כך ה-UI." — כל שלב תלוי בקודם. fleet לא יוכל להקביל כלום. ה-Orchestrator ירוץ סדרתי ותשלמו overhead מיותר. פתרון: סוכן בודד שעובד ברצף — אותה תוצאה, פחות overhead.

❌ תרחיש 2: קוד מקושר (Tightly Coupled)

שני קבצים שמייבאים אחד מהשני, משתמשים באותם types, ותלויים בהתנהגות משותפת. למשל: user-service.ts ו-auth-service.ts ששניהם מייבאים מ-types/user.ts ומשתמשים זה בזה. אם שני sub-agents ישנו אותם במקביל — כל אחד עלול לשנות את ה-types בצורה שונה, ותקבלו קוד שלא מתקמפל. פתרון: סוכן בודד שרואה את כל התמונה.

❌ תרחיש 3: קבצים משותפים

אם כמה sub-agents נוגעים באותו קובץ (למשל — כולם צריכים לעדכן את index.ts כי הם מוסיפים exports) — ה-Orchestrator ינסה למזג, אבל הסיכוי לקונפליקט גבוה. דמיינו 3 sub-agents שכל אחד מוסיף שורה שונה לאותו קובץ — ה-merge עלול ליצור duplicate imports, missing exports, או סדר שגוי. פתרון: הוציאו את השינוי בקובץ המשותף ל-item נפרד שרץ אחרי כולם.

❌ תרחיש 4: משימה קטנה

Fleet מוסיף overhead: ניתוח, פירוק, שיגור, polling, מיזוג. ה-overhead הזה לוקח 30-60 שניות. אם המשימה כולה לוקחת 2 דקות עם סוכן בודד — fleet יהיה איטי יותר בגלל ה-overhead. כלל אצבע: fleet משתלם כשהמשימה הסדרתית לוקחת 10+ דקות. מתחת לזה — סוכן רגיל.

❌ תרחיש 5: תקציב קרדיטים מוגבל

אם נשארו לכם 20 premium requests החודש ואתם חושבים על fleet עם מודל 1x — fleet של 4 sub-agents עלול "לאכול" 20-30 credits במכה אחת. עדיף סוכן בודד עם מודל 0x שלא צורך credits כלל. זכרו: overage עולה $0.04 לכל credit. fleet של 4 sub-agents עם Opus (3x) שנכנס ל-overage עלול לעלות כמה דולרים בהפעלה אחת.

מסגרת החלטה: fleet או סוכן בודד?

עברו על הרשימה. אם אפילו אחד מהתנאים מתקיים — אל תשתמשו ב-fleet:

אם כל התנאים לא מתקיימים — fleet הוא הבחירה הנכונה.

טעות נפוצה: לא לבדוק תוצאות אחרי fleet

מה קורה: fleet מסיים, אתם עושים git add . ו-git commit בלי לבדוק.

למה זה מפתה: fleet הצליח, אז בטח הכל טוב, נכון?

מה לעשות במקום: תמיד הריצו git diff אחרי fleet. בדקו שהשינויים הגיוניים, שאין קונפליקטים, ושה-sub-agents לא עשו שינויים סותרים. fleet ממזג אוטומטית — אבל הוא לא תמיד מזהה שינויים שסותרים מבחינה לוגית (למשל: שני sub-agents שינו את אותו type definition בצורות שונות).

✎ עשו עכשיו 2 דקות

חשבו על הפרויקט שלכם. רשמו 3 משימות שהן לא מתאימות ל-fleet — וליד כל אחת כתבו למה (תלויות? קבצים משותפים? קטנה מדי?).

סוכנים מותאמים — .agent.md

בינוני 8 דקות חינם הקמה

עד עכשיו השתמשנו בסוכנים המובנים של Copilot CLI (Explore, Task, Plan, Code-review — מפרק 6). אבל מה אם אתם רוצים סוכן שמתמחה בדיוק במה שאתם צריכים? סוכן שיודע את ה-conventions של הפרויקט שלכם, משתמש רק בכלים מסוימים, ועובד עם מודל ספציפי?

זה בדיוק מה ש-Custom Agents (סוכנים מותאמים) עושים. הם מוגדרים בקבצי .agent.md — קבצי Markdown עם YAML frontmatter שמגדיר את הפרופיל של הסוכן.

מבנה קובץ .agent.md

---
name: docs-writer
description: Generates and updates documentation following project conventions
model: gpt-4.1
tools:
  - read
  - edit
  - search
---

# Documentation Writer Agent

You are a documentation specialist for this project.

## Rules
- Always follow JSDoc format for TypeScript files
- Include @param, @returns, and @example for every public function
- Use Hebrew for user-facing docs, English for code docs
- Never modify source code — only documentation

מאפייני YAML frontmatter

מאפיין חובה? מה עושה
name כן שם ייחודי לסוכן — ככה מפעילים אותו (/agent docs-writer)
description כן תיאור קצר — Copilot משתמש בו כדי להחליט מתי להפעיל את הסוכן אוטומטית
model לא מודל ספציפי (gpt-4.1, claude-sonnet, gemini-pro). אם לא מצוין — נבחר אוטומטית
tools לא רשימת כלים: ["read", "edit", "search"] או ["*"] לכל הכלים
mcp-servers לא שרתי MCP שהסוכן יכול לגשת אליהם (מפרק 5)

איפה שמים את הקובץ?

מיקום היקף מתי להשתמש
.github/agents/ רמת ריפוזיטורי סוכנים ספציפיים לפרויקט — משותפים לכל הצוות
{org}/.github/agents/ רמת ארגון סוכנים משותפים לכל הריפוזיטוריים בארגון
~/.copilot/agents/ רמת משתמש סוכנים אישיים שעובדים בכל פרויקט

סדר עדיפויות: קובץ ברמת ריפוזיטורי דורס קובץ באותו שם ברמת ארגון או משתמש. זה מאפשר לפרויקט ספציפי "לדרוס" סוכן ארגוני עם גרסה מותאמת. למשל: הארגון הגדיר סוכן reviewer עם כללים כלליים, אבל הפרויקט שלכם צריך כללים ספציפיים ל-TypeScript — צרו .github/agents/reviewer.agent.md בריפוזיטורי ותדרסו את הגרסה הארגונית.

3 סוכנים מותאמים שכל צוות צריך

הנה 3 תבניות שמכסות את רוב הצרכים:

סוכן 1: Test Generator

---
name: test-generator
description: Generates comprehensive unit and integration tests
model: gpt-4.1
tools:
  - read
  - edit
  - search
---

# Test Generator Agent

## Rules
- Use the project's existing test framework (detect from package.json)
- Follow AAA pattern: Arrange, Act, Assert
- Include edge cases: null, undefined, empty string, boundary values
- Mock external dependencies — never call real APIs
- Aim for 80%+ code coverage on the target file
- Name test files: [original-name].test.ts

סוכן 2: Security Reviewer

---
name: security-review
description: Reviews code for security vulnerabilities and best practices
model: claude-sonnet-4
tools:
  - read
  - search
---

# Security Review Agent

## Focus Areas
- SQL injection, XSS, CSRF vulnerabilities
- Hardcoded secrets or API keys
- Missing input validation
- Insecure dependencies (check package.json)
- Authentication and authorization gaps
- OWASP Top 10 compliance

סוכן 3: Refactorer

---
name: refactorer
description: Refactors code for better readability and maintainability
model: gpt-4.1
tools:
  - read
  - edit
  - search
---

# Refactoring Agent

## Principles
- Extract repeated logic into shared utilities
- Replace magic numbers with named constants
- Simplify nested conditionals with early returns
- Ensure all changes pass existing tests
- Never change public API signatures without explicit approval

הפעלת סוכן מותאם

שתי דרכים:

  1. מפורשת: /agent docs-writer — מפעיל את הסוכן ישירות. אתם שולטים מתי ועל מה הוא עובד
  2. אוטומטית: Copilot קורא את ה-description ומפעיל את הסוכן כשהמשימה מתאימה. למשל, אם תבקשו "update the docs" ויש סוכן עם description של "documentation" — הוא יופעל אוטומטית. זה עובד כי Copilot משווה את הפרומפט שלכם ל-description של כל סוכן רשום ומחליט איזה מתאים

סוכנים מותאמים + fleet = קומבינציה חזקה

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

/fleet
1. /agent test-generator — write tests for src/api/users.ts
2. /agent test-generator — write tests for src/api/products.ts
3. /agent security-review — review src/api/auth.ts
4. /agent docs-writer — update docs for src/api/

כל sub-agent יקבל את ההנחיות של הסוכן המותאם הרלוונטי — כך שה-test-generator יכתוב טסטים לפי ה-conventions שהגדרתם, ה-security-reviewer יחפש לפי הכללים שלכם, וכו'. זו רמה גבוהה של אוטומציה שמשלבת customization (מה הסוכן עושה) עם parallelism (כמה סוכנים עובדים בו-זמנית).

✎ עשו עכשיו 5 דקות

צרו סוכן מותאם ראשון: צרו תיקייה .github/agents/ בפרויקט שלכם, ובתוכה קובץ reviewer.agent.md. כתבו frontmatter עם name: reviewer, description: Reviews code for security and performance, model: gpt-4.1, tools: ["read", "search"]. בגוף הקובץ כתבו 3-4 כללים שחשובים לכם ב-code review. שמרו והריצו: /agent reviewer על קובץ בפרויקט.

🛠 תרגיל 2: בניית סוכן מותאם עם הגדרות מלאות

זמן משוער: 15 דקות

מה תייצרו: קובץ .agent.md עם שם, כלים, מודל, ו-MCP server (אופציונלי).

  1. החליטו על תפקיד: test-writer, security-reviewer, docs-generator, refactorer, או תפקיד מותאם
  2. צרו קובץ .github/agents/[name].agent.md
  3. כתבו YAML frontmatter: name, description, model (בחרו מודל מתאים — 0x לרוב המשימות), tools
  4. בגוף הקובץ: כתבו 5+ כללים ספציפיים שמגדירים איך הסוכן עובד
  5. הריצו: /agent [name] על קובץ בפרויקט
  6. בדקו: האם הסוכן פועל לפי הכללים? האם הוא משתמש במודל שהגדרתם?

תוצאה צפויה: סוכן מותאם שעובד לפי הכללים שהגדרתם, עם המודל והכלים הנכונים.

שימו לב: מודל בסוכן מותאם = עלות קבועה

כשאתם מגדירים model: claude-sonnet-4 בסוכן, כל הפעלה של הסוכן תשתמש במודל הזה — גם אם מודל ברירת המחדל שלכם הוא GPT-4.1 (חינם). זה אומר שסוכן מותאם עם מודל 1x יכלה premium requests גם אם אתם לא שמים לב. כלל אצבע: השתמשו ב-model: gpt-4.1 בסוכנים מותאמים אלא אם אתם באמת צריכים מודל חזק יותר.

השוואה: /fleet (CLI) מול runSubagent (VS Code)

בינוני 5 דקות חינם ניתוח

שמעתם על runSubagent בפרק 2 (ארגז הכלים). עכשיו בואו נשווה אותו ל-/fleet — שניהם מפעילים sub-agents, אבל בצורה שונה מאוד. ההבדל המרכזי: /fleet הוא כלי CLI שרץ מקבילית, בעוד runSubagent הוא כלי VS Code שרץ סדרתית. למה הם עובדים שונה? כי ב-VS Code, המודל לא יכול לדעת בוודאות שמשימות עצמאיות — אז הוא שומר על צד שמרני ומריץ אחת אחרי השנייה.

מאפיין /fleet (CLI) runSubagent (VS Code)
סביבה Copilot CLI (טרמינל) VS Code (IDE)
ריצה מקבילית — כל ה-sub-agents רצים בו-זמנית סדרתית — sub-agent אחד בכל פעם
ניהול Orchestrator אוטומטי — מפרק, משגר, ממזג המודל מחליט מתי להפעיל sub-agent
Context כל sub-agent מקבל context מבודד sub-agent מקבל context מבודד + הוראות מהסוכן הראשי
ניטור /tasks — דיאלוג עם סטטוס כל agent output בחלון הצ'אט
עלות גבוהה יותר (כל agent = premium requests עצמאיות) נמוכה יותר (ריצה סדרתית = פחות context overhead)
שימוש אידיאלי משימות גדולות עם parallelism טבעי בידוד מיקוד — "תחקור את הנושא הזה בנפרד"

דוגמה מעשית: אותה משימה בשתי דרכים

נניח שאתם רוצים לעשות code review ל-3 קבצים:

עם /fleet (CLI):

/fleet Review these 3 files for security issues:
1. src/api/auth.ts — focus on token handling
2. src/api/payment.ts — focus on input validation
3. src/api/admin.ts — focus on authorization checks

fleet ישגר 3 sub-agents שיעבדו במקביל. כל אחד סוקר קובץ אחד. תוצאה תוך 2-3 דקות.

עם runSubagent (VS Code):

ב-VS Code, תבקשו מ-Copilot: "Review these 3 files for security issues." הסוכן הראשי ישתמש ב-runSubagent כדי לשלוח כל קובץ ל-sub-agent נפרד — אבל אחד אחרי השני. סדרתית. תוצאה תוך 6-9 דקות.

התוצאה זהה, הזמן שונה. fleet = 3 דקות, runSubagent = 8 דקות. אבל אם אתם כבר עובדים ב-VS Code ולא רוצים לעבור לטרמינל — runSubagent עדיין מועיל כי הוא מבודד את ה-review מהשיחה הראשית.

💡 עתיד: runSubagent מקבילי?

יש בקשה פתוחה (Issue #274630) להוסיף תמיכה ב-parallel runSubagent ב-VS Code. אם ומתי זה ייושם — runSubagent יהיה כמו fleet בתוך ה-IDE. עד אז, fleet ב-CLI הוא הדרך היחידה לריצה מקבילית אמיתית.

מסגרת החלטה: /fleet או runSubagent?

כלל אצבע: /fleet = צוות מקבילי, runSubagent = יועץ ממוקד.

מתי אין צורך ב-sub-agents בכלל?

לא כל משימה צריכה sub-agents. רוב העבודה היומיומית — כתיבת פיצ'ר, תיקון באג, שאלה על הקוד — מתאימה מצוין לסוכן רגיל (Agent Mode בבלי /fleet ובלי runSubagent). sub-agents, בין אם fleet ובין אם runSubagent, מתאימים למצבים ספציפיים:

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

✎ עשו עכשיו 2 דקות

חשבו על 3 משימות שעשיתם השבוע. לכל אחת סמנו: /fleet, runSubagent, או "סוכן רגיל (בלי sub-agents)". השתמשו בטבלת ההשוואה למעלה כדי להחליט.

🛠 תרגיל 3: הרצת fleet מלאה עם ניטור וחישוב עלות

זמן משוער: 20 דקות

מה תייצרו: הרצת fleet מתועדת עם ניטור /tasks, בדיקת תוצאות, וחישוב עלות-תועלת.

  1. בחרו משימה מתאימה: refactoring, tests, docs, או migration — עם 3+ חלקים עצמאיים. בדקו: האם הקבצים עצמאיים? האם אין תלויות ביניהם? האם הם לא חולקים imports?
  2. כתבו fleet prompt: לפי 5 הכללים מהסעיף "fleet in action" — קבצים ממוספרים, deliverable לכל item, תלויות מפורשות, reference file
  3. חישוב עלות מוקדם: (מספר sub-agents) × (~5 אינטראקציות) × (מכפיל מודל). רשמו את המספר. אם יוצא יותר מ-30 credits — שקלו מודל 0x
  4. בחרו מודל: לתרגיל הזה מומלץ GPT-4.1 (0x) — בחינם ומספיק טוב לרוב המשימות
  5. הריצו: /fleet [prompt]
  6. ניטור: אחרי 15 שניות הריצו /tasks. צלמו מסך (screenshot) או תעדו: כמה sub-agents? מה הסטטוס של כל אחד? האם יש agent שתקוע?
  7. בדיקת תוצאות: כשfleet מסתיים — הריצו git diff ובדקו: האם כל הקבצים עודכנו? האם יש עקביות בין השינויים? האם יש merge conflicts?
  8. ניתוח: השוו: זמן בפועל מול הערכה סדרתית (כמה הייתם מעריכים שזה היה לוקח בלי fleet?). מה יחס החיסכון?

תוצאה צפויה: משימה שלמה שבוצעה במקביל, עם תיעוד מלא: פרומפט, חישוב עלות, ניטור /tasks, git diff של תוצאות, וניתוח עלות-תועלת.

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

שגרת עבודה — fleet וסוכנים מותאמים

בינוני 3 דקות חינם אסטרטגיה

בנוסף לשגרה מפרק 6 (שימוש יומי ב-CLI), הוסיפו את הפעולות הבאות. שימו לב: השגרה הזו מתווספת לשגרות הקודמות, לא מחליפה אותן. אם בפרק 6 התחלתם עם "בדיקת זיכרון CLI" ו"שימוש ב-Explore agent" — אלה ממשיכים. הפעולות כאן הן ספציפיות ל-fleet ולסוכנים מותאמים.

שגרת עבודה — Fleet ו-Custom Agents
תדירות פעולה
יומי לפני משימה מורכבת — שאלו: "אפשר לפרק את זה ל-fleet?" אם יש 3+ חלקים עצמאיים → fleet
יומי אחרי כל fleet — הריצו git diff ובדקו תוצאות לפני commit
יומי עקבו אחרי צריכת premium requests — בדקו אם fleet חרג מהצפוי
שבועי סקרו את הסוכנים המותאמים: האם יש סוכן שלא עובד טוב? עדכנו את ה-prompt או הכלים
שבועי בדקו אם יש דפוסי fleet חוזרים — אם אתם מריצים את אותו סוג fleet שוב ושוב, צרו template
חודשי סקרו עלות: כמה premium requests הלכו ל-fleet? האם שווה? נסו לעבור למודלים 0x
חודשי נקו סוכנים שלא בשימוש מ-.github/agents/ — פחות סוכנים = פחות בלבול ל-Copilot

אם אתם עושים רק דבר אחד מהפרק הזה

מתחיל 5 דקות חינם תרגול
אם אתם עושים רק דבר אחד מהפרק הזה 5 דקות

קחו משימה אמיתית מהפרויקט שלכם שדורשת שינוי ב-3+ קבצים עצמאיים. כתבו fleet prompt עם קבצים ממוספרים ו-deliverable לכל אחד. הריצו /fleet עם המודל GPT-4.1 (חינם). צפו ב-sub-agents שעובדים במקביל. בדקו את התוצאה עם git diff. הפעם הראשונה שתראו 3 סוכנים עובדים על הפרויקט שלכם בו-זמנית — תבינו למה fleet משנה את המשחק.

בדקו את עצמכם

בינוני 5 דקות חינם ניתוח
5 שאלות — בדקו שהבנתם
  1. למה fleet עולה יותר premium requests מסוכן בודד? (רמז: חשבו על context isolation ואינטראקציות עצמאיות)
  2. איך ה-Orchestrator מחליט אילו משימות רצות במקביל ואילו ממתינות? (רמז: גרף תלויות — dependency graph)
  3. למה פרומפט כללי כמו "Fix all issues" גורם ל-fleet לרוץ סדרתי? (רמז: ה-Orchestrator צריך לזהות חלקים עצמאיים — מה הוא צריך כדי לעשות את זה?)
  4. מה ההבדל המרכזי בין /fleet ל-runSubagent, ולמה זה משנה? (רמז: מקבילי vs סדרתי — מתי כל אחד עדיף?)
  5. למה כדאי להגדיר model: gpt-4.1 בסוכן מותאם ולא להשאיר את ברירת המחדל? (רמז: מה קורה כשמודל ברירת מחדל הוא auto וה-auto בוחר מודל יקר?)

4 מתוך 5 = עוברים. פחות? חזרו לסעיפים הרלוונטיים.

סיכום הפרק

מתחיל 2 דקות חינם מושג
סיכום — Fleet ו-Sub-agents

הפרק הזה שינה את הדרך שבה אתם חושבים על משימות. במקום "איך אני עושה את זה" — התחלתם לשאול "איך אני מפרק את זה." /fleet הוא לא רק כלי מהירות — הוא כלי חשיבה שמכריח אתכם לזהות parallelism טבעי בעבודה שלכם: אילו חלקים עצמאיים, מה תלוי במה, ואיפה ה-overhead של fleet לא מצדיק את עצמו.

למדתם שfleet מבריק על משימות עם חלקים עצמאיים (refactoring, tests, docs) אבל מסוכן על קוד מקושר ותלויות. למדתם שהעלות של fleet תלויה במודל — ועם מודלים 0x (חינמיים) fleet הוא כלי חינמי בלתי מוגבל. ולמדתם ליצור סוכנים מותאמים שמתמחים בדיוק במה שהפרויקט שלכם צריך — עם קובצי .agent.md שמגדירים שם, תיאור, כלים ומודל.

התובנה המרכזית: fleet לא מחליף חשיבה — הוא מכפיל אותה. אתם עדיין ה-Tech Lead. fleet הוא הצוות שלכם. ככל שתתנו brief טוב יותר (פרומפט ספציפי, קבצים ממוספרים, תלויות מפורשות) — התוצאה תהיה טובה יותר. ולמדתם את ההבדל בין /fleet (CLI, מקבילי) ל-runSubagent (VS Code, סדרתי) — וידעתם לבחור את הכלי הנכון למשימה.

בפרק הבא נעבור לסביבת GitHub.com — שם נכיר את Coding Agent שעובד בענן ופותח Pull Requests אוטומטית מ-Issues, Code Review אוטומטי שסוקר את הקוד שלכם מכמה זוויות, ו-Copilot Spaces שמרכזים קונטקסט מהפרויקט כדי לשפר את התשובות של Copilot.

☑ צ'קליסט — האם סיימתי את הפרק?
💡 טיפים מתקדמים — לאחר שמיצית את הבסיס