حلقة الوكيل
أربعة أسطر من المنطق، وثلاثة مواضع ينهار فيها كل شيء
ينطلق وكيل مخصص لإصلاح الاختبارات على مستودع شيفرة. في الدورة 1 يقرأ ملف الاختبار. في الدورة 2 يعدّل الوحدة البرمجية. في الدورة 3 يعيد تشغيل مجموعة الاختبارات فيفشل اختبار ما زال قائمًا. في الدورة 4 يتراجع عن تعديله. في الدورة 5 يعيد تطبيق التعديل نفسه بالضبط. وفي الدورة 12 تبلغ الفاتورة 2.80 دولار لهذه المهمة وحدها، ويبلغ حجم السجل 90,000 رمز، وما تزال العملية قيد التشغيل. لم تنهَر الشيفرة في أي لحظة: فالحلقة تفعل بالضبط ما طُلب منها، أي أن تستمر ما دام النموذج يطلب أداة.
يتألف جسم حلقة الوكيل من نحو خمسة عشر سطرًا ولا شيء فيه دقيق. أما الصعوبة كلها فتكمن في موضع آخر، في ثلاثة قرارات نتخذها افتراضيًا لأننا لم نصُغها صراحةً: متى نتوقف، وكم دورة نسمح بها قبل أن نستسلم، وماذا نفعل بالسجل حين يصبح أكبر بند في المصروفات. والخطأ في أي من هذه الثلاثة ينتج حلقة تعمل في العرض التجريبي، ثم يستحيل تشغيلها في الإنتاج عند أول مهمة صعبة.
تشريح الدورة الواحدة
تتكون دورة الوكيل من أربع لحظات. اثنتان منها من اختصاصك، واثنتان من اختصاص النموذج.
- التفكير: يتلقى النموذج السجل ويتخذ قراره. وهو ينتج إما نصًا نهائيًا، وإما طلب استدعاء أداة واحدة أو أكثر.
- التنفيذ: تنفّذ شيفرتك هذه الاستدعاءات. فالنموذج لا يلمس شيئًا بنفسه، وإنما يصدر نوايا بصيغة JSON فقط.
- الملاحظة: تُعيد حقن نتيجة كل استدعاء في السجل، مقترنةً بمعرّف الاستدعاء.
- التكرار: تستدعي النموذج من جديد بالسجل بعد إضافة النتائج.
التعليقات
التعليقات مدعومة عبر GitHub Discussions
سجّل الدخول باستخدام GitHub للمشاركة في النقاش