נותנים לסוכן תוכנית עבודה, סוגרים את המחשב והולכים לישון. בבוקר מחכה אחד משני דברים. האחד הוא עבודה גמורה שאפשר לבדוק. השני הוא סוכן שבילה את הלילה בתיקון אותו קובץ שוב ושוב, הודיע שהוא "כמעט מסיים", והשאיר חשבון שימוש שגדל בהתאם. מה שקובע איזה בוקר תקבל נקבע לפני שהלכת לישון.
🚀 קחו את העסק שלכם לשלב הבא עם
השאירו פרטים וקבלו ייעוץ חינם עבור שירותי !
כדי שסוכן ירוץ שעות בלי שמישהו יושב לידו, צריך חמישה דברים. מגדירים מראש מתי הוא נחשב גמור, שמים לו תקרת שימוש, מצמצמים את ההרשאות שלו, מחברים התראות, ומחייבים אישור של אדם לכל פעולה רגישה. המגבלה של סוכן שרץ בלילה היא לא החומרה. היא סיום שאפשר למדוד ותקרות שימוש. מחשב חזק יותר לא יציל ריצה שאין לה סוף, הוא רק יגיע אליה מהר יותר.
| הבקרה | השאלה שהיא עונה עליה | הסימן שהיא חסרה |
|---|---|---|
| תנאי סיום | מתי הסוכן עוצר | בבוקר הוא עדיין "כמעט סיים" |
| תקרת שימוש | כמה מותר לו להוציא | חשבון שלא תכננת |
| הרשאות | במה מותר לו לגעת | שינוי שלא ביקשת, במקום שלא חשבת עליו |
| התראות | מי יודע שמשהו קרה | גילית את הבעיה רק כשפתחת את המחשב |
| אישור של אדם | מי מחליט על פעולה שאין ממנה דרך חזרה | פעולה בלתי הפיכה שאף אחד לא אישר |
מה צריך להיות מוכן לפני שמריצים תוכנית בלילה
לפני ריצה ארוכה צריכה להיות תוכנית כתובה בקובץ, לא בשיחה. סוכן שרץ שעות עובר כמה סשנים, כלומר כמה ריצות נפרדות מההוראה ועד שהוא נעצר. גם ההקשר, מה שהמודל "זוכר" בתוך סשן אחד, מתמלא ומתאפס בדרך. מה שכתוב רק בצ'אט נעלם עם ההקשר. מה שכתוב בקובץ נשאר.
ב-Claude Code, שבו אני עובד ביום-יום, התוכנית יכולה לשבת בשני מקומות. הראשון הוא CLAUDE.md, קובץ ההוראות שהסוכן קורא בתחילת כל סשן, ובו הכללים שלא משתנים. השני הוא קובץ תוכנית עם סעיפים, שהסוכן מסמן כשהוא מסיים אותם. כשסשן חדש מתחיל, הסוכן קורא את הקובץ וממשיך מאיפה שהקודם עצר, בלי לנחש.
חוץ מהתוכנית עצמה, צריך עוד כמה דברים מוכנים:
- ענף עבודה נפרד ב-GitHub, כדי שכל מה שהסוכן כותב בלילה יחכה לבדיקה ולא ייכנס ישר לקוד הראשי.
- פקודת בדיקה אחת שהסוכן יכול להריץ בעצמו ולקבל תשובה של עבר או נכשל.
- ערוץ שאליו מגיעות ההתראות, ושאתה באמת מסתכל עליו.
- רשימה כתובה של פעולות שהסוכן לא עושה לבד.
אם המונח עוד חדש לך, יש הסבר נפרד על מה זה סוכן בינה מלאכותית ומה מבדיל אותו מצ'אט רגיל. כאן אני מניח שכבר הרצת סוכן, וראית אותו נעצר באמצע או ממשיך הרבה אחרי שהיה צריך לעצור. אם אתה מחפש גם מילון קידום אתרים למונחים מהתחום, יש כזה באתר.
סיום שאפשר למדוד חשוב יותר מחומרה
תנאי סיום מדיד הוא משפט שאפשר לבדוק בלי לשאול את הסוכן מה הוא חושב. התשובה עליו היא כן או לא, ומישהו שלא היה שם יכול לבדוק אותה בעצמו. בלי משפט כזה, הסוכן ממשיך לעבוד כי אף אחד לא אמר לו שסיים.
איך נראה תנאי סיום מדיד
"תשפר את הקוד" הוא לא תנאי סיום. "תסדר את העמוד" גם לא. אלה כיוונים, ואין להם קו סיום.
תנאי סיום טוב נשמע יותר כמו רשימת בדיקה. כל הבדיקות עוברות. הבנייה ב-Vercel עוברת בלי שגיאות. כל סעיף בקובץ התוכנית מסומן. בכל סעיף שהסוכן סימן כגמור יש הפניה לשינוי שעשה. ברגע שכל הסעיפים האלה מתקיימים, הוא עוצר ומדווח, גם אם נראה לו שיש עוד מה ללטש.
הסעיף האחרון הוא מה שמפריד בין ריצה מסודרת לריצה מבוזבזת. סוכן לא יודע לבד מתי "טוב מספיק", ולכן צריך לכתוב לו את זה.
מה קורה בלי תנאי כזה
בלי תנאי סיום, אחד משני דברים קורה. לפעמים הסוכן ממשיך: משכתב, מסדר מחדש, מתקן תיקונים של עצמו, ושורף שימוש על עבודה שכבר הייתה גמורה לפני שעות. ולפעמים הוא עושה את ההפך, מכריז שסיים כי זה נראה לו סביר, ואתה מגלה בבוקר שחצי מהמשימה לא נגעו בה.
שני המקרים נראים כמו בעיה של מודל, ושניהם בעיה של הגדרה. מודל חזק יותר או מחשב מהיר יותר לא פותרים אותה. כשמסתכלים על סוכני AI שעובדים טוב לאורך זמן, כמעט תמיד יש להם קו סיום ברור, לא יכולת גבוהה יותר.
איך שמים תקרות שימוש ולא מתעוררים לחשבון
תקרת שימוש היא גבול שהסוכן לא יכול לעבור, גם אם הוא בטוח שהוא קרוב לסיום. החיוב על מודלים הוא לפי טוקנים, יחידות הטקסט שהמודל קורא וכותב. סוכן שנתקע בלולאה קורא וכותב בלי הפסקה, ולכן גם החיוב לא נעצר.
אני חושב שתקרה אחת לא מספיקה, ושצריך כמה שכבות, כל אחת במקום אחר:
- בחשבון אצל ספק המודל מגדירים גבול הוצאה. זו רשת הביטחון האחרונה, והיא עובדת גם כשכל השאר נכשל.
- ברמת הריצה מגדירים מספר מקסימלי של סבבים או צעדים. כשמגיעים אליו, הסוכן עוצר ומדווח איפה הוא עומד.
- ברמת הזמן מגדירים חלון. מה שלא הסתיים בתוכו נעצר ומחכה לאדם.
- ברמת הכישלון קובעים כלל: אם אותה בדיקה נכשלת כמה פעמים ברצף, הסוכן לא מנסה שוב. הוא כותב מה ניסה, מה נכשל, ועוצר.
הכלל הרביעי חוסך יותר מכל השאר. סוכן שנכשל שוב ושוב באותו מקום לא יצליח בניסיון הבא בגלל עקשנות. מה שחסר לו הוא מידע, ואת המידע הזה יש לאדם.
למה הסוכן יכול לגעת כשאף אחד לא מסתכל
לסוכן שרץ בלי השגחה רציפה מגיעות ההרשאות הכי צרות שעוד מאפשרות לו לסיים את המשימה, ולא יותר. השאלה הנכונה היא לא מה הסוכן יודע לעשות. היא מה הדבר הכי גרוע שהוא יכול לעשות עם ההרשאות שקיבל.
בפועל, זה אומר כמה החלטות פשוטות. הסוכן כותב לענף נפרד ב-GitHub ולא ממזג לקוד הראשי. הוא עובד מול סביבת פיתוח ב-Supabase ולא מול מסד הנתונים של האתר החי. מפתחות הגישה שלו מוגבלים למה שהמשימה צריכה. גישה לשרת, ל-WordPress החי או להגדרות LiteSpeed לא נכנסת לריצה לילית בכלל.
אצלי זו לא שאלה תאורטית. על שרתים שאני מנהל בעצמי מתארחים ומתוחזקים מאות אתרי לקוחות, במשך שנים. שינוי בשרת כזה הוא בדיוק סוג הפעולה שלא קורה כשאף אחד ער. ככה אני בונה סוכני AI ב-GPR Digital: הסוכן עושה את הביצוע, צוות קטן בודק, ואני חותם על כל עבודה.
התראות ואישורים לפעולות רגישות
התראה אומרת לך שמשהו קרה. אישור אומר שמשהו לא יקרה עד שאדם יחליט. ריצה ארוכה צריכה את שניהם, והם לא מחליפים זה את זה.
כדאי שהתראות יגיעו בשלושה מצבים. כשהסוכן סיים, עם סיכום קצר ותוצאת הבדיקות. כשהוא פגע באחת התקרות. וכשהוא נתקע וצריך החלטה. התראה שמגיעה על כל צעד קטן היא רעש, ורעש מלמד אותך להפסיק לקרוא אותן.
אישורים הם עניין אחר. כל פעולה שאי אפשר להחזיר מחכה לאישור של אדם, גם אם הסוכן בטוח שהיא נכונה. הרשימה משתנה מפרויקט לפרויקט, אבל הבסיס דומה:
- מחיקת נתונים, קבצים או רשומות
- שינוי בשרת או בהגדרות האחסון
- שינוי מבנה במסד נתונים חי
- שליחת הודעות ללקוחות או לכל מי שמחוץ לצוות
- פרסום לאתר החי
- כל דבר שכרוך בכסף
ב-Claude Code אפשר להגדיר ברמת ההרשאות אילו פעולות מותרות, אילו אסורות ואילו מחייבות שאלה. הסוכן שמגיע לפעולה כזו עוצר, כותב מה הוא רוצה לעשות ולמה, וממתין. בבוקר זה מחכה לך כבקשה אחת ברורה, ולא כהפתעה.
מה בודקים בבוקר
הבדיקה של הבוקר מתחילה בתנאי הסיום ולא בקוד. אם התנאי לא התקיים, אין טעם לקרוא את השינויים לפני שמבינים למה.
- בודקים אם תנאי הסיום התקיים, כלומר אם הבדיקות עוברות, הבנייה עוברת והתוכנית מסומנת.
- מסתכלים כמה מהתקרה נוצל. ריצה שהסתיימה רחוק מהתקרה ומשימה דומה שכמעט מיצתה אותה מספרות סיפור שונה מאוד.
- קוראים את יומן הפעולות, ובמיוחד את המקומות שבהם הסוכן ניסה שוב.
- עוברים על בקשות האישור הממתינות ומחליטים עליהן אחת-אחת.
- רק בסוף קוראים את השינויים עצמם בענף, וממזגים מה שעבר.
הסדר הזה חוסך את הטעות הנפוצה, שבה אתה פותח את הקוד, מתרשם ממנו, וממזג לפני שבדקת שהסוכן בכלל סיים את מה שביקשת. בעבודה שוטפת, הבדיקה הזו היא חלק קבוע ממה שנכנס לליווי חודשי לסוכני AI, כי סוכן שעובד כל לילה צריך מישהו שמסתכל עליו כל בוקר.
שאלות נפוצות
איך מפעילים סוכן AI לאורך זמן בלי השגחה רציפה?
מגדירים מראש מתי הוא נחשב גמור, שמים תקרת שימוש, מצמצמים הרשאות, מחברים התראות, ומחייבים אישור של אדם לכל פעולה רגישה. התוכנית יושבת בקובץ, כדי שכל סשן חדש ימשיך מאיפה שהקודם עצר.
למה תנאי סיום חשוב יותר מחומרה חזקה?
בלי תנאי סיום מדיד, הסוכן ממשיך לעבוד בלי לדעת מתי לעצור, או עוצר מוקדם מדי כי זה נראה לו סביר. חומרה חזקה רק מייקרת את זה.
איפה מגדירים תקרת שימוש?
בכמה מקומות: גבול הוצאה בחשבון אצל ספק המודל, מספר מקסימלי של צעדים בריצה עצמה, חלון זמן, וכלל שעוצר את הסוכן אחרי כישלונות חוזרים באותו מקום.
אילו פעולות סוכן לא צריך לעשות לבד?
פעולות שאי אפשר להחזיר, כמו מחיקת נתונים, שינוי בשרת, שינוי במסד נתונים חי, שליחה ללקוחות או פרסום לאתר החי, כשאדם לא אישר אותן.
מה בודקים כשחוזרים לריצה?
קודם את תנאי הסיום, אחר כך את השימוש מול התקרה, את היומן ואת בקשות האישור, ורק בסוף את השינויים עצמם. הסוכן יכול לעבוד כל הלילה, אבל ההחלטה אם מה שהוא עשה נכנס לעבודה היא של בן אדם, והיא נשארת כזו גם כשהסוכנים משתפרים.
