הרשאות ובטיחות — סיכום הנושא

איסוף החוטים: מה כבר ראינו

לאורך הנושא נתקלנו כבר בכמה מנגנוני בטיחות בנפרד: הגבלות מספר סיבובים ותקציבים שראינו בפרק ה-Agents (כדי שלולאה לא תיתקע), ואישורי הרשאה, sandboxing ולוגים שראינו בפרק ה-Harness. הפרק הזה לא מציג מנגנון חדש — הוא מסדר את כל אלה לכדי תמונה אחת קוהרנטית של מה זה בכלל אומר "לשמור על שליטה" במערכת אגנטית.

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

Human-in-the-Loop כספקטרום, לא בינארי

מעורבות אנושית בלולאה האגנטית היא לא "יש" או "אין" — היא סקאלה שלמה: בקצה אחד autonomy מלאה (agent פועל בלי לעצור לאישור בכלל), בקצה השני אישור על כל פעולה בודדת (בטוח מאוד, אך איטי ומעייף למשתמש), ובאמצע אפשרויות מגוונות — אישור רק על פעולות הרסניות/בלתי הפיכות, או אישור-אוטומטי מראש לקטגוריית פעולות מוגדרת ומהימנה (כפי שראינו בדוגמת ה-approval gate בפרק ה-Harness).

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

תרשים המציג פס אופקי בגרדיאנט מכחול (משמאל) לכתום (מימין), עם שלושה סמנים לאורכו: משמאל עיגול (אוטונומיה מלאה), באמצע משושה עם סימן '!' (אישור סלקטיבי לפעולות רגישות בלבד), מימין דמות אדם (אישור על כל פעולה) — ממחיש שמעורבות אנושית היא סקאלה רציפה ולא בחירה בינארית.
Human-in-the-Loop הוא ספקטרום מאוטונומיה מלאה ועד אישור על כל פעולה, לא בחירה של הכל-או-כלום

עקרון ההרשאה המינימלית (Least Privilege)

עיקרון ותיק מעולם אבטחת המידע חל כאן ישירות: יש לתת ל-agent (או ל-subagent/worker ספציפי) רק את ההרשאות שהוא באמת זקוק להן למשימה הנוכחית — לא גישה רחבה "ליתר ביטחון". agent שאמור רק לקרוא קבצים ולנתח אותם לא צריך הרשאת כתיבה או גישת רשת, גם אם טכנית קל יותר לתת לו הכול מראש.

העיקרון הזה מקבל משמעות מיוחדת בהקשר של subagents ורב-סוכנים (פרקים 3 ו-9): קל ומפתה לתת לכל worker את אותה גישה רחבה שיש להורה, אבל scoping הרשאות בנפרד לכל worker לפי תפקידו הספציפי מצמצם משמעותית את הנזק האפשרי אם משהו משתבש באחד מהם — ומונע מ-worker אחד לגעת בטעות במשאב ששייך לתחום האחריות של worker אחר.

JSON
{
  "agent": "code-review-worker",
  "scope": {
    "read": ["src/api/**"],
    "write": [],
    "network": false
  }
}
תרשים המחולק לשני חלקים: משמאל דמות עובד קטנה בתוך עיגול כתום גדול מאוד (טווח הרשאות רחב ומיותר). מימין אותה דמות עובד בתוך עיגול כחול קטן ומדויק (טווח הרשאות מצומצם ומותאם בדיוק לצורך).
עקרון ההרשאה המינימלית: לתת ל-worker רק את טווח הגישה המצומצם שהוא באמת זקוק לו, לא גישה רחבה מיותרת

מהמודל הגולמי למערכת אגנטית שלמה — סיכום הנושא

התחלנו בפרק הראשון ממקום פשוט: LLM גולמי שיודע רק לקבל טקסט ולהחזיר טקסט המשך, בלי שום יכולת לפעול בעולם. משם בנינו, פרק אחר פרק, את כל השכבות שהופכות אותו למערכת שימושית באמת: Agent שעוטף אותו בלולאת החלטה-פעולה-תצפית; Subagent שמאפשר לפרק משימה גדולה ולשמור על קונטקסט נקי; Harness שמתווך בין הצעות המודל למציאות ואוכף גבולות; Skills ו-Tools (כולל MCP) שמספקים את היכולות בפועל; ניהול קונטקסט וזיכרון שמאפשרים לעבוד על משימות ארוכות ולזכור בין sessions; ותזמור רב-סוכנים שמאפשר לכמה agents לעבוד יחד על משימה משותפת.

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