إنشاء مدقّق رموز برمجية بلغات متعددة باستخدام وكلاء Parallel Antigravity

1. مقدمة

3072ce11df4b71eb.jpeg

في هذا الدرس التطبيقي حول الترميز، ستنشئ نظامًا متعدد اللغات لتدقيق جودة الرموز البرمجية وإصلاحها تلقائيًا باستخدام تنسيق متوازٍ متعدد الوكلاء في Antigravity. بدلاً من المراجعة التقليدية واليدوية والخطية لأدلة خدمات متعددة ومنفصلة، ستستخدم وكلاء فرعيين متخصصين في الذكاء الاصطناعي لفحص حِزم اللغات المختلفة بالتوازي.

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

أهداف الدورة التعليمية

  • اكتشاف المشاريع: كيفية نشر وكيل منسّق لتحديد الدلائل واكتشاف لغات البرمجة في بنية أساسية معقّدة للخدمات المصغّرة
  • التوازية المنسَّقة: كيفية توزيع عمليات تدقيق الرموز واختبار الوحدات على وكلاء فرعيين مستقلين للذكاء الاصطناعي خاصين بلغة معيّنة في الوقت نفسه
  • الإشراف من خلال التدخّل البشري: كيفية توجيه وكيل منسّق لإنشاء خطة تدقيق وإيقافها مؤقتًا بأمان لمراجعتها والموافقة عليها قبل تنفيذها
  • الإصلاح الآلي: كيفية نشر وكلاء فرعيين متخصصين للمطوّرين لإعادة تصميم وحلّ مشاكل الترميز والامتثال ذات الأولوية العالية بشكل مستقل
  • عمليات التحقّق المتكرّرة: كيفية التحقّق من تغييرات الرمز البرمجي التي تم إنشاؤها باستخدام الذكاء الاصطناعي من خلال إعادة تشغيل مجموعات الاختبار تلقائيًا لضمان عدم حدوث أي تراجع في الأداء

المتطلبات

في هذا الدرس التطبيقي حول الترميز، ستحتاج إلى تثبيت الأدوات التالية على جهازك:

  • Google Antigravity
  • Git
  • إعداد لغة واحدة أو أكثر من اللغات التالية في بيئتك: Go وPython وC#‎ / .NET وNodeJS وJava

لِنبدأ.

2. إعداد البيئة

تأكَّد أولاً من تثبيت Antigravity.

ثانيًا، استنسِخ Online Boutique، وهو تطبيق تجريبي للخدمات المصغّرة على السحابة الإلكترونية:

git clone https://github.com/GoogleCloudPlatform/microservices-demo.git

أنشئ مشروعًا جديدًا في Antigravity باستخدام الرمز. في Antigravity، انقر على Create New Project ضمن Projects في الجانب الأيمن:

e8b14447dfcc289b.png

اختَر مجلد المستودع:

b39f0b1843ef1f3d.png

يمكنك اختيار وضع Default لـ Agent Security Settings واستخدام الاسم نفسه microservices-demo للمشروع.

3- استكشاف المحتوى

في بنية الخدمات المصغّرة، يتضمّن عادةً الرمز البرمجي خدمات متعدّدة موزّعة على مجلدات أو مستودعات أو حِزم برمجية متعدّدة، وينطبق ذلك أيضًا على تطبيق Online Boutique التجريبي.

قبل إطلاق الوكلاء، لنستكشف تخطيط المشروع. في هذه الخطوة الأولى، ستنشئ وكيل منسّق باستخدام Antigravity، وهو وكيل يكتشف الخدمات المصغّرة المختلفة بلغات مختلفة ضمن src/ وينسّق الوكلاء الفرعيين الخاصين بكل لغة للعمل على كل خدمة مصغّرة في الخطوات اللاحقة.

لنطلب أولاً من وكيل التنسيق استكشاف قاعدة الرموز البرمجية وتحديد الخدمات المتوفّرة في الأدلة واللغات التي تستخدمها.

في Antigravity، ابدأ محادثة جديدة في مشروع microservices-demo الذي أنشأته سابقًا. بالنسبة إلى النموذج، يمكنك استخدام أحدث نموذج Gemini بمستوى تفكير متوسط:

1a88687c5fe37b04.png

جرِّب الطلب التالي:

Identify all the microservices located under the src/ directory,
detect which programming language each service is written in, and
output the list as a clean markdown table showing: Service Name,
Directory, and Primary Language.

في النهاية، يجب أن تعرض Antigravity جدولاً جميلاً للخدمات ولغتها الأساسية، على النحو التالي:

2e37b2e607596573.png

4. اختيار اللغات

بعد تحديد مسار قاعدة الرموز، عليك اختيار اللغات التي تريد العمل بها. يجب التأكّد من توفّر برامج التجميع/الأدوات اللازمة للغات التي تختارها (مثل أداة dotnet للغة C#‎، وأداة javac للغة Java، وما إلى ذلك).

بعد اختيار اللغات التي تريد العمل بها، من المهم جدًا التحقّق من سلامة قاعدة الرموز البرمجية الحالية من خلال تنفيذ اختبارات الوحدات ذات الصلة بهذه اللغة.

يمكنك استخدام وكلاء فرعيين متخصّصين ومتوازيين لتشغيل مجموعات الاختبارات بكل لغة، ما يبرز القوة الأساسية لسير عمل الوكلاء المتعدّدين، أي تشغيل اختبارات معزولة بشكل متزامن في مساحات عمل منفصلة خاصة بكل لغة.

عدِّل الطلب التالي ونفِّذه بما يتناسب مع بيئتك:

I have [C#, Python, Go, Java, Node.js] setup locally. 
Run the unit tests for services in these languages 
in parallel subagents and report back in a clean markdown 
on their pass/fail status.

يجب أن ترى عدة برامج آلية تجري اختبارات بكل لغة. احرص على مراجعة كل وكيل فرعي عند طلب أذونات لتشغيل الأدوات كما هو موضّح أدناه:

a3c1834909975020.png

بعد انتهاء جميع الوكلاء الفرعيين، من المفترض أن تتلقّى تقريرًا جيدًا عن اختبارات الوحدات، على غرار ما يلي:

e8ce8e16f195ea8c.png

5- التخطيط لعملية التدقيق

الخطة

في مهام سير العمل المعقّدة، يمكن أن يؤدي إطلاق تغييرات في الرموز البرمجية بدون خطة إلى حدوث تعارضات. نريد وضع مخطط تفصيلي منظَّم وشفاف لما ننوي تدقيقه. ستطلب من وكيل التنسيق تصميم خطة تدقيق تتضمّن عمليات التحقّق من جودة الرمز البرمجي، والتعامل مع الاستثناءات، وعمليات التحقّق من سلامة طلبات البحث، وما إلى ذلك.

لضمان الإشراف البشري (التفاعل مع الذكاء الاصطناعي)، سيكتب المنسّق الخطة في عنصر ثم يتوقف فورًا لتراجعها.

جرِّب الطلب التالي لوضع خطة تدقيق:

We want to audit these microservices for code quality, 
exception handling and database query formatting standards 
for the languages I have set up locally. Design an audit plan 
detailing what you will check and save it as an Audit Plan artifact.
Do not execute the audit yet. Stop after writing the plan and wait
for my instructions.

من المفترض أن تظهر أداة "خطة التدقيق" في المحادثة:

a7eb6b75b28fd788.png

مراجعة

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

انقر على "خطة التدقيق" التي تم إنشاؤها، وسيظهر لك الخطة التفصيلية:

9b36c0ca827fdc53.png

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

6. تنفيذ عملية التدقيق

تنفيذ

بعد الموافقة على خطة التدقيق، لننفّذ عملية التدقيق. سيطلق وكيل المنسّق وكلاء فرعيين متوازيين مستقلين لكل حزمة لغة. يعمل كل وكيل بشكل متزامن في مجلد الخدمة الخاص به، ما يمنع تعارض الملفات ويسرّع عملية الفحص. سيدمج وكيل التنسيق النتائج في لوحة بيانات جودة موحّدة.

إليك الطلب الذي يمكنك تجربته:

Execute the audit plan by spawning the parallel language subagents.
Once they finish scanning, collect their findings into an audit 
report artifact, sorted by language and then priority. Include the 
file paths, line ranges, snippets, and explanation of why it is a 
finding. Stop after writing the report.

من المفترض أن تظهر لك وكلاء متعدّدون مرة أخرى:

9c282924eb33cc34.png

احرص على مشاهدة كل حساب فرعي ومنحه الأذونات اللازمة لتنفيذ التدقيق. في النهاية، من المفترض أن يظهر لك عنصر "تقرير التدقيق":

6706295f5cf7292b.png

مراجعة

بعد فتح "تقرير التدقيق"، من المفترض أن تظهر لك أيضًا نتائج تفصيلية لكل لغة. على سبيل المثال، إليك مشكلة ذات أولوية عالية من cartservice في C#:

aca90d0da393bffc.png

ألقِ نظرة على بقية تقرير التدقيق للاطّلاع على النتائج.

7. المعالجة

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

هناك طرق مختلفة لمحاولة تنفيذ ذلك:

  1. يمكنك إنشاء وكيل لكل لغة والسماح لجميع الوكلاء بحلّ جميع المشاكل في الوقت نفسه. قد ينجح ذلك، ولكن قد يكون من الصعب تتبُّع كل هذه المعلومات ومراجعتها في الوقت نفسه.
  2. يمكنك إنشاء وكيل واحد للغة واحدة في كل مرة والسماح له بمعالجة المشاكل بهذه اللغة. سيكون ذلك أسهل في الإدارة، ولكن سيظل عليك الوثوق بالوكيل لإجراء تغييرات متعددة على ملفات متعددة.
  3. يمكنك أن تطلب من وكيل واحد معالجة مشكلة واحدة في كل مرة، ثم التحقّق من النتيجة قبل الانتقال إلى المشكلة التالية. هذا نهج أكثر تحفظًا، ولكنّه يضمن أيضًا إطلاعك على كل تغيير.

سنختار النهج الأكثر تحفظًا رقم 3 مع الطلب التالي:

Select the top high-priority finding in [pick a language, e.g., C#]
and remediate the finding. Show me the code changes once complete.

بعد بضع ثوانٍ، من المفترض أن يعمل الوكيل على حلّ المشكلة ذات الأولوية القصوى باللغة التي اخترتها.

في النهاية، قد تحصل أيضًا على عنصر شرح يعرض لك التغييرات التي أجراها الوكيل:

9e79c7bb1e102aee.png

اختياري: في هذه المرحلة، يمكنك أن تطلب من الوكيل تغيير عملية التنفيذ، أو إذا كنت راضيًا عن التغييرات، يمكنك أن تطلب منه إضافة اختبار وحدة جديد لتغطية التغييرات.

8. التحقق

في مجال تطوير البرامج، لا يكتمل الإصلاح إلا بعد التحقّق منه. في هذه الخطوة الأخيرة، يمكننا أن نطلب من الوكيل تشغيل مجموعة الاختبارات للتأكّد من أنّ تغييرات الرمز لم تؤدِّ إلى حدوث أخطاء، وإعادة تشغيل أداة فحص التدقيق للتأكّد من حلّ المشكلة بالكامل.

تعرض هذه الخطوة حلقة الملاحظات الآلية الكاملة التي تتضمّن التخطيط والمسح الضوئي والإصلاح والتحقّق.

وجِّه الطلب التالي:

Rerun the unit tests for the changed language. If they pass, rerun
the relevant audit agent to check if the finding is resolved. If it 
is resolved, mark the issue as resolved in the audit report.

من المفترض أن يظهر لك وكيل فرعي Test Runner يبدأ في تشغيل الاختبارات، ثم يظهر لك وكيل فرعي Auditor يعدّل "تقرير التدقيق". في النهاية، من المفترض أن يظهر "تقرير التدقيق" معدَّلاً بالحالة الأخيرة:

36ac20baa92d1602.png

تم حلّ مشكلة واحدة! يمكنك الآن الانتقال إلى بقية المشاكل، ربما باستخدام نهج أقل تحفظًا هذه المرة حيث تسمح للوكلاء بإنجاز المزيد من العمل قبل المراجعة.

9- تهانينا

تهانينا! لقد أكملت للتو مراجعة معقّدة للرموز البرمجية بلغات متعددة وسير عمل آليًا لإصلاح المشاكل باستخدام Antigravity.

من خلال الاستفادة من بنية Antigravity المتعددة الوكلاء، لم تتمكن من أتمتة عمليات التحقّق الثابتة فحسب، بل تمكنت أيضًا من تنظيم فريق آلي لضمان الجودة. وبينما كان وكلاء اللغة المتخصّصون يعملون في الوقت نفسه على حلّ المشاكل الخاصة باللغة، جمع وكيل المنسّق خطة وتقريرًا مركزيين، ثم أدار عملية إعادة بناء مستهدَفة للرمز البرمجي.

الأفكار الرئيسية

  • التوازية المنسَّقة: تعلّمت كيفية توزيع عمليات التدقيق والاختبار على وكلاء فرعيين مستقلين خاصين بلغة معيّنة يعملون بالتوازي، ما يتيح تجنُّب الاختناقات في المراجعة الخطية.
  • Human-in-the-Loop: من خلال مراجعة "خطة التدقيق" التي تم إنشاؤها وإضافة تعليقات توضيحية إليها قبل تنفيذها، حافظت على الإشراف على العمليات المستقلة.
  • الإصلاح والتحقّق الآليان: رأيت كيف يمكن لوكلاء الذكاء الاصطناعي ألا يقتصروا على تشخيص التناقضات في جودة الرمز البرمجي، بل يمكنهم أيضًا إعادة هيكلة الرمز البرمجي والتحقّق من التغييرات التي يجرونها بأنفسهم مقارنةً بحِزم الاختبار المحلية.