قد ينتج وكلاء البرمجة بالذكاء الاصطناعي شيفرة Go قابلة للتشغيل، لكن ذلك لا يعني أنها تستخدم أحدث صياغات اللغة أو إضافات مكتبتها القياسية. فأنماط Go الأقدم حاضرة بكثافة أكبر في بيانات التدريب، بينما قد لا تظهر الميزات الأحدث ضمن البيانات التي اعتمد عليها النموذج. لمعالجة هذه الفجوة، أنشأ فريق GoLand في JetBrains مشروعاً مفتوح المصدر باسم Modern Go Guidelines، يزوّد الوكلاء بإرشادات عملية مرتبطة بإصدار Go المعلن في المشروع.
ما الذي يقدمه المشروع؟
تغطي الإرشادات ميزات اللغة وإضافات المكتبة القياسية المفيدة في إصدارات Go من 1.0 إلى 1.27، إلى جانب الأنماط التي يتعامل معها محلل go modernize. ولا يحصل الوكيل على إرشادات لإصدارات أحدث من الإصدار المستخدم في المشروع. فإذا احتوى ملف go.mod على التوجيه go 1.25، يمكن للوكيل استخدام إرشادات Go 1.25 والإصدارات الأقدم، لكنه لن يتلقى اقتراحات تعتمد على Go 1.26 أو Go 1.27.
يعني ذلك، وفق المثال الوارد في المادة، أن الوكيل يستطيع اقتراح sync.WaitGroup.Go، التي قدمها Go 1.25، لكنه لن يقترح errors.AsType التي تتطلب Go 1.26. هذا الربط بين الإرشادات وإصدار المشروع يهدف إلى تقليل احتمال توليد شيفرة تحتاج إلى إصدار أحدث من البيئة المتاحة، كما يقلل كمية السياق غير الضروري التي يقرأها الوكيل.
إفصاح تدريجي بدلاً من تحميل كل السياق
يتضمن المكوّن الإضافي أداة سطر أوامر باسم go-modern-guidelines ومهارة تعليمات باسم use-modern-go. وتدعم الأداة أمرين رئيسيين:
- list: يعرض إرشادات قصيرة وذات صلة بملف Go أو بإصدار محدد.
- explain: يقدم شرحاً أكثر تفصيلاً ومثالاً يقارن بين النمط القديم والبديل الحديث.
تقترح التعليمات أن يشغّل الوكيل أمر list للملف المعني قبل تعديله، ثم يستخدم explain عندما يحتاج إلى فهم قاعدة محددة. ويمكن طلب الإرشادات لملف مثل ./internal/worker/worker.go، أو تحديد الإصدار مباشرة باستخدام --go-version 1.27. يبدأ ناتج list بأحدث الإرشادات المنطبقة، ويتضمن معرّفاً ثابتاً لكل قاعدة، مثل sync_waitgroup_go وtesting_t_context وjson_omitzero.
أمثلة على الأنماط الحديثة
تتضمن الإرشادات أمثلة عملية على استبدال أنماط شائعة بأخرى أحدث، مثل استخدام slices.Contains بدلاً من حلقة بحث مكتوبة يدوياً، وmin وmax بدلاً من المقارنات اليدوية، وcmp.Or بدلاً من سلسلة تختار أول قيمة غير صفرية.
كما تشرح استخدام sync.WaitGroup.Go بدلاً من توزيع عمليات Add وgo وDone بصورة منفصلة، واستخدام errors.AsType للمطابقة الآمنة نوعياً للأخطاء في Go 1.26 وما بعده، وnew(value) عند الحاجة إلى مؤشر لقيمة في Go 1.26 وما بعده. وفي Go 1.27، تعرض الإرشادات strings.CutLast وbytes.CutLast بديلاً عن LastIndex والتقطيع اليدوي.
ويوضح المثال الخاص بـ generic_methods، المتاح منذ Go 1.27، كيف يمكن نقل عملية عامة من دالة مساعدة على مستوى الحزمة إلى أسلوب تابع للنوع عندما تكون العملية مرتبطة طبيعياً بذلك النوع. ويعيد أمر explain شرح القاعدة مع مثال قبل وبعد، كما يمكنه شرح عدة قواعد في استدعاء واحد.
ما الذي يتغير عملياً للمطورين؟
القيمة الأساسية هنا ليست تحديث شيفرة قديمة تلقائياً، بل إعطاء الوكيل مرجعاً صغيراً ومحدداً أثناء توليد الشيفرة أو تعديلها. ويتكامل المشروع مع أدوات مثل go fix بدلاً من أن يحل محلها: فإرشادات Modern Go Guidelines تساعد الوكيل على البدء بنمط حديث، بينما يساعد go fix في تحديث الأنماط الموجودة مسبقاً في قاعدة الشيفرة.
يمكن تثبيت المكوّن الإضافي من سوق الإضافات أو من مستودع محلي. ويتطلب التكامل وجود سلسلة أدوات Go ضمن PATH. عند الاستخدام الأول، يثبت التكامل أداة سطر الأوامر عبر go install ويخزنها في ذاكرة تخزين محلية، من دون تعديل المشروع نفسه. وتعرض المادة أوامر لإضافة المستودع كسوق Claude وتثبيت modern-go-guidelines وتفعيل /use-modern-go، كما تذكر مساراً لاختبار مستودع محلي قبل نشره أو تحديثه، مع أمثلة تتضمن Claude وCodex.
قراءة certi.news
يعالج المشروع مشكلة عملية في استخدام وكلاء الذكاء الاصطناعي: صحة الشيفرة من ناحية البناء لا تضمن ملاءمتها لإصدار اللغة أو اعتمادها لأفضل الأنماط المتاحة. ربط الإرشادات بملف go.mod يضع حداً تقنياً واضحاً لما يمكن للوكيل اقتراحه، بينما يقلل الإفصاح التدريجي من إغراقه بسياق لا يحتاج إليه. لكن الأداة لا تلغي الحاجة إلى مراجعة المطور أو الاختبارات؛ فهي تقدم قواعد وأمثلة للوكيل، ولا يثبت المصدر أنها تتحقق بصورة مستقلة من كل تغيير ينتجه. كما أن التغطية المعلنة تصل إلى Go 1.27، لذلك ستظل الإرشادات الخاصة بالإصدارات الأحدث بحاجة إلى الإضافة والتحديث.
كيف أعددنا هذا الخبر؟
اعتمد الخبر على المصدر الأصلي الموضح أعلاه. قد نستخدم أدوات آلية للمساعدة في الاستخراج والتصنيف والصياغة،
لكن النشر يخضع لقواعد تمنع المحتوى المكرر والقصير أو الروتيني منخفض القيمة.
اقرأ سياستنا التحريرية.