איזה כשל לתקן הבא: קריאה ב-ActiveSaddler
מעטפת סוכן מתקנת באג של מירכאות בשורת הפקודה ואז מבזבזת עשר הרצות על משימות שהיא כבר עוברת.

מעטפת סוכן מתקנת באג של מירכאות בשורת הפקודה ואז מבזבזת עשר הרצות על משימות שהיא כבר עוברת. שום שלב לא שבור, אבל התקציב הלך. בעיית התזמון הזו היא לב הטיוטה ActiveSaddler שפורסמה ב-arXiv ב-1 באוקטובר.
בקצרה
ממצאים מדווחים: ActiveSaddler בוחר אילו תרחישי אימון מניעים עדכוני מעטפת אוטומטיים. הוא מתייחס לדפוסי כשל כזרועות של בעיית שודד לא סטציונרית, מעריך התקדמות צפויה לכל דפוס ומאזן בין חזרה לחולשות מוכרות לבין חקירת תרחישים חדשים. ב-GAIA2 מדווח Pass@1 של 59.8% במבחן לעומת 55.4% לאותו אופטימייזר עם סדר קבוע מעורבב. ב-Terminal-Bench 2.0 מדווח 80.0% לעומת 72.5%. ↗

המספרים והיקפם
מדגם המבחן של GAIA2 כולל 300 משימות ושל Terminal-Bench 2.0 כולל 40. הציונים הם ממוצעים של שלוש הרצות מבחן: 59.8 ± 1.0 ב-GAIA2 (סוכן ברירת מחדל 53.6, GEPA 54.2, Meta-Harness 54.2) ו-80.0 ± 2.5 ב-Terminal-Bench 2.0 (Terminus-KIRA ידני 69.2). שני הרווחים, 4.4 ו-7.5 נקודות, הם מול אותו אופטימייזר עם סדר תרחישים שנקבע מראש. המחברים מדווחים גם על הרצה עצמאית ב-GAIA2 עם אותה מסקנה ועל עלייה של 3.0 נקודות ביישום על GEPA (מ-54.2% ל-57.2%). ↗
ארבעים משימות מבחן
זה ניתוח שלי ולא טענת המאמר. בארבעים משימות משימה אחת שווה 2.5 נקודות, כך ש-7.5 נקודות הן גודלן של שלוש משימות בממוצע ההרצות. אות שימושי ודק. תוצאת GAIA2 על 300 משימות יציבה יותר, והרווח של 4.4 נקודות הוא המספר שעליו הייתי מתכנן. אף אחד מהם לא אומר איך השיטה תתנהג על בסיס קוד פרטי, מודל בסיס אחר או מעטפת שכבר עובדת טוב. ↗
איך כשלים הופכים לזרועות
כל זרוע היא דפוס כשל שחולץ ממסלולים כושלים, למשל טעות חוזרת בבניית פקודה, ולא קטגוריית משימות או משימה בודדת. הבדיקות מראות שהבחירה חשובה: קטגוריות במקום דפוסים מורידות את Terminal-Bench 2.0 ב-10.8 נקודות, משימות בודדות ב-6.7, והסרת המתעדף או בקר החקירה מחזירה את התוצאה לכיוון הסדר הקבוע. הקריאה שלי: הרווח בא מזכירת תיקון שנכשל וחזרה לדפוס, תוך שמירת חלק מהתקציב לגילוי דפוסים חדשים.
בדיקת צעצוע שכתבתי
כתבתי דוגמת חשבונאות בדויה והרצתי אותה מקומית: שבעה כשלים ברי תיקון בארבעה דפוסים ושש הרצות. סדר קבוע שפותח בדפוס שכבר נפתר מתקן 3, ויעד תמיד לדפוס הלא פתור הגדול ביותר מתקן 6. הקוד גם מוודא שמשימה אחת מתוך 40 מזיזה ציון ב-2.5 נקודות. הקלטים בדויים. הם ממחישים את רעיון ההקצאה ואינם ראיה על ActiveSaddler.
מגבלות ואבטחה
המחברים כותבים שזו חקירת מחקר על נתונים ציבוריים וסינתטיים, שלא הוערכה כמערכת ייצור או מבחינת אבטחה. הם מציינים שעדכון מעטפת שנוצר אוטומטית יכול לשנות הנחיות, ממשקי כלים, בניית פקודות או זרימת בקרה בלי לגעת במשקלי המודל, וממליצים על הרשאות מינימליות, ארגז חול, בדיקות עוינות וסקירה מפורשת לשינויים שנוגעים בהרשאות. במאמר נאמר שקוד ואתר יהיו זמינים; לא אימתתי פרסום, לא הורדתי דבר ולא הרצתי את השיטה. זו טיוטת arXiv גרסה 1.
בדיקת הצעצוע בקוד
# Invented toy: two ways to spend 6 rollouts on failure patterns.
remaining = {"quoting": 4, "paths": 2, "timeouts": 1, "stale-docs": 0}
def fixed(order, budget):
left = dict(remaining); fixed_n = 0
for name in order[:budget]: # one pass in a preset order
if left[name]:
left[name] -= 1; fixed_n += 1
return fixed_n
def adaptive(budget):
left = dict(remaining); fixed_n = 0
for _ in range(budget): # always target the largest unresolved pattern
name = max(left, key=left.get)
if left[name]:
left[name] -= 1; fixed_n += 1
return fixed_n
order = ["stale-docs", "stale-docs", "timeouts", "paths", "stale-docs", "quoting"]
a, b = fixed(order, 6), adaptive(6)
assert (a, b) == (3, 6)
print("preset order repaired", a, "of 6; adaptive repaired", b, "of 6")
# 1 test task on a 40-task split moves the score by 2.5 points.
assert 100 / 40 == 2.5