גבולות במקום הוראות: כיצד לשמור על שליטה בסוכני AI אוטונומיים
מדוע לא ניתן לבנות שליטה בסוכני AI על הוראות בפרומפט — וכיצד לבנות אותה על גבולות טכניים. חמישה אירועים בסשן אחד.
לא ניתן היה לטעון את התמונה הזו.ככל שסוכני ה-AI נעשים אוטונומיים יותר, כך אנו מנסים לעתים קרובות יותר לשלוט בהם בדרך הרגילה — כותבים בפרומפט כללים: "אל תיגע בזה", "עבוד רק שם", "לעולם אל תעשה את זה". במהלך ניסוי עם שלושה סוכנים במקביל אספתי במשך יומיים אוסף חי של מקרים שבהם השיטה הזו נשברת — ושבה עובדת שיטה אחרת. התזה של המאמר פשוטה: הוראה היא בקשה שהסוכן מבצע בהסתברות כלשהי; גבול הוא תכונה של המערכת שאינה תלויה בציות. כשהסוכן היה יחיד ועבד תחת השגחה, ההבדל נראה סגנוני. כשהסוכנים התרבו, הוא התגלה כארכיטקטוני.
חמישה אירועים בסשן אחד
כל המקרים שלהלן התרחשו בסשן עבודה אחד בבלוג הזה — הם מתועדים, וכל אחד מהם ממחיש דרך אחרת שבה שליטה באמצעות טקסט מכזיבה.
לא הייתה הוראה — אירעה תקלה. הסוכן, בהתכוננות למשימתו, ביצע git stash בספרייה הראשית ולקח אל ה-stash את הקבצים הלא-מקומטים שלי, שלא היו קשורים למשימתו. איש לא "הפר" דבר: פשוט לא היה איסור. זו תכונה יסודית של הוראות — כותבים אותן אחרי תקלות. אי אפשר לכתוב רשימה מלאה של מה שהסוכן אסור לו לעשות.
ההוראה הייתה — והיא לא עבדה. אחרי התקלה הראשונה הוספתי לסוכנים כלל מפורש: "עבוד אך ורק בספריית העבודה שלך". אחד הסוכנים בכל זאת ביצע פקודת git בספרייה הראשית — פשוט פנה אליה בנתיב מוחלט. לא מתוך זדון ולא מתוך טיפשות: המודל הסתברותי, וקיום כלל טקסטואלי הוא גם הוא הסתברות, כפול באורך ההקשר ובמספר ההרצות.
גבול טכני פעל בשקט. באותו ניסוי לא אירעה אף פעם התקלה הצפויה ביותר — "סוכן אחד החליף ענף לכולם". לא מפני שהסוכנים היו זהירים, אלא מפני ש- git worktree פיזית אינו מאפשר לכתוב ענף אחד לשתי עותקי עבודה. ההגנה מובנית בכלי. אין צורך לזכור אותה, אין צורך לציית לה — היא פשוט קיימת.
ההוראה עמדה במקום שבו צריך לעמוד גבול. התגלית הלא נעימה ביותר: את הפרוד של הבלוג הזה שמרה שורה בפרומפט. Push ל-master מפעיל פריסה אוטומטית, ורק הטקסט "שום git push" הפריד בינו לבין כל סוכן. הוא החזיק מעמד — אבל זה מזל, לא שליטה: הגבול האמיתי כאן הוא הרשאות גישה, protected branch, טוקן ללא הרשאת כתיבה. בקשה עמדה במקום מנעול.
גבול מעל הסוכן עצמו. פעמיים במהלך הסשן סביבת ההרצה עצרה לא את סוכני הניסוי אלא את העוזר הראשי שלי: מסווג ההרשאות חסם SSH לשרת הפרוד ומחיקה המונית של עריכות לא-מקומטות — פעולות שבאופן פורמלי נבעו מהמשימה, אך דרשו "כן" אנושי מפורש. שני החסימות היו נכונות. ושתיהן התרחשו מעל "המשמעת" של הסוכן, שבכנות מלאה סבר שהוא פועל לפי התוכנית.
העיקרון אינו חדש — רק הישות חדשה
הנדסה למדה את הלקח הזה הרבה לפני LLM. במערכת הייצור של טויוטה העיקרון נקרא poka-yoke: התקן של התהליך מונע את הטעות, ולא ערנותו של המבצע. חלק שניתן להרכיב רק בצד הנכון אמין יותר משלט "הרכב נכון". בהנדסת פלטפורמות קוראים לזה guardrails, באבטחה — defense in depth. בכל מקום אותו רעיון: אל תסתמך על כך שהמבצע קרא, הבין ולא שכח — עשה כך שהפעולה השגויה תהיה בלתי אפשרית או יקרה.
"הוראה היא בקשה. גבול הוא תכונה של המערכת. שליטה שנשענת על בקשות אינה שליטה אלא מזל עם אפקט מצטבר."
– המסקנה המרכזית של יומיים עבודה עם סוכנים במקביל
עם סוכני AI העיקרון הישן הזה נעשה חד יותר משלוש סיבות. הסוכנים רבים — הסתברות כשל ההוראה מוכפלת בכל הרצה של כל סוכן. הסוכנים מהירים — בין "התחיל לטעות" ל"שבר סופית" חולפות שניות, האדם לא מספיק להתערב. והסוכנים מילוליים אך לא אמינים: הם מבצעים את טקסט הפרומפט בשקידה רבה יותר מכל ג'וניור, ובכל זאת באופן הסתברותי — וקיום הסתברותי של כללים בקנה מידה מבטיח הפרה.
איך נראים גבולות בפועל
השכבות שבניתי אחרי הסשן הזה — ממערכת הקבצים ועד לאימות:
- מערכת הקבצים: לכל סוכן — עותק עבודה משלו (git worktree, ש- Anthropic ממליצה עליו לסשנים מקבילים, וב-Claude Code הוא מובנה), וברמת מערכת ההפעלה — ארגז חול: sandboxing ב-Claude Code מבודד את מערכת הקבצים והרשת בפרימיטיבים סטנדרטיים של מערכת ההפעלה — לפי נתוני Anthropic, זה צמצם את בקשות ההרשאה הפנימיות שלהם ב-84%, וזריקת פרומפט מוצלחת נשארת כלואה בפנים.
- הרשאות כתיבה: prod ו-master מוגנים בזכויות, לא בפרומפט — protected branch, טוקנים ללא הרשאת push, חשבונות נפרדים לסוכנים. בקשות להוסיף לפרומפט אפשריות, אבל כשכבה שנייה.
- Runtime: worktree לא מבודד בסיסי נתונים, פורטים וקונטיינרים — הם משותפים לכל העותקים. סוכנים שמריצים בדיקות ושרתים זקוקים למשאבים חד-פעמיים: בסיס נתונים זמני, פורט משלו, קונטיינר לכל סוכן.
- הרשאות לפעולות: פעולות בלתי הפיכות עוברות דרך אישור או מסווג — כמו auto mode ב-Claude Code, שמעריך כל פעולה במקום לשאול על הכול או לא לשאול על כלום. זהו גבול שזז רק בהחלטה מפורשת של אדם.
- אימות לפי ארטיפקטים: לא לסמוך על הדיווח העצמי של הסוכן, אלא על עקבות בדיסק. הסוכן שלי שנתקע נראה בממשק כעובד; האבחנה נקבעה מהיעדר קבצים חדשים בעותק שלו במשך עשרים דקות. קומיטים לענף משלו — אותו רעיון: תוצאה ששורדת גם כשל וגם את האופטימיות של הסוכן.
ההוראות בסכימה הזו לא נעלמות לשום מקום — הן הופכות לשכבה האחרונה, לא הראשונה. «עבוד בספרייה שלך» בפרומפט עדיין מועיל: הוא מפחית את תדירות הניסיונות. אבל בין הניסיון לתקלה צריך לעמוד גבול, לא תקווה.
הסתייגויות כנות
הגבול אינו מוחלט: ארגזי חול עוקפים, מסווגים טועים, וניתוחי עקיפות שפורסמו מראים זאת באופן קבוע. לכן בונים גבולות בשכבות — כמו כל דבר באבטחה. וגבול עולה יותר מהוראה בהתחלה: להגדיר worktree, הרשאות וארגז חול — זה שעות, לכתוב שורה בפרומפט — שניות. האסימטריה בכיוון אחר: הגבול משולם פעם אחת, ההוראה — בהסתברות כשל בכל ריצה. אצלי הגדרת הבידוד החזירה את ההשקעה כבר בהפעלה מחדש הראשונה של הניסוי, שעברה בלי שום קונפליקט.
מסקנה
שאלת הסדרה — איך לשלב סוכני AI בעבודה אמיתית בלי לאבד שליטה. תשובת המאמר הזה: שליטה היא לא מה שכתוב לסוכן, אלא מה שמסודר סביבו. לפני שמוסיפים לפרומפט עוד «לעולם אל תעשה X», כדאי לשאול את עצמך: האם אפשר להפוך את X לבלתי אפשרי טכנית? אם כן — זה המקום הנכון למאמץ. הפרומפט שיבקש; המערכת צריכה לאסור.
מקורות ומצפנים
- Making Claude Code more secure and autonomous with sandboxing (Anthropic Engineering) — בידוד מערכת הקבצים והרשת ברמת מערכת ההפעלה; המקור לנתון 84%.
- How we contain Claude across products (Anthropic Engineering, 2026) — איך בנויים גבולות ההרצה במוצרי סוכנים בכללם.
- How we built Claude Code auto mode (Anthropic Engineering) — מסווג ההרשאות כגבול בין «לשאול על הכול» ל«לא לשאול על כלום».
- Poka-Yoke (Lean Enterprise Institute) — העיקרון הקלאסי של מניעת טעויות באמצעות תכנון התהליך.
- git-worktree ו- git-stash — התיעוד הרשמי של Git: המכניקה של עותקי עבודה והסטאש המשותף.
- Claude Code: Best practices for agentic coding (Anthropic Engineering) — ההמלצה להשתמש ב-worktree לסשנים מקבילים.
- Как честно сравнить LLM на своём коде: эксперимент с тремя моделями Claude — המאמר הקודם בסדרה: ניסוי שבו נאספו התקריות המתוארות.
