# SubAgent: Search

## الغرض

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

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

## متى يُستخدم

- عندما تحتاج إلى الإجابة عن سؤال يتطلب ثلاث عمليات بحث أو قراءات مميزة أو أكثر. مثال: «كيف يُوصَّل التحقق من الهوية من مسار تسجيل الدخول نزولاً إلى متجر الجلسات؟»
- عندما يكون الهدف غير معروف — لا تعرف بعد أي ملف أو وحدة أو رمز تنظر إليه.
- عندما تحتاج إلى نظرة عامة هيكلية على منطقة غير مألوفة من المستودع قبل إجراء تغييرات.
- عندما تريد التحقق من مرجعيات متعددة (مثل أي من عدة مساعدات متشابهة الأسماء يُستدعى فعلاً في الإنتاج).
- عندما تحتاج إلى ملخص بأسلوب أدبي: «اسرد كل مكان يستورد X وصنِّفه حسب موقع الاستدعاء».

لا تستخدم Search عندما:

- تعلم بالفعل الملف والسطر الدقيقين. استدعِ `Read` مباشرة.
- استدعاء `Grep` أو `Glob` واحد سيجيب عن السؤال. شغِّله مباشرة؛ إرسال وكيل فرعي يُضيف عبئاً.
- تتطلب المهمة التعديل أو تشغيل أوامر أو أي أثر جانبي. Search للقراءة فقط بالتصميم.
- تحتاج إلى مخرج حرفي دقيق لاستدعاء أداة. الوكلاء الفرعيون يُلخِّصون؛ لا يُرحِّلون النتائج الخام.

## مستويات الشمول

اختر المستوى الذي يطابق أهمية السؤال.

- `quick` — عمليات بحث قليلة موجهة، إجابة ببذل أفضل الجهد. استخدمه عندما تحتاج إلى مؤشر سريع (مثل «أين منطق تحليل متغير البيئة؟») وتكون مرتاحاً للتكرار إذا كانت الإجابة ناقصة.
- `medium` — الافتراضي. عدة جولات من البحث، والتحقق من المرشحين، وقراءة الملفات الأكثر صلة بالكامل. استخدمه لأسئلة «ساعدني على فهم هذه المنطقة» النموذجية.
- `very thorough` — استكشاف شامل. سيُلاحق الوكيل الفرعي كل خيط محتمل، ويقرأ السياق المحيط، ويتحقق من النتائج مرتين قبل التلخيص. استخدمه عندما تكون الصحة مهمة (مثل مراجعة الأمان، تخطيط الترحيل) أو عندما تسبب إجابة ناقصة إعادة العمل.

الشمول الأعلى يكلف وقتاً ورموزاً أكثر داخل الوكيل الفرعي، لكن تلك الرموز تبقى داخله — فقط الملخص النهائي يعود إلى الوكيل الرئيسي.

## الأدوات المتاحة

يملك Search الوصول إلى جميع أدوات القراءة فقط التي يستخدمها الوكيل الرئيسي، ولا شيء آخر:

- `Read` — لقراءة ملفات محددة، بما في ذلك النطاقات الجزئية.
- `Grep` — لعمليات بحث المحتوى عبر الشجرة.
- `Glob` — لتحديد مواقع الملفات حسب نمط الاسم.
- `Bash` في وضع القراءة فقط — للأوامر التي تفحص الحالة دون تعديلها (مثل `git log`، `git show`، `ls`، `wc`).
- `WebFetch` و`WebSearch` — لقراءة التوثيق الخارجي عندما يكون ذلك السياق مطلوباً.

أدوات التعديل (`Write`، `Edit`، `NotebookEdit`)، وأوامر الصدفة التي تعدل الحالة، وأدوات الرسم البياني للمهام (`TaskCreate`، `TaskUpdate`، إلخ) غير متاحة عمداً.

## ملاحظات

- أعطِ وكيل Search الفرعي سؤالاً محدداً، لا موضوعاً. «اسرد كل مستدعٍ لـ `renderMessage` ولاحظ أيها يمرر سمة مخصصة» يُعيد إجابة مفيدة؛ «أخبرني عن التصيير» لا يفعل ذلك.
- يُعيد الوكيل الفرعي ملخصاً. إذا كنت بحاجة إلى مسارات ملفات دقيقة، فاطلبها صراحة في موجهك.
- الأسئلة المستقلة المتعددة يُفضل إرسالها كوكلاء Search فرعيين متوازيين بدلاً من موجه طويل واحد، حتى يتمكن كل منها من التركيز.
- لأن Search لا يستطيع التعديل، اقرنه بخطوة تعديل متابعة في الوكيل الرئيسي بمجرد أن تعرف ما الذي يجب تغييره.
- عامل إخراج Search كدليل، لا كحقيقة مطلقة. لأي شيء حامل للعبء، افتح الملفات المذكورة بنفسك قبل التصرف.
