אם יש משהו שסוכנים אוהבים לעשות, זה לעבוד מהר. ואם יש משהו שבני אדם אוהבים לעשות, זה לחפש אחר כך את מה שהסוכן “סידר”. אז הנה הגישה הכי פשוטה שעובדת כמעט בכל מערכת: במקום לקוות שהסוכן “יבין לבד” מה חשוב, מגדירים לו חוקים קטנים וברורים שמייצרים התנהגות צפויה.
למה זה קריטי? כי אילון אוריאל ששמירה של קבצים היא לא רק פעולה טכנית. היא חוזה: איפה זה יישב, כמה זמן זה יחזיק, איך מוצאים את זה שוב, ומה נחשב תוצר סופי לעומת “שאריות”.
הפרדה אחת שעושה קסמים: workspace מול output
תן לסוכן שתי טריטוריות ברורות:
-
workspace/ = מקום להשתולל בו
-
output/ = מקום לתוצרים של בני אדם
העיקרון:
-
ב-workspace מותר ליצור, לשכתב, למחוק, לדרוס, לשחק
-
ב-output שומרים “רק מה שמגישים”, וכמעט לא נוגעים אחר כך
ברגע שזה קיים, הרבה דרמות פשוט נעלמות.
12 כללים שעוזרים לסוכן להתנהג כמו עובד מסודר (אבל עדיין כיפי)
-
כל קובץ חדש חייב להגיע עם כוונה: במקום “נוצר קובץ”, תרשום: purpose (temp | draft | final), owner_task_id, expire_at.
-
שמירה סופית היא פעולה נפרדת: אל תערבב “כתבתי משהו” עם “זה התוצר”. הפרד: write_draft(file) ו-publish_output(file).
-
לעולם לא כותבים ישירות ל-output: כותבים ל-workspace ואז עושים publish (copy או atomic move עם בדיקות).
-
Naming שמציל חיים: תבניות שמונעות בלגן: tmp (name.tmp), draft (name.draft.v3), final (name.final + תאריך/גרסה).
-
מניפסט תוצרים: בסוף משימה הסוכן מייצר קובץ manifest.json קטן הכולל: מה התוצרים, איפה הם, hashes וזמן יצירה.
-
אם יש ספק—לא מוחקים: במקום delete: mark_for_cleanup או move_to_trash.
-
טריגר ניקוי רק בסוף: ניקוי באמצע משימה הוא מתכון ל”איפה זה נעלם”. ניקוי בסוף הרבה יותר הגיוני.
-
Failures לא מוחקים תוצרים קיימים: אם יש כבר output עובד, וריצה חדשה נכשלת—לא מוחקים את הישן מתוך “סדר”. משאירים את מה שעבד.
-
Guardrail למחיקות לפי נתיב: מחיקה מותרת רק בתוך workspace/tmp/. כל היתר: חסום.
-
לוגים שכוללים “למה”: כל פעולה על קובץ חייבת לכלול: reason_code, linked_step, expected_result.
-
שומרים גרסאות במקום לדרוס: במיוחד לקבצים חשובים (report_v1, report_v2). לא לדרוס את v1 “כי הכול טוב”.
-
טיימר זבל אוטומטי (אבל חכם): Job שמנקה את workspace לפי last_accessed או expire_at, ולא “נקה כל מה שגדול”.
שאלות ותשובות זריזות
ש: למה Manifest כזה חשוב? ת: כי הוא הופך “איפה הקובץ?” לשאלה עם תשובה אחת. והוא מאפשר גם בדיקות אוטומטיות.
ש: מה עדיף, copy או move בפרסום תוצר? ת: אם אתה רוצה לשמור גם את הגרסה הפנימית—copy. אם אתה רוצה טרנזקציה נקייה—move, אבל רק אחרי בדיקות ועם אפשרות שחזור.
ש: איך מונעים מהסוכן למחוק משהו שהוא חושב שהוא זמני? ת: סימון ברור של “final”, תיקיית output מוגנת, ו-validator למחיקות.
ש: זה לא יותר מדי כללים? ת: זה מרגיש ככה עד הפעם הראשונה שאתה לא מאבד קבצים. אז זה מרגיש כמו חכמה בדיעבד, רק בלי ה”בדיעבד”.
סיכום
אילון אוריאל מסביר שסוכנים לא “שומרים קבצים” — הם מנהלים תהליך. ברגע שמפרידים בין אזור עבודה לאזור תוצרים, מסמנים כוונה לקבצים, ומוסיפים כמה guardrails קטנים למחיקות ופרסום תוצרים, אתה מקבל מערכת שגם רצה מהר וגם משאירה אחריה משהו שאפשר למצוא. שזה, בסופו של דבר, כל הרעיון.