أي فشل نصلحه بعد ذلك: قراءة ActiveSaddler
يصلح إطار الوكيل خطأ اقتباس في الصدفة، ثم ينفق عشر محاولات تالية على مهام ينجح فيها أصلا.

يصلح إطار الوكيل خطأ اقتباس في الصدفة، ثم ينفق عشر محاولات تالية على مهام ينجح فيها أصلا. لا شيء معطل في أي خطوة، لكن الميزانية ضاعت. هذه مشكلة الجدولة هي لب مسودة ActiveSaddler المنشورة على arXiv في الأول من أكتوبر.
الخلاصة
نتائج البحث المنقولة: يختار ActiveSaddler أي سيناريوهات التدريب تقود التعديلات الآلية للإطار. يعامل أنماط الفشل كأذرع في مسألة قطاع متغيرة، ويقدر التقدم المتوقع لكل نمط، ويوازن بين العودة إلى نقاط الضعف المعروفة واستكشاف سيناريوهات جديدة. على GAIA2 يذكر 59.8% في Pass@1 للاختبار مقابل 55.4% للمحسن نفسه بترتيب ثابت عشوائي. وعلى Terminal-Bench 2.0 يذكر 80.0% مقابل 72.5%. ↗

الأرقام ونطاقها
تضم عينة اختبار GAIA2 ثلاثمئة مهمة وعينة Terminal-Bench 2.0 أربعين مهمة. القيم متوسطات لثلاث عمليات تشغيل اختبارية: 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 على ثلاثمئة مهمة أثبت، ومكسب 4.4 نقطة هو ما سأعتمد عليه. لا تخبرنا أي منهما بسلوك الطريقة على قاعدة شيفرة خاصة أو نموذج أساسي آخر أو إطار جيد أصلا. ↗
كيف تتحول الإخفاقات إلى أذرع
كل ذراع نمط فشل مستخلص من مسارات فاشلة، مثل خطأ متكرر في بناء الأمر، لا فئة مهام ولا مهمة منفردة. وتجعل التجارب الاستئصالية هذا الاختيار مهما: استبدال الفئات بالأنماط يخفض Terminal-Bench 2.0 بمقدار 10.8 نقطة، واستبدال المهام الفردية بمقدار 6.7، وحذف المرتب أو متحكم الاستكشاف يعيد النتيجة نحو الترتيب الثابت. قراءتي أن المكسب يأتي من تذكر أن تعديلا فشل والعودة إلى النمط، مع إبقاء جزء من الميزانية لاكتشاف أنماط جديدة.
اختبار تجريبي كتبته
كتبت مثال محاسبة مختلقا ونفذته محليا: سبعة إخفاقات قابلة للإصلاح في أربعة أنماط وست محاولات. ترتيب محدد يبدأ بنمط محلول أصلا يصلح 3، بينما استهداف أكبر نمط غير محلول يصلح 6. ويتحقق الكود أيضا من أن مهمة واحدة من أربعين تحرك الدرجة 2.5 نقطة. المدخلات مختلقة. هي توضح فكرة التوزيع ولا تمثل دليلا على ActiveSaddler.
الحدود والأمن
يذكر المؤلفون أن العمل استكشاف بحثي على بيانات عامة وتركيبية، ولم يقيم كنظام إنتاجي ولا من جهة الأمن. ويلاحظون أن تعديلا مولدا للإطار قد يغير التعليمات أو واجهات الأدوات أو بناء الأوامر أو تدفق التحكم دون المساس بأوزان النموذج، ويوصون بأقل الصلاحيات والعزل واختبارات الخصم ومراجعة صريحة للتغييرات التي تمس الأذونات. تقول الورقة إن الشيفرة والموقع سيتاحان؛ لم أتحقق من إصدار ولم أنزل شيئا ولم أشغل الطريقة. هذه مسودة arXiv بالإصدار الأول.
الاختبار التجريبي بالشيفرة
# 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