דלגו לתוכן

מצבים

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

ישנם בדיוק ארבעה: chat, review, plan, orchestrate. ה-enum עצמו אינו נושא מדיניות. כל מה שמצב מבטיח מוצהר פעם אחת, בפרופיל יכולות, שכל שכבת אכיפה משליכה ממנו:

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

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

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

שימו לב לתווית: בתיבת הכתיבה המצב מוצג כ**“סוכן”**, ולא “צ’אט”.

תכנון — לקריאה בלבד, תוצר אחד

קטע בשם “תכנון — לקריאה בלבד, תוצר אחד”

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

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

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

קיימת דרך יציאה שנייה ונפרדת: exit_plan_mode. זהו שער אישור קשיח, לא פועל תוצר — סוכן שקורא לו במקום ל-submit_plan לא סיפק דבר. הקריאה הראשונה פותחת אישור plan_exit עמיד ומחזירה pending, והמרחב נשאר לקריאה בלבד; קריאות חוזרות נשארות pending במקום לפתוח שער שני. רק לאחר שהאישור ניתן, קריאה שלאחריו מעבירה את המרחב למצב צ’אט. דחייה מאפשרת לסוכן לפתוח בקשה חדשה לתוכנית מתוקנת.

כדי לצאת בעצמכם ממצב תכנון, החליפו את התפריט הנפתח של תיבת הכתיבה (או Shift+Tab). ‏exit_plan_mode מוכרע בכלי ה-MCP ‏decide_approval. שורות “אישור סוכן” בדואר הנכנס הן דבר אחר: הנחיות אישור לכל תור, מסוכן שרץ.

סקירה — לקריאה בלבד, בלי חוזה

קטע בשם “סקירה — לקריאה בלבד, בלי חוזה”

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

התוצר של הסוכן הוא ממצאים מובנים — צמתי סקירה — וכשסקירה מסתיימת, גם הכרעה. צומת נושא סוג (bug, suggestion, recommendation, question או ticket), עדיפות מ-P0 (חוסם שחרור) עד P3 (נחמד שיהיה), ביטחון בהערכה עצמית, עוגן אופציונלי (קובץ בתוספת טווח שורות; להערות ברמת המאגר אין עוגן) וסטטוס מחזור חיים שנע מ-open ל-consensusReady ברגע שעמית — ולעולם לא המחבר — מאשר אותו. ממצא שהעדיפות או הביטחון שלו חסרים או מחוץ לטווח נזרק בגבול הקריאה במקום לזהם את ההכרעה.

ההכרעה היא Ship, Hold או Block, ותוצאות הצירים שמקופלות לתוכה רק מחמירות אותה יותר: ציר משעור שנכשל כופה block וציר משעור שלא הצליח לרוץ כופה לפחות hold. היעדר ראיה לעולם לא הופך שער לירוק.

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

תזמור — לקריאה בלבד, מציע צוות

קטע בשם “תזמור — לקריאה בלבד, מציע צוות”

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

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

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

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

התפריט הנפתח של המצב בתיבת הכתיבה מציע שלוש אפשרויות: סוכן (צ’אט), תכנון ותזמור. review אינו ניתן לבחירה על ידי המשתמש — הוא נקבע על ידי המערכת כשנוצר מרחב סקירת PR ועל ידי שלבי פייפליין.

צומת פייפליין שפותח מרחב יכול לנעוץ את המצב של אותו חדר באמצעות מפתח extras['mode'] (chat, review או plan). המפתח הוא התאמה מדויקת: כל איות אחר — כולל orchestrate — מתעלמים ממנו בשקט, והחדר מקבל את ברירת המחדל של הגוף (review בגוף יצירת המרחב). שלב סוכן מצטרף לחדר שהוא לא יצר ואינו משנה את הרשאותיו.

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

היכן ההבטחה מחזיקה באמת

קטע בשם “היכן ההבטחה מחזיקה באמת”

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

בתעבורה של Claude Code, מצב שאינו צ’אט מועבר בתור --permission-mode plan. Claude מכבד זאת לפי מוסכמה; כלי הקריאה, הכתיבה והעריכה של עצמו רצים בלי להיראות, ופקודות shell נבדקות רק בידי hook שקורא את שורת הפקודה. בתעבורה הזו המצב הוא הנחיה, לא גבול של Control Center — ראו מודל הסוכן.

רשימות ההיתר מגבילות כלים מדרגת הכתיבה ומעלה. דרגת הקריאה של מנגנון ההרצה המובנה עדיין מגיעה לכלים שאף רשימה אינה מציינת; ב-Claude Code, כלי שרשימת ההיתר משמיטה נדחה, בין אם לשרת יש אותו ובין אם לא.