مشاركة خبرة استخدام نمط GitHub Copilot Agent
Categories:
يلخص هذا المقال كيفية استخدام نمط GitHub Copilot Agent ويشير إلى خبرة التشغيل الفعلية.

الإعدادات المسبقة
- استخدام VSCode Insider؛
- تثبيت إضافة GitHub Copilot (الإصدار التجريبي)؛
- اختيار نموذج Claude 3.7 Sonnet (الإصدار التجريبي)، حيث يظهر هذا النموذج أداءً ممتازًا في كتابة الكود، كما أن النماذج الأخرى تتميز بالسرعة، والقدرة متعددة الوسائط (مثل التعرف على الصور)، والقدرة على الاستنتاج؛
- اختيار نمط العمل Agent.

خطوات التشغيل
- افتح علامة تبويب “Copilot Edits”؛
- أضف المرفقات مثل “Codebase” و “Get Errors” و “Terminal Last Commands” إلخ؛
- أضف ملفات “Working Set”، والتي تحتوي افتراضيًا على الملفات المفتوحة حاليًا، ويمكن أيضًا اختيار ملفات أخرى يدويًا (مثل “Open Editors”)؛
- أضف “Instructions”، وأدخل الكلمات المفتاحية التي يجب أن ينتبه إليها Copilot Agent بشكل خاص؛
- انقر على زر “Send” لبدء المحادثة ومراقبة أداء Agent.
ملاحظات أخرى
- يمكن لـ VSCode إنتاج تنبيهات خطأ أو تحذير من خلال ميزة lint المقدمة بواسطة ملحق اللغة، ويمكن لـ Agent تصحيح الكود تلقائيًا وفقًا لهذه التلميحات.
- مع تعمق المحادثة، قد تنحرف تعديلات الكود التي يولدها Agent عن التوقعات. يُقترح أن تركز كل جلسة على موضوع واضح ومحدد، وتجنب المحادثات الطويلة جدًا؛ بعد تحقيق الهدف قصير المدى، أنهِ الجلسة الحالية وابدأ مهمة جديدة.
- توفر خيار “Add Files” تحت “Working Set” خيار “Related Files”، والذي يمكنه اقتراح ملفات ذات صلة.
- انتبه إلى التحكم في عدد أسطر ملف الكود الواحد لتجنب استهلاك الـ token بشكل أسرع.
- يُقترح أولاً إنشاء كود أساسي، ثم كتابة حالات الاختبار، مما يسهل على Agent تصحيح الكود والتحقق من نفسه وفقًا لنتائج الاختبار.
- لتحديد نطاق التعديل، يمكن إضافة التكوين التالي إلى settings.json للإشارة إلى أنه يُسمح فقط بتعديل الملفات الموجودة في الدليل المحدد، كمعلومة إرشادية فقط:
"github.copilot.chat.codeGeneration.instructions": [
{
"text": "يُسمح فقط بتعديل الملفات الموجودة في الدليل ./script/ ولا يُسمح بتعديل الملفات الموجودة في أدلة أخرى."
},
{
"text": "إذا تجاوز عدد أسطر ملف الكود المستهدف 1000 سطر، يُقترح وضع الدالة الجديدة في ملف منفصل والقيام بالاستدعاء من خلال الإشارة؛ إذا أدى التعديل الناتج إلى تجاوز طول الملف، يمكن التغاضي مؤقتًا عن الالتزام الصارم بهذه القاعدة."
}
],
"github.copilot.chat.testGeneration.instructions": [
{
"text": "إنشاء حالات اختبار في ملف الاختبار الوحدوي الحالي."
},
{
"text": "يجب تشغيل حالات الاختبار للتحقق بعد تعديل الكود."
}
],
الأسئلة الشائعة
عدم الحصول على كود أعمال مطلوب عند إدخال المتطلبات
يجب تقسيم المهام الكبيرة إلى مهام أصغر، مع معالجة مهمة صغيرة واحدة فقط في كل جلسة محادثة. هذا ناتج عن تشتيت انتباه نموذج اللغة الكبير عند وجود سياق كثير.
يجب أن ت揣ن بنفسك السياق الذي يتم إدخاله في محادثة واحدة، حيث أن كثرة أو قلة السياق قد تؤدي إلى عدم فهم المتطلبات.
قام نموذج DeepSeek بحل مشكلة تشتيت الانتباه، لكنه يحتاج إلى استخدام Deepseek API في cursor. لا نعرف بعد كيف سيكون الأداء.
مشكلة البطء في الاستجابة
يجب فهم آلية استهلاك الـ token، حيث يكون إدخال الـ token رخيصًا ويستغرق وقتًا أقل، بينما يكون إخراج الـ token أكثر تكلفة وواضحًا أبطأ.
افترض أن ملف كود كبير جدًا، ولكن الأسطر التي تحتاج إلى تعديل في الواقع لا تتجاوز ثلاثة أسطر، ولكن بسبب كثرة السياق، يكون الإخراج كثيرًا أيضًا، مما يؤدي إلى استهلاك الـ token بسرعة كبيرة، ويكون الاستجابة بطيئًا.
لذلك، يجب التفكير في التحكم في حجم الملف، وعدم كتابة ملفات كبيرة ووظائف كبيرة. يجب تقسيم الملفات الكبيرة والوظائف الكبيرة في الوقت المناسب، والقيام بالاستدعاء من خلال الإشارة.
مشكلة فهم الأعمال
ربما يعتمد فهم المشكلة إلى حد ما على التعليقات في الكود، وملفات الاختبار. إضافة تعليقات كافية في الكود، وحالات اختبار، يساعد Agent على فهم الأعمال بشكل أفضل.
الكود الأعمال الذي يولده Agent نفسه يحتوي على تعليقات كافية، وفحص هذه التعليقات يمكن أن يحدد بسرعة ما إذا كان Agent قد فهم المتطلبات بشكل صحيح.
الحاجة إلى debug لفترة طويلة بعد إنشاء كمية كبيرة من الكود
يمكن التفكير في إنشاء حالات اختبار بعد إنشاء الكود الأساسي لسمة معينة، ثم تعديل المنطق الأعمال، بحيث يمكن لـ Agent إجراء debug بنفسه والتحقق من نفسه.
سوف يسأل Agent عما إذا كان مسموحًا بتشغيل أمر الاختبار، وبعد انتهاء التشغيل، سوف يقرأ مخرجات الطرفية بنفسه لتحديد ما إذا كان الكود صحيحًا. إذا لم يكن كذلك، فسوف يقوم بالتعديل وفقًا لمعلومات الخطأ. وتتكرر هذه العملية حتى ينجح الاختبار.
بمعنى آخر، يجب أن تفهم الأعمال أكثر، ولا يكون هناك الكثير من الكتابة اليدوية المطلوبة. إذا لم يكن كود الاختبار و كود الأعمال صحيحين، لا يستطيع Agent كتابة حالات اختبار صحيحة وفقًا للأعمال، ولا يستطيع كتابة كود أعمال صحيح وفقًا لحالة الاختبار، وفي هذه الحالة فقط ستظهر حالة debug لفترة طويلة.
ملخص
فهم آلية استهلاك الـ token لنموذج اللغة الكبير، يكون السياق المدخل رخيصًا، بينما يكون الكود المخرج أ贵، وقد يُحسب جزء الكود غير المعدل في الملف كمخرج، والدليل هو أن الكثير من الكود الذي لا يحتاج إلى تعديل يخرج ببطء أيضًا.
لذلك يجب التحكم في حجم ملف واحد قدر الإمكان، ويمكن الشعور بسرعة استجابة Agent عند التعامل مع الملفات الكبيرة والملفات الصغيرة أثناء الاستخدام، وهذا الاختلاف واضح جدًا.