אותו מודל יכול לנצח או להפסיד, לפי המעטפת שבה הוא רץ
צוות בוחר את המודל שבראש טבלת הדירוג, מחבר אותו למעטפת הסוכנים הקרובה ביותר ומשחרר.

צוות בוחר את המודל שבראש טבלת הדירוג, מחבר אותו למעטפת הסוכנים הקרובה ביותר ומשחרר. מאמר מקדים שפורסם ב-arXiv בתחילת אוקטובר שואל מה הקיצור הזה מסתיר. על אותן 63 משימות טרמינל, מודל אחד מוביל על אחר בכמעט 8 נקודות במעטפת אחת ומפגר אחריו ב-30 נקודות באחרת. הדירוג מעולם לא היה תכונה של המודלים בלבד.
בקצרה
מחקר לפי הדיווח של המחברים: "Finding the Right Fit" (arXiv 2610.00917) בוחן 66 תצורות של מודל ומעטפת בשלושה מבחני סוכנים. ארבע מעטפות ניתנות להגדרה (OpenHands, DeepSeek Harness, PI, openJiuwen) מותאמות לחמישה מודלים, ובנוסף הצמדים המקוריים Codex ו-Claude Code. דירוג המודלים מתהפך בין מעטפות, המעטפת הטובה ביותר למודל משתנה לפי המבחן, ומעטפת היצרן אינה תמיד הטובה ביותר למודל שלו. המחברים מפרסמים את המתאמים, הקוד ו-6,204 מסלולים מדורגים. ↗

מה החוקרים הריצו
הרשת מצלבת ארבע מעטפות עם חמישה מודלים (Claude Opus 5, GPT-6 Astra, GLM-5.3, Kimi K3, DeepSeek V4 Pro) בשלושה מבחנים: TUA-Bench עם 120 משימות, ALE-CLI עם 99 ותת-קבוצה של Terminal-Bench 4 ללא H100 בת 63 משימות. Codex עם GPT ו-Claude Code עם Claude מוסיפים שש נקודות ייחוס מקוריות, בסך הכול 66 תצורות. כל מעטפת מבקשת מאמץ הסקה גבוה ושומרת על ברירות המחדל שלה להקשר, לניסיונות חוזרים ולמספר תורות. המודלים מוגשים דרך OpenRouter וננעלים על הספק הראשוני שלהם. העלות היא עלות ה-API למשימה במחירי OpenRouter. לא נוספו מיומנויות, שרתי MCP או זיכרון. ↗
איפה טבלת המובילים מתהפכת
ב-Terminal-Bench 4 Claude מקדים את GPT ב-7.94 נקודות ב-OpenHands. ב-DeepSeek Harness GPT מוביל ב-17.46, ב-openJiuwen ב-12.70 וב-PI ב-30.16. Claude יורד מ-57.14% ב-OpenHands ל-30.16% ב-PI, ו-GPT עולה מ-49.21% ל-60.32%. Kimi הוא המקרה היציב: openJiuwen נותנת לו את התוצאה הטובה ביותר בכל שלושת המבחנים, בפער של 5.61 עד 11.11 נקודות. הצמדים המקוריים מעורבים. Claude Code הוא הטוב ביותר ל-Claude ב-TUA-Bench וב-ALE-CLI אך מפגר אחרי OpenHands ב-Terminal-Bench, ו-Codex אינו נותן ל-GPT את הציון הגבוה ביותר אף פעם. ב-Terminal-Bench 4 GPT תחת PI עולה על GPT תחת DeepSeek Harness בפחות מרבע מהעלות למשימה. ↗
למה אותו מודל מתנהג אחרת
המחברים השוו מסלולים תואמים של אותה משימה ואותו מודל תחת מעטפות שונות. מודלים מתחילים כמעט כל תיקון בעצמם, ולכן הרבה תלוי בשאלה אם המעטפת מחזירה כשל בצורה שהמודל יכול להשתמש בה. מעטפת בלי פסק זמן הופכת פקודה תקועה לשתיקה. גלאי תקיעה יכול לסיים ריצה לפני שקריאת כלי פגומה תוקנה. GPT קובע פסקי זמן מפורשים ברוב קריאות המעטפת שלו ועובד הכי טוב עם PI, שלד רזה. Kimi מוציא יותר קריאות פגומות ועובד הכי טוב היכן שהמעטפת תופסת אותן. כשלים רבים שנותרו מגיעים בסוף, כשהסוכן רואה בבדיקה של עצמו הוכחה שהמשימה הושלמה.
מה לא יכולתי לבדוק
הניתוח שלי: הלקח השימושי הוא להעריך את הצמד ואת המשימה יחד, ולראות בהחלפת מעטפת החלפת מודל. המגבלות נאמרות במאמר עצמו. תת-הקבוצה של Terminal-Bench ובחירות המשימות המקומיות אינן שחזור של מספרי טבלאות הדירוג הרשמיות, "מאמץ הסקה גבוה" אולי אינו אותו תקציב חשיבה בכל מעטפת, וכל משימה נספרת לפי הריצה האחרונה שלה. זה מאמר מקדים עם מסע ריצות אחד. קראתי את התקציר ואת טקסט ה-HTML. לא הרצתי מחדש את הקוד ולא פתחתי את המסלולים שפורסמו, ולכן איני יכול לאשר את המספרים מעבר למה שהמאמר מדווח.
בדיקה קטנה שהרצתי
הסקריפט שלהלן הוא בדיקה קטנה שכתבתי והרצתי מקומית. הוא מעתיק את הציונים של Claude ושל GPT ב-Terminal-Bench 4 מטבלת המאמר ומחשב מחדש את הפער לכל מעטפת. לפי ערכי הטבלה בארבע ספרות הוא מדפיס יתרון של 7.93 נקודות ב-OpenHands, ואילו המאמר מדווח 7.94 מציונים לא מעוגלים. זה הבדל עיגול ולא מחלוקת. הבדיקה מאשרת היפוך סימן ותנודה של 38.09 נקודות בין המעטפת הטובה למעטפת הגרועה ביותר עבור Claude. זו אינה הרצה חוזרת של המבחן.
הבדיקה בקוד
# Recompute the Claude-minus-GPT gap on Terminal-Bench 4 from the reported table.
# Scores are mean rewards copied from Table 1 of arXiv 2610.00917 (63 tasks).
TB4 = {
"OpenHands": {"Claude Opus 5": 0.5714, "GPT-6 Astra": 0.4921},
"DSH": {"Claude Opus 5": 0.3492, "GPT-6 Astra": 0.5238},
"PI": {"Claude Opus 5": 0.3016, "GPT-6 Astra": 0.6032},
"openJiuwen": {"Claude Opus 5": 0.4127, "GPT-6 Astra": 0.5397},
}
def gaps(table):
for harness, row in table.items():
diff = (row["Claude Opus 5"] - row["GPT-6 Astra"]) * 100
leader = "Claude" if diff > 0 else "GPT"
yield harness, round(diff, 2), leader
results = list(gaps(TB4))
for harness, diff, leader in results:
print(f"{harness:<11} Claude minus GPT = {diff:+.2f} points, leader: {leader}")
leaders = {leader for _, _, leader in results}
print("ranking changes with the harness:", len(leaders) > 1)
spread = max(d for _, d, _ in results) - min(d for _, d, _ in results)
print(f"spread of the gap across harnesses: {spread:.2f} points")