الذكاء الاصطناعي يتولى إعادة هيكلة كود C++ في OpenBMC: async أحادي الخيط وD-Bus وحلول ترقيعية
اختبر كاتب على Habr مساعدًا قائمًا على الذكاء الاصطناعي في مهمة واقعية: إعادة هيكلة (refactoring) كود C++ ثقيل في منظومة OpenBMC. وهو برنامج ثابت مفتوح المصدر لمتحكمات إدارة اللوحة الأم (BMC)، أي متحكمات إدارة الخوادم. تعمل الخدمات فيه كخدمات مصغّرة: حلقة أحداث غير متزامنة أحادية الخيط، وتواصل عبر D-Bus، وكثير من الحلول الترقيعية الموروثة. يسأل الكاتب: هل تستطيع الشبكة العصبية التعامل مع كود يُجفل العين، وأين لا تزال متأخرة عن الإنسان؟ لا يذكر الإعلان اسم النموذج ولا مقاييس كمية، وهي مخبأة في النص الكامل. • ميدان الاختبار: OpenBMC وC++ وD-Bus وasync أحادي الخيط. • السؤال: أين يتخلف الذكاء الاصطناعي عن الإنسان في إعادة الهيكلة. • القيد: لا توجد أرقام في الإعلان.
معالج بواسطة الذكاء الاصطناعي من Habr AI؛ بتحرير Hamidun News
خيط واحد، وحلقة أحداث واحدة، وناقل D-Bus واحد، وكود موروث (legacy) يخشى الجميع لمسه. على هذه المادة اختبر كاتب على Habr قدرة مساعد قائم على الذكاء الاصطناعي على إعادة هيكلة كود C++ حقيقي من فئة enterprise في منظومة OpenBMC. لا يذكر الإعلان اسم النموذج، ولا حجم الكود، ولا نسبة التعديلات الناجحة. لكن صياغة المهمة نفسها أكثر إثارة للاهتمام من معظم العروض التي تولّد تطبيقات todo: لا توجد هنا أمثلة تعليمية، بل كود كُتب على مدى سنوات على أيدي أشخاص مختلفين.
ما هو OpenBMC ولماذا يؤلم العمل عليه
متحكم إدارة اللوحة الأم (BMC، baseboard management controller) حاسوب صغير مستقل على لوحة الخادم. يراقب الطاقة والمراوح وحساسات الحرارة، ويوفّر وحدة تحكم عن بُعد، ويستطيع إعادة تحميل البرنامج الثابت للمضيف حتى حين يكون النظام الرئيسي معطلًا. أما OpenBMC فهو توزيعة Linux مفتوحة المصدر لهذه المتحكمات. بدأ المشروع داخل Facebook، ومنذ عام 2018 يتطور تحت مظلة Linux Foundation بمشاركة كبار مصنّعي الخوادم ومزوّدي الخدمات السحابية.
من الناحية المعمارية، هو مجموعة من العمليات الخلفية (daemons) الصغيرة. تتولى كل منها جزءًا محددًا: الحساسات، وجرد المكونات، والسجلات، وإدارة الطاقة. وتتواصل عبر D-Bus، فهي في جوهرها خدمات مصغّرة، لكنها تعمل على SoC بذاكرة محدودة ومعالج ضعيف. واللغة الرئيسية هي C++، وعادةً مع sdbusplus وBoost.Asio.
async أحادي الخيط: مريح وخطير
يعني نموذج async أحادي الخيط وجود خيط واحد وحلقة أحداث واحدة. تُصاغ كل عملية، سواء كانت طلبًا عبر D-Bus أو قراءة حساس أو مؤقتًا، على هيئة استدعاء غير متزامن مع معالج. الميزة واضحة: لا سباقات تقليدية على البيانات، ولا حاجة إلى نشر mutex في أرجاء الكود. والعيب معروف أيضًا. يتحول المنطق إلى سلاسل من lambdas المتداخلة، ويجب تتبّع أعمار الكائنات يدويًا عبر shared_ptr وقوائم الالتقاط، ولا يمكن قراءة ترتيب التنفيذ إلا بوجود مصحّح الأخطاء (debugger) في اليد.
في كود كهذا طُلب من الذكاء الاصطناعي أن يعيد النظام. وهذا اختبار إجهاد جيد. يرى النموذج اللغوي الأنماط المحلية بوضوح، لكن صحة الكود هنا كثيرًا ما تتوقف على أمور ضمنية: من يملك الكائن، ومتى سيُستدعى الـ callback، وماذا سيحدث إذا أُعيد تشغيل الخدمة في منتصف الطلب.
ما الذي يُختبر بالضبط
يطرح الكاتب سؤالين: هل يستطيع الذكاء الاصطناعي إنجاز إعادة الهيكلة، وفي ماذا يتخلف عن الإنسان تخلفًا لا جدال فيه حتى الآن. ويمكن من الإعلان استخلاص حدود التجربة:
- المنصة: OpenBMC والأنظمة المضمنة ومتحكمات إدارة الخوادم.
- اللغة: C++ في مشروع enterprise حقيقي، بكود مثقل ومعقّد.
- نموذج التنفيذ: غير متزامن، أحادي الخيط، قائم على حلقة أحداث.
- وسيلة النقل بين الخدمات: D-Bus.
- مهمة الذكاء الاصطناعي: إعادة هيكلة جزء محدد من الكود.
- ما لم يكشف عنه الإعلان: النموذج، والأداة، وحجم الكود، والمقاييس الكمية، ونتائج الاختبارات.
البند الأخير مهم. فما دام النص الكامل غير متاح، لا يمكن استخلاص استنتاجات عن قوة الذكاء الاصطناعي أو ضعفه. ويشير الحديث عن «الألم» و«الحلول الترقيعية» إلى أن النتيجة ستكون على الأرجح مختلطة.
كيف تستفيد من هذه التجربة عمليًا
إذا كنت تنوي تكليف الذكاء الاصطناعي بإعادة هيكلة كود مضمن أو غير متزامن، فهناك عدة قواعد تنطبق أيًا كان النموذج المختار.
1. الاختبارات أولًا، ثم التعديلات. بدون مجموعة فحوص لن تميّز بين إعادة هيكلة نظيفة وتغيير صامت في السلوك. 2. جزّئ المهمة. معالجة عملية خلفية واحدة أو صنف واحد في كل مرة أكثر موثوقية من طلب «نظّف الوحدة». 3. اشرح السياق للنموذج. وضّح أن الكود يعمل في خيط واحد على حلقة أحداث، وأي الكائنات تملك الموارد، وأي واجهات D-Bus لا يجوز تغييرها. 4. افحص أعمار الكائنات يدويًا. فهذا أرجح موضع يتبيّن فيه أن كودًا يبدو سليمًا هو في الحقيقة خاطئ. 5. استعن بالأتمتة: clang-tidy وأدوات الفحص (sanitizers) والتحليل الساكن، مع تشغيل الكود على لوحة فعلية أو محاكاة. 6. أبقِ المراجعة البشرية لكل تغيير. فالذكاء الاصطناعي يسرّع العمل الروتيني، لكن المسؤولية عن سلوك البرنامج الثابت تبقى عليك.
بالنسبة إلى الفرق التي تصون قواعد كود C++ كبيرة، تظل هذه التجربة مفيدة أيًا كانت نتيجتها. فهي تبيّن عند أي مستوى من التعقيد يكفّ المساعد عن المساعدة ويبدأ في الإفساد. أما استنتاجات الكاتب الكاملة فمتاحة في المقال الأصلي على Habr.
أسئلة وأجوبة حول الخبر
ما أبرز التفاصيل حول ما هو OpenBMC ولماذا يؤلم العمل عليه؟
متحكم إدارة اللوحة الأم (BMC، baseboard management controller) حاسوب صغير مستقل على لوحة الخادم. يراقب الطاقة والمراوح وحساسات الحرارة، ويوفّر وحدة تحكم عن بُعد، ويستطيع إعادة تحميل البرنامج الثابت للمضيف حتى حين يكون النظام الرئيسي معطلًا. أما OpenBMC فهو توزيعة Linux مفتوحة المصدر لهذه المتحكمات. بدأ المشروع داخل Facebook، ومنذ عام 2018 يتطور تحت مظلة Linux Foundation بمشاركة كبار مصنّعي الخوادم ومزوّدي الخدمات السحابية. من الناحية المعمارية، هو مجموعة من العمليات الخلفية (daemons) الصغيرة. تتولى كل منها جزءًا محددًا: الحساسات، وجرد المكونات، والسجلات، وإدارة الطاقة. وتتو
ما أبرز التفاصيل حول async أحادي الخيط: مريح وخطير؟
يعني نموذج async أحادي الخيط وجود خيط واحد وحلقة أحداث واحدة. تُصاغ كل عملية، سواء كانت طلبًا عبر D-Bus أو قراءة حساس أو مؤقتًا، على هيئة استدعاء غير متزامن مع معالج. الميزة واضحة: لا سباقات تقليدية على البيانات، ولا حاجة إلى نشر mutex في أرجاء الكود. والعيب معروف أيضًا. يتحول المنطق إلى سلاسل من lambdas المتداخلة، ويجب تتبّع أعمار الكائنات يدويًا عبر shared_ptr وقوائم الالتقاط، ولا يمكن قراءة ترتيب التنفيذ إلا بوجود مصحّح الأخطاء (debugger) في اليد. في كود كهذا طُلب من الذكاء الاصطناعي أن يعيد النظام. وهذا اختبار إجهاد جيد. يرى النموذج اللغوي الأنماط المحلية بوضوح، لكن صحة
ما أبرز التفاصيل حول ما الذي يُختبر بالضبط؟
يطرح الكاتب سؤالين: هل يستطيع الذكاء الاصطناعي إنجاز إعادة الهيكلة، وفي ماذا يتخلف عن الإنسان تخلفًا لا جدال فيه حتى الآن. ويمكن من الإعلان استخلاص حدود التجربة: المنصة: OpenBMC والأنظمة المضمنة ومتحكمات إدارة الخوادم. اللغة: C++ في مشروع enterprise حقيقي، بكود مثقل ومعقّد. نموذج التنفيذ: غير متزامن، أحادي الخيط، قائم على حلقة أحداث. وسيلة النقل بين الخدمات: D-Bus. مهمة الذكاء الاصطناعي: إعادة هيكلة جزء محدد من الكود. ما لم يكشف عنه الإعلان: النموذج، والأداة، وحجم الكود، والمقاييس الكمية، ونتائج الاختبارات. البند الأخير مهم. فما دام النص الكامل غير متاح، لا يمكن استخلاص است
Access Frontier LLMs & Multimodal AI in One Workspace
Discover NomadNet AI (nomadnet.ai) — unified access to frontier language models, research synthesis, and multimodal workflows.
أهم ما في عالم الذكاء الاصطناعي — مرة كل أسبوع
سبع قصص مهمة فعلاً هذا الأسبوع، مختارة بعناية. بلا ضجيج ولا بيانات صحفية.
تم! تحقق من بريدك للتأكيد.