תהליכי סוכנים

Git worktrees לסוכני תכנות מבוססי AI: תהליך עבודה בטוח.

FluxGit ·

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

התשובה הקצרה

הקצו לכל ניסיון worktree מקושר, ענף ומשימה מצומצמת. התחילו את שני הניסיונות מאותו commit בסיס מתועד, הפעילו את Codex, Claude Code, OpenCode, Cursor או כלי אחר שמסוגל לעבוד בתיקייה שנבחרה בתוך התיקייה שהוקצתה לו, ושמרו את ה-checkout הראשי לסקירה. דרשו תוצאות שנשמרו ב-commit ושאפשר לסקור לפני ההשוואה.

בחרו בתוצאה שעומדת בקריטריונים, עצרו תהליכים שכותבים, ודאו שה-checkout המיועד נקי ומזגו דרך תהליך הסקירה והבדיקות הרגיל. worktrees מפחיתים התנגשויות קבצים, אך אינם ארגזי חול לאבטחה: אובייקטים, רוב ה-refs וה-remotes משותפים, והגישה שמארח ה-shell העניק עדיין זמינה.

1. צרו worktree נקי לכל ניסיון

התחילו ב-checkout הראשי. ודאו שהוא נקי, עדכנו או בדקו את הבסיס המיועד, תעדו את ה-commit פעם אחת וצרו ממנו את שני הענפים.

git status --short
git branch --show-current
BASE_COMMIT=$(git rev-parse HEAD)
git worktree add -b agent/task-a ../agent-task-a "$BASE_COMMIT"
git worktree add -b agent/task-b ../agent-task-b "$BASE_COMMIT"
git worktree list

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

תיקייה נפרדת אינה מגבילה את סמכות ה-shell. צמצמו אישורים והרשאות מארח למה שנחוץ למשימה, והגדירו גבול אישור נפרד לכתיבות Git שדורשות שליטה אנושית.

2. השתמשו באותם קריטריוני קבלה

תנו לשני הניסיונות אותה משימה, בדיקות, מגבלות ובסיס מתועד. בקשו מכל סוכן להימנע משינויים לא קשורים ולשמור את התוצאה ב-commit בענף שלו. עץ עבודה שלא נשמר קשה יותר להשוואה וקל יותר לאבד בניקוי.

עצרו את הסוכנים לפני הסקירה. ה-worktree מפריד קבצים שנשלפו, אך תהליך בעל הרשאות רחבות עדיין יכול לשנות refs משותפים, לגשת ל-remotes או לקבצים מחוץ לתיקיית המשימה.

3. השוו את שני הניסיונות מאותו בסיס

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

git -C ../agent-task-a status --short
git -C ../agent-task-b status --short
git log --oneline "$BASE_COMMIT"..agent/task-a
git log --oneline "$BASE_COMMIT"..agent/task-b
git diff "$BASE_COMMIT" agent/task-a
git diff "$BASE_COMMIT" agent/task-b

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

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

4. מזגו את התוצאה שנבחרה דרך השער הרגיל

חזרו ל-checkout הראשי הנקי, בחרו ענף אחד שנסקר והשתמשו בתהליך המיזוג הרגיל שאינו fast-forward.

CHOSEN_BRANCH=agent/task-a
git status --short
git diff "$BASE_COMMIT" "$CHOSEN_BRANCH"
git merge --no-ff "$CHOSEN_BRANCH"

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

הריצו את בדיקות המאגר אחרי המיזוג ולפני כל push. worktrees אינם מחליפים סקירת קוד, CI, ענפים מוגנים או אישור אנושי, ואינם מונעים push מ-shell שקיבל הרשאה נפרדת.

5. נקו ללא כפייה

בדקו את שתי התיקיות ושמרו כל שינוי רצוי לפני הסרת checkout מקושר.

git -C ../agent-task-a status --short
git -C ../agent-task-b status --short
git worktree remove ../agent-task-a
git worktree remove ../agent-task-b
git worktree list
git worktree prune --dry-run

הסירו worktree ללא force רק כשהוא נקי או כשהעבודה שנותרה נזנחה במכוון. שמרו את ענפי המשימה עד סיום הסקירה; מחיקת תיקייה ומחיקת ענף הן החלטות נפרדות.

הציגו את ה-prune במצב dry run לפני שינוי רשומות מנהליות. אם Git מסרב להסרה רגילה, חקרו שינויים או נעילות במקום לעקוף את ההגנה.

מה worktrees מפרידים ומה עדיין משותף

נפרד בכל worktreeמשותף או עדיין נגיש
קבצים שנשלפו, שינויי עבודה ותוצרי build מקומייםאובייקטי המאגר ורוב ה-refs
הענף הנוכחי ומצב HEAD/index לכל worktreeremotes, אישורים ותצורה משותפת
תיקיית המשימה שבה הכלי עובדכל מה ש-shell בעל הרשאות רחבות יכול להגיע אליו מחוץ לה

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

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

מקורות Git רשמיים

FluxGit worktrees

השוו ניסיונות מקבילים בלי לוותר על שליטת הסקירה.

FluxGit יכול להציג worktrees מקושרים ואת מצב המאגר, להשוות שינויים ולהשאיר הצעות כתיבה ל-Git של סוכנים נתמכים מאחורי אישור במחשב. shell נפרד שומר את הגישה שהמארח העניק לו.

משאבים קשורים