قام أحد المطورين بإطلاق خريطة لقاعدة الكود مكونة من ثلاث طبقات، تتيح لوكلاء البرمجة المدعومين بالذكاء الاصطناعي الحفاظ على "إدراك المكان" عبر الجلسات المختلفة.
لماذا يحتاج وكلاء الذكاء الاصطناعي إلى خريطة
تبني مساعدات البرمجة القائمة على الدردشة نموذجاً ذهنياً للمستودع (repository) فقط طالما ظلت نافذة الأوامر (prompt window) مفتوحة. وعندما تُغلق نافذة السياق (context window)، يتلاشى هذا النموذج، مما يضطر الوكيل إلى إعادة اكتشاف الرموز (symbols)، والواردات (imports)، وعلاقات الملفات من الصفر. هذا التكرار يهدر دورات الحوسبة ويجعل الوكيل أقل فائدة عندما يتنقل المطور بين الملفات أو يعود إلى مشروع ما بعد فترة انقطاع.
الطبقات الثلاث التي تشكل الخريطة
- الطبقة الهيكلية (Structural layer) – فهرس للرموز، واستدعاءات الدوال، وجمل الاستيراد. وهي تجيب على السؤال الساكن "ما الذي يستدعي ماذا".
- الطبقة الزمنية (Temporal layer) – إشارات مستمدة من git مثل معدلات تغير الملفات (file churn rates) وتاريخ الملكية. وهي توضح أي أجزاء من الكود تتغير بشكل متكرر ومن يميل إلى تعديلها.
- الطبقة السلوكية (Behavioral layer) – نمط الاستخدام في العالم الحقيقي المستخلص من سجل التعديل والتنقل الخاص بالوكيل نفسه. وهي تكشف عن الملفات التي تُفتح معاً بالفعل خلال جلسة البرمجة، مما يظهر "الجيران الحقيقيين" الذين يغفل عنهم التحليل الساكن.
تحمل الطبقة السلوكية الوزن الأكبر لأنها تعكس كيفية عمل المطورين (والوكلاء) فعلياً، وليس فقط كيفية ترابط الكود.
طريقتان لتزويد الوكيل بالخريطة
- المسار المحيط (Ambient Path) – ملخص موجز يتم حقنه في كل تفاعل. وهو يعطي الوكيل لقطة فورية مثل "أنت في الوحدة X، وهذه الرموز قريبة منك" دون الحاجة إلى استدعاءات إضافية.
- المسار العميق (Deep Path) – أدوات استعلام عند الطلب يمكن للوكيل استدعاؤها عندما يحتاج إلى تفاصيل أغنى، مثل قائمة بالملفات التي تتغير معاً بشكل متكرر أو جدول زمني للملكية الأخيرة.
إن الفصل بين المعلومات المحيطة والعميقة يحافظ على خفة الأوامر الروتينية مع الاستمرار في تقديم العمق عند الحاجة.
قواعد التصميم التي تحافظ على رشاقة النظام
- تجاوز خوادم اللغة الثقيلة (language servers). تعتمد الخريطة على التحليل السطحي (shallow parsing) بدلاً من الاستدلال الكامل للأنواع (type inference). الهدف ليس التفوق على المحللات الساكنة الناضجة، بل استكمالها برؤى سلوكية.
- حصر الرسم البياني لكل مشروع على حدة. لا يقوم النظام بربط رسم بياني عالمي للتبعيات عبر المستودعات المختلفة. هذا الحصر يقلل من استهلاك الذاكرة ويسرع عمليات التحديث.
- إعادة استخدام مخزن الذاكرة الحالي. تأتي سجلات تغيير الملفات من ذاكرة الوكيل الخاصة باستدعاءات الأدوات، مما يتجنب التخزين المكرر ويحافظ على اتساق مصدر البيانات.
بناء الخريطة في الممارسة العملية
- جمع البيانات الهيكلية عبر تمريرة سريعة على ملفات المصدر، واستخراج الرموز وأسطر الاستيراد.
- سحب المقاييس الزمنية من سجل git الخاص بالمستودع، مع ملاحظة الملفات التي تشهد أكبر عدد من عمليات الإرسال (commits) ومن قام بتأليفها.
- حصاد الإشارات السلوكية عن طريق تسجيل عمليات فتح الملفات، والتعديل، والتنقل التي يقوم بها الوكيل خلال جلسات البرمجة الحقيقية. تصبح هذه السجلات أساساً لمصفوفة "الحدوث المشترك" (co-occurrence matrix) التي تحدد الجيران السلوكيين.
- تعبئة المسار المحيط (Ambient Path) بقائمة قصيرة ومرتبة لأكثر الرموز والملفات صلة بالمهمة الحالية.
- إتاحة المسار العميق (Deep Path) كمجموعة من وظائف الاستعلام خفيفة الوزن (على سبيل المثال، "قائمة الملفات التي تم تعديلها معاً في الجلسات الأخيرة").
تلتقط الخطافات السريعة (Fast hooks) كل تعديل فور حدوثه؛ بينما تقوم عمليات المسح الخلفية الأبطأ بإعادة حساب إحصائيات التغير. معاً، يحافظان على حداثة الخريطة دون إبطاء سير عمل المطور.
دروس مستفادة من التجربة
- الفصل بين المعلومات المحيطة والمعلومات عند الطلب. الحفاظ على صغر حجم الملخص الموجود دائماً يمنع تضخم الرموز (token bloat)، بينما تظل الاستعلامات الأكثر ثراءً اختيارية.
- إعطاء الأولوية للسياق حسب المهمة. ترتيب الرموز المحيطة وفقاً لتركيز التعديل الحالي يؤدي إلى اقتراحات أكثر فائدة.
- التحديث بقوة ولكن بذكاء. تلتقط الخطافات السريعة التغييرات عالية التكرار؛ بينما تتعامل عمليات الفحص الدورية مع التغيرات منخفضة التكرار وتحولات الملكية.
- التحليل السطحي يتفوق من حيث السرعة. يضيف التحليل العميق للأنواع تأخيراً (latency) دون تقديم الرؤية السلوكية التي تشكل ميزة الخريطة.
الخلاصة: من خلال دمج الهيكل الساكن، والتاريخ المستمد من git، والاستخدام في العالم الحقيقي في نموذج وصول مدمج ثنائي المستويات، يمكن للمطورين منح وكلاء البرمجة المدعومين بالذكاء الاصطناعي خريطة دائمة لقاعدة الكود. كما أن الحفاظ على صغر حجم الملخص الموجود دائماً يمنع تضخم الرموز (token bloat).
