← أحدث الأبحاث
💻 computer science

KaPilot: LLM-Assisted Generation of Kani Specifications for Unsafe Rust Verification

تُعد KaPilot إطار عمل متعدد الوكلاء يستفيد من النماذج اللغوية الكبيرة لتوليد مواصفات Kani وتطويرها بشكل تكراري تلقائياً للتحقق من سلامة الذاكرة في كود Rust غير الآمن، محققاً معدلات نجاح وجودة أعلى بكثير في المواصفات مقارنة بالأدوات الحالية مثل AutoSpec.

المؤلفون الأصليون: Minghua Wang, Yuxi Ling, Mingzhi Gao, Yuwei Liu, Lin Huang

نُشر 2026-07-27
📖 6 دقيقة قراءة🧠 قراءة متعمّقة

المؤلفون الأصليون: Minghua Wang, Yuxi Ling, Mingzhi Gao, Yuwei Liu, Lin Huang

البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل

تخيل أنك تبني منزلاً باستخدام مجموعة من الطوب السحري ذاتي التصحيح. هذه الطوب، التي تُسمى "Rust"، مشهورة لأن لديها مفتش سلامة مدمجاً يرفض السمار لك ببناء أي شيء غير مستقر. إذا حاولت وضع نافذة حيث يجب أن يكون هناك جدار، سيصرخ المفتش قائلاً "لا!" ويوقفك قبل أن تضع أول حجر. هذا يجعل Rust آمنة للغاية لبناء البرمجيات، مما يمنع الانهيارات والثغرات الأمنية قبل حدوثها. ولكن، في بعض الأحيان يحتاج البناء الماهر للقيام بشيء لا يفهمه المفتش — مثل استخدام أداة خاصة وخطيرة لنقل عارضة ثقيلة بسرعة. في عالم Rust، يُسمى هذا "الكود غير الآمن" (unsafe code). إنه يشبه ممرًا سريًا يسمح لك بتجاوز المفتش، لكنه يأتي بثمن باهظ: إذا ارتكبت خطأً واحداً، فقد ينهار المنزل بأكمله. وللحفاظ على صمود المنزل، تحتاج إلى كتابة "كتيب قواعد" (specification) صارم للغاية (رياضي) يثبت بالضبط كيفية استخدام هذه الأدوات الخطيرة بأمان. ولكن كتابة هذه الكتيبات يدوياً أمر صعب للغاية، وبطيء، وعرضة للخطأ البشري.

هنا تبدأ قصة KaPilot. تساءل الباحثون وراء هذا المشروع سؤالاً بسيطاً: هل يمكننا تعليم عقل كمبيوتر فائق الذكاء (ذكاء اصطناعي) لكتابة هذه الكتيبات الأمنية من أجلنا؟ التحدي هو أن هذه الأنظمة من الذكاء الاصطناعي بارعة في كتابة الكود، لكنها غالباً ما تنسخ الأخطاء الموجودة في الكود الذي تراه، بدلاً من فهم الهدف الكامن وراءه. قد تكتب كتيب قواعد يبدو مثالياً ولكنه يغفل تفصيلاً صغيراً مميتاً. تقدم الورقة البحثية KaPilot، وهو فريق من وكلاء الذكاء الاصطناعي يعملون معاً لحل هذا اللغز. بدلاً من مجرد طلب كتابة "قاعدة" من الذكاء الاصطناعي، يعمل KaPilot كالمحقق، والكاتب، والمحرر الصارم، والكل في واحد. إنه يقرأ ملاحظات البناء (التوثيق)، ويستخرج متطلبات السلامة الحقيقية، ويكتب مسودة، ويفحصها بحثاً عن الثغرات، ثم يمررها عبر اختبار صارم للتأكد من أنها تعمل بالفعل. النتيجة هي نظام يمكنه تلقائياً توليد قواعد سلامة عالية الجودة للكود الخطير، مما يجعل من السهل بناء برمجيات آمنة دون الحاجة إلى فريق من الخبراء البشريين لكتابة كل قاعدة يدوياً.

المحقق، والكاتب، والمحرر

فكر في عملية التحقق من كود Rust غير الآمن على أنها محاولة لكتابة دليل تعليمات مثالي لسيارة سباق فائقة السرعة ليس لها مكابح. إذا كان الدليل خاطئاً، ستتحطم السيارة. إذا كان الدليل غامضاً جداً، فلن يعرف السائق كيف يقود. إذا كان الدليل صارماً جداً، فلن يتمكن السائق من التحرك على الإطلاق.

KaPilot هو إطار عمل متعدد الوكلاء (multi-agent framework)، وهو مجرد طريقة منمقة للقول إنه فريق من شخصيات الذكاء الاصطناعي المتخصصة التي تعمل معاً. إليك كيف يؤدون أدوارهم:

  1. المحقق (SafetyReq): قبل كتابة أي شيء، يحتاج الفريق إلى معرفة ما يجب أن تكون عليه القواعد. عادة ما تكون هذه القواعد مخفية في الملاحظات الفوضوية التي كتبها البشر (التوثيق) والتي تأتي مع الكود. يعمل وكيل "SafetyReq" كمحقق؛ فهو يقرأ هذه الملاحظات، ويتجاهل الحشو، ويستخرج قائمة نظيفة وموجزة من متطلبات السلامة. إنه يشبه تحويل قصة طويلة ومملة حول "لا تلمس الزر الأحمر" إلى قائمة واضحة ومرقمة: "1. لا تضغط على الزر الأحمر. 2. لا تقف ضمن نطاق 5 أقدام من الزر الأحمر". هذه الخطوة حاسمة لأنها تمنع الذكاء الاصطناعي من مجرد نسخ أخطاء الكود.
  2. الكاتب (SpecGenerate): بمجرد حصول المحقق على القائمة، يتدخل وكيل "SpecGenerate". إنه الكاتب الذي يحول تلك القائمة إلى لغة رياضية رسمية يمكن للكمبيوتر فهمها (تحديداً لغة تُسمى Kani). هو لا يخمن فحسب، بل يستخدم قائمة المحقق كدليل صارم.
  3. المحرر (SpecPrecheck): قبل أن تذهب مسودة الكاتب إلى "المدير الكبير"، يقوم وكيل "SpecPrecheck" بمراجعتها. إنه محرر صارم يتساءل: "هل غطيت كل نقطة وجدها المحقق؟ هل جملتك ضعيفة جداً؟ هل هي قوية جداً؟". إذا كانت المسودة ركيكة، يعيدها المحرر إلى الكاتب مع ملاحظات محددة حول كيفية إصلاحها. وتستمر هذه الحلقة حتى تصبح المسودة متينة.
  4. سائق الاختبار (SpecVerify): أخيراً، يأخذ وكيل "SpecVerify" المسودة ويضعها في اختبار من العالم الحقيقي. يستخدم أداة تسمى Kani لمحاكة ملايين سيناريوهات القيادة المختلفة لمعرفة ما إذا كانت السيارة ستتحطم. إذا تحطمت السيارة (فشل التحقق)، يخبر سائق الاختبار الكاتب بالضبط لماذا تحطمت، وتبدأ الحلقة من جديد.

استراتيجية "الخلط والدمج"

هنا يصبح الفريق ذكياً حقاً. أحياناً يولد الذكاء الاصطناعي عدة نسخ مختلفة من كتيب القواعد. قد تحتوي نسخة واحدة على شرط "بداية" (precondition) مثالي ولكن شرط "نهاية" (postcondition) ضعيف. وقد تحتوي نسخة أخرى على بداية ضعيفة ولكن نهاية مثالية. إذا اخترت واحدة فقط، فقد تفوتك أفضل تركيبة.

يستخدم KaPilot استراتيجية تسمى "الخلط والاستلزام" (shuffle-and-implication). تخيل أن لديك مجموعة من البطاقات، حيث تمثل كل بطاقة جزءاً مختلفاً من كتيب القواعد. يقوم الفريق بخلط هذه البطاقات، ودمج أفضل "بداية" من نسخة ما مع أفضل "نهاية" من نسخة أخرى. ثم يختبرون هذه التوليفات الجديدة ليروا ما إذا كانت تعمل بشكل أفضل من المسودات الأصلية. إنه يشبه أخذ أفضل محرك من سيارة وأفضل إطارات من سيارة أخرى لبناء سيارة السباق المثالية. هذا يضمن أنهم لا يكتفون بكتيب قواعد "جيد بما يكفي"، بل يجدون الكتاب الأفضل على الإطلاق.

ما توصلوا إليه

اختبر الباحثون KaPilot على 124 قطعة مختلفة من كود Rust غير الآمن. وقد قسموها إلى مجموعتين:

  • المجموعة الذهبية (54 دالة): كانت تحتوي على كتيبات قواعد "الحقيقة الأرضية" التي كتبها خبراء بشريون، لذا تمكن الفريق من التحقق مما إذا كان عمل KaPilot صحيحاً.
  • مجموعة "الألترا" (70 دالة): لم تكن تحتوي على كتيبات قواعد بشرية، لذا تحقق الفريق فقط مما إذا كان بإمكان Ka-Pilot توليد أي كتيب قواعد يعمل.

كانت النتائج مبهرة. بالنسبة للمجموعة الذهبية، نجح KaPilot في توليد كتيب قواعد يعمل لـ 88.9% من الدوال. والأهم من ذلك، في 57.4% من الحالات، كان كتيب القواعد الذي كتبه يضاهي أو يتفوق على ذلك الذي كتبه الخبراء البشريون. أما بالنسبة لمجموعة "الألترا"، فقد تمكن من إنشاء كتيبات قواعد تعمل لـ 71.4% من الدوال.

وعندما قارنوا KaPilot بأداة ذكاء اصطناعي أخرى تسمى AutoSpec (التي تم تكييفها للعمل مع هذا النظام الجديد)، اكتسح KaPilot المنافسة. فقد أنتج 14.8% أكثر من كتيبات القواعد التي تجتاز الاختبارات فعلياً، و 25.9% أكثر من الكتب التي كانت مكافئة دلالياً أو أفضل من تلك المكتوبة بشرياً.

لماذا يهم هذا الأمر؟

تجادل الورقة البحثية بأن مجرد طلب "اكتب قاعدة سلامة بناءً على هذا الكود" من الذكاء الاصطناعي لا يعمل جيداً. يميل الذكاء الاصطناعي إلى نسخ عيوب الكود أو الارتباك بسبب التعقيد. ومن خلال تقسيم المهمة إلى فريق من المتخصصين — أحدهم يقرأ الملاحظات، وآخر يكتب، وثالث يحرر، ورابع يختبر — يتجنب KaPilot هذه العثرات.

وجد الباحثون أيضاً أن جودة الملاحظات البشرية (التوثيق) مهمة جداً. إذا كانت الملاحظات غامضة، يعاني الذكاء الاصطناعي. ولكن عندما تكون الملاحظات واضحة، يتألق KaPilot. كما اكتشفوا أن استراتيجية "الخلط" الخاصة بهم كانت مكوناً رئيسياً؛ فبدونها، كان النظام سيستقر غالباً على حل متوسط بدلاً من إيجاد التركيبة المثالية للقواعد.

باخت مختصر، يشير KaPilot إلى أننا لسنا مضطرين للاختيار بين الخبرة البشرية وسرعة الذكاء الاصطناعي. من خلال استخدام الذكاء الاصطناعي كفريق من المساعدين المتخصصين الذين يتبعون عملية منطقية صارمة، يمكننا أتمتة إنشاء قواعد السلامة لأكثر أجزاء برمجياتنا خطورة، مما يجعل العالم الرقمي مكاناً أكثر أماناً للعيش فيه. لا تدعي الورقة البحثية أنها تحل كل المشكلات (فبعض الحلقات المعقدة لا تزال بحاجة لمساعدة بشرية)، لكنها تثبت أن نهج تعدد الوكلاء هذا يمثل خطوة هائلة للأمام في جعل التحقق من البرمجيات عملية تلقائية وموثوقة.

غارق في أبحاث مجالك؟

تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.

جرّب Digest →