פרק 2 מתוך 12

ארגז הכלים המלא — כל כפתור מוסבר

The Complete Tool Menu — Every Tool Explained

מה תקבלו בסוף הפרק

מה תדעו לעשות

לפני שמתחילים

הפרויקט שלך

בפרק 1 הבנתם איך הלולאה האגנטית עובדת — Copilot מקבל פרומפט, בוחר כלי, מפעיל אותו, ובודק את התוצאה. בפרק הזה תכירו כל אחד מה-30 כלים שהלולאה האגנטית יכולה לבחור, ותלמדו לשלוט בבחירה. בפרק 3 תבחרו את המודל שמפעיל את הכלים האלה — כי לא כל מודל מתאים לכל משימה.

מילון מושגים — מונחים חדשים בפרק

מונח (English) תרגום לעברית הגדרה
Tool Setקבוצת כליםאוסף של כלים קשורים שניתן להפעיל/לכבות יחד, למשל #edit או #search
Configure Toolsהגדרת כליםתפריט ב-VS Code שבו מפעילים ומכבים כלים ספציפיים עבור Agent Mode
# Syntaxתחביר סולמיתהקלדת # בשורת הצ'אט כדי לראות ולבחור כלים זמינים כרמז לסוכן
MCP (Model Context Protocol)פרוטוקול הקשר למודלתקן פתוח שמאפשר לחבר כלים חיצוניים ל-Copilot — מסדי נתונים, APIs, שירותים
Extension Toolsכלי הרחבותכלים שמגיעים מתוספי VS Code ומופיעים לצד הכלים המובנים בתפריט הכלים
Subagentתת-סוכןסוכן שרץ בהקשר מבודד, מבצע משימת משנה, ומחזיר תוצאה מסוכמת לסוכן הראשי
Tool Pickerבורר כליםהמנגנון האוטומטי של Copilot שבוחר איזה כלים להפעיל לפי הפרומפט
Embedding-Guided Routingניתוב מבוסס הטמעותשיטה שבה Copilot משתמש בווקטורים סמנטיים כדי לבחור כלים רלוונטיים לפני הפעלה
מתחיל 5 דקות חינם מושג

30 כלים, שולחן עבודה אחד

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

Agent Mode של GitHub Copilot עובד בדיוק ככה. יש לו כ-30 כלים מובנים (Built-in Tools), מחולקים ל-8 קבוצות. כל כלי עושה משהו ספציפי — יוצר קבצים, מריץ פקודות בטרמינל, מחפש קוד, גולש באינטרנט, ועוד. המודל שמפעיל את Agent Mode (ה-Tool Picker — בורר הכלים) מנתח את הפרומפט שלכם ובוחר אוטומטית אילו כלים להפעיל.

אבל הנה הנקודה הקריטית: יותר כלים לא אומר ביצועים טובים יותר. GitHub עצמם גילו שצמצום מ-40 כלים ברירת מחדל ל-13 כלי ליבה שיפר את הדיוק ב-7% וקיצר את זמן התגובה ב-400 מילישניות. פחות רעש = בחירות טובות יותר.

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

לפני שנצלול, בואו נבין את המבנה. הכלים מחולקים ל-8 קבוצות (Tool Sets), וכל קבוצה מכילה כלים שעושים דברים דומים. אפשר להפעיל ולכבות קבוצה שלמה בלחיצה אחת, או לשלוט בכל כלי בנפרד. הקבוצות הן:

  1. #edit (4 כלים) — יצירה ועריכה של קבצים ותיקיות. הכלים שמשנים את הקוד בפועל.
  2. #execute (5 כלים) — הרצת פקודות בטרמינל, טסטים, tasks מוגדרים, ו-cells ב-notebooks.
  3. #read (6 כלים) — קריאת תוכן קבצים, שגיאות ESLint/TypeScript, ופלט טרמינל. העיניים של הסוכן.
  4. #search (6 כלים) — חיפוש סמנטי, מילולי, שם קובץ, הפניות, ושינויי Git.
  5. #browser (1 כלי) — דפדפן מובנה מבוסס Playwright לגלישה, צילומי מסך, ובדיקות UI.
  6. #vscode (6 כלים) — שליטה בעורך עצמו: הרחבות, פקודות, שאלות הבהרה, ו-scaffolding.
  7. #web (1 כלי) — שליפת תוכן מכתובות אינטרנט כ-Markdown.
  8. #agent (1 כלי) — הפעלת תת-סוכן (subagent) בהקשר מבודד לניהול משימות מורכבות.

בנוסף, יש 3 כלים עצמאיים שלא שייכים לקבוצה: #selection (קריאת הבחירה בעורך), #todos (מעקב משימות), ו-#newWorkspace (יצירת workspace חדש). סך הכל — כ-30 כלים. נעבור על כל קבוצה ביסודיות.

Agent Mode Tool Picker #edit (4) createFile editFiles createDirectory editNotebook #execute (5) runInTerminal getTerminalOutput createAndRunTask testFailure runNotebookCell #read (6) readFile problems terminalLastCommand terminalSelection getNotebookSummary readNotebookCellOutput #search (6) codebase fileSearch textSearch usages listDirectory changes #browser (1) browser (experimental) #vscode (6) askQuestions extensions installExtension runCommand VSCodeAPI / setup עוד כלים #web/fetch #agent/runSubagent #todos #selection / #newWorkspace 30 Built-in Tools — 8 Tool Sets

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

פתחו את VS Code, פתחו צ'אט Copilot (Ctrl+Shift+I או Cmd+Shift+I), וודאו שאתם במצב Agent. לחצו על אייקון הכלים (סמל המפתח/ברגים) בראש חלון הצ'אט. ספרו כמה כלים מסומנים בתור פעילים — כתבו את המספר כאן: ___

מתחיל 10 דקות חינם הקמה

Configure Tools — לוח הבקרה

יש שתי דרכים לשלוט בכלים של Agent Mode. הראשונה היא Configure Tools — תפריט קבוע שמגדיר אילו כלים זמינים לסוכן בכל שיחה. השנייה היא תחביר # (Hash Syntax) — רמז חד-פעמי שמכוון את הסוכן לכלי ספציפי בפרומפט בודד.

Configure Tools — הגדרה קבועה

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

שינויים ב-Configure Tools הם לכל שיחה חדשה. אם כיביתם כלי, הוא יישאר כבוי עד שתפעילו אותו מחדש. שימו לב שכלים שמגיעים מ-MCP servers מופיעים בנפרד מהכלים המובנים — בדרך כלל עם אייקון שונה או קטגוריה נפרדת. כלי MCP לא מסומנים כברירת מחדל, כלומר גם אם התקנתם MCP server, הכלים שלו לא יהיו זמינים לסוכן עד שתסמנו אותם בדיאלוג.

טיפ למפתחים ישראלים: אם אתם עובדים בסטארטאפ עם מספר סביבות (development, staging, production), כדאי ליצור תצורות כלים שונות לכל סביבה. למשל, ב-development הפעילו את כל הכלים כולל browser ו-execute. ב-staging כבו את browser וב-production — אם בכלל משתמשים — השאירו רק read ו-search.

תחביר # — רמז חד-פעמי

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

ההבדל הקריטי: Configure Tools קובע מה זמין. # מכוון מה עדיף. גם אם כלי פעיל ב-Configure Tools, הוספת # לפרומפט אומרת לסוכן "עדיף שתשתמש דווקא בכלי הזה." גם אם לא הוספתם #, הסוכן עדיין יכול לבחור כל כלי פעיל.

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

תרחיש מעשי: אתם עובדים על debug ורוב הכלים כבויים חוץ מ-execute, read ו-search. פתאום אתם צריכים שהסוכן יצור קובץ — אבל edit כבוי. במקום ללכת ל-Configure Tools ולהפעיל אותו (מה שישפיע על כל הסשן), פשוט כתבו בפרומפט: #edit/createFile צור קובץ debug-log.txt. הסוכן ישתמש ב-createFile הפעם, וב-פרומפטים הבאים הוא יחזור להתמקד בכלי ה-debug שהגדרתם ב-Configure Tools.

תחבירים מתקדמים של #:

כל פעם שמקלידים #, VS Code מציג autocomplete עם כל הכלים הזמינים. אפשר להקליד חלק מהשם ולבחור. זה הרבה יותר מהיר מלפתוח Configure Tools בכל פעם.

שאלה נפוצה: מה קורה כש-# מפנה לכלי כבוי? אם כיביתם כלי ב-Configure Tools אבל כתבתם #edit/createFile בפרומפט, הכלי לא יופעל. Configure Tools הוא "שער הכניסה" — אם כלי כבוי שם, שום # לא יעזור. חשבו על זה כמו מנעול — Configure Tools נועל את הדלת, ו-# מצביע על איזו דלת פתוחה לעבור דרכה קודם.

טיפ מקצועי: אם אתם עובדים הרבה עם # syntax, למדו את הקיצורים. #cb יציע אוטומטית #search/codebase, #rf יציע #read/readFile. ההשלמה האוטומטית מבוססת על fuzzy match — לא חייבים לכתוב את השם המלא.

אפשר גם לשלב את שני המנגנונים. למשל: כבו את רוב הכלים ב-Configure Tools (השאירו רק את הנחוצים), ובפרומפט ספציפי הוסיפו #browser כרמז שכדאי להשתמש בדפדפן. כך יש לכם שליטה ברמת הסשן וברמת הפרומפט.

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

פתחו Configure Tools וכבו את כל הכלים (הורידו סימון מכולם). עכשיו שלחו ל-Agent Mode את הפרומפט: "צור קובץ hello.txt עם הטקסט שלום עולם". שימו לב שהסוכן לא יצליח — הוא יגיד שאין לו גישה לכלי עריכה. עכשיו הפעילו בחזרה את #edit (כל קבוצת Edit) ונסו שוב. הפעם זה יעבוד.

טעות נפוצה: כיבוי כל הכלים

אם כיביתם את כל הכלים, Agent Mode הופך בעצם ל-Ask Mode — הוא יכול רק לדבר, לא לפעול. תמיד השאירו לפחות את #edit ו-#read דלוקים. בלי #read הסוכן לא יכול לקרוא קבצים, ובלי #edit הוא לא יכול לשנות כלום.

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

קבוצת Edit — יצירה ועריכה

קבוצת #edit היא לב הפעילות של Agent Mode. כאן נמצאים הכלים שיוצרים ומשנים קבצים בפרויקט. יש 4 כלים:

כלי מה עושה דוגמת פרומפט
createFile יוצר קובץ חדש בפרויקט "צור קובץ config.ts עם הגדרות ברירת מחדל"
editFiles עורך קבצים קיימים — מוסיף, מוחק, משנה שורות "הוסף validation לפונקציית login"
createDirectory יוצר תיקייה חדשה (כולל תיקיות מקוננות) "צור מבנה תיקיות: src/components/auth"
editNotebook עורך Jupyter Notebook — מוסיף/משנה cells "הוסף cell שמציג גרף של הנתונים"

editFiles הוא הכלי הנפוץ ביותר — כמעט כל פרומפט שדורש שינוי קוד עובר דרכו. כשהסוכן קורא לכלי הזה, VS Code מציג לכם diff — השוואה בין המצב הנוכחי לשינוי המוצע. השורות שנמחקו מסומנות באדום, והשורות החדשות בירוק. אתם יכולים לאשר (Accept), לדחות (Reject), או לערוך ידנית לפני אישור.

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

Undo Last Edit — אם אישרתם שינוי ומיד התחרטתם, לחצו על כפתור Undo Last Edit בסרגל הכלים של הצ'אט. זה מחזיר את הקובץ למצב שלפני העריכה האחרונה. שימו לב שזה שונה מ-Ctrl+Z הרגיל — Undo Last Edit מחזיר את כל השינויים שנעשו בפעולת editFiles אחת, גם אם הם כוללים מספר שורות בכמה מקומות בקובץ.

createDirectory יכול ליצור גם תיקיות מקוננות. אם ביקשתם "צור תיקייה src/components/auth/hooks", הוא יצור את כל שרשרת התיקיות — גם אם src לא קיימת. זה חוסך פרומפטים מרובים כשבונים מבנה פרויקט מאפס. שימו לב: createDirectory יוצר תיקיות ריקות. הוא לא יוצר קבצים בתוכן — לזה תצטרכו createFile. בפועל, כש-Copilot בונה מבנה פרויקט, הוא קורא ל-createDirectory ואז ל-createFile עבור כל קובץ.

editNotebook מיועד לעבודה עם Jupyter Notebooks (.ipynb). אם אתם עובדים עם data science או machine learning, הכלי יודע להוסיף cells חדשים, לשנות קוד ב-cells קיימים, ולשנות את סוג ה-cell (קוד/מרקדאון). מפתחים שלא עובדים עם notebooks יכולים לכבות את הכלי הזה בבטחה.

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

שלחו ל-Agent Mode: "צור תיקייה בשם utils ובתוכה קובץ helpers.ts עם פונקציה שמקבלת תאריך ומחזירה מחרוזת בפורמט DD/MM/YYYY". שימו לב לרצף הכלים שהופעלו — createDirectory ואז createFile ואז editFiles. כל פעולה מוצגת בנפרד בצ'אט.

שימו לב: editFiles לא עושה commit

כל השינויים של editFiles הם בקובץ המקומי בלבד. שום דבר לא נשמר ב-Git אוטומטית. אם משהו השתבש — Ctrl+Z בקובץ, Undo Last Edit בצ'אט, או git checkout -- filename בטרמינל. תמיד עשו commit ידני אחרי שאתם מרוצים מהתוצאה.

בינוני 10 דקות חינם כלי

קבוצת Execute — הרצה ובדיקות

קבוצת #execute היא הידיים של Agent Mode — כאן הוא לא רק כותב קוד, אלא מריץ אותו, בודק תוצאות, ומתקן. יש 5 כלים:

כלי מה עושה דוגמת פרומפט
runInTerminal מריץ פקודה בטרמינל — npm install, git status, כל פקודת shell "התקן את axios ואז הרץ את הפרויקט"
getTerminalOutput קורא את הפלט של פקודה שרצה בטרמינל (אוטומטי — אחרי runInTerminal)
createAndRunTask יוצר task מוגדר (build, test) ומריץ אותו "הגדר task של build ותריץ אותו"
testFailure אוסף מידע על טסטים שנכשלו — שם הטסט, הודעת שגיאה, stack trace "הרץ טסטים ותקן את מה שנכשל"
runNotebookCell מריץ cell ב-Jupyter Notebook "הרץ את ה-cell הזה וצפה בתוצאה"

נקודה חשובה על אישורים: פקודות טרמינל דורשות אישור כברירת מחדל. כשהסוכן רוצה להריץ npm install, תראו הודעה שמבקשת את אישורכם עם הפקודה המלאה שמוצגת לכם לסקירה. ב-Autopilot Mode (מצב yolo, כפי שלמדתם בפרק 1) הפקודות רצות אוטומטית — אבל זכרו: רק בפרויקטי פיתוח, לעולם לא ב-production.

testFailure הוא כלי שלא מריץ טסטים בעצמו, אלא אוסף מידע על טסטים שנכשלו. בדרך כלל הסוכן קודם מריץ את ה-test suite עם runInTerminal, ואז משתמש ב-testFailure כדי לקבל את השם המלא של הטסט שנכשל, את הודעת השגיאה, ואת ה-stack trace. המידע הזה מספיק לסוכן כדי לאתר את הבעיה ב-codebase ולתקן אותה. זו הסיבה שכלי Execute וכלי Read עובדים יד ביד — execute מריץ, read קורא את התוצאה, execute מריץ שוב.

getTerminalOutput קורא את הפלט האחרון מהטרמינל. זה שונה מ-terminalLastCommand שנמצא בקבוצת Read: getTerminalOutput אוסף פלט בזמן אמת אחרי הרצת פקודה, בעוד ש-terminalLastCommand קורא את הפקודה + הפלט שלה מתוך היסטוריית הטרמינל. בפועל, הם משלימים זה את זה.

createAndRunTask שונה מ-runInTerminal באופן משמעותי. בעוד ש-runInTerminal מריץ פקודה חד-פעמית, createAndRunTask יוצר הגדרת VS Code Task — task מוגדר שנשמר ואפשר להריץ שוב ושוב. זה שימושי לתהליכים חוזרים כמו build, test, lint, או deploy. Task מוגדר יכול לכלול configuration כמו working directory, environment variables, ו-problem matchers שמקשרים שגיאות בפלט לקבצים ספציפיים. אם יש לכם tasks.json מוגדר בפרויקט, הסוכן ישתמש בו. אם אין — הוא ייצור אחד.

runNotebookCell מיועד ל-Jupyter Notebooks. הוא מריץ cell ספציפי וקורא את התוצאה — כולל טקסט, טבלאות, גרפים, ושגיאות. שימושי במיוחד ל-data science ו-machine learning: "הרץ את ה-cell שמאמן את המודל ותגיד לי מה ה-accuracy". הסוכן מריץ, קורא את הפלט, ויכול להציע שיפורים. אם אתם לא עובדים עם notebooks — כבו את runNotebookCell וגם את editNotebook, getNotebookSummary, ו-readNotebookCellOutput. זו כבר חיסכון של 4 כלים שמפחית רעש.

מסגרת החלטה: runInTerminal vs createAndRunTask

המצבהכלי הנכוןלמה
פקודה חד-פעמית: npm install axios, git status, node -v runInTerminal מהיר, לא צריך הגדרה. הסוכן מריץ ובודק תוצאה.
תהליך חוזר: build, test suite, lint, deploy script createAndRunTask יוצר הגדרת task שנשמרת. אפשר להריץ שוב בלי להגדיר מחדש. משתלב עם VS Code Task Runner.

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

שלחו ל-Agent Mode: "הרץ node --version ו-npm --version בטרמינל ותגיד לי מה הגרסאות". שימו לב לאישור שמופיע — לחצו Allow. צפו בפלט שהסוכן קורא ומפרש.

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

קבוצת Read — קריאה ואבחון

קבוצת #read היא העיניים של Agent Mode. בלי כלים אלה, הסוכן עיוור — הוא לא יכול לראות מה יש בקבצים, מה השגיאות, או מה הפלט בטרמינל. יש 6 כלים:

כלי מה עושה מתי קריטי
readFile קורא תוכן של קובץ בפרויקט כמעט כל משימה — הסוכן חייב לקרוא לפני שעורך
problems קורא שגיאות מפאנל Problems — ESLint, TypeScript, linters תיקון שגיאות, refactoring, code quality
terminalLastCommand קורא את הפקודה האחרונה שרצה בטרמינל + הפלט שלה אחרי הרצת פקודות — הסוכן בודק מה קרה
terminalSelection קורא טקסט שנבחר (selected) בטרמינל כשתרצו להעביר פלט ספציפי לסוכן
getNotebookSummary קורא רשימת cells ב-Jupyter Notebook עבודה עם notebooks — הסוכן צריך לדעת מה יש
readNotebookCellOutput קורא פלט של cell שרץ ב-notebook ניתוח תוצאות, data science

הכלי problems הוא הכוח הסודי של Agent Mode. זכרו מפרק 1 שהלולאה האגנטית כוללת שלב "בדיקת תוצאה"? problems הוא הכלי שמאפשר את זה. אחרי שהסוכן עורך קובץ, הוא קורא את problems כדי לראות אם יצר שגיאות חדשות. אם כן — הוא מתקן ומנסה שוב. זו הלולאה בפעולה.

בואו נראה את הרצף המלא: (1) הסוכן קורא קובץ עם readFile, (2) עורך אותו עם editFiles, (3) בודק שגיאות עם problems, (4) אם יש שגיאות — חוזר לשלב 2 ומתקן. הרצף הזה חוזר עד שאין שגיאות או עד שהסוכן מגיע למגבלת ניסיונות (בדרך כלל 3-5 ניסיונות). זו בדיוק הלולאה האגנטית שלמדתם בפרק 1, רק עכשיו אתם רואים אותה דרך הכלים הספציפיים.

terminalSelection הוא כלי ייחודי — הוא קורא טקסט שסימנתם (selected) בטרמינל. למה זה שימושי? נגיד שהרצתם פקודה ארוכה והפלט כולל 200 שורות. אתם רוצים שהסוכן יתמקד רק בשורות השגיאה. סמנו את השורות הרלוונטיות בטרמינל ושלחו: "מה אומרת השגיאה הזו ואיך מתקנים?" — הסוכן ישתמש ב-terminalSelection כדי לקרוא רק את מה שסימנתם.

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

פתחו קובץ TypeScript (או JavaScript) ומחקו סוגר סיום (}) כדי ליצור שגיאת syntax. עכשיו שלחו ל-Agent Mode: "תקן את כל השגיאות בקובץ הזה". צפו בסוכן משתמש ב-readFile כדי לקרוא את הקובץ וב-problems כדי לראות את השגיאה, ואז ב-editFiles כדי לתקן.

דוגמה מייצגת: רצף כלי Read בפעולה

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

  1. problems — קודם כל, הסוכן בודק אם יש שגיאות ידועות ב-Problems panel. נגיד שיש אזהרת TypeScript על סוג לא תואם.
  2. readFile — הסוכן קורא את הקובץ עם השגיאה, ומזהה שהפונקציה מצפה ל-string אבל מקבלת number.
  3. terminalLastCommand — הסוכן בודק מה הפלט האחרון בטרמינל. אולי יש שם הודעת שגיאה נוספת עם stack trace שעוזר לזהות את השורש.
  4. עכשיו יש לסוכן 3 מקורות מידע: שגיאת TypeScript, תוכן הקובץ, ופלט הטרמינל. מספיק כדי לתקן.

בלי כלי Read, הסוכן היה עיוור — לא יכול לדעת מה כתוב בקובץ, מה השגיאות, או מה קרה בטרמינל. עם כולם, יש לו תמונה מלאה של הבעיה ויכולת לפתור אותה.

בינוני 12 דקות חינם כלי

קבוצת Search — חיפוש וניווט

קבוצת #search היא אחת הקבוצות החשובות והמבלבלות ביותר. יש 6 כלים — ו-3 מהם עושים "חיפוש" אבל באופן שונה לחלוטין. הבנת ההבדל ביניהם חוסכת המון תסכול.

כלי סוג חיפוש מה עושה דוגמה
codebase סמנטי מבין כוונה ומחפש קוד רלוונטי גם אם לא מכיל את המילה המדויקת "מצא את הקוד שמטפל באימות משתמשים"
textSearch מילולי (grep) מחפש מחרוזת מדויקת בתוכן של קבצים "מצא את כל המופעים של TODO"
fileSearch שם קובץ (glob) מחפש קבצים לפי תבנית שם — סיומת, תיקייה, תבנית "מצא את כל קבצי הטסט: *.test.ts"
usages הפניות Find All References + Find Implementation + Go to Definition — מי משתמש בפונקציה/משתנה "מצא את כל המקומות שמשתמשים ב-fetchUser"
listDirectory מבנה מציג את תוכן תיקייה — קבצים ותת-תיקיות "הראה לי את המבנה של תיקיית src"
changes שינויים מציג שינויי Git — uncommitted changes, diffs "מה שיניתי מאז ה-commit האחרון?"
3 Search Types Compared codebase Semantic Search Understands intent Finds related code even without exact match Query: "authentication code" Finds: login(), verifyToken(), checkSession(), auth.ts textSearch Literal (grep) Exact string match Finds exact text in file contents Query: "TODO" Finds: // TODO: fix later /* TODO: refactor */ fileSearch Filename (glob) Matches file names using glob patterns *.ts, **/test/* Query: "*.test.ts" Finds: auth.test.ts api.test.ts, utils.test.ts

למה usages שונה מ-textSearch? שניהם מחפשים מופעים של מילה, אבל usages מבוסס על LSP (Language Server Protocol) — הוא מבין את המשמעות של הקוד, לא רק את הטקסט. אם יש לכם משתנה בשם user ופונקציה בשם getUser, usages על getUser ימצא רק קריאות לפונקציה — לא מופעים של המילה "user" במקומות אחרים. textSearch היה מוצא הכל. לכן ל-refactoring תמיד עדיף usages, ולחיפוש כללי של מחרוזת (כמו TODO או API key) עדיף textSearch.

changes הוא כלי שימושי במיוחד לסוף יום עבודה. שלחו: "מה שיניתי מאז ה-commit האחרון? תן סיכום" — הסוכן ישתמש ב-changes כדי לקרוא את ה-diff ויספק סיכום ברור. שימושי גם ל-code review — "בדוק את השינויים שלי ותן הערות".

listDirectory עוזר לסוכן להבין את מבנה הפרויקט לפני שהוא מתחיל לעבוד. בפעם הראשונה שתשתמשו ב-Agent Mode על פרויקט חדש, הסוכן ישתמש ב-listDirectory כדי למפות את התיקיות ולהבין איפה נמצא מה. זה כמו מפת אתר — בלי זה הסוכן ינסה לנחש שמות קבצים.

טעות נפוצה: בלבול בין סוגי חיפוש

codebase עושה חיפוש סמנטי — הוא מבין כוונה. textSearch עושה grep — מילה מדויקת. אם חיפשתם "API key" ולא מצאתם כלום, ייתכן שב-codebase המונח שונה (למשל apiToken או secret). במקרה כזה, נסו textSearch עם המחרוזת המדויקת, או codebase עם תיאור כללי יותר כמו "secrets management".

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

שלחו 3 פרומפטים שונים ושימו לב לכלי החיפוש שנבחר:

  1. "מצא את כל הקבצים שמטפלים ב-routing" — צפו ל-codebase (חיפוש סמנטי)
  2. "מצא את כל המופעים של console.log בפרויקט" — צפו ל-textSearch (grep)
  3. "מצא את כל קבצי ה-CSS" — צפו ל-fileSearch עם *.css

אם הסוכן בחר כלי אחר ממה שציפיתם — זה בסדר! זה אומר שה-Tool Picker העריך שכלי אחר מתאים יותר.

בינוני 8 דקות חינם כלי

Browser ו-Web — חלון לעולם

רוב המפתחים לא יודעים שיש ל-Copilot Agent Mode דפדפן מובנה. כלי ה-#browser (במצב experimental) מאפשר לסוכן לגלוש באתרים, לצלם מסך, ללחוץ על כפתורים, למלא טפסים, ואפילו לטפל בדיאלוגים — והכל מבוסס על Playwright, ספריית האוטומציה של Microsoft.

#browser — דפדפן אמיתי

מה שהכלי יודע לעשות:

תרחיש מעשי: אתם בונים אפליקציית React ורוצים לבדוק שטופס ההרשמה עובד. במקום לפתוח דפדפן ולבדוק ידנית, שלחו לסוכן: "גלוש ל-localhost:3000/register, מלא את הטופס עם נתוני בדיקה, שלח, ותגיד לי אם זה עבד."

#web/fetch — שליפת תוכן

הכלי fetch שונה מ-browser. הוא לא פותח דפדפן — הוא פשוט שולף תוכן מ-URL ומחזיר אותו כטקסט (Markdown). שימושי למקרים כמו:

ההבדל: browser = דפדפן אמיתי עם JavaScript, אינטראקציה, צילומי מסך. fetch = שליפת טקסט בלבד, מהיר וקל.

מתי browser ומתי fetch? אם אתם צריכים לראות מה קורה בדף — אלמנטים ויזואליים, ממשק, CSS, אנימציות — השתמשו ב-browser. אם אתם צריכים רק תוכן טקסטואלי מ-URL — דוקומנטציה, API response, HTML סטטי — השתמשו ב-fetch. Browser צורך יותר משאבים ואיטי יותר, אז אל תשתמשו בו כשמספיק fetch.

הערה חשובה: כלי ה-browser הוא עדיין experimental, כלומר הוא יכול לעבוד מצוין או לא לעבוד בכלל, תלוי בגרסת VS Code ובהגדרות. אם הוא לא מופיע ב-Configure Tools, ייתכן שצריך להפעיל feature flag ב-settings. במקרים כאלה, MCP server של Playwright (שמגיע מותקן כברירת מחדל ב-coding agent) יכול לספק פונקציונליות דומה.

שימוש מעשי לצוותי פיתוח בישראל: הרבה סטארטאפים ישראלים בונים SaaS עם frontend ו-backend. Browser tool מאפשר לכם לבנות פיצ'ר, להריץ את השרת, לגלוש לדף, לצלם מסך, ולשלוח לסוכן "תקן את הלייאוט". הכל בלי לצאת מ-VS Code.

דוגמה מעשית: נניח שאתם בונים דף נחיתה לסטארטאפ ישראלי. הדף מוכן אבל יש בעיית RTL — הטקסט מיושר לא נכון. שלחו ל-Agent Mode: "גלוש ל-localhost:3000, צלם מסך, ותקן את כל בעיות ה-RTL". הסוכן ישתמש ב-browser כדי לגלוש ולצלם, יזהה את הבעיות ויזואלית (כן, המודל "רואה" את צילום המסך), ואז ישתמש ב-editFiles כדי לתקן את ה-CSS. אחרי התיקון, הוא יגלוש שוב ויצלם מסך חדש כדי לוודא. הלולאה האגנטית בגרסת UI.

הגבלות של fetch: כלי web/fetch מוגבל על ידי הגדרות ב-~/.copilot/config. אפשר להגדיר allowed_urls (רשימת כתובות מורשות) ו-denied_urls (כתובות חסומות). כברירת מחדל, הגישה פתוחה, אבל ארגונים יכולים לצמצם — למשל לאפשר גישה רק לדוקומנטציה פנימית ול-APIs ספציפיים.

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

שלחו ל-Agent Mode: "שלוף את התוכן מ-https://jsonplaceholder.typicode.com/todos/1 ותסביר לי מה במבנה". צפו בשימוש ב-web/fetch. התוצאה צריכה להיות אובייקט JSON עם שדות userId, id, title, completed.

בינוני 8 דקות חינם כלי

קבוצת VS Code — שליטה בעורך

קבוצת #vscode מאפשרת לסוכן לשלוט ב-VS Code עצמו — לא רק בקבצים, אלא בעורך, בהרחבות, ובהגדרות. יש 6 כלים:

כלי מה עושה מתי שימושי
askQuestions מאפשר לסוכן לשאול אתכם שאלות הבהרה לפני שהוא פועל פרומפטים מעורפלים — הסוכן מבקש פרטים במקום לנחש
extensions מחפש מידע על הרחבות VS Code "איזה extension מומלץ ל-Docker?"
installExtension מתקין הרחבת VS Code "תתקין את ESLint extension"
runCommand מריץ כל פקודת VS Code — Format Document, Toggle Word Wrap, כל דבר "פרמט את כל הקבצים הפתוחים"
VSCodeAPI מספק מידע על VS Code API — שימושי לפיתוח extensions "איך כותבים extension שמציג notification?"
getProjectSetupInfo מספק מידע על סוגי פרויקטים ואיך לאתחל אותם "איך מאתחלים פרויקט Next.js?"

הכלי askQuestions הוא מעניין במיוחד. בפרק 1 למדתם שהסוכן לפעמים "מנחש" ומתחיל לפעול. עם askQuestions, הוא יכול לעצור ולשאול: "אתה רוצה React או Vue?", "צריך TypeScript או JavaScript?", "איזה port?" — ורק אחרי שאתם עונים, הוא ממשיך.

runCommand הוא כלי חזק שלא מקבל מספיק תשומת לב. הוא יכול להריץ כל פקודת VS Code — כמו Format Document, Toggle Word Wrap, Open Settings, ואפילו פקודות של הרחבות מותקנות. אם יש פקודה שאתם מריצים ידנית מה-Command Palette, הסוכן יכול לעשות את זה עבורכם. למשל: "פרמט את כל הקבצים הפתוחים לפי Prettier" — הסוכן ישתמש ב-runCommand כדי להפעיל את Format Document על כל קובץ.

getProjectSetupInfo שימושי כשמתחילים פרויקט חדש. הכלי מספק מידע על scaffolding — איך לאתחל פרויקט מסוג מסוים. "איך מקימים פרויקט Next.js עם TypeScript?" — הסוכן ישתמש בכלי הזה כדי לקבל את הפקודות ואת מבנה הקבצים הנכון, ואז ישתמש ב-execute ו-edit כדי ליצור הכל בפועל.

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

שלחו ל-Agent Mode: "מה ההרחבות שמותקנות אצלי שקשורות ל-Git? האם חסר לי משהו חשוב?". צפו בשימוש ב-vscode/extensions. הסוכן יסרוק את ההרחבות המותקנות ויציע חסרות.

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

Sub-agent ו-Todos — ניהול משימות מורכבות

#agent/runSubagent — הקשר מבודד

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

כלי Sub-agent (תת-סוכן) עושה בדיוק את זה. הסוכן הראשי יוצר סוכן משנה עם הקשר מבודד (Isolated Context) — חלון הקשר נפרד ונקי. התת-סוכן מבצע את המשימה, ומחזיר רק תוצאה מסוכמת. כל העבודה הביניים — קריאת קבצים, חיפושים, ניתוחים — נשארת אצל התת-סוכן ולא מזהמת את ההקשר הראשי.

Subagent Context Isolation Main Agent Full conversation context 1. Prompt: "Research 3 libs" 2. Spawns subagent 4. Gets summary ONLY (no intermediate data) Subagent Isolated context window readFile x 12 web/fetch x 6 codebase search x 4 3. All discarded after Only summary returned

למה בידוד הקשר חשוב? נניח שאתם שואלים את הסוכן "חקור 3 ספריות ל-form validation ב-React." בלי subagent, הסוכן קורא דוקומנטציה של 3 ספריות, פותח 12 קבצים, שולף 6 דפי web — וכל המידע הזה נשאר ב-context window שלו. עכשיו, כשתשאלו את השאלה הבאה ("עכשיו תממש form עם הספרייה שבחרת"), יש לסוכן עומס אדיר של מידע לא רלוונטי שמאט ומבלבל. עם subagent, כל המחקר קרה "בחדר נפרד". הסוכן הראשי קיבל רק מסקנה של 5 שורות — וההקשר שלו נשאר נקי ומוכן לעבודה.

איך subagent נראה ב-UI? כש-Copilot מפעיל subagent, תראו בצ'אט בלוק ממוזער (collapsed) שכתוב עליו שם המשימה ומצב ההתקדמות (למשל "Reading files..."). אם תלחצו עליו — הוא ייפתח ותוכלו לראות את כל הפעולות שהתת-סוכן עשה. זה נותן לכם שקיפות מלאה בלי עומס.

4 תרחישים שבהם subagent שווה זהב:

  1. מחקר לפני מימוש — "חקור 3 ספריות ל-form validation והמלץ" — התת-סוכן קורא docs, משווה, ומחזיר המלצה
  2. ניתוח מקבילי — הסוכן יכול לשלוח כמה תתי-סוכנים במקביל לבדוק היבטים שונים
  3. השוואת פתרונות — כל תת-סוכן בודק גישה אחרת בלי להשפיע על השאר
  4. Code Review מרובה — תת-סוכנים בודקים ביצועים, אבטחה, נגישות — כל אחד בנפרד ומחזיר דוח עצמאי. הסוכן הראשי מאחד את הממצאים.

הגדרות מתקדמות של subagent: אם אתם בונים custom agents (סוכנים מותאמים — נלמד לעומק בפרקים מתקדמים), אפשר להגדיר subagent עם user-invocable: false כדי שיהיה זמין רק כתת-סוכן ולא מהתפריט הראשי. אפשר גם להגדיר disable-model-invocation: true כדי למנוע מהסוכן הראשי לשלוח עבודה אליו אוטומטית — רק בקריאה מפורשת. עומק הקינון המקסימלי הוא 5 רמות — subagent בתוך subagent בתוך subagent וכו' — כדי למנוע לולאות אינסופיות.

#todos — מעקב התקדמות

כלי todos מאפשר לסוכן ליצור רשימת משימות ולעקוב אחרי ההתקדמות. כשאתם שולחים משימה מורכבת — "בנה API עם 5 endpoints" — הסוכן יוצר todo list עם כל השלבים ומסמן כל אחד שהושלם. זה גם עוזר לכם לראות מה כבר נעשה ומה נשאר.

ה-todos מוצגים כ-tree view בצד — כל משימה עם checkbox שמתמלא בירוק כשהיא מושלמת. זה במיוחד שימושי כשהסוכן עובד על משימה ארוכה (10+ דקות) — אתם יכולים לראות בזמן אמת איפה הוא נמצא. אם הסוכן נתקע, אתם יכולים לראות מה הצעד האחרון שעבד ולעזור לו.

שילוב todos עם subagent: כשהסוכן מפעיל subagent, ה-todo של המשימה הספציפית יראה מצב "working..." עד שהתת-סוכן חוזר עם תוצאה. זה נותן לכם שקיפות מלאה גם כשיש כמה שכבות של סוכנים שעובדים במקביל.

#selection — כלי עצמאי נוסף שקורא את מה שנבחר (selected) בעורך. אם סימנתם בלוק קוד ושלחתם פרומפט, הסוכן יקרא אוטומטית את הבחירה שלכם. זה חוסך את הצורך להעתיק-הדביק קוד לתוך הצ'אט.

#newWorkspace — יוצר workspace חדש לחלוטין. שימושי כשאתם רוצים שהסוכן יבנה פרויקט מאפס בתיקייה חדשה ונקייה. הכלי פותח חלון VS Code חדש עם workspace ריק. זה שימושי במיוחד כשמנסים ליצור POC (הוכחת היתכנות) מבלי "לזהם" את הפרויקט הנוכחי — הסוכן בונה הכל ב-workspace נפרד, ואם הניסוי מצליח, אתם מעתיקים את הקוד לפרויקט הראשי.

עשו עכשיו 4 דקות

שלחו ל-Agent Mode משימה מורכבת: "צור API פשוט עם Express שכולל 3 routes: GET /health, GET /users, POST /users. תעקוב אחרי ההתקדמות עם רשימת משימות." שימו לב האם הסוכן משתמש ב-todos למעקב, והאם הוא מפעיל subagent עבור חלק מהעבודה.

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

MCP, Extensions וכלים חיצוניים — מה ההבדל?

עד כאן דיברנו על כלים מובנים (Built-in) — הכלים שמגיעים עם Copilot מהקופסה. אבל יש עוד שני סוגים של כלים שתראו ב-Configure Tools:

3 שכבות של כלים

שכבה מקור אופן הפעלה דוגמאות
Built-in מובנים ב-Copilot פעילים כברירת מחדל editFiles, runInTerminal, codebase, browser
MCP שרתי Model Context Protocol דורשים הגדרה ב-.vscode/mcp.json, לא פעילים אוטומטית GitHub MCP, Playwright MCP, database connectors, Slack
Extensions הרחבות VS Code מה-Marketplace מותקנים דרך VS Code, מופיעים בתפריט הכלים Container Tools, Python, Docker, Mermaid

MCP (Model Context Protocol) הוא תקן פתוח שמגדיר איך לחבר מקורות מידע וכלים חיצוניים ל-AI. במילים פשוטות — זה "שקע חשמל תקני" שמאפשר לכל שירות חיצוני להתחבר ל-Copilot. GitHub MCP Server, למשל, מאפשר לסוכן ליצור issues, לפתוח PRs, ולקרוא repositories — ישירות מהצ'אט. Playwright MCP מאפשר גלישה אוטומטית, ויש MCP servers למסדי נתונים (PostgreSQL, MongoDB), לשירותי ענן (AWS, GCP), ולכלי צד שלישי (Slack, Jira, Linear).

ההגדרה נעשית בקובץ .vscode/mcp.json בפרויקט שלכם, או בהגדרות VS Code הגלובליות. כל MCP server מוגדר עם שם, פקודת הפעלה, וארגומנטים. אחרי ההגדרה, הכלים שלו מופיעים ב-Configure Tools — אבל זכרו, לא מסומנים אוטומטית.

Extension Tools — כשאתם מתקינים הרחבת VS Code שתומכת ב-Copilot, היא יכולה להוסיף כלים לתפריט הכלים. למשל, הרחבת Python מוסיפה כלים שקשורים לסביבות וירטואליות ו-Jupyter, והרחבת Docker מוסיפה כלים לניהול containers. ההבדל מ-MCP: extensions מותקנים מה-Marketplace של VS Code ומנוהלים דרך Extension Manager. הם לא דורשים קובץ הגדרה נפרד — ברגע שההרחבה מותקנת, הכלים שלה מופיעים אוטומטית.

איך לזהות מאיפה כלי מגיע? פתחו Configure Tools. כלים מובנים מופיעים בדרך כלל בקטגוריה "Built-in" או בלי תגית מיוחדת. כלי MCP מופיעים עם שם ה-MCP server, למשל "github (MCP)" או "playwright (MCP)". כלי extensions מופיעים עם שם ההרחבה. הזיהוי חשוב כי אם כלי MCP לא עובד, הבעיה היא בהגדרת ה-MCP server — בדקו את קובץ .vscode/mcp.json ואת הלוגים של השרת. אם כלי extension לא עובד, הבעיה היא בהרחבה עצמה — עדכנו אותה או בדקו את ה-output panel של ההרחבה.

טבלת פתרון בעיות מהירה:

בעיהסיבה אפשריתפתרון
כלי לא מופיע ב-Configure Tools MCP server לא רץ / extension לא מותקנת בדקו ש-MCP server פעיל או שההרחבה מותקנת ומופעלת
כלי מופיע אבל הסוכן לא משתמש בו ה-checkbox לא מסומן / כלי לא רלוונטי לפרומפט סמנו ב-Configure Tools, או השתמשו ב-# כדי לרמז לסוכן
כלי MCP מחזיר שגיאה הגדרת MCP לא נכונה / שרת MCP קרס בדקו את .vscode/mcp.json, הפעילו מחדש את VS Code
browser לא עובד feature flag כבוי / גרסת VS Code ישנה עדכנו VS Code לגרסה אחרונה, בדקו settings עבור experimental features

מה כדאי להתקין קודם? לרוב המפתחים הישראלים שעובדים עם TypeScript/JavaScript, ה-MCP servers הכי שימושיים הם: GitHub MCP (לעבודה עם issues ו-PRs ישירות מהצ'אט), ו-Playwright MCP (לבדיקות UI). אם אתם עובדים עם מסד נתונים, שווה להוסיף את ה-MCP server הרלוונטי — זה מאפשר לסוכן לבצע queries ישירות. נלמד על MCP לעומק בפרק 5.

טעות נפוצה: שכחת להפעיל כלי MCP

אחרי שהגדרתם MCP server ב-.vscode/mcp.json, הכלים לא מופעלים אוטומטית. חובה ללכת ל-Configure Tools ולסמן את ה-checkbox של כל כלי MCP שרוצים להשתמש בו. הרבה מפתחים מגדירים MCP ותוהים למה הסוכן לא משתמש בכלים — זו הסיבה.

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

פתחו Configure Tools ונסו לזהות מאיפה כל כלי מגיע. חפשו סימנים מבדילים — כלים מובנים מופיעים עם אייקון VS Code, כלי MCP עם אייקון שרת, וכלי extensions עם שם ההרחבה. רשמו דוגמה אחת מכל סוג.

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

אסטרטגיה: קבוצות כלים לפי משימה

עכשיו כשאתם מכירים את כל הכלים, הגיע הזמן לשאלה האמיתית: למה שנכבה כלים?

כפי שציינו בפתיחה, GitHub עצמם גילו שצמצום מ-40 כלים ל-13 כלי ליבה:

הסיבה פשוטה: ה-Embedding-Guided Routing (ניתוב מבוסס הטמעות) צריך לסרוק את כל הכלים הזמינים ולהחליט מה רלוונטי. כשיש 40 כלים, הוא צריך לבחון את כולם, לחשב relevance score לכל אחד, ולבחור. כשיש 13 — ההחלטה מהירה וברורה יותר. פחות כלים = פחות רעש = החלטות טובות יותר = תגובה מהירה יותר.

בנוסף, GitHub משתמשים ב-Adaptive Tool Clustering (קיבוץ כלים אדפטיבי) — הם מקבצים כלים דומים ומציגים למודל רק את הקטגוריה הרלוונטית, לא את כל הכלים. זה מפחית עוד יותר את העומס. אבל גם עם הקיבוץ האוטומטי, כיבוי כלים שלא צריך עוזר.

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

מסגרת החלטה: איזו קבוצת כלים להפעיל

סוג המשימההכלים שצריךכלים שכדאי לכבות
Debug — מחפש ומתקן באג execute (runInTerminal, getTerminalOutput, testFailure)
read (readFile, problems, terminalLastCommand)
search (codebase, textSearch)
browser, vscode, edit/editNotebook, web/fetch, newWorkspace
Refactor — משפר קוד קיים edit (editFiles, createFile)
search (usages, codebase, textSearch)
read (readFile, problems)
execute, browser, vscode, web, agent
New Feature — בונה פיצ'ר חדש edit (כולם)
execute (runInTerminal, testFailure)
search (codebase, fileSearch)
browser
vscode/VSCodeAPI, vscode/installExtension
Research — לומד קוד חדש read (כולם)
search (כולם)
web/fetch
agent/runSubagent
edit, execute, browser, vscode

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

חשבו על המשימה הבאה שלכם. היא debug? Refactor? New Feature? Research? פתחו Configure Tools וכבו את כל הכלים שלא צריך. שלחו פרומפט ושימו לב אם הסוכן עובד מהר יותר.

איך לשמור קבוצות כלים בפרויקט

אם אתם חוזרים שוב ושוב על אותו סוג משימה, שווה לשמור את קבוצת הכלים בקובץ custom agent. יוצרים קובץ .github/copilot-agents.yml (או .github/agents/) ומגדירים agent עם רשימת כלים ספציפית. למשל:

עבור agent בשם "debugger", מגדירים tools: ["execute/runInTerminal", "execute/testFailure", "read/readFile", "read/problems", "search/codebase", "edit/editFiles"]. בפעם הבאה שתרצו debug, פשוט בחרו את ה-agent "debugger" — וכל הכלים כבר מוגדרים. לא צריך לסמן checkboxes כל פעם.

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

שיתוף קבוצות כלים בצוות

אם אתם עובדים בצוות, שווה ליצור מסמך משותף עם קבוצות כלים מומלצות לכל סוג משימה. שמרו אותו ב-repo של הצוות, בתיקיית .github/ או בויקי. כך כל חבר צוות יכול לטעון את הקבוצה המתאימה בלי לחשוב מחדש כל פעם. זה במיוחד חשוב בצוותים שעובדים עם Copilot Business — אחידות בשימוש בכלים מעלה את הפרודוקטיביות של כולם.

המספרים מדברים

לפי הנתונים הפנימיים של GitHub (2025-2026):

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

תרגיל 1: בניית כרטיסיית עזר 20 דקות

מטרה: יצירת כרטיסיית עזר אישית עם כל 30 הכלים — מסמך שתחזרו אליו כשתשכחו מה כלי עושה.

שלבים:

  1. צרו קובץ חדש: copilot-tools-reference.md
  2. צרו טבלה עם 4 עמודות: שם הכלי, קבוצה, מה עושה (משפט אחד), דוגמת פרומפט
  3. מלאו את כל 30 הכלים המובנים — השתמשו ב-Configure Tools כמקור
  4. הוסיפו שורת כותרת לכל קבוצה (Edit, Execute, Read, Search, Browser, VS Code, Web, Agent, Standalone)
  5. סמנו בכוכב (*) את 10 הכלים שאתם חושבים שתשתמשו הכי הרבה

תוצאה מצופה: מסמך Markdown עם טבלה מסודרת שמכסה את כל הכלים. שמרו אותו בשורש הפרויקט לגישה מהירה.

טיפ: שלחו ל-Agent Mode: "צור כרטיסיית עזר של כל הכלים הזמינים ב-Agent Mode בפורמט Markdown table". הסוכן יכול לעזור ביצירת הבסיס, ואתם תוסיפו את הדוגמאות האישיות.

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

טעות נפוצה: להשאיר את כל הכלים דלוקים תמיד

רוב המפתחים לא נוגעים ב-Configure Tools — משאירים את ברירת המחדל ומקווים לטוב. הבעיה: כשכל 30+ הכלים דלוקים, ה-Tool Picker צריך להעריך את כולם בכל פרומפט. זה לא רק מאט את התגובה — זה גם מגדיל את הסיכוי שהסוכן יבחר כלי לא אופטימלי. פעם ב-3 ימים שווה לעשות "ניקיון" — לכבות כלים שלא השתמשתם בהם בשבוע האחרון.

תרגיל 2: הגדרת קבוצת Debug 20 דקות

מטרה: יצירת קבוצת כלים אופטימלית לעבודת debug והרצתה על באג אמיתי.

שלבים:

  1. פתחו Configure Tools וכבו את כל הכלים
  2. הפעילו רק את הכלים הבאים:
    • execute/runInTerminal
    • execute/getTerminalOutput
    • execute/testFailure
    • read/readFile
    • read/problems
    • read/terminalLastCommand
    • search/codebase
    • search/textSearch
    • edit/editFiles (כדי שיוכל לתקן)
  3. צרו באג מלאכותי: בקובץ כלשהו, שנו שם פונקציה בלי לעדכן את כל המקומות שקוראים לה
  4. שלחו ל-Agent Mode: "הפרויקט שבור. הרץ את הטסטים, מצא את הבעיה, ותקן אותה."
  5. צפו ברצף הכלים שהסוכן משתמש — תעדו אותם

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

רצף טיפוסי שתראו: (1) runInTerminal — הרצת npm test, (2) testFailure — זיהוי הטסט שנכשל, (3) codebase — חיפוש הפונקציה הבעייתית, (4) readFile — קריאת הקובץ, (5) editFiles — תיקון, (6) runInTerminal — הרצת טסטים שוב, (7) problems — בדיקה שאין שגיאות חדשות. זו הלולאה האגנטית בפעולה, עם כלי debug ממוקדים.

תרגיל 3: הגדרת קבוצת Refactor 20 דקות

מטרה: שימוש בקבוצת כלים ממוקדת ל-refactoring יעיל.

שלבים:

  1. כבו את כל הכלים והפעילו רק:
    • edit/editFiles
    • edit/createFile
    • read/readFile
    • read/problems
    • search/usages
    • search/codebase
    • search/textSearch
  2. בחרו פונקציה בפרויקט שלכם שמופיעה ביותר מקובץ אחד
  3. שלחו: "שנה את שם הפונקציה [שם ישן] ל-[שם חדש] בכל הפרויקט"
  4. צפו בשימוש ב-usages כדי למצוא את כל ההפניות, ואז ב-editFiles כדי לשנות בכל מקום
  5. ודאו שאין שגיאות חדשות ב-Problems panel

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

למה זה עובד טוב: כשהסוכן צריך לשנות שם פונקציה, הכלי הקריטי הוא usages — הוא מוצא את כל המקומות שקוראים לפונקציה, כולל imports, tests, ו-type definitions. בלי usages, הסוכן היה צריך לנחש עם textSearch, שלא תמיד מוצא הכל (למשל אם שם הפונקציה מופיע כחלק ממחרוזת אחרת). usages משתמש ב-LSP (Language Server Protocol) כדי למצוא references מדויקים — לא מחרוזות דומות, אלא שימושים בפועל.

תרגיל 4: הגדרת קבוצת New Feature 25 דקות

מטרה: בניית פיצ'ר מקצה לקצה עם קבוצת כלים מותאמת.

שלבים:

  1. כבו את כל הכלים והפעילו:
    • כל קבוצת #edit
    • execute/runInTerminal
    • execute/testFailure
    • read/readFile
    • read/problems
    • search/codebase
    • search/fileSearch
    • #browser (אם זמין)
  2. שלחו ל-Agent Mode: "צור endpoint חדש GET /api/status שמחזיר JSON עם: version מ-package.json, uptime בשניות, וזמן נוכחי. כתוב גם טסט."
  3. צפו ברצף: חיפוש מבנה קיים → יצירת קבצים → כתיבת קוד → הרצת טסטים → תיקון אם צריך
  4. אם יש לכם אפליקציית web, בקשו: "גלוש ל-localhost:3000/api/status וודא שזה עובד"
  5. תעדו כמה כלים שונים הופעלו ובאיזה סדר

תוצאה מצופה: endpoint עובד עם טסט, מאומת דרך browser (אם רלוונטי). הבנה של איך קבוצת כלים רחבה משרתת פיצ'ר חדש.

מה ללמוד מהתרגיל: קבוצת New Feature היא הרחבה ביותר כי בניית פיצ'ר חדש דורשת הכל — יצירת קבצים, כתיבת קוד, הרצת שרת, הרצת טסטים, ואולי גם בדיקת UI בדפדפן. שימו לב כמה כלים שונים הופעלו ובאיזה סדר. בדרך כלל הרצף הוא: search (הבנת מבנה קיים) → edit (יצירה וכתיבה) → execute (הרצה ובדיקה) → read (קריאת תוצאות) → edit (תיקונים). הלולאה האגנטית במיטבה.

תרגיל 5: השוואה — כל הכלים vs קבוצה ממוקדת 15 דקות

מטרה: למדוד בפועל את ההבדל בביצועים בין כל הכלים דלוקים לבין קבוצה ממוקדת.

שלבים:

  1. הפעילו את כל הכלים ב-Configure Tools
  2. שלחו פרומפט: "מצא את כל הפונקציות שלא בשימוש בפרויקט"
  3. מדדו (בערך) כמה זמן לקח עד שהסוכן התחיל לעבוד, וכמה כלים שונים הופעלו
  4. עכשיו כבו הכל והפעילו רק: search/usages, search/codebase, read/readFile
  5. שלחו את אותו פרומפט בדיוק
  6. השוו: זמן תגובה, מספר כלים שהופעלו, איכות התוצאה

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

שאלות לניתוח:

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

סיכום ביניים — מה למדנו עד כאן

עברנו על כל 30 הכלים המובנים, חולקו ל-8 קבוצות. למדנו שני מנגנוני שליטה (Configure Tools ו-# syntax), שלושה סוגי כלים (built-in, MCP, extensions), וראינו שפחות כלים = ביצועים טובים יותר. בניתם כרטיסיית עזר, 3 קבוצות כלים מותאמות, והשוויתם ביצועים. זה מספיק כדי לעבוד עם Agent Mode ברמה גבוהה משמעותית מרוב המפתחים.

נקודה אחרונה לפני הסיום: הכלים משתנים. GitHub מוסיפים כלים חדשים כמעט כל חודש, ולפעמים גם מסירים או משנים כלים קיימים. לכן, כרטיסיית העזר שבניתם צריכה להתעדכן. הטבלאות בפרק הזה מעודכנות ל-Q1 2026 — בדקו את ה-changelog של VS Code ו-Copilot אם עבר זמן מאז שקראתם את הפרק.

שלושת הדברים שכדאי לזכור מהפרק:

  1. פחות = יותר — כבו כלים שלא צריכים. 13 כלים ממוקדים עדיפים על 30 כלים כלליים.
  2. Configure Tools = קבוע, # = חד-פעמי — שני מנגנוני שליטה שמשלימים זה את זה.
  3. 3 סוגי כלים — מובנים (תמיד שם), MCP (צריך להגדיר ולהפעיל), extensions (מותקנים מ-Marketplace).

תרחיש מלא: בניית פיצ'ר מקצה לקצה עם כלים מותאמים

בואו נראה תרחיש מעשי של יום עבודה. אתם מפתחים באפליקציית e-commerce ישראלית (מחירים בש"ח, RTL, אינטגרציה עם חברות שילוח ישראליות). המשימה: הוסיפו דף "מצב הזמנה" שמאפשר ללקוח לראות איפה החבילה שלו.

שלב 1 — Research: הגדרתם קבוצת כלים: read + search + web/fetch. שלחתם: "תבדוק את המבנה הקיים של הדפים באפליקציה ותגיד לי איפה הכי מתאים להוסיף דף חדש." הסוכן משתמש ב-listDirectory למבנה, codebase כדי למצוא דפים קיימים, readFile כדי לקרוא דוגמה. תוך דקה יש לכם תמונה ברורה.

שלב 2 — Build: החלפתם לקבוצת New Feature: edit + execute + search + browser. שלחתם: "צור דף מצב הזמנה עם טבלה שמציגה: מספר הזמנה, תאריך, סטטוס, מספר מעקב. השתמש באותו עיצוב כמו שאר הדפים." הסוכן יוצר קבצים, כותב קוד, מריץ את השרת, ובודק בדפדפן.

שלב 3 — Fix: החלפתם לקבוצת Debug: execute + read + search. "הרץ טסטים ותקן מה שנכשל." הסוכן מריץ, מזהה שגיאה ב-API mock, מתקן ומריץ שוב. תוך 3 סיבובים — כל הטסטים ירוקים.

המפתח: בכל שלב, קבוצת הכלים הייתה שונה ומותאמת. במקום 30 כלים כל הזמן, השתמשנו ב-8-12 כלים בכל שלב. התוצאה: סוכן מהיר, ממוקד, ומדויק.

שגרת עבודה — כלים של Agent Mode

תדירותמשימה
יומיבדקו שקבוצת הכלים מתאימה למשימה לפני שמתחילים לעבוד
יומיאחרי כל סשן עבודה, שימו לב לכלים שלא הופעלו — שקלו לכבות אותם מחר
שבועינסו כלי חדש אחד שלא השתמשתם בו השבוע (browser? subagent? todos?)
שבועיבדקו אם יש MCP server חדש שרלוונטי לפרויקט שלכם
חודשירענו את כרטיסיית העזר — כלים חדשים? כלים שהשתנו?
חודשיבדקו את ה-changelog של Copilot ו-VS Code לכלים חדשים ושינויים

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

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

בדקו את עצמכם — 5 שאלות

  1. למה כיבוי כלים מיותרים משפר את הביצועים של Agent Mode? (רמז: חשבו על embedding-guided routing — פחות כלים לסרוק = החלטות מהירות ומדויקות יותר)
  2. מה ההבדל בין codebase, textSearch ו-fileSearch? מתי תשתמשו בכל אחד? (רמז: סמנטי = כוונה, מילולי = מחרוזת מדויקת, glob = שם קובץ)
  3. איך subagent שומר על הקשר נקי ולמה זה חשוב? (רמז: הקשר מבודד — כל העבודה הביניים נזרקת, רק הסיכום חוזר. מונע זיהום של context window)
  4. מה ההבדל בין כלי MCP לכלים מובנים? (רמז: מובנים = מגיעים עם Copilot ופעילים כברירת מחדל. MCP = מוגדרים ב-.vscode/mcp.json, דורשים הפעלה ידנית)
  5. למה # syntax שונה מ-Configure Tools? מתי תשתמשו בכל אחד? (רמז: Configure Tools = הגדרה קבועה של מה זמין. # = רמז חד-פעמי למה עדיף בפרומפט ספציפי)

עברתם 4 מתוך 5 נכון? אתם מוכנים לפרק הבא. אם נכשלתם ביותר מ-2 — חזרו לקטעים הרלוונטיים: שאלה 1 קשורה לקטע "אסטרטגיה", שאלה 2 לקטע "Search", שאלה 3 ל-"Sub-agent", שאלה 4 ל-"MCP", ושאלה 5 ל-"Configure Tools".

סיכום הפרק

ה-insight המרכזי של הפרק הזה הוא שהכוח של Agent Mode לא נמדד בכמות הכלים שהוא יכול להשתמש בהם, אלא בכמות הכלים שאתם בוחרים לתת לו. שליטה בכלים היא לא רק הכרות עם 30 שמות — זו היכולת לבנות ערכות מותאמות שהופכות את הסוכן ממהיר יותר למדויק ורלוונטי. הבנתם שיש שלושה סוגי כלים (מובנים, MCP, extensions), שני מנגנוני בחירה (Configure Tools ו-# syntax), ושהצמצום הוא שיפור — לא הגבלה. עברתם על כל 8 קבוצות הכלים — edit, execute, read, search, browser, vscode, web, agent — ועל הכלים העצמאיים todos, selection, ו-newWorkspace. והכי חשוב: בניתם 3 קבוצות כלים מותאמות שמוכנות לשימוש מיידי. בפרק הבא נעבור לבחירת מודל — כי אחרי שבחרתם את הכלים הנכונים, השאלה הבאה היא מי מפעיל אותם ובאיזו עלות.

צ'קליסט — סיימתי?

לפני שממשיכים לפרק 3

לפני שעוברים לפרק הבא על בחירת מודלים, ודאו שביצעתם לפחות את תרגיל 1 (כרטיסיית עזר) ותרגיל אחד מבין 2-4 (קבוצת כלים). הפרק הבא מניח שאתם יודעים להשתמש ב-Configure Tools ובתחביר # — כי בבחירת מודל, הכלים שמפעילים קובעים כמה קרדיטים תצרכו. מוכנים? בואו נבחר מודל.