מדריך מעשי לכתיבת קוד עם AI Agents שרצים במקביל – איך זה עובד?

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

הבהרה: אני לא משפיען AI, אני לא ״מסביר על כלי AI שישנו את חייכם״ ואני גם לא אוהב להשתמש במונח AI אלא במונח המקצועי יותר: LLM. מודלי שפה גדולים המייצרים טקסט (במקרה שלנו קוד) לפי הסתברות סטטיסטית. אני כותב מהזווית שלי כארכיטקט שכותב קוד בחברה גדולה ובמוצרי פרודקשן. כלומר מוצרים שעובדים וקוד שעובד ולא דמואים נוצצים וססמאות מפוצצות.

רוב המתכנתים המוחץ כבר עובדים עם LLMים לייצור קוד אבל יש הבדל בין סתם להשתמש בצ׳אט או בהשלמה האוטומטית של קופיילוט לבין שימוש יעיל יותר. בפוסט הקודם על מדריך מעשי לכתיבת קוד עם AI Agents אני הסברתי איך לוקחים את ה-LLMים לשלב הבא מהזווית האישית שלי כמפתח אנטרפרייז והסברתי גם על קבצי הוראות שמבחינתי הם עשו מהפך וגם על אינטגרציות עם כלי CLI שגם פוררו את הקסם הזה של ״LLM מפעיל דברים״. דיברנו גם על ״סוכנים״ שהם בגדול איטרציות. אם לא עברתם על הפוסט הקוד, כדאי לקרוא אותו.

השלב הבא – Sandbox

בגדול, מייד אחרי שהשתלטתי על עניין הסוכנים, גיליתי שאין דבר יותר מתוק מלומר לו ״שמע נא, הו הוד רוממותך ה-LLM, אני צריך להוסיף לכל הלוגים את התחילית LOG, אנא צור טיקט בג׳ירה, צור PR על זה עם כל הקונבנציות ואחרי שאתה עושה את השינוי ויוצר את ה-PR, העבר את הטיקט ל-in progress״. ולצפות בעניין רב בקורסור או גיטהאב קופיילוט עושים את זה וכמובן לבחון היטב את התוצר ולתת פידבק מיידי.

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

  1. אייג׳נט שיוסיף LOG לתחילת כל הלוגים של המוצר.
  2. אייג׳נט שבינתים ישדרג גרסאות של depndencies.
  3. אייג׳נט שבינתיים ישדרג את הסביבה של הלמבדה ל Node.js.

והכל ירוץ וכל אייג׳נט ידווח לי בתורו על מה שהוא עשה ויקבל הנחיות או פידבק.

הקסם שמאפשר את זה: git worktree

טוב, זה נשמע נהדר, אבל… האם זה אפשרי? הכי איך אני אמנע מה-PRים להתערבב? בגדול גיט עובדת על בראנץ׳ אחד כל פעם. התשובה היא כן! באמצעות פיצ׳ר של גיט שנקרא worktrees שמאפשר לנו (או ל LLM הטיפש) לעבוד על כמה גרסאות של ריפוזיטורי אחד במקביל!

אז מה זה הפיצ׳ר הזה? ביוני 2025 גיט הוציאו את גרסה 2.5 שמאפשרת worktrees. תבדקו את הגיט שלכם באמצעות git –version. הוא מעל 2.5? פצצה. מתחת? זה הזמן לשדרג. הפיצ׳ר די פשוט להבנה. בגדול, הוא יוצר אוטומטית בראנץ׳ אבל במיקום אחר.

צילום מסך של מסוף פקודה (טרמינל) המציג שלוש פקודות Git רצופות ותוצאותיהן. הפקודה הראשונה, git worktree add -b my-new-branch ../../my-worktree-directory, יוצרת עץ עבודה חדש ומציגה הודעה "No possible source branch, inferring '--orphan'". הפקודה השנייה, git worktree list, מציגה רשימה של שני עצי עבודה: העץ הראשי בנתיב worktree-example על הענף main, ועץ העבודה החדש בנתיב my-worktree-directory על הענף my-new-branch. הפקודה השלישית, cd /Users/barzik/local/my-worktree-directory, מנווטת לספריית עץ העבודה החדש, ושורת הפקודה משתנה כדי להראות את הנתיב הנוכחי ואת הענף my-new-branch.

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

יש לי ריפו במקום מסוים. בספרייה בשם worktree-example הנמצאת בנתיב

 ~/l/b/worktree-example, 

אני נמצא על הענף (branch) הראשי (main). עד פה הכל מעולה. נניח שאני רוצה לעבור לענף אחר. אבל אבל אבל אני רוצה שזה יהיה במקום אחר, למה? כי יש לי כבר אייג׳נט שעלול לעבוד על ה-main או אפילו רק בוחן אותו. לא רוצה לערבב שמחה בשמחה. אני אשתמש בפקודה הזו:

git worktree add -b my-new-branch ../../my-worktree-directory

הפקודה פה אומרת משהו פשוט: צור לי my-new-branch אבל… לא! איפה שהריפו שלי נמצא אלא במקום אחר לגמרי. איפה? ב-../../my-worktree-directory. וזה בדיוק מה שהפקודה עושה!

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

מאחורי הקלעים אין ממש clone, זה עובד קצת אחרת ומהיר מאד.בניגוד ל-clone רגיל, במקרה של ה worktrees אין הכפלה של כל ה-object database, אלא רק יוצרים קישור ל-object database הקיים. אם זה נשמע לכם ג׳יבריש אז אחלה, תסתפקו בזה שזה מהיר ושונה מסתם יצירה של גיט קלון והעתקה של כל הקבצים.

בגלל זה שזה שונהאם אני רוצה למחוק worktree, אני חייב להשתמש בפקודה git worktree remove my-new-branch וכמובן במקום my-new-branch לרשום את שם הבראנץ׳ שלכם.

אבל האמת היא שאנחנו לא צריכים לנהל את זה! מי שמנהל את זה זה קורסור שבגרסה החדשה שלו עושה את זה אוטומטית כאשר אנחנו יכולים להורות לו להריץ LLM Agent ב-worktree. כך אפשר להריץ סוכנים במקביל, כל אחד עובד על ה Worktree שלו, על הבראנץ׳ שלו, בנחת.

איך מריצים כמה סוכנים במקביל?

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

מבחינת UI זה קל. בקורסור לוחצים על האייקון ה-local כדי לבחור שיעבוד ב-Worktree והוא כבר יצור את הבראנץ׳ ואת ה-worktree לבדו.

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

פוסטים נוספים שכדאי לקרוא

יסודות בתכנות

backward compatibility ו forward compatibility

שלושה עקרונות חשובים בפיתוח תוכנה שכדאי להכיר במיוחד בעידן הבינה המלאכותית והקוד המהיר.

יסודות בתכנות

הסבר קל ופשוט על Reinforcement Learning

הסבר פשוט למתכנתים שמסביר על איך למידה מחוזקת עובדת – הרבה יותר פשוט ממה שחשבתם ואפשר גם בג׳אווהסקריפט!

יסודות בתכנות

Decoupling ו-Coupling בהנדסת תוכנה

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

בינה מלאכותית

יצירת mcp client

יצירת mcp client משלנו כדי שיתחבר לשרתי mcp שונים ויחבר את ה-LLM להכל באופן סטנדרטי.

רשת האינטרנט

איך בונים custom GPT משלכם?

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

גלילה לראש העמוד