Agent Mode — המנוע שמתחת למכסה
מה תקבלו בסוף הפרק
- מפת הלולאה האגנטית — תרשים של 6 השלבים שחוזרים על עצמם
- טבלת החלטה מודפסת: Ask vs Edit vs Agent לפי סוג משימה
- קובץ
settings.jsonעם הגדרות אישור מותאמות לפרויקט שלכם - רשימת סימני אזהרה ללולאות אינסופיות + תוכנית תגובה
- תבנית פרומפט אפקטיבי ל-Agent Mode
- השוואה מתועדת: אותה משימה בשלושה מצבים שונים
מה תוכלו לעשות אחרי הפרק
- תוכלו למפות את הלולאה האגנטית — קלט ← תכנון ← כלי ← תוצאה ← בדיקה ← חזרה
- תוכלו להגדיר רמות אישור (manual, auto-approve, yolo) ולדעת מתי כל אחת מתאימה
- תוכלו להבדיל בין מצבי Ask, Edit ו-Agent ולבחור לפי סוג המשימה
- תוכלו לזהות מתי Agent Mode נתקע בלולאה ולשבור את המעגל
לפני שמתחילים
| פרקים קודמים | אין — זהו הפרק הראשון בקורס |
| כלים נדרשים | VS Code עם GitHub Copilot מותקן ופעיל (נדרש Copilot Pro, Business או Enterprise), פרויקט קוד פתוח לתרגול |
| זמן משוער | 90 דקות |
הפרויקט שלך
בקורס הזה תבנו שליטה מלאה ב-GitHub Copilot — מהמנוע הפנימי ועד כלים מותאמים. נתחיל מהבסיס: Agent Mode — כי הבנת הלולאה האגנטית היא הבסיס לכל מה שיבוא אחר כך.
בפרק הזה תלמדו איך Agent Mode עובד מבפנים, תגדירו רמות אישור, ותבנו טבלת החלטה לבחירת המצב הנכון.
בפרק הבא (ארגז הכלים המלא) תכירו כל כלי ש-Agent Mode יכול להפעיל ותלמדו לכבות ולהדליק כלים לפי המשימה.
מונחים שתפגשו בפרק
| מונח (English) | תרגום | הגדרה |
|---|---|---|
| Agentic Loop | לולאה אגנטית | מעגל חוזר שבו הסוכן מתכנן, מבצע, בודק תוצאות ומתקן — עד שהמשימה מושלמת |
| Ask Mode | מצב שאל | מצב צ'אט בלבד — שאלות ותשובות ללא שינוי קבצים |
| Edit Mode | מצב עריכה | מצב שבו Copilot מציע עריכות לקבצים שבחרתם, ואתם מאשרים כל שינוי |
| Agent Mode | מצב סוכן | מצב אוטונומי — Copilot מתכנן, בוחר כלים, מריץ פקודות ומתקן בעצמו |
| Tool Invocation | הפעלת כלי | קריאה לכלי חיצוני (קריאת קובץ, הרצת פקודה, חיפוש) כחלק מהלולאה |
| Approval Level | רמת אישור | הגדרה שקובעת אילו פעולות דורשות אישור ידני ואילו רצות אוטומטית |
| Self-Correction | תיקון עצמי | יכולת הסוכן לזהות שגיאות בתוצאה ולתקן ללא התערבות אנושית |
| Context Window | חלון הקשר | כמות המידע (טוקנים) שהמודל רואה בבת אחת — קוד, היסטוריית שיחה, תוצאות כלים |
| Plan Mode | מצב תכנון | מצב שבו Copilot בונה תוכנית ביצוע מפורטת לפני שמתחיל לכתוב קוד |
| YOLO Mode | מצב ילו | הגדרה שמאשרת אוטומטית כל פעולה — כולל פקודות טרמינל. מסוכן בסביבת production |
למה Agent Mode משנה את חוקי המשחק
דמיינו שאתם יושבים ב-VS Code ומבקשים מ-Copilot: "תבנה לי REST API לניהול משתמשים עם TypeScript ו-Express, כולל validation, error handling וטסטים." לפני Agent Mode, Copilot היה נותן לכם קטע קוד בצ'אט ואומר "הנה, תעתיקו." עכשיו? הוא יוצר את הקבצים, כותב את הקוד, מריץ את הטסטים, רואה ששניים נכשלים, מתקן את הבאגים, ומריץ שוב — עד שהכל ירוק.
זה לא "צ'אט משודרג." זה סוכן אוטונומי (Agent) שמפעיל כלים, מקבל feedback מהסביבה, ומתקן את עצמו בלולאה. וההבנה של הלולאה הזו — איך היא עובדת, מתי היא מועילה, ומתי היא מסוכנת — היא ההבדל בין מפתח שמשתמש ב-Copilot לבין מפתח ששולט בו.
כדי להבין למה זה כל כך משמעותי, חשבו על ההבדל בין מחשבון לבין רואה חשבון. מחשבון עושה חישוב אחד שאתם מבקשים — ואתם אחראים על הצעד הבא. רואה חשבון לוקח את כל התמונה, מחליט מה לבדוק, מריץ חישובים, מזהה בעיות, ומתקן — עד שהתוצאה נכונה. Agent Mode הוא ה"רואה חשבון" של עולם הקוד: הוא לא ממתין שתגידו לו מה השלב הבא, אלא מחליט בעצמו.
Agent Mode הושק בפברואר 2025 כ-preview ב-VS Code, והפך ל-Generally Available עד מרץ 2026 בכל סביבות הפיתוח העיקריות: VS Code, JetBrains, Eclipse ו-Xcode. מאז שהושק, הוא הפך לצורת העבודה הדומיננטית — לפי GitHub, יותר מ-70% מהאינטראקציות עם Copilot Chat כיום הן ב-Agent Mode. זה לא רק שדרוג ל-Copilot — זה שינוי פרדיגמה בדרך שמפתחים עובדים. במקום "כתוב לי קוד, אני אבדוק," המודל הוא "תבנה, תבדוק, ותתקן — אני אפקח."
בפרק הזה נפרק את המנוע לחלקים. תבינו בדיוק מה קורה כש-Agent Mode מקבל פרומפט, איך הוא מחליט מה לעשות, באילו כלים הוא משתמש, ומתי צריך להתערב ולעצור אותו. אחרי הפרק הזה — כל פרק אחר בקורס יהיה ברור יותר, כי תבינו את הבסיס שעליו הכל נשען.
עשו עכשיו 2 דקות
פתחו את VS Code עם פרויקט קוד כלשהו. לחצו Ctrl+Alt+I (או ⌃⌘I ב-Mac) לפתיחת Copilot Chat. הסתכלו בתפריט הנפתח בראש החלון — באיזה מצב אתם עכשיו? Ask, Edit או Agent? רשמו לעצמכם: _______
הלולאה האגנטית — 6 שלבים שחוזרים על עצמם
הלולאה האגנטית (Agentic Loop) היא הלב של Agent Mode. בכל פעם שאתם שולחים פרומפט ל-Agent Mode, מופעל מנגנון של 6 שלבים שחוזרים על עצמם עד שהמשימה הושלמה — או עד שהסוכן מגיע לגבול.
בואו נפרק כל שלב:
שלב 1: קלט (Input)
אתם כותבים פרומפט. זה יכול להיות פשוט ("הוסף logging לפונקציה הזו") או מורכב ("בנה מערכת authentication מלאה עם JWT"). הסוכן מקבל את הפרומפט יחד עם הקשר (Context) — הקובץ הפתוח, קבצים רלוונטיים שהמערכת זיהתה, היסטוריית השיחה, וקבצי הוראות כמו copilot-instructions.md.
שימו לב: ההקשר שהסוכן מקבל לא כולל את כל הפרויקט. הוא רואה מה שפתוח בעורך, מה שהמערכת חושבת שרלוונטי (באמצעות indexing), ומה שהוא יבחר לקרוא בעצמו בהמשך. הגודל מוגבל לחלון ההקשר (Context Window) — נדבר על זה בהרחבה בהמשך הפרק.
שלב 2: תכנון (Plan)
הסוכן מנתח את הבקשה ובונה תוכנית פעולה פנימית. הוא מחליט אילו קבצים צריך לקרוא, אילו שינויים לבצע, ובאיזה סדר. ב-Plan Mode התוכנית הזו מוצגת לכם במפורש — אבל גם ב-Agent Mode רגיל, התכנון קורה "מאחורי הקלעים" לפני כל פעולה.
למשל, אם ביקשתם "הוסף route חדש ל-API," הסוכן יחליט: קודם לקרוא את קובץ ה-routes הקיים, לראות את המבנה, ליצור את ה-route החדש באותו סגנון, לוודא שיש import מתאים, ולהריץ את הטסטים. כל זה קורה לפני שנכתבת שורת קוד אחת.
שלב 3: בחירת כלי (Tool Selection)
הסוכן בוחר את הכלי המתאים מתוך ארגז הכלים שלו. בכל רגע נתון, הסוכן יכול להפעיל כלי אחד מתוך עשרות כלים זמינים. הנה הקטגוריות העיקריות:
- כלי קריאה:
readFileלקריאת קובץ,listDirectoryלסריקת תיקייה - כלי כתיבה:
editFilesלעריכת קבצים,createFileליצירת קבצים חדשים - כלי הרצה:
runInTerminalלהרצת פקודות,getTerminalOutputלקריאת פלט - כלי חיפוש:
codebaseלחיפוש סמנטי,textSearchלחיפוש טקסט,fileSearchלחיפוש קבצים
הבחירה אוטומטית — הסוכן מחליט איזה כלי מתאים למשימה הנוכחית. בפרק הבא נכיר את כל הכלים לעומק.
שלב 4: ביצוע (Execute)
הסוכן מפעיל את הכלי ומבצע את הפעולה. כאן זה תלוי ברמת האישור (Approval Level) שלכם — בברירת מחדל, הוא יבקש רשות לפני פעולות מסוימות (כמו הרצת פקודות בטרמינל). במצב auto-approve, חלק מהפעולות ירוצו ללא אישור. במצב YOLO, הכל רץ אוטומטית.
נקודה חשובה: גם כשהסוכן מבצע פעולה, הוא עושה זאת בתוך סביבת ה-VS Code שלכם. כלומר — שינויי קבצים מופיעים מיד ב-editor, פקודות טרמינל רצות בטרמינל האמיתי שלכם, ו-Undo תמיד זמין. זו לא קופסה שחורה — אתם רואים כל מה שקורה.
שלב 5: בדיקה (Evaluate)
אחרי כל ביצוע, הסוכן בודק את התוצאה. הוא מחפש שגיאות syntax, כשלונות build, טסטים שנכשלו, שגיאות לינט, או פלט שגוי מהטרמינל. הבדיקה מתבצעת בכמה ערוצים במקביל: הסוכן קורא את הודעות השגיאה מה-editor (Problems panel), את פלט הטרמינל, ואת תוצאות הטסטים. אם הכל תקין — אפשר להמשיך לשלב הבא בתוכנית או להציג את התוצאה. אם יש בעיה — ממשיכים לשלב 6.
שלב 6: תיקון עצמי (Self-Correction)
הסוכן מנתח את השגיאה, מחליט מה לתקן, וחוזר לשלב 2 — תכנון מחדש. זה תיקון עצמי (Self-Correction) — היכולת של הסוכן לזהות שמשהו השתבש ולנסות דרך אחרת. המנגנון הזה ממשיך עד שהמשימה הושלמה בהצלחה או עד שנגמרו הניסיונות (ברירת מחדל: 25 בקשות לסבב).
חשוב להבין: תיקון עצמי לא אומר "לנסות שוב את אותו דבר." סוכן טוב ינסה גישה שונה. למשל, אם import מסוים נכשל, הוא ינסה import חלופי. אם ספריה לא מותקנת, הוא יריץ npm install. אם הגישה כולה לא עובדת, הוא עלול לנסות פתרון אחר לגמרי. אבל — וזו נקודה קריטית — לפעמים הסוכן כן נתקע על אותה גישה. על זה נדבר בסעיף לולאות אינסופיות.
מתי הלולאה נעצרת?
שלוש סיבות: (1) הצלחה — המשימה הושלמה. (2) גבול ניסיונות — הגעתם ל-max requests (ברירת מחדל 25). (3) עצירה ידנית — אתם לוחצים Stop. ב-Coding Agent בענן יש גם timeout של שעה.
עשו עכשיו 3 דקות
עברו ל-Agent Mode בחלון הצ'אט (בחרו "Agent" בתפריט למעלה). כתבו פרומפט פשוט: "צור קובץ hello.py שמדפיס 'שלום עולם' ותריץ אותו". ספרו כמה שלבים Copilot עבר: קריאת קבצים ___, יצירת קובץ ___, הרצה בטרמינל ___, סה"כ ___.
עשו עכשיו 2 דקות
בזמן ש-Agent Mode עובד, הסתכלו על הלוג בתחתית חלון הצ'אט. אתם אמורים לראות סימונים כמו "Used readFile" או "Ran terminal command." רשמו אילו כלים הסוכן הפעיל: _______________
מעבר מלא דרך הלולאה — דוגמה צעד אחר צעד
כדי שהלולאה תהיה ברורה לגמרי, בואו נעקוב אחרי משימה מתחילתה ועד סופה. הנה בדיוק מה שקורה כשאתם כותבים:
"צור מודול logging שמדפיס הודעות צבעוניות לקונסול, תומך ברמות debug/info/warn/error, וכולל timestamp. תוסיף טסט."
צעד 1 — קלט וניתוח
הסוכן מקבל את הפרומפט, קורא את ההקשר (קבצים פתוחים, מבנה הפרויקט), ומזהה: זו משימה ליצירת מודול חדש. הוא צריך: (1) ליצור קובץ חדש, (2) לכתוב קוד, (3) ליצור טסט, (4) להריץ את הטסט.
צעד 2 — תכנון
הסוכן בונה תוכנית פנימית: "אבדוק קודם אם יש כבר תיקיית utils. אחפש את מבנה הפרויקט. אז אצור את קובץ ה-logger, ואחריו את קובץ הטסט."
צעד 3-4 — בחירת כלי וביצוע (סיבוב ראשון)
הסוכן מפעיל listDirectory לסריקת מבנה הפרויקט. מזהה שיש תיקייה src/utils/. מפעיל createFile ליצירת src/utils/logger.ts עם הקוד. מפעיל createFile ליצירת src/utils/logger.test.ts עם הטסטים.
צעד 5 — בדיקה
הסוכן מריץ npm test -- logger.test.ts. הפלט: 3 טסטים עוברים, 1 נכשל — הטסט של error level צופה צבע אדום אבל הפונקציה מחזירה לבן.
צעד 6 → 2 — תיקון עצמי ותכנון מחדש
הסוכן מזהה את הבעיה: חסר mapping של צבע ל-error level. הוא חוזר לשלב 2, מתכנן תיקון, בוחר את כלי editFiles, מתקן את הקוד, ומריץ שוב. הפעם — 4 טסטים ירוקים.
סה"כ: 8 tool calls, 2 סיבובים של הלולאה, ~30 שניות — ותוצאה עובדת עם טסטים ירוקים. זה מה שהלולאה האגנטית עושה בפועל.
שימו לב למשהו חשוב בדוגמה: הסוכן לא ביקש ממנו עזרה. הוא לא שאל "האם להתקין את chalk?". הוא פשוט עשה את זה. זו האוטונומיות של Agent Mode — וזו גם הסיבה שרמות אישור כל כך חשובות. אם הסוכן היה מחליט למחוק קובץ שלדעתו "לא צריך" באותה אוטונומיות — הייתם רוצים שיבקש קודם, נכון?
שלושת המצבים: Ask, Edit ו-Agent — מתי משתמשים בכל אחד
GitHub Copilot ב-VS Code מציע שלושה מצבי עבודה שונים. ההבדל ביניהם הוא לא רק ב"כמה חכם" Copilot — אלא במה מותר לו לעשות. בחירת המצב הנכון חוסכת זמן, טוקנים, וטעויות.
Ask Mode — מצב שאל
Ask Mode (מצב שאל) הוא צ'אט טהור. אתם שואלים, Copilot עונה — אבל הוא לא משנה אף קובץ. זה המצב המתאים כשאתם:
- לא בטוחים מה הגישה הנכונה ורוצים לחקור אפשרויות
- צריכים הסבר על קוד קיים
- רוצים ללמוד מושג חדש או API
- צריכים review על גישה לפני שמתחילים לכתוב
מה Ask לא עושה: לא עורך קבצים, לא מריץ פקודות, לא מחפש בפרויקט באופן אקטיבי.
Edit Mode — מצב עריכה
Edit Mode (מצב עריכה) הוא "כירורגיה מדויקת." אתם בוחרים אילו קבצים לערוך, נותנים הוראות, ו-Copilot מציע שינויים — אבל אתם מאשרים כל שינוי בנפרד. זה המצב המתאים כשאתם:
- יודעים בדיוק מה צריך לשנות ובאיזה קובץ
- עובדים על קוד ישן (brownfield) ורוצים שליטה מלאה
- רוצים לשפר כמה שורות בלי ש-Copilot יגע בשאר
- צריכים שינוי טכני מדויק (rename, extract function)
מה Edit לא עושה: לא מגלה קבצים בעצמו, לא מריץ פקודות בטרמינל, לא מתקן שגיאות אוטומטית.
Agent Mode — מצב סוכן
Agent Mode (מצב סוכן) הוא הקצה האוטונומי. אתם נותנים מטרה, והסוכן מתכנן, מגלה קבצים, עורך, מריץ פקודות, בודק תוצאות, ומתקן — הכל בלולאה אוטומטית. זה המצב המתאים כשאתם:
- רוצים implementation מקצה לקצה
- צריכים שינויים במספר קבצים שתלויים אחד בשני
- רוצים שהסוכן ימצא את הקבצים הרלוונטיים בעצמו
- צריכים לרוץ, לבדוק, ולתקן — בלי לעשות את זה ידנית
מה Agent כן עושה שהאחרים לא: מפעיל כלים, מריץ פקודות טרמינל, מגלה קבצים אוטומטית, מתקן שגיאות בלולאה.
השוואה מעשית: אותה בקשה בשלושה מצבים
כדי שההבדלים יהיו ברורים, בואו נראה מה קורה כשאתם שולחים את אותה בקשה בדיוק בכל מצב:
הבקשה: "הוסף פונקציה שמחשבת ממוצע של מערך מספרים, כולל בדיקת קלט ריק."
ב-Ask Mode:
Copilot כותב הסבר בצ'אט, מציג קוד לדוגמה, אבל לא נוגע באף קובץ. אתם צריכים להעתיק את הקוד ידנית, לבחור לאיזה קובץ להדביק, ולוודא שהכל עובד בעצמכם. זה מושלם אם רק רציתם לראות איך כותבים את הפונקציה — אבל לא אם רציתם שהיא תיווצר בפרויקט.
ב-Edit Mode:
Copilot מציע שינויים בקבצים שבחרתם. אם סימנתם קובץ utils.ts, הוא יוסיף את הפונקציה שם ויציג diff. אתם מאשרים או דוחים. אבל — הוא לא יריץ טסט, לא יבדוק אם הקובץ מתקמפל, ולא יחפש האם יש פונקציה דומה כבר קיימת.
ב-Agent Mode:
Copilot קודם מחפש בפרויקט — האם יש כבר קובץ utils? האם יש פונקציות דומות? אז הוא בוחר את הקובץ הנכון, כותב את הפונקציה, מוסיף import אם צריך, יוצר (או מעדכן) קובץ טסט, מריץ את הטסטים, רואה שאחד נכשל על edge case של מערך ריק, מתקן, ומריץ שוב. התוצאה: פונקציה עובדת עם טסטים ירוקים — בלי שנגעתם בקוד.
מסגרת החלטה: איזה מצב לבחור?
| המצב | אם... | דוגמה |
|---|---|---|
| Ask | אתם לא בטוחים מה לעשות, רוצים הסבר, או צריכים review | "מה ההבדל בין useEffect ל-useMemo?" |
| Edit | יודעים בדיוק איזה קובץ ואיזה שורות לשנות | "שנה את הפונקציה הזו ל-async ותוסיף error handling" |
| Agent | רוצים implementation מלא, מרובה קבצים, עם ריצה ובדיקה | "בנה REST API לניהול מוצרים עם CRUD, validation וטסטים" |
| Agent + Plan | רוצים implementation מלא אבל קודם לראות את התוכנית | "תכנן refactoring של מודול ה-auth ואז תבצע" |
כלל אצבע: אם לא בטוחים — תתחילו ב-Ask. תמיד אפשר לעבור ל-Agent אחרי שהבנתם מה צריך.
עשו עכשיו 2 דקות
חשבו על 3 משימות שעשיתם בקוד בשבוע האחרון. לכל אחת, רשמו איזה מצב הייתם בוחרים ולמה:
- משימה: _______ ← מצב: _______ כי: _______
- משימה: _______ ← מצב: _______ כי: _______
- משימה: _______ ← מצב: _______ כי: _______
תרגיל 1: אותה משימה בשלושה מצבים 20 דקות
מטרה: להבין בפועל איך כל מצב מתנהג אחרת עם אותה בקשה.
המשימה: "הוסף פונקציה שמחשבת ממוצע של מערך מספרים, כולל בדיקת קלט ריק."
- פתחו קובץ קוד קיים (JavaScript, Python, או כל שפה שאתם עובדים בה)
- Ask Mode: שלחו את הבקשה ב-Ask. רשמו: מה קיבלתם? האם הקוד שונה? ___
- Edit Mode: עברו ל-Edit, בחרו את הקובץ, ושלחו את אותה בקשה. רשמו: האם הוצעו שינויים? האם נדרש אישור? ___
- Agent Mode: עברו ל-Agent ושלחו את אותה בקשה. רשמו: מה הסוכן עשה? כמה שלבים? ___
- השוו: איזה מצב נתן את התוצאה הטובה ביותר למשימה הזו? ___
תוצאה צפויה: טבלת השוואה עם הבדלי ההתנהגות בין שלושת המצבים — זהו אחד מה-deliverables של הפרק.
מה קורה מאחורי הקלעים: הטוקנים והעלות
נקודה שחשוב להבין: כל מצב צורך כמות שונה של טוקנים. ב-Ask, הסוכן שולח בקשה אחת ומקבל תשובה אחת — צריכה מינימלית. ב-Edit, יש כמה סבבים של הצעה ואישור. ב-Agent Mode, כל tool call הוא בקשה נפרדת למודל — וזה מצטבר מהר.
למה זה חשוב? כי Copilot עובד עם מערכת Premium Requests (בקשות פרמיום). בחשבון Copilot Pro יש מכסה חודשית של בקשות premium, ו-Agent Mode צורך יותר בקשות לכל משימה. הנקודה החשובה: רק הפרומפטים שאתם שולחים נספרים כבקשות premium — ה-tool calls האוטומטיים של הסוכן לא נספרים בנפרד. אבל כל סבב של הלולאה שבו הסוכן "מדבר" אתכם (מציג תוצאות, שואל שאלות) נספר.
המשמעות המעשית: אל תשתמשו ב-Agent Mode על משימה שמספיק לה Ask, כי אתם מבזבזים בקשות premium על overhead מיותר. ולהפך — אל תנסו לעשות ב-Ask מה ש-Agent Mode עושה בקלות, כי תבזבזו זמן שלכם בהעתקה ידנית ובדיקות.
השוואת צריכה לפי מצב (אומדן)
| מצב | בקשות premium למשימה ממוצעת | tool calls | זמן ממוצע |
|---|---|---|---|
| Ask | 1 | 0 | 3-10 שניות |
| Edit | 1-2 | 0 | 5-15 שניות |
| Agent (פשוט) | 1 | 3-8 | 15-30 שניות |
| Agent (מורכב) | 1 | 10-25 | 1-5 דקות |
הערה: דוגמאות מייצגות. הצריכה בפועל תלויה בגודל המשימה ובמספר סיבובי התיקון.
Plan Mode — לתכנן לפני לבצע
אחד הדברים שמפתחים מנוסים לומדים מהר הוא ש-Agent Mode עובד הכי טוב כשנותנים לו לתכנן לפני שהוא מתחיל לכתוב קוד. ל-Copilot יש כלי ייעודי לזה: Plan Mode (מצב תכנון).
מה Plan Mode עושה
כשאתם משתמשים ב-Plan Mode, Copilot מנתח את הבקשה ואת הפרויקט ובונה תוכנית ביצוע מפורטת — רשימה של שלבים עם הסבר מה יקרה בכל אחד, אילו קבצים ייפגעו, ומה הסדר. הנקודה המרכזית: Plan Mode לא משנה אף קובץ עד שאתם מאשרים את התוכנית.
איך להפעיל
יש שתי דרכים:
- בחרו Plan מתפריט ה-agents בראש חלון הצ'אט
- כתבו
/planואחרי זה את תיאור המשימה
מתי להשתמש ב-Plan Mode
- משימות מורכבות — refactoring של מודול שלם, מעבר לפריימוורק חדש, שינוי ארכיטקטורה
- כשלא בטוחים בהיקף — רוצים לראות מה הסוכן מתכנן לגעת בו לפני שהוא מתחיל
- code review מקדים — לבדוק את הגישה לפני הביצוע, לוודא שההיגיון נכון
- עבודת צוות — להראות לעמיתים מה מתוכנן לפני שמריצים, לקבל אישור על הגישה
- לימוד — לראות איך Copilot חושב על בעיה, גם אם אתם מתכננים לפתור אותה בעצמכם
מה תוכנית ביצוע כוללת
כשאתם מריצים /plan, Copilot מייצר מסמך מובנה שכולל:
- סקירה כללית — מה המשימה ומה הגישה המוצעת
- רשימת קבצים מושפעים — אילו קבצים יישרתו, יערכו, או יימחקו
- שלבי ביצוע מפורטים — כל שלב עם הסבר מה יקרה ולמה
- תלויות — אם שלב X תלוי בשלב Y
- בדיקות מוצעות — איך לוודא שהכל עובד אחרי הביצוע
אתם יכולים לענות על התוכנית: "נראה טוב, תתחיל" או "שנה את שלב 3, במקום X תעשה Y." הסוכן מתעדכן ומתחיל לבצע. אם יש שלב שנראה לכם מסוכן או מיותר — אמרו "דלג על שלב 4" והסוכן יתאים את התוכנית. זו שליטה שאין לכם ב-Agent Mode רגיל — שם הסוכן מחליט בעצמו.
Plan Mode מול Agent Mode רגיל: ב-Agent Mode רגיל, התכנון קורה "בראש" של הסוכן — אתם לא רואים אותו. הסוכן פשוט מתחיל לעבוד. ב-Plan Mode, התכנון הופך לשקוף — אתם רואים את כל השלבים לפני שקורה משהו. הבחירה ביניהם תלויה במידת הביטחון שלכם: אם אתם סומכים על הסוכן — Agent רגיל. אם אתם רוצים לסקור קודם — Plan.
Plan → Agent: תהליך דו-שלבי
הגישה החזקה ביותר: התחילו עם Plan Mode, סקרו את התוכנית, תקנו אם צריך, ואז אשרו — Copilot יעבור אוטומטית לביצוע ב-Agent Mode לפי התוכנית שאישרתם. ככה מקבלים את האוטונומיות של Agent Mode עם הביקורת של Plan Mode.
דוגמה: מה תוכנית ביצוע נראית בפועל
נניח שהרצתם: /plan הוסף dark mode toggle לאפליקציה
Plan Mode יחזיר משהו כזה:
סקירה: "אוסיף toggle ל-dark mode שנשמר ב-localStorage, כולל CSS variables ו-React context."
שלבים:
- יצירת
ThemeContext.tsxעם state ל-dark/light - הוספת CSS variables ל-
globals.cssלשני ה-themes - יצירת component
ThemeToggle.tsx - שילוב ב-
App.tsxעם ThemeProvider - הוספת localStorage persistence
- טסט ל-ThemeToggle
קבצים מושפעים: 4 חדשים + 2 עדכונים
עכשיו אתם יכולים לבדוק: "למה הוא יוצר React context? אולי מספיק CSS בלבד?" — ולבקש שינוי בתוכנית לפני שנכתבת שורת קוד. זו הדרך הכי בטוחה לעבוד עם משימות מורכבות — לראות את התוכנית, לתקן אותה, ורק אז לתת לסוכן לבצע.
עשו עכשיו 3 דקות
הריצו /plan עם הבקשה: "הוסף לפרויקט dark mode toggle שנשמר ב-localStorage". קראו את התוכנית שנוצרת. שאלו את עצמכם: האם התוכנית הגיונית? האם יש קובץ שהוא מתכנן לגעת בו שלא ציפיתם? רשמו: ___
רמות אישור — מ-manual עד yolo
אחד הדברים שמבדילים משתמש מתקדם ממתחיל הוא ההבנה שיש לכם שליטה מלאה על מה Agent Mode מורשה לעשות בלי לשאול. ב-Copilot יש שלוש רמות אישור (Approval Levels), וכל אחת מתאימה למצב אחר.
רמה 1: Manual — אישור ידני (ברירת מחדל)
כל פעולה שהסוכן רוצה לבצע — עריכת קובץ, הרצת פקודה בטרמינל, שימוש בכלי — מציגה לכם חלון אישור. אתם קוראים, מחליטים, ומאשרים או דוחים. זו ברירת המחדל, וזו הרמה הכי בטוחה.
מתאימה ל: קוד production, פרויקטים רגישים, משתמשים חדשים ב-Agent Mode.
רמה 2: Auto-Approve — אישור אוטומטי בררני
אתם מגדירים רשימת כלים ופקודות שמותר לסוכן להריץ ללא אישור, בעוד שפעולות אחרות עדיין דורשות אישור ידני. זה מאפשר עבודה חלקה יותר בלי לוותר על בטיחות.
ההגדרות הרלוונטיות ב-settings.json של VS Code:
{
// אישור אוטומטי לכלים ספציפיים
"chat.tools.autoApprove": {
"readFile": true,
"codebase": true,
"listDirectory": true
},
// אישור אוטומטי לפקודות טרמינל לפי דפוס
"chat.tools.terminal.autoApprove": {
"/^npm test/": true,
"/^npm run lint/": true,
"/^git status/": true,
"/^rm /": false,
"/^git push/": false
}
}
מתאימה ל: מפתחים שמכירים את ה-codebase, פרויקטים פנימיים, פעולות בטוחות חוזרות.
רמה 3: YOLO Mode — הכל אוטומטי
YOLO Mode (מצב ילו) מאשר הכל — כל כלי, כל פקודת טרמינל, בלי לשאול. אפשר להפעיל אותו בשתי דרכים:
// ב-settings.json — מפעיל את YOLO גלובלית
{
"chat.tools.global.autoApprove": true
}
// או בצ'אט — מפעיל לסשן הנוכחי בלבד
/yolo
מתאימה ל: סביבות sandbox, קונטיינרים חד-פעמיים, לימוד ותרגול. לעולם לא על קוד production.
איך Copilot מחליט מה דורש אישור
גם בלי שתגדירו כלום, Copilot מפריד בין פעולות "בטוחות" ו"רגישות":
- עריכת קבצים — מוצגת כ-diff שאתם מאשרים. הסוכן לא שומר ללא אישור.
- קריאת קבצים — בדרך כלל רצה ללא אישור, כי קריאה לא משנה כלום.
- הרצת פקודות טרמינל — תמיד דורש אישור בברירת מחדל. זו הפעולה הכי מסוכנת.
- חיפוש בפרויקט — בדרך כלל ללא אישור.
ההיגיון ברור: פעולות שיכולות לשנות מצב (כתיבה, הרצה) דורשות אישור. פעולות שרק קוראות מידע — לא. ההגדרות שלכם ב-settings.json דורסות את ברירות המחדל האלה.
טיפ למפתחים ישראלים
אם אתם עובדים בסטארטאפ ישראלי טיפוסי — סביר שיש לכם כמה סביבות: development, staging, production. הגדרו Workspace Settings (לא User Settings) שונים לכל סביבה. בפרויקט ה-development אפשר להרשות יותר, בפרויקט ה-production — רק manual. ב-VS Code, Workspace Settings דורסים את ה-User Settings, אז אתם יכולים להיות נדיבים בברירת מחדל ומגבילים בפרויקטים ספציפיים.
איך ליצור Workspace Settings
כדי שההגדרות יהיו ספציפיות לפרויקט (ולא גלובליות לכל VS Code), צרו תיקיית .vscode/ בשורש הפרויקט ובתוכה קובץ settings.json:
// .vscode/settings.json — הגדרות ספציפיות לפרויקט
{
// פרויקט production: הכל manual
"chat.tools.autoApprove": {},
"chat.tools.terminal.autoApprove": {},
"github.copilot.chat.agent.maxRequests": 25
}
לעומת זאת, ב-User Settings (שחלים על כל הפרויקטים) אפשר להיות נדיבים יותר:
// User settings — ברירת מחדל לכל הפרויקטים
{
"chat.tools.autoApprove": {
"readFile": true,
"codebase": true,
"listDirectory": true,
"fileSearch": true
},
"chat.tools.terminal.autoApprove": {
"/^npm test/": true,
"/^npm run lint/": true,
"/^git status/": true
}
}
ההיררכיה: Workspace Settings דורסים User Settings. אז הפרויקט עם .vscode/settings.json ריק יחסום את ה-auto-approve הגלובלי. זו הדרך הנכונה לנהל בטיחות — ברירת מחדל נוחה, עם override מגביל לפרויקטים רגישים. שימו לב: הגדרות Workspace נשמרות ב-git (תיקיית .vscode/), כך שהן חלות על כל הצוות. אם מישהו בצוות מגדיר YOLO ב-workspace settings — כל הצוות מקבל את זה. וודאו שיש הסכמה צוותית על רמת האישור לפני שמכניסים את ההגדרות ל-repo.
מסגרת החלטה: איזו רמת אישור מתאימה?
| הסיטואציה | רמת אישור מומלצת | למה |
|---|---|---|
| פרויקט production, לקוח אמיתי | Manual | טעות אחת יכולה לעלות בכסף ובזמן |
| פרויקט פנימי, development branch | Auto-Approve — כלי קריאה + טסטים | הסוכן צריך חופש לקרוא ולבדוק, אבל לא למחוק |
| POC או prototype חד-פעמי | Auto-Approve — רוב הכלים | מהירות חשובה יותר מזהירות |
| לימוד, ניסוי, sandbox | YOLO | אין מה להפסיד, רוצים לראות את Agent Mode בפעולה מלאה |
| CI/CD pipeline, automate | Manual או Auto-Approve מצומצם | אוטומציה + אוטונומיות = סיכון כפול |
טעות נפוצה: YOLO על production
מה קורה: מפתח מפעיל YOLO כי "זה רק שינוי קטן" ושוכח לכבות. הסוכן מריץ rm -rf, git push --force, או DROP TABLE בלי לשאול.
למה זה מפתה: YOLO מרגיש מהיר ונוח. ה-friction של אישורים חוזרים מעצבן.
מה לעשות במקום: השתמשו ב-Auto-Approve בררני — אשרו אוטומטית כלי קריאה, טסטים, ו-lint. שמרו אישור ידני על פקודות כתיבה ומחיקה. ככה מקבלים 80% מהמהירות עם 95% מהבטיחות.
טעות נפוצה: לא לקרוא את מה שהסוכן מבקש אישור עליו
מה קורה: המפתח לוחץ "Approve" אוטומטית על כל בקשה בלי לקרוא. הסוכן מוחק קובץ חשוב או מריץ פקודה הרסנית.
למה זה מפתה: אחרי 10 אישורים בשורה, "ברור שהכל בסדר."
מה לעשות במקום: קראו לפחות את סוג הפעולה (קריאה? כתיבה? מחיקה? הרצת פקודה?) ואת שם הקובץ/פקודה לפני שמאשרים. זה לוקח שנייה ויכול לחסוך שעות.
עשו עכשיו 3 דקות
פתחו את Settings ב-VS Code (Ctrl+,). חפשו "copilot auto approve" או "chat.tools.autoApprove". מה מוגדר אצלכם עכשיו? רשמו: ___
תרגיל 2: הגדרת רמות אישור מותאמות 15 דקות
מטרה: ליצור הגדרת אישור שמתאימה לפרויקט האישי שלכם.
- פתחו את
settings.jsonב-VS Code (דרך Command Palette → "Open User Settings (JSON)") - הוסיפו הגדרת
chat.tools.autoApproveעם הכלים שאתם רוצים לאשר אוטומטית. התחילו עם כלי קריאה בלבד:"chat.tools.autoApprove": { "readFile": true, "codebase": true, "listDirectory": true } - הוסיפו הגדרת
chat.tools.terminal.autoApproveעם פקודות בטוחות:"chat.tools.terminal.autoApprove": { "/^npm test/": true, "/^npm run lint/": true, "/^git status/": true, "/^git diff/": true, "/^ls/": true, "/^cat /": true, "/^rm /": false, "/^git push/": false, "/^git reset/": false } - שמרו ובדקו: הריצו בקשה ב-Agent Mode שדורשת קריאת קובץ ולאחר מכן הרצת
npm test. האם הפעולות רצו בלי אישור? - תעדו את ההגדרה: שמרו צילום מסך של ה-
settings.json— זהו אחד מה-deliverables של הפרק.
תוצאה צפויה: קובץ settings.json עם הגדרות אישור מותאמות שנבדקו ועובדות.
תיקון עצמי — איך Copilot מזהה שגיאות ומתקן
אחד המנגנונים החזקים ביותר של Agent Mode הוא תיקון עצמי (Self-Correction). במקום להציג לכם קוד שבור ולהגיד "הנה, תתקנו" — הסוכן מנסה לתקן בעצמו.
מה מפעיל את מנגנון התיקון?
הסוכן מזהה בעיות בחמישה ערוצים:
- שגיאות Syntax — הקוד לא מתקמפל. הסוכן רואה את הודעת השגיאה מה-editor ומתקן.
- כשלון Build —
npm run buildנכשל. הסוכן קורא את הפלט, מזהה את הבעיה, ומתקן. - טסטים שנכשלים —
npm testמחזיר failures. הסוכן קורא את דוח הטסטים ומתקן. - שגיאות Lint — ESLint או כלי דומה מדווח על בעיות. הסוכן מתקן לפי הכללים.
- פלט טרמינל שגוי — פקודה שהורצה מחזירה שגיאה. הסוכן קורא את ה-error ומתאים את הגישה.
איך זה נראה בפועל
דמיינו שביקשתם מהסוכן ליצור פונקציה שמטפלת ב-API call. הסוכן:
- כותב את הפונקציה
- מריץ את הטסט
- רואה שהטסט נכשל — חסר import של
axios - מוסיף את ה-import
- מריץ שוב — הטסט עובר
- ממשיך למשימה הבאה
כל הלולאה הזו קורית אוטומטית — בלי שתתערבו. הסוכן גם מתעדק: אם הוא מזהה שהגישה הנוכחית לא עובדת אחרי כמה ניסיונות, הוא ינסה גישה אחרת.
דוגמה מעשית: תיקון עצמי בפעולה
הנה תרחיש אמיתי שממחיש את התהליך:
תרחיש: יצירת API endpoint עם validation
פרומפט: "הוסף endpoint ל-POST /api/users שמקבל name ו-email, מוודא ששניהם קיימים, ושומר ל-database."
סיבוב 1: הסוכן כותב את ה-route, מריץ npm test → שגיאה: Cannot find module 'express-validator'
סיבוב 2: הסוכן מריץ npm install express-validator, ואז מריץ שוב → שגיאה: טסט אחד נכשל, חסר import
סיבוב 3: הסוכן מוסיף את ה-import, מריץ שוב → הצלחה: כל הטסטים עוברים
סה"כ: 3 סיבובים, 6 tool calls — ותוצאה עובדת.
גבולות התיקון העצמי
התיקון העצמי לא אינסופי. ברירת המחדל היא 25 בקשות (requests) לכל סבב. אחרי שהגבול מגיע, הסוכן ישאל אתכם: "הגעתי לגבול. לרצות שאמשיך?" אפשר לשנות את הגבול בהגדרות:
// settings.json — שינוי מגבלת ניסיונות
"github.copilot.chat.agent.maxRequests": 50
מתי להגדיל את ה-Max Requests?
אם אתם עובדים על משימה גדולה ויודעים שהסוכן צריך הרבה שלבים (למשל: migration של 20 קבצים), הגדילו ל-50 או 100. אם אתם רואים שהסוכן נתקע בלולאה — 25 זה בדיוק הגבול הנכון כדי לעצור אותו. ככלל: אם המשימה דורשת גילוי של קבצים רבים ובדיקות מרובות, הגדילו. אם המשימה צריכה להיות פשוטה אבל הסוכן עושה יותר מדי — 25 הוא safety net טוב.
לזהות: תיקון עצמי טוב מול לולאה
ההבדל בין תיקון עצמי מוצלח ללולאה אינסופית הוא דק אבל חשוב:
| תיקון עצמי טוב | לולאה אינסופית |
|---|---|
| השגיאה משתנה בכל סיבוב | אותה שגיאה חוזרת על עצמה |
| הסוכן מנסה גישה שונה | הסוכן מנסה את אותו דבר שוב |
| הקוד מתקדם — חלקים עובדים | הקוד לא מתקדם — flip-flop |
| מספר הקבצים שנערכו גדל | אותו קובץ נערך שוב ושוב |
| הסוכן מסביר מה הבעיה ומה הוא מנסה | הסוכן חוזר על אותו הסבר |
אם אתם רואים את הסימנים של העמודה הימנית — הגיע הזמן לעצור ולהתערב. אם אתם רואים את העמודה השמאלית — תנו לסוכן לעבוד, הוא בדרך הנכונה.
טעות נפוצה: Agent Mode למשימות פשוטות
מה קורה: מפתח משתמש ב-Agent Mode כדי לשנות שם משתנה או להוסיף import. הסוכן קורא 15 קבצים, בונה תוכנית, ומריץ 8 tool calls — על משימה שב-Edit Mode הייתה לוקחת 3 שניות.
למה זה מפתה: Agent Mode מרגיש "חזק יותר" אז למה לא להשתמש בו תמיד?
מה לעשות במקום: אם המשימה היא שינוי בודד בקובץ אחד — השתמשו ב-Edit. Agent Mode מיועד למשימות שדורשות גילוי, ריצה, ובדיקה. על שינוי פשוט הוא פשוט overhead מיותר.
עשו עכשיו 4 דקות
נסו להפעיל את מנגנון התיקון העצמי בכוונה: ב-Agent Mode, כתבו "צור פונקציה שמבצעת fetch מ-API שלא קיים ותריץ טסט עליה". צפו ב-Copilot מנסה, נכשל, ומתקן. כמה סיבובים של תיקון הוא עשה? ___
חלון ההקשר — מה Copilot רואה ומה לא
כדי לקבל תשובות טובות מ-Agent Mode, חשוב להבין מה הסוכן רואה. הוא לא רואה את כל הפרויקט בבת אחת — הוא עובד בתוך חלון הקשר (Context Window) מוגבל.
מה נכנס לחלון ההקשר
| סוג מידע | דוגמה | כמה מקום תופס |
|---|---|---|
| הפרומפט שלכם | הבקשה שכתבתם | מעט |
| קבצים פתוחים | הקובץ שאתם עובדים עליו | משתנה |
| קבצים שהסוכן קרא | קבצים שהסוכן מצא רלוונטיים | משתנה — יכול להיות הרבה |
| תוצאות כלים | פלט טרמינל, תוצאות חיפוש | יכול להיות גדול מאוד |
| היסטוריית שיחה | הודעות קודמות באותו צ'אט | גדל עם כל הודעה |
| הוראות מערכת | copilot-instructions.md, .github/copilot-instructions.md | קבוע |
| Reserved Output | מקום שמור לתשובה של הסוכן | ~30-40% מהחלון |
גודל החלון
גודל חלון ההקשר תלוי במודל שנבחר:
- GPT-4o: 64,000 טוקנים (הסטנדרט)
- Claude Sonnet/Opus: עד 128,000-200,000 טוקנים
- דגמים חדשים: חלק מגיעים עד 192,000 טוקנים
נשמע הרבה? קחו בחשבון ש-30-40% שמור לפלט (Reserved Output) — מקום שהמערכת מקצה מראש כדי שהסוכן יוכל לכתוב תשובות ארוכות בלי שייחתך באמצע. ושכל כלי שהסוכן מפעיל מוסיף מידע לחלון — פלט טרמינל, תוכן קבצים, תוצאות חיפוש. בפרויקט גדול עם הרבה קבצים, החלון יכול להתמלא מהר מאוד.
חשבון פשוט
בואו נעשה חשבון: עם חלון של 64,000 טוקנים ו-40% שמור לפלט, נשארים לכם כ-38,000 טוקנים לקלט. קובץ TypeScript ממוצע הוא כ-500-1,000 טוקנים. אם הסוכן קורא 10 קבצים, מריץ 5 פקודות, ויש לכם 15 הודעות בשיחה — החלון כמעט מלא. לכן חשוב לנהל את ההקשר בצורה מודעת.
מה קורה כשנגמר המקום
כשחלון ההקשר מגיע ל-95% קיבולת, המערכת מפעילה compaction (דחיסה) — היא מקצרת הודעות ישנות, מסכמת תוצאות כלים, ושומרת רק את המידע הקריטי. התוצאה: הסוכן "שוכח" חלק מההיסטוריה אבל ממשיך לעבוד. הבעיה: לפעמים הוא שוכח דברים שאתם אמרתם לו קודם — "אל תגע בקובץ X" למשל — וזה יכול לגרום לבעיות.
המספרים שחשוב לזכור
| גודל חלון סטנדרטי | 64,000 טוקנים (GPT-4o) |
| Reserved Output | 30-40% מהחלון |
| Compaction trigger | 95% קיבולת |
| קובץ קוד ממוצע | 500-1,000 טוקנים |
| הודעת צ'אט ממוצעת | 100-500 טוקנים |
טיפ: איך לנהל את ההקשר
- שיחות קצרות: אל תנהלו שיחה אחת ארוכה עם 50 הודעות. פתחו שיחה חדשה כל כמה משימות.
- פרומפטים ממוקדים: "שנה את הפונקציה X בקובץ Y" עדיף על "תשפר את הקוד."
- סמנו קובץ: השתמשו ב-
#file:path/to/fileכדי לכוון את הסוכן במקום שיחפש בעצמו. - ניקוי: אם הסוכן מתחיל לתת תשובות לא רלוונטיות — פתחו שיחה חדשה.
אסטרטגיות לניהול הקשר אפקטיבי
ניהול חלון ההקשר הוא אחד המיומנויות החשובות ביותר בעבודה עם Agent Mode. הנה אסטרטגיות מוכחות:
אסטרטגיה 1: שיחות קצרות וממוקדות. במקום שיחה אחת ארוכה עם 30 הודעות, פתחו שיחה חדשה כל 5-8 הודעות. כל שיחה חדשה מתחילה עם חלון הקשר נקי. זה במיוחד חשוב כש-Agent Mode קורא הרבה קבצים — כל קובץ נשאר בזיכרון עד שהחלון מתמלא.
אסטרטגיה 2: כוונו את הסוכן במקום שיחפש. במקום "מצא את הבאג בפרויקט" (שגורם לסוכן לסרוק 50 קבצים), כתבו "הבאג ב-#file:src/api/users.ts — ה-validation לא עובד על email ריק." התחביר #file: מכוון את הסוכן ישירות לקובץ הנכון וחוסך טוקנים יקרים.
אסטרטגיה 3: ניקוי כש"מרגישים" שהסוכן מבולבל. אם הסוכן מתחיל לתת תשובות לא רלוונטיות, חוזר על דברים שכבר אמרתם, או "שוכח" הוראות — סימן שהחלון מלא והתבצע compaction. פתחו שיחה חדשה וחזרו על ההקשר החשוב.
אסטרטגיה 4: השתמשו בקובץ instructions. מידע שנמצא ב-copilot-instructions.md נטען אוטומטית בכל שיחה חדשה — כך שאתם לא צריכים לחזור עליו. כל מה שרלוונטי תמיד (tech stack, coding standards, כללים) שייך בקובץ instructions, לא בפרומפט.
עשו עכשיו 2 דקות
בדקו איזה מודל משמש את ה-Agent Mode אצלכם: לחצו על שם המודל בתחתית חלון הצ'אט (או בחרו מודל מהתפריט). מה כתוב? רשמו: _______. זכרו — מודל שונה = חלון הקשר שונה = התנהגות שונה. (GPT-4o = 64K, Claude Sonnet = 128K+).
לולאות אינסופיות — זיהוי ושבירה
Agent Mode הוא כלי חזק, אבל לפעמים הוא נתקע. הסוכן עורך קובץ, רואה שגיאה, מתקן, רואה שגיאה אחרת, חוזר לתיקון הראשון — ונכנס ללולאה אינסופית. זו אחת הבעיות הנפוצות ביותר עם Agent Mode, ולפי דיונים בקהילת GitHub, כמעט כל משתמש נתקל בזה בשלב כלשהו. ההבנה מתי זה קורה ואיך לשבור את הלולאה היא מיומנות קריטית — אולי אפילו יותר חשובה מלדעת איך להפעיל את הסוכן.
למה לולאות קורות
לולאות אינסופיות קורות בדרך כלל באחד משלושה מצבים:
- פרומפט עמום מדי: "תשפר את הקוד" — הסוכן לא יודע מה "שיפור" אומר, אז הוא מנסה דבר אחד, רואה שלא שיפר, מנסה משהו אחר, חוזר...
- קונפליקט בדרישות: "תוסיף פיצ'ר X אבל אל תשנה קובץ Y" — כשהפיצ'ר דורש שינוי בקובץ Y, הסוכן תקוע.
- סביבה שבורה: בעיה שלא קשורה לקוד — ספרייה לא מותקנת, הרשאות חסרות, גרסה לא נכונה — הסוכן ממשיך לנסות לתקן את הקוד במקום לתקן את הסביבה.
דוגמה: לולאה אינסופית טיפוסית
פרומפט: "תתקן את הטסטים שנכשלים"
סיבוב 1: הסוכן קורא את הטסט הנכשל, מזהה שחסר mock, מוסיף mock → עדיין נכשל
סיבוב 2: הסוכן משנה את ה-mock → נכשל בצורה אחרת
סיבוב 3: הסוכן מסיר את ה-mock ומנסה לשנות את הקוד עצמו → הטסט הקודם ששבר
סיבוב 4: הסוכן מחזיר את ה-mock הראשון... (חזרנו להתחלה)
הבעיה האמיתית: הטסט נכשל כי גרסת Node.js לא תואמת — בעיית סביבה שהסוכן לא יכול לפתור דרך שינוי קוד. הפתרון: לעצור, להבין את השגיאה בעצמכם, לתקן את הסביבה, ולבקש מהסוכן להמשיך.
סימני אזהרה — איך מזהים לולאה
שימו לב לארבעה סימנים:
- אותו קובץ נערך שוב ושוב — הסוכן חוזר לאותו קובץ בלי התקדמות
- אותה שגיאה חוזרת — הפלט מראה את אותה הודעת שגיאה אחרי כל תיקון
- הסוכן "חושב" יותר מ-2 דקות — ללא פלט חדש
- הסוכן מוסיף ומסיר את אותו קוד — flip-flop בין שתי גרסאות
4 שיטות לשבירת לולאה
| # | שיטה | מתי להשתמש | איך |
|---|---|---|---|
| 1 | Stop — עצירה | תמיד — השלב הראשון | לחצו על כפתור ה-Stop בחלון הצ'אט |
| 2 | הבהרה | כשהבעיה היא פרומפט לא ברור | עצרו ושלחו הוראות מדויקות יותר: "הבעיה ספציפית היא X. תתקן רק את Y." |
| 3 | פירוק | כשהמשימה גדולה מדי | חלקו את המשימה ל-2-3 פרומפטים קטנים ונפרדים |
| 4 | ניקוי ואיפוס | כשחלון ההקשר מלא או מבולבל | פתחו שיחה חדשה (New Chat). אם צריך — Undo את השינויים שהסוכן עשה. |
מסגרת החלטה: מה לעשות כשהסוכן תקוע
עקבו אחרי הצעדים בסדר הזה:
- עצרו — לחצו Stop. לעולם אל תתנו ללולאה לרוץ יותר מ-3 סיבובים על אותה שגיאה.
- קראו את השגיאה — מה בדיוק נכשל? האם אתם מבינים את הבעיה?
- אם כן: שלחו הוראה ספציפית לתיקון → "הבעיה היא X. תעשה Y."
- אם לא: עברו ל-Ask Mode ושאלו "מה הסיבה לשגיאה הזו?" → חזרו ל-Agent עם הבנה
- אם עדיין נתקע: פרקו את המשימה — בקשו רק חלק אחד ממנה
- אם כלום לא עוזר: פתחו שיחה חדשה, Undo שינויים, ונסו גישה אחרת
שימו לב: לא לתת ללולאה לרוץ
מה קורה: מפתח רואה שהסוכן תקוע אבל חושב "אולי עוד סיבוב אחד יפתור את זה." אחרי 20 דקות, הסוכן עדיין תקוע והקוד במצב גרוע מההתחלה.
למה זה מפתה: כי לפעמים הסוכן כן מתקן אחרי 2-3 ניסיונות, אז "אולי גם הפעם."
מה לעשות במקום: כלל האצבע: אם אותה שגיאה חוזרת 3 פעמים — עצרו. הסוכן לא יפתור את זה בניסיון הרביעי. הוא צריך מידע חדש, פרומפט אחר, או פירוק של המשימה.
תרגיל 3: בניית מסמך סימני אזהרה + תוכנית תגובה 15 דקות
מטרה: ליצור מסמך עזר אישי שיעזור לכם לזהות ולטפל בלולאות.
- צרו קובץ חדש בשם
agent-mode-playbook.mdבפרויקט שלכם - הוסיפו סעיף "סימני אזהרה" עם 4 הסימנים מלמעלה + סימנים נוספים שזיהיתם בעצמכם
- הוסיפו סעיף "צעדים לשבירת לולאה" עם הסדר: Stop → הבהרה → פירוק → ניקוי
- הוסיפו סעיף "דוגמאות" עם 2 תרחישים של לולאות שנתקלתם בהן (או שדמיינתם)
- הוסיפו סעיף "פרומפטים לחירום" — 3 פרומפטים שעוזרים לשבור לולאה:
- "עצור. הסבר מה השגיאה ומה ניסית עד עכשיו."
- "התעלם מהגישה הנוכחית. נסה דרך אחרת לגמרי."
- "בוא נפרק: מה השלב הראשון בלבד? תעשה רק אותו."
תוצאה צפויה: מסמך agent-mode-playbook.md מוכן לשימוש — זהו אחד מה-deliverables של הפרק.
פרומפטים שעובדים — איך לדבר עם Agent Mode
Agent Mode חזק ככל שהפרומפט שנותנים לו. הנה 5 כללים שיהפכו את הפרומפטים שלכם מ"בסדר" ל"מעולים":
כלל 1: מהכללי לספציפי
התחילו עם תיאור רחב של המטרה, ואז רשמו דרישות ספציפיות.
דוגמה: לפני ואחרי
חלש: "תוסיף authentication"
חזק: "הוסף מערכת authentication עם JWT. דרישות: (1) route ל-/login שמקבל email + password, (2) middleware שמוודא token, (3) route מוגן ל-/profile, (4) טיפול ב-token expired. השתמש ב-bcrypt להצפנה."
כלל 2: פרקו משימות גדולות
במקום לבקש "תבנה אפליקציה מלאה", חלקו ל-3-5 פרומפטים. הסוכן עובד טוב יותר על חתיכות ממוקדות. למשל, במקום "בנה מערכת e-commerce מלאה" — בקשו: (1) "בנה את מודל המוצר עם TypeScript types", (2) "הוסף CRUD routes למוצרים", (3) "הוסף authentication middleware", (4) "כתוב טסטים ל-API". כל בקשה ברורה, מוגבלת, ומייצרת תוצאה שאפשר לבדוק לפני שממשיכים.
למה זה עובד? שלוש סיבות: (1) כל פרומפט מייצר פחות tool calls, כך שיש פחות סיכוי ללולאות; (2) חלון ההקשר לא מתמלא מהר; (3) אם משהו נשבר, קל לזהות מה נשבר כי עשיתם דבר אחד בכל פעם.
כלל 3: הימנעו מעמימות
אל תכתבו "תשפר את הקוד הזה" — Copilot לא יודע מה "שיפור" אומר בשבילכם. כתבו: "תוסיף error handling לכל ה-async functions ותשנה את ה-naming convention ל-camelCase." ככל שהפרומפט ספציפי יותר, התוצאה מדויקת יותר — וצריכה פחות סיבובי תיקון.
עוד דוגמאות: עמום מול ספציפי
| עמום (הימנעו) | ספציפי (עדיף) |
|---|---|
| "תתקן את הבאגים" | "הטסט test_user_create נכשל כי חסר validation על email ריק. תתקן ותוודא שכל הטסטים עוברים." |
| "תוסיף דוקומנטציה" | "הוסף JSDoc לכל ה-exported functions בקובץ utils.ts. כלול @param, @returns ו-@example." |
| "תעשה refactor" | "חלק את הפונקציה processOrder (150 שורות) ל-3 פונקציות: validateOrder, calculateTotal, saveOrder." |
כלל 4: ספקו דוגמאות
אם יש לכם פורמט ספציפי שאתם רוצים — תנו דוגמה. הסוכן מצטיין ב-pattern matching — אם הוא רואה דוגמה, הוא ימשיך באותו סגנון. "הוסף logging בפורמט: [TIMESTAMP] [LEVEL] message — {context}" ברור הרבה יותר מ-"הוסף logging."
כלל 5: השתמשו בקבצי הוראות
במקום לכתוב את אותן הוראות בכל פרומפט, צרו קובץ .github/copilot-instructions.md בפרויקט שלכם. הסוכן קורא אותו אוטומטית בכל שיחה. זה כמו "חוקת הבית" של הפרויקט — כללים שתקפים תמיד. מה לכלול: tech stack, coding standards, naming conventions, דפוסים שחשוב לשמור, וקבצים שאסור לגעת בהם.
דוגמה: קובץ הוראות בסיסי
# copilot-instructions.md
## Project Context
This is a TypeScript Express API with PostgreSQL.
## Coding Standards
- Use async/await, never callbacks
- All functions must have JSDoc comments
- Use zod for input validation
- Error responses follow RFC 7807 format
## Testing
- Use vitest for unit tests
- Every new function needs a test
- Mock external API calls
תבנית לפרומפט אפקטיבי
הנה תבנית שאפשר להשתמש בה כנקודת פתיחה לכל בקשה מורכבת ב-Agent Mode:
## מטרה
[תיאור כללי של מה שרוצים להשיג]
## דרישות ספציפיות
1. [דרישה ראשונה]
2. [דרישה שנייה]
3. [דרישה שלישית]
## מגבלות
- אל תשנה את [קובץ/מודול ספציפי]
- השתמש ב-[ספרייה/pattern ספציפי]
## בדיקות
- הרץ [פקודת טסט] ווודא שהכל ירוק
- בדוק ש-[תנאי ספציפי] מתקיים
## דוגמה לפלט רצוי
[דוגמת קוד או תיאור של התוצאה הצפויה]
התבנית הזו מכסה את כל מה שהסוכן צריך: מטרה ברורה, דרישות מפורטות, מגבלות מפורשות, קריטריוני הצלחה, ודוגמה. לא כל פרומפט צריך את כל הסעיפים — למשימה פשוטה מספיקה שורה אחת ברורה. אבל ככל שהמשימה מורכבת יותר, יותר סעיפים יעזרו. אפשר לשמור את התבנית כ-snippet ב-VS Code כך שתהיה זמינה במהירות בכל פעם שפותחים שיחה חדשה עם Agent Mode. מפתחים רבים יוצרים כמה תבניות — אחת לפיצ'רים חדשים, אחת לתיקון באגים, אחת לרפקטורינג.
דוגמה מלאה: פרומפט אפקטיבי
## מטרה
הוסף rate limiting ל-Express API שלנו
## דרישות ספציפיות
1. השתמש ב-express-rate-limit
2. הגבל ל-100 בקשות לדקה לכל IP
3. הוסף response header שמראה כמה בקשות נשארו
4. נתיב /api/health פטור מ-rate limiting
## מגבלות
- אל תשנה את middleware הקיימים ב-app.ts
- הוסף כ-middleware נפרד בקובץ חדש
## בדיקות
- הרץ npm test ווודא שכל הטסטים עוברים
- הוסף טסט שבודק שאחרי 100 בקשות מקבלים 429
## דוגמה לפלט רצוי
{ "error": "Too many requests", "retryAfter": 60 }
עשו עכשיו 3 דקות
קחו פרומפט אחד שכתבתם ל-Agent Mode בעבר (או חשבו על אחד חדש). שפרו אותו לפי 5 הכללים והתבנית. מה השתנה?
לפני: ________________________________________________
אחרי: ________________________________________________
תרגיל 4: בניית תבנית פרומפט אישית 20 דקות
מטרה: ליצור תבנית פרומפט שתשמש אתכם בעבודה יום-יומית.
- צרו קובץ
.github/copilot-instructions.mdבפרויקט שלכם (אם לא קיים) - הוסיפו 3 סעיפים:
- Project Context — מה הפרויקט, איזה tech stack, מה המטרה
- Coding Standards — כללים שאתם רוצים שהסוכן יעקוב אחריהם (naming, error handling, testing)
- Agent Mode Rules — הוראות ספציפיות לסוכן (למשל: "תמיד תריץ טסטים אחרי שינויים", "אל תמחק קבצים בלי לשאול")
- בדקו: שלחו בקשה ב-Agent Mode וראו אם הסוכן מתנהג לפי ההוראות שכתבתם
- שפרו: אם הסוכן לא עקב אחרי כלל מסוים, הבהירו אותו בקובץ ההוראות
- שמרו ו-commit: זהו קובץ שצריך להיות ב-repo שלכם — הוא משפיע על כל מי שעובד עם Copilot בפרויקט
תוצאה צפויה: קובץ copilot-instructions.md מותאם אישית שמשפר את התנהגות הסוכן — זהו אחד מה-deliverables של הפרק.
מעבר ממצב למצב — זרימת עבודה מומלצת
אחרי שהכרתם את כל המצבים, הכלל הכי חשוב הוא: לא חייבים להישאר באותו מצב לאורך כל השיחה. הנה זרימת עבודה שעובדת מצוין:
- התחילו ב-Ask: "איך הכי נכון לממש rate limiting בפרויקט Express?" — הבינו את הגישה.
- עברו ל-Agent + Plan:
/plan הוסף rate limiting לפי מה שהסברת— סקרו את התוכנית. - אשרו ל-Agent: "התוכנית נראית טובה, תתחיל" — תנו לסוכן לעבוד.
- אם צריך תיקון נקודתי: עברו ל-Edit — "שנה את הערך ל-200 בקשות לדקה במקום 100."
המעבר בין מצבים הוא מהיר — פשוט בוחרים מהתפריט הנפתח בראש חלון הצ'אט. אל תתביישו לשלב מצבים — זו בדיוק הדרך שמשתמשים מתקדמים עובדים. שימו לב: כשעוברים מצב באמצע שיחה, ההקשר של השיחה נשמר. כלומר, אם שאלתם ב-Ask "מה הגישה הנכונה ל-authentication?" ואז עברתם ל-Agent ואמרתם "עכשיו תממש את מה שהסברת" — הסוכן זוכר את השיחה הקודמת ומשתמש בה כהקשר. זה חיסכון משמעותי בזמן ובטוקנים, כי לא צריכים לחזור על ההקשר.
הקשר ישראלי: Agent Mode בסטארטאפים
בתעשיית ההייטק הישראלית, הרבה צוותים עובדים בקצב מהיר עם סבבי פיתוח קצרים. Agent Mode מתאים מאוד לתרבות הזו — במיוחד ל-POCs ו-hackathons. אבל בדיוק בגלל הקצב המהיר, חשוב במיוחד להקפיד על רמות אישור מותאמות. ראינו מקרים שבהם מפתחים ישראלים הפעילו YOLO mode ב-hackathon ושכחו לכבות — וזה עבר ל-production. הכלל: YOLO רק בסביבת sandbox מבודדת. תמיד.
טבלת סיכום: מתי להשתמש בכל מצב — גרסה מורחבת
הטבלה הזו מסכמת את כל מה שלמדתם בפרק. שמרו אותה בהישג יד — היא אחד מה-deliverables המרכזיים.
| סוג משימה | מצב מומלץ | למה | דוגמה |
|---|---|---|---|
| שאלה על קוד/API/מושג | Ask | לא צריך לשנות קבצים, רק להבין | "מה ההבדל בין Promise.all ל-Promise.allSettled?" |
| הסבר על קוד קיים | Ask | ניתוח בלי סיכון לשינוי | "מה הפונקציה הזו עושה?" (עם קובץ פתוח) |
| שינוי בודד בקובץ ידוע | Edit | מהיר, מדויק, בלי overhead | "שנה את הפונקציה הזו ל-async" |
| rename/refactor מקומי | Edit | שליטה מלאה על כל שינוי | "שנה שם מ-getData ל-fetchUserData" |
| פיצ'ר חדש מקצה לקצה | Agent | דורש גילוי קבצים, יצירה, הרצה | "בנה מערכת התראות עם WebSocket" |
| תיקון באג מורכב | Agent | דורש חקירה, ריצת טסטים, תיקון | "הטסט הזה נכשל — תמצא את הבאג ותתקן" |
| כתיבת טסטים | Agent | דורש קריאת קוד, יצירת טסט, הרצה | "כתוב unit tests לכל הפונקציות ב-utils.ts" |
| migration/upgrade | Agent + Plan | מורכב, צריך תכנון לפני ביצוע | "העבר את הפרויקט מ-Express 4 ל-Express 5" |
| לא בטוחים | Ask קודם | תמיד עדיף להבין לפני לעשות | "איך הכי נכון לממש caching בפרויקט הזה?" |
המספרים של Agent Mode — סיכום מהיר
| פרמטר | ערך ברירת מחדל | ניתן לשינוי? |
|---|---|---|
| Max Requests לסבב | 25 | כן — github.copilot.chat.agent.maxRequests |
| חלון הקשר (GPT-4o) | 64,000 טוקנים | לא — תלוי במודל |
| Reserved Output | ~30-40% | לא |
| Compaction trigger | 95% קיבולת | לא |
| Timeout (Coding Agent) | 60 דקות | לא |
| מצבים זמינים | Ask, Edit, Agent, Plan | — |
שגרת עבודה — Agent Mode
| תדירות | פעולה |
|---|---|
| יומי | לפני כל אינטראקציה עם Copilot — בדקו: האם המצב הנכון נבחר? (Ask/Edit/Agent) |
| שבועי | סקרו את הגדרות ה-approval levels — האם הן עדיין מתאימות לפרויקטים הנוכחיים? |
| שבועי | תרגלו פרומפט אחד מורכב ב-Agent Mode על משימה אמיתית מהעבודה |
| שבועי | בדקו אם נתקעתם בלולאות השבוע ורשמו מה גרם לזה |
| חודשי | עדכנו את קובץ copilot-instructions.md לפי דפוסי שימוש שצברתם |
| חודשי | בדקו אם יש עדכון ל-Copilot שמשנה את ההתנהגות של Agent Mode |
אם אתם עושים רק דבר אחד מהפרק הזה
הגדירו רמות אישור ב-settings.json שמתאימות לסביבת העבודה שלכם. זה ההבדל בין Agent Mode שעובד בשבילכם לבין Agent Mode שעובד עליכם. פתחו את ה-settings עכשיו, הגדירו auto-approve לכלי קריאה בלבד, ושמרו. ייקח לכם 2 דקות — ויחסוך לכם שעות של אישורים מיותרים ושגיאות מפתיעות.
בדקו את עצמכם — 5 שאלות
- מה ההבדל בין הלולאה האגנטית לבין שיחת צ'אט רגילה? (רמז: חשבו על אוטונומיות, כלים, וחזרה על שלבים)
- למה Edit Mode עדיף על Agent Mode כשאתם רוצים לשנות שורה אחת בקובץ ספציפי? (רמז: חשבו על overhead — כמה כלים הסוכן מפעיל על שינוי קטן)
- מה הסיכון המרכזי בהפעלת YOLO mode? (רמז: חשבו מה קורה עם פקודות כמו
rm -rfאוgit push --forceשרצות ללא אישור) - איך חלון ההקשר (Context Window) משפיע על איכות התשובות של Agent Mode? (רמז: חשבו מה קורה כשהחלון מתמלא — compaction, שכחה, אובדן הקשר)
- למה חשוב לפרק משימה מורכבת לכמה פרומפטים קטנים? (רמז: חשבו על מניעת לולאות אינסופיות, ניהול הקשר, ודיוק התוצאה)
עברתם 4 מתוך 5? מעולה — אתם מוכנים לפרק הבא.
סיכום הפרק
בפרק הזה הבנתם את הליבה של GitHub Copilot — הלולאה האגנטית שמתכננת, מפעילה כלים, בודקת תוצאות ומתקנת בלולאה סגורה. זה לא עוד כלי שמציע השלמות קוד — זה סוכן אוטונומי שמנהל תהליך עבודה שלם.
התובנה המרכזית: Agent Mode הוא לא "צ'אט חכם" אלא מנגנון אוטונומי שדורש הבנה ושליטה — דרך בחירת המצב הנכון (Ask כשלא בטוחים, Edit כשיודעים בדיוק מה לשנות, Agent כשצריכים implementation מקצה לקצה), הגדרת רמות אישור שמתאימות לסביבה (manual ל-production, auto-approve לפיתוח, YOLO רק ל-sandbox), וזיהוי מתי הסוכן צריך עזרה (3 ניסיונות על אותה שגיאה = עצרו).
המושג שמחבר הכל: ככל שנותנים לסוכן יותר חופש, צריכים יותר הבנה של מה שהוא עושה. בפרק הבא נעבור לארגז הכלים המלא — כל כלי ש-Agent Mode יכול להפעיל, ואיך לכבות ולהדליק כלים לפי המשימה.
צ'קליסט — סמנו מה עשיתם
- ☐ הפעלתי את Agent Mode ב-VS Code וראיתי אותו עובד על משימה
- ☐ מיפיתי את 6 שלבי הלולאה האגנטית (קלט → תכנון → כלי → ביצוע → בדיקה → תיקון)
- ☐ ניסיתי את אותה משימה ב-Ask, Edit ו-Agent ותיעדתי את ההבדלים
- ☐ בניתי טבלת החלטה: מתי לבחור כל מצב
- ☐ הפעלתי Plan Mode עם
/planוסקרתי תוכנית ביצוע - ☐ הגדרתי רמות אישור מותאמות ב-
settings.json - ☐ אני מבין/ה את ההבדל בין manual, auto-approve ו-YOLO
- ☐ יצרתי מסמך סימני אזהרה ותוכנית תגובה ללולאות אינסופיות
- ☐ זיהיתי (או יצרתי בכוונה) לולאה אינסופית ושברתי אותה
- ☐ כתבתי פרומפט אפקטיבי לפי 5 הכללים ובדקתי את התוצאה
- ☐ בניתי קובץ
copilot-instructions.mdמותאם אישית - ☐ יודע/ת מה חלון ההקשר ואיך לנהל אותו כדי לקבל תשובות טובות