Change2Task: From Repository Changes to Executable Coding Agent Tasks and Environments
تقدم الورقة البحثية Change2Task، وهو نظام يقوم تلقائياً بتحويل طلبات السحب المدمجة إلى مهام لوكلاء برمجيين تم التحقق منها وقابلة للتنفيذ عن طريق إعادة بناء حالات المستودعات التاريخية والتحقق من صحتها على قواعد برمجية حديثة، مما يزيد بشكل كبير من عرض بيانات التدريب مع تقليل تكاليف الإعداد وتحسين معدلات استرداد المهام مقارنة بالنماذج المرجعية الحالية.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
تخيل عالماً تتعلم فيه الحواسيب كيف تصبح مهندسي برمجيات. هذه "وكلاء البرمجة" تشبه المتدربين الرقميين الذين لا يكتفون بكتابة سطر واحد من الكود ويتوقفون؛ بل يمكنهم فتح مشروع، وقراءة الملفات، وإصلاح خطأ برمي، وتشغيل الاختبارات، والمحاولة مرة أخرى إذا فشلوا. ولكن هنا تكمن المشكلة: لكي يصبحوا بارعين حقاً في هذا، يحتاج هؤلاء المتدربون إلى التدرب على مشكلات من العالم الحقيقي. إنهم بحاجة إلى مكتبة ضخمة من "التمارين" حيث يمكنهم محاولة إصلاح ميزة معطلة أو إضافة ميزة جديدة، ثم الحصول على درجة "نجاح" أو "رسوب" واضحة.
المشكلة هي أن إنشاء تمارين التدريب هذه أمر صعب للغاية ومكلف. فعادةً، لكي تصنع اختباراً، عليك بناء بيئة حاسوبية معزولة ومثالية (مثل صندوق رمل رقمي) لكل مشكلة على حدة. إذا كنت تريد 1,000 تحدٍ برمجي مختلف، فقد تحتاج إلى بناء 1,000 صندوق رمل مختلف، مما يستهلك كميات هائلة من مساحة التخزين والوقت. الأمر يشبه محاولة تعليم شخص ما الطبخ عبر بناء مطبخ جديد، مجهز بالكامل، لكل وصفة تريد منه تعلمها. هذا العمل الشاق يجعلنا ننفد من مشكلات التدريب، ولا يستطيع الوكلاء الحصول على التدريب الذي يحتاجونه ليصبحوا خبراء.
هنا يأتي دور فكرة جديدة تسمى Change2Task. فكر في الأمر كآلة زمن سحرية للكود. فبدلاً من بناء مطبخ جديد لكل وصفة، ينظر Change2Task إلى تاريخ مشروع برمجيات حقيقي - مثل سجل ضخم يسجل كل مرة قام فيها مبرمج بشري بإصلاح خطأ أو إضافة ميزة في الماضي. إنه يأخذ تلك القصص الحقيقية القديمة ويسأل: "هل يمكننا إعادة إنشاء نفس هذا التحدي بالضبط، ولكن على النسخة الحالية من البرنامج؟"
يعمل النظام كأنه محرر ذكي. فهو يجد "طلب سحب مدمج" (Pull Request) - وهو مجرد مصطلح تقني لتغيير تم قبوله وإضافته إلى الكود بالفعل - ويحاول هندسته عكسياً. إنه يطلب من الكمبيوتر "إلغاء" ذلك التغيير لإنشاء حالة معطلة، ثم يضع هدفاً لوكيل البرمجة لإصلاحه مجدداً. ولكن هنا تكمن الخدعة السحرية: بدلاً من البدء من الصفر، يتم ذلك على نسخة حديثة وسليمة من البرنامج تعمل بالفعل. إذا تغير البرنامج كثيراً منذ الإصلاح الأصلي، يستخدم Change2Task ثلاث استراتيجيات مختلفة لربط الإصلاح القديم بالكود الجديد:
- عكس الرقعة (Patch Reversal): إذا لم يتغير الكود كثيراً، فإنه يقوم فقط بقلب الإصلاح القد م عكسياً.
- رسم خرائط الكود (Code Mapping): إذا انتقل الكود من مكانه، فإنه يجد الموقع الجديد للكود القديم ويستبدله.
- إعادة بناء الوكيل (Agent Reconstruction): إذا كان الكود مختلفاً تماماً، فإنه يستخدم وكيل ذكاء اصطناعي ذكي لمعرفة كيفية إعادة إنشاء المشكلة في البيئة الجديدة.
اختبر الباحثون هذا النظام على خمسة أنواع شائعة من المهام البرمجية: إصلاح الأخطاء، إضافة ميزات جديدة، كتابة اختبارات جديدة، تحديث الأدوات القديمة (APks)، وترقيع الثغرات الأمنية. بدأوا بـ 1,130 تغييراً حقيقياً من مشاريع برمجية عامة. نجح النظام في تحويل 900 منها إلى مهام تدريبية تعمل وتتم التحقق منها. كانت نسبة النجاح حوالي 80%.
ما يجعل هذا مثيراً حقاً هو مقدار ما يوفره. فمن خلال إعادة استخدام نفس "المطبخ" (بيئة البرنامج) لمهام تدريبية متعددة ومختلفة، قللوا الوقت اللازم لإعداد البيئات بنسبة 58.4% وخفضوا مساحة التخكرة المطلوبة بنسبة 71.2%. في الواقع، تمكنوا من إنشاء مهام موثقة أكثر بنسبة 29.2% من الطريقة السابقة التي كانت تحاول فقط نسخ الإصلاحات القديمة مباشرة.
تحقق الفريق أيضاً مما إذا كانت هذه المهام المعاد إنشاؤها عادلة. فقد طلبوا من وكلاء برمجة مختلفين حل المشكلات على كل من النسخة التاريخية الأصلية والنسخة الحديثة الجديدة. كانت النت كانت متطابقة تقريباً: حصل الوكلاء على نفس درجة "النجاح" أو "الرسوب" في 98% من الحالات. وهذا يثبت أن المهام الجديدة ليست مجرد تخمينات عشوائية، بل هي إعادة إنشاء دقيقة لعمل المبرمجين الحقيقيين.
باختصار، Change2Task لا يجد فقط المزيد من مشكلات التدريب؛ بل يجد طريقة لجعل المشكلات التي لدينا بالفعل قابلة لإعادة الاستخدام وفعالة. إنه يحول تاريخ تطوير البرمجيات إلى مورد متجدد لتدريب الجيل القادم من مبرمجي الذكاء الاصطناعي، مثبتاً أننا لسنا بحاجة لبناء عالم جديد لكل درس - بل نحتاج فقط لمعرفة كيفية النظر إلى العالم القديم بعيون جديدة.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.