العمل مع المشاريع الكبيرة

إدارة قواعد الكود الكبيرة في Bob Shell. فهم تحسين نافذة السياق ومعالجة الملفات وأفضل الممارسات للمشاريع على نطاق المؤسسات.

حدود السياق في المشاريع الكبيرة

يستخدم Bob نماذج لغوية كبيرة لها نافذة سياق محدودة. وهذا هو الحد الأقصى لكمية النص (مقاساً بالـ tokens) الذي يمكن لـ Bob معالجته في آنٍ واحد. إذا كان السياق كبيراً جداً، فقد لا يتمكن Bob من فهم طلبك أو توليد ردود دقيقة.

تشمل نافذة السياق:

  • موجّه النظام (تعليمات Bob)
  • سجل المحادثة
  • محتوى أي ملفات تُدرجها في موجّه المحادثة
  • مخرجات أي أوامر أو أدوات يستخدمها Bob

استراتيجيات إدارة السياق

  1. كن محدداً: عند الإشارة إلى ملفات أو كود، استخدم مسارات ملفات وأسماء وظائف محددة. تجنّب الإشارات المبهمة مثل "الملف الرئيسي".
  2. أشر إلى الملفات بدقة: أدرج ملفات محددة في موجّه المحادثة باستخدام مسارها (مثل src/components/MyComponent.tsx)، أو أشر إلى hash commit لتوجيه Bob نحو حالة Git معينة.
  3. قسّم المهام: قسّم المهام الكبيرة إلى مهام فرعية أصغر وأكثر قابلية للإدارة. هذا يساعد في الحفاظ على تركيز السياق.
  4. لخّص عند الحاجة: إذا كنت بحاجة للإشارة إلى كمية كبيرة من الكود، فكّر في تلخيص الأجزاء ذات الصلة في موجّهك بدلاً من إدراج الكود بأكمله.
  5. أعطِ الأولوية للتاريخ الحديث: يقوم Bob تلقائياً بضغط الرسائل القديمة في سجل المحادثة للبقاء ضمن نافذة السياق. انتبه لهذا وأعد إدراج السياق المهم عند الحاجة.
  6. إدارة استخدام أدوات MCP: يمكنك تعطيل وتمكين أدوات محددة في خدمة MCP لاستخدام ما تحتاجه فقط، مما يقلل من استهلاك السياق من تعريفات الأدوات غير المستخدمة.
  7. استخدم subagents أو subtasks للعمل المعزول: للأعمال الكبيرة المستقلة، فكّر في استخدام subagent أو subtask. كلاهما يعمل في نافذة سياق منفصلة خاصة به، مما يُبقي جلسة الـ terminal الرئيسية خفيفة. راجع الأدوات للاطلاع على تفاصيل spawn_subagent وstart_subtask.

مثال: إعادة هيكلة ملف كبير

إذا كنت بحاجة لإعادة هيكلة ملف TypeScript كبير (src/components/MyComponent.tsx)، فإليك نهجاً فعّالاً:

  1. احصل على نظرة عامة أولية:
    List the functions and classes in src/components/MyComponent.tsx
  2. استهدف وظائف محددة:
    Refactor the `processData` function in src/components/MyComponent.tsx to use async/await instead of Promises.
  3. أجرِ تغييرات تدريجية: أجرِ تغييرات صغيرة ومتزايدة، راجع كل خطوة واعتمدها.

من خلال تقسيم المهمة وتوفير سياق محدد، يمكنك العمل بفعالية مع الملفات الكبيرة ضمن حدود نافذة السياق.

ما رأيك في هذا الموضوع؟