Improved Bug Localization with AI Agents Leveraging Hypothesis and Dynamic Cognition
تقدم هذه الورقة CogniGent، وهو إطار عمل للذكاء الاصطناعي الوكيل (agentic AI) يتفوق بشكل كبير على الأساليب التقليدية وتلك القائمة على النماذج اللغوية الكبيرة في تحديد مواقع أخطاء البرمجيات، وذلك من خلال الاستفادة من الاستدلال السببي، وتحليل مخطط الاستدعاء (call-graph)، والإدراك الديناميكي القائم على الفرضيات.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
تخيل أنك محقق تحاول حل جريمة في مدينة ضخمة ومترامية الأطراف (التي تمثل الكود البرمجي للبرمجيات). الخيط الوحيد الذي تملكه هو شهادة شاهد غامضة تقول: "حدث خطأ ما عندما حاولت حفظ ملفي، والآن بياناتي مفقودة".
الأساليب التقليدية للعثور على الجاني (الخطأ البرمجي/الـ bug) تشبه تسليم شهادة الشاهد هذه إلى أمين مكتبة لا يعرف سوى مطابقة الكلمات. إذا قال الشاهد كلمة "ملف" وكانت الجريمة قد وقعت في غرفة تسمى "الملفات"، فسيشير أمين المكتبة إلى هناك. ولكن ماذا لو كانت الجريمة قد وقعت بالفعل في غرفة "قاعدة البيانات"، لكن الشاهد استخدم الكلمة الخطأ؟ أو ماذا لو كانت الجريمة عبارة عن رد فعل متسلسل حيث دفع شخص شخصاً آخر، مما أدى بدوره إلى دفع ثالث، مما تسبب في الكارثة النهائية؟ أمناء المكتبة الذين يعتمدون على مطابقة الكلمات يفتقدون هذه الروابط غالباً.
إليك "CogniGent": المحقق الذي يمتلك عقلاً وفريق عمل.
تقدم هذه الورقة نظام ذكاء اصطناعي جديد يسمى CogniGent. بدلاً من مجرد مطابقة الكلمات، يعمل CogniGent كفريق من المحققين البشريين الذين يستخدمون اختبار الفرضيات والاستنتاج الديناميكي لحل القضية.
إليك كيف يعمل، مقسماً إلى خطوات بسيطة:
1. مرحلة "الفرضية" (حدس المحقق)
عندما يتلقى المطور البشري بلاغاً عن خطأ برمي، فإنه لا يبحث في الكود فوراً، بل يسأل نفسه: "ما الذي يمكن أن يسبب هذا؟" فيصيغ نظرية (فرضية).
- يقوم CogniGent بنفس الشيء: يقرأ بلاغ الخطأ ويسأل: "إذا كان النظام يفشل هنا، فربما بدأت المشكلة منذ فترة طويلة في وحدة 'تسجيل الدخول'، أو ربما هي مشكلة في 'قاعدة البيانات'؟" إنه يولد عدة نظريات حول المكان الذي قد يختبئ فيه الخطأ.
2. مرحلة "Click2Cause" (تتبع الأثر)
في العالم الحقيقي، إذا اشتبه مطور في سطر معين من الكود، فقد يقوم بالضغط على "Ctrl+Click" لرؤية الوظائف الأخرى التي يستدعيها، ثم يضغط على تلك الوظائف ليرى ما تستدعيه هي أيضاً. إنه يتبع أثر فتات الخبز.
- قوة CogniGent الخارقة: يستخدم خوارزمية خاصة تسمى Click2Cause. بدلاً من البحث عشوائياً في المدينة بأكملها، فإنه يغوص بعمق في مسار واحد محدد (مثل تتبع مشتبه به واحد في زقاق مظلم) ليرى كيف ينتشر الخطأ. يتحقق من: "إذا فشلت هذه الوظيفة، هل ستعطل الوظيفة التالية؟ وهل ستعطل تلك التي تليها؟"
- الاستعارة: تخيل لعبة "الهاتف المكسور" (Telephone). إذا همس الشخص الأول برسالة خاطئة، فسيسمع الشخص الأخير كلمات غير مفهومة. يقوم CogniGent بتتبع الرسالة من الكلمات غير المفهومة وصولاً إلى أول همسة لمعرفة من بدأ الأمر.
3. "المسودة" (تنظيم الأدلة)
غالباً ما ترتبك نماذج الذكاء الاصطناعي إذا أعطيتها الكثير من المعلومات دفعة واحدة (مثل محاولة قراءة كتاب كامل في ثانية واحدة).
- خدعة CogniGent: يستخدم "مسودة" (scratchpad). بينما يحقق في مسار معين، فإنه يدون أفكاره وأدلته على مفكرة مؤقتة. وبمجرد انتهائه من ذلك المسار، يقوم بمسح المسودة وينتقل إلى النظرية التالية. هذا يبقي "عقله" مركزاً ويمنعه من الارتباط بمعلومات غير ذات صلة.
4. "المراقب" (القاضي)
بمجرد أن يجمع فريق التحقيق الأدلة لجميع فرضياتهم، يتدخل "وكيل مراقب" نهائي. ينظر إلى الأدلة، ويقارنها ببلاغ الخطأ الأصلي، ويقرر: "حسناً، النظرية (أ) ضعيفة، لكن النظرية (ب) لديها دليل قوي". ثم يقوم بترتيب المشتبه بهم (ملفات الكود) من الأكثر احتمالاً إلى الأقل احتمالاً ليكونوا هم الجناة.
لماذا يعد هذا أمراً مهماً؟
اختبر الباحثون هذا النظام على 591 بلاغ خطأ حقيقي من مشاريع برمجية شهيرة (مثل Apache HBase و Spring). وقارنوا CogniGent مع:
- محركات البحث التقليدية (التي تقوم فقط بمطابقة الكلمات).
- أدوات الذكاء الاصطنا أخرى (التي تتحسن باستمرار ولكنها لا تزال تعاني مع سلاسل الأخطاء المعقدة).
النتائج:
حققت CogniGent نجاحاً هائلاً.
- لقد وجدت الكود المسبب للخطأ بدقة أعلى بنسبة 23% إلى 38% من أفضل الأساليب الموجودة.
- كانت بارعة بشكل خاص في العثور على الأخطاء المنتشرة عبر ملفات متعددة (أخطاء رد الفعل المتسلسل)، والتي عادة ما تُربك الأدوات الأخرى.
الخلاصة:
فكر في أدوات اكتشاف الأخطاء التقليدية كأنها مصباح يدوي يسلط الضوء فقط على البقعة التي تنظر إليها. إذا كان الخطأ في زاوية مظلمة خلف الجدار، فإن المصباح سيفشل في رؤيته.
أما CogniGent فهو مثل محقق يمتلك خريطة، وعدسة مكبرة، وفريق عمل. إنه لا ينظر فقط إلى البقعة؛ بل يسأل لماذا هذه البقعة مظلمة، ويتتبع أثر الأدلة، ويختبر فرضياته، ويجد السبب الجذري حتى لو كان مخفياً في أعماق تاريخ الكود. وهذا يجعل إصلاح البرمجيات أسرع، وأرخص، وأقل إحباطاً للمطورين.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.