ה-Cron שלי אמר OK אבל לא עשה כלום
ביום שלישי האחרון, סוכן ה-OpenClaw שלי הריץ ביקורת אבטחה.
לוח הבקרה הראה אור ירוק. הוא הציג סטטוס: ok. לא היו שגיאות ולא התראות.
אבל הסוכן לא עשה כלום.
הסוכן קרס במהלך המשימה. התרחשה שגיאת עומס (overload) של MiniMax. ה-framework החיצוני לא תפס את זה. ה-framework זיהה השלמה מוצלחת למרות שהסוכן נכשל.
מצאתי את השגיאה הזו רק שלושה ימים מאוחר יותר, כשבדקתי את תמליל (transcript) המפגש באופן ידני.
הייתי צריך דרך למצוא את הקריסות השקטות האלו. בניתי סקריפט בדיקה בן 30 שורות כדי לפתור זאת.
הבעיה
Frameworks מזהות network timeouts וכשלים ב-auth. הן לא מזהות מה קורה בתוך agent turn. כשסוכן משנה (sub-agent) קורס, המערכת מייצרת לעיתים קרובות הודעה ספציפית: "[assistant turn failed before producing content]".
עבור ה-framework, זה נראה כמו הודעה רגילה. הסטטוס נשאר "ok". זהו כשל שקט. זהו סוג השגיאה הקשה ביותר לאיתור.
הפתרון
הוספתי סקריפט שבודק את תוכן התמליל בפועל במקום רק את קוד הסטטוס.
הסקריפט מחפש את מחרוזת הכשל הספציפית הזו. הוא משתמש גם בביטוי רגולרי (regular expression) כדי לשלוף את הודעת השגיאה המדויקת מהטקסט.
זה מאפשר לסקריפט להציג את הסיבה האמיתית, כגון:
- overloaded_error
- rate_limit_exceeded
- context_length_exceeded
ברגע שראיתי את פרטי השגיאה, מצאתי את שורש הבעיה. הקריסות קרו בגלל שרשרת fallback של המודל. הסרתי את מודל ה-fallback החינמי שגרם לכשלים בשרשרת (cascading failures). הסרתו הפכה את ה-crons שלי למהירים ואמינים יותר.
התוצאה
הסקריפט רץ כעת בכל לילה. הוא בודק את התמלילים של היום הקודם. אם הוא מוצא קריסה שקטה, הוא שולח התראה ל-Telegram שלי.
אני כבר לא מחכה ימים כדי למצוא שגיאות. אני רואה אותן בכל בוקר.
הלקח
לוח בקרה ירוק לא אומר שהסוכן שלך עבד. framework status ותפוקת הסוכן (agent output) הם דברים שונים.
אם אתם מריצים סוכנים אוטומטיים, אל תסתמכו רק על קודי סטטוס. בדקו את התמלילים. בנו כלי שיבדוק את התמלילים עבורכם. הכשלים השקטים הם אלו שגורמים לנזק הרב ביותר.
Optional learning community: https://t.me/GyaanSetuAi