BLAgent: Agentic RAG for File-Level Bug Localization
يُعد BLAgent إطار عمل وكيل جديد للجيل المعزز بالاسترجاع (RAG) يعمل على تعزيز تحديد مواقع الأخطاء البرمجية على مستوى الملف من خلال الترميز المدرك لهيكل الكود، وتحويل الاستعلام ثنائي المنظور، وإعادة الترتيب الوكيل ثنائي المراحل، محققاً بذلك دقة رائدة في SWE-bench Lite مع تقليل التكاليف بشكل كبير وتحسين نجاح إصلاح البرامج الآلي في المهام اللاحقة.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
إليك شرح لورقة بحث BLAgent، مترجم إلى لغة بسيطة ويومية باستخدام التشبيهات.
المشكلة الكبرى: البحث عن إبرة في كومة قش
تخيل أنك ميكانيكي (مطور برمجيات) تحاول إصلاح سيارة معطلة. سلمك أحد الزبائن شكوى تقول: "السيارة تصدر ضجيجاً غريباً عندما أنعطف يساراً".
في عالم البرمجيات، هذه الشكوى هي تقرير عن خطأ برمي (Bug Report). السيارة هي مستودع كود ضخم يحتوي على ملايين الأسطر من الكود (وهي كومة القش). السطر المحدد من الكود الذي يسبب الضجيج هو الإبرة.
لفترة طويلة، عانت أدوات الذكاء الاصطيعي التي تحاول إصلاح هذه الأخطاء لأنها لا تستطيع العثور على الإبرة أولاً. إذا خمن الذكاء الاصطناعي الجزء الخاطئ من المحرك (الملف الخاطئ)، فسيحاول إصلاح الشيء الخطأ، وستظل السيارة معطلة. وهذا ما يسمى تحديد موقع الخطأ (Bug Localization).
الحل: BLAgent (المحقق الخارق)
ابتكر المؤلفون نظاماً جديداً يسمى BLAgent. فكر فيه كأنه محقق خارق لا يكتفي بالتخمين فحسب؛ بل يستخدم عملية تحقيق ذكية وخطوة بخوة للعثور على الملف الدقيق الذي يحتاج إلى إصلاح قبل محاولة ترميمه.
يستخدم BLAgent تقنية تسمى Agentic RAG (التوليد المعزز بالاسترجاع عبر الوكيل). باللغة البسيطة، هذا يعني أن الذكاء الاصطناعي لا يقوم فقط بـ "الهلوسة" بإجابة؛ بل يذهب إلى مكتبة (مستودع الكود)، ويجد الكتب الصحيحة (ملفات الكود)، ويقرؤها، ثم يفكر في الإجابة.
إليك كيف يعمل BLAgent، مقسماً إلى ثلاث خطوات بسيطة:
1. تنظيم المكتبة (التقسيم الذكي - Smart Chunking)
تخيل أن مكتبتك في حالة فوضى. الكتب ممزقة إلى نصفين، والصفحات ملتصقة ببعضها بشكل عشوائي. إذا طلبت من أمين المكتبة كتاباً عن "المحركات"، فقد يعطيك صفحة مكتوب عليها "محرك" لكنها في الواقع من كتاب طبخ.
- الطريقة القديمة: تقوم أدوات الذكاء الاصطناعي التقليدية بتقسيم الكود إلى قطع عشوائية من النصوص، مثل تمزيق صفحات الكتاب صفحة تلو الأخرى.
- طريقة BLAgent: يستخدم BLAgent خريطة هيكلية (تسمى AST). هو يعرف أن "الدالة" (Function) أو "الفئة" (Class) تشبه الفصل الكامل. لذا، فهو يقطع الكود فقط عند نهاية هذه الفصول.
- السر الخفي: يقوم أيضاً بختم مسار الملف (عنوان الكتاب) على كل صفحة. إذا ذكر تقرير الخطأ اسماً لمجلد معين، يمكن لـ BLAgent فوراً مطابقة هذا العنوان بالكتاب الصحيح.
2. طرح أسئلة أفضل (الاستعلام من منظور مزدوج - Dual-Perspective Queries)
تخيل أنك تسأل أمين مكتبة للحصول على مساعدة.
- سؤال سيء: "سيارتي معطلة." (غامض جداً).
- استراتيجية BLAgent: يطرح سؤالين مختلفين للحصول على أفضل النتائج:
- السؤال الهيكلي: "أي ملف يحتوي على دالة
turn_signal؟" (البحث عن أسماء وهياكل كود محددة). - السؤال السلوكي: "أي ملف يتعامل مع الحالة التي تصدر فيها السيارة ضجيجاً عند الانعطاف؟" (البحث عن الأعراض والسلوك).
- السؤال الهيكلي: "أي ملف يحتوي على دالة
من خلال طرح كلا السؤالين، يلقي BLAgent شبكة أوسع، مما يضمن عدم تفويته للملف الصحيح لمجرد أن تقرير الخطأ استخدم كلمات مختلفة عن الموجودة في الكود.
3. تحقيق المحقق (إعادة الترتيب عبر الوكيل - Agentic Reranking)
هذا هو الجزء الأهم. تعطي المكتبة لـ BLAgent قائمة بأفضل 15 كتاباً (ملفاً) محتملاً. ولكن أي واحد منها هو الجاني الحقيقي؟
- الذكاء الاصطناعي القديم: يختار أول كتاب في القائمة ويحاول إصلاحه.
- BLAgent (الوكيل): يتصرف كمحقق. هو لا يكتفي بقراءة الغلاف؛ بل يفتح الكتب وينظر إلى الهيكل العظمي (جدول المحتويات وعناوين الفصول) للمرشحين الأوائل.
- يسأل نفسه: "هل هيكل هذا الملف يتوافق مع الجريمة؟"
- يقوم بتعيين درجة (من 0 إلى 10) لكل ملف.
- ثم، بالنسبة لأفضل المشتبه بهم، يقرأ النص الفعلي للأجزاء ذات الصلة لاتخاذ قرار نهائي مبني على الأدلة.
هذا "الاستنتاج المحدود" يعني أن المحقق لا يحقق إلا في المشتبه بهم الأكثر احتمالاً، مما يوفر الوقت والمال، بدلاً من البحث في المكتبة بأكملها.
لماذا هذا مهم: ورشة الإصلاح
اختبرت الورقة البحثية BLAgent على معيار شهير يسمى SWE-bench (مجموعة من أخطاء البرمجيات في العالم الحقيقي).
- النتيجة: وجد BLAgent الملف الصحيح للإصلاح في 78% إلى 86% من الحالات (اعتماداً على نموذج الذكاء الاصطناعي المستخدم).
- المقارنة: وجدت الطرق السابقة الملف الصحيح بمعدل أقل.
- التكلفة: BLAgent أرخص بـ 18 مرة من أفضل طريقة سابقة. الطرق القديمة كانت تشبه توظيف فريق من 100 شخص للبحث في المكتبة؛ أما BLAgent فهو يشبه توظيف محقق واحد ذكي جداً ومعه خريطة.
الأثر على إصلاح الأخطاء:
عندما تم توصيل BLAgent بنظام إصلاح تلقائي، نجح النظام في إصلاح 20% أكثر من الأخطاء مما سبق.
- تشبيه: إذا أعطيت الميكانيكي قطعة محرك خاطئة، فلن يتمكن من إصلاح السيارة. إذا أعطيته القطعة الصحيحة (تحديد الموقع بدقة)، فيمكنه إصلاحها. BLAgent يضمن حصول الميكانيكي على القطعة الصحيحة.
ما لا تقوله الورقة البحثية
- هي لا تدعي أنها تصلح كل خطأ برمجي. في حوالي 14% من الحالات، كان الملف الصحيح مخفياً جداً أو كان تقرير الخطأ غامضاً جداً لدرجة أن حتى BLAgent لم يستطع العثور عليه في القائمة الأولى.
- هي لا تدعي أنها عصا سحرية لكل البرمجيات. هي تعمل بشكل أفضل على مشاريع Python (مثل تلك الموجودة في الاختبار) وتعتمد على جودة تقرير الخطأ.
- هي لا تقول إن العثور على الملف هو الخطوة الوحيدة. بمجرد العثور على الملف، لا يزال يتعين على الذكاء الاصطناعي كتابة إصلاح الكود الفعلي، والذي قد يفشل أيضاً. لكن العثور على الملف هو العقبة الأكبر.
الملخص
BLAgent هو طريقة أذكى للذكاء الاصطناعي للعثور على الكود المعطل. بدلاً من التخمين العشوائي، يقوم بتنظيم مكتبة الكود بشكل أفضل، ويطرح أسئلة أذكى، ويستخدم خطوة "المحقق" للتحقق من الأدلة قبل اتخاذ أي إجراء. وهذا يجعله أسرع، وأرخص، وأكثر دقة في العثور على السبب الجذري لأخطاء البرمجيات.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.