مولّد الوكلاء الفرعيين (Subagent) لـ Claude Code
صف مهمة واحدة محددة بوضوح تريد تفويضها - مراجعة طلبات السحب بحثًا عن ثغرات أمنية، كتابة اختبارات الوحدة، البحث في كيفية عمل شيء ما عبر قاعدة الشيفرة - واحصل على ملف .claude/agents/<الاسم>.md كامل تضعه مباشرة في Claude Code. يكتب الذكاء الاصطناعي المحتوى؛ ويتم التحقق من الاسم وترويسة YAML وقائمة الأدوات المسموح بها جميعها مقابل قواعد الوكلاء الفرعيين الحقيقية أثناء التحرير، ويُنبَّه تلقائيًا عندما يحمل وصفٌ للقراءة فقط أدواتٍ قادرة على الكتابة.
١. صِف المهمة التي تريد تفويضها
اللغة العادية تكفي تمامًا. فكّر في جزء عمل محدّد بوضوح تثق بتسليمه لمتخصص وتقرأ فقط ملخصه - هذا بالضبط ما يُجيده العامل الفرعي (subagent).
أو ابدأ من واحد من هذه
سيظهر .claude/agents/<name>.md هنا، قابلًا للتحرير بالكامل، مع فحص الاسم والوصف وفق قيود العوامل الفرعية الحقيقية أثناء الكتابة.
ما الذي يحتويه ملف subagent فعليًا
الـ subagent هو ملف Markdown واحد: YAML frontmatter في الأعلى، ومتن Markdown أسفله. المتن ليس تلميحًا أو إضافة - إنه system prompt الكامل للـ subagent، ويحل محل الافتراضي في Claude Code طوال مدة تشفيل ذلك الـ subagent. ويبدأ أيضًا في نافذة سياق خاصة به، دون نقل أي شيء من محادثتك الحالية، لذلك يجب كتابة كل ما يجب أن يعرفه داخل هذا المتن.
توجد حقلان مطلوبان فقط من الـ frontmatter. يستخدم name الحروف الصفيرة والشرطات فقط، ولا يحتوي على نقطتين رأسيتين، ويجب أن يكون فريدًا بين subagents الخاصة بك - وهو اسم الملف وطريقة استدعاء الـ subagent يدويًا. description هو الحقل الذي يستحق التفكير الجيد، لأنه النص الوجيد الذي يقرأه Claude عند البت في أي subagent يجب أن يتسلّم مهمة ما. سيتنازع subagent-ان بوصفين مبهمين على عمل كل منهما.
كل شيء آخر اختياري، وهذا المُنشئ يوصّل كلاً منها فعليًا داخل الملف: tools (قائمة سماح مفصولة بفواصل - اتركها فارضة لوراشة كل الأدوات)، disallowedTools (قائمة الحظر)، model (sonnet، opus، haiku، fable، معرّف نموذج كامل، أو inherit)، permissionMode، maxTurns (سقف لعدد التكرارات العاملة قبل التوقف وإرجاع مخرجات جزئية)، skills (أسماء مهارات تُحمّل مسبقًا في سياقه) وcolor المخصّص للعرض فقط.
أكثر شيء قيّم يمكنك فعله بهذه القائمة هو الحفاظ على tools ضيّقة. مراجع كود يملك فقط Read, Glob, Grep لا يمكنه إعادة كتابة فرعك بينما هو "يساعد"، بفش النظر عن مسار المحادثة. تقارن هذه الأداة قائمة السماح بما تقوله وصفك عن الـ subagent، وتُشير إلى مهمة يُفترض أنها للقراءة فقط لكنها مُنحت بطريقة ما Write أو Edit أو Bash.
الأسئلة الشائعة
ما هو الوكيل الفرعي (subagent) في Claude Code بالضبط؟
الوكيل الفرعي هو نسخة متخصصة من Claude تعمل في نافذة سياق منفصلة خاصة بها مع توجيه نظام (system prompt) مختلف، بحيث يمكنك تفويضه بمهمة فرعية محددة جيدًا والحصول فقط على الملخص. يُعرَّف بملف markdown واحد في .claude/agents/<الاسم>.md: ترويسة YAML تحتوي على اسم ووصف في الأعلى، ونص يصبح توجيه النظام الكامل لهذا الوكيل الفرعي. ولأنه يعمل في سياق معزول، فإن الاستكشاف الطويل والفوضوي الذي يقوم به - قراءة خمسين ملفًا، وتشغيل عمليات بحث، ومتابعة مسارات مسدودة - لا يصل أبدًا إلى محادثتك الرئيسية. فقط تقريره النهائي يصل. هذا العزل هو بيت القصيد بالكامل: فهو يحافظ على نظافة سياقك الأساسي، ويتيح لك منح مهمة ضيقة النطاق وخطيرة عند سوء الاستخدام مجموعة أدوات ضيقة بالمثل.
وكلاء Claude Code مقابل المهارات - ما الفرق؟
تُحمّل المهارة تعليمات في المحادثة التي تجريها بالفعل؛ بينما يبدأ الوكيل الفرعي محادثة جديدة خاصة به. عندما تُفعَّل مهارة، يُضاف نص SKILL.md الخاص بها إلى سياق Claude الحالي، ويستمر Claude في العمل كنفسه، بكل ما كان يعرفه بالفعل. أما عندما يُفعَّل وكيل فرعي، يُنشئ Claude نسخة منفصلة بسياق فارغ وتوجيه نظام مختلف، وتعمل تلك النسخة بمفردها، ولا تعود سوى رسالتها النهائية. لذا الجأ إلى مهارة عندما تريد تعليم Claude كيفية القيام بشيء سيقوم به هنا لاحقًا - أسلوب خاص، قائمة تحقق، إجراء إصدار. والجأ إلى وكيل فرعي عندما تريد إنجاز العمل في مكان آخر وتريد فقط الخلاصة: بحث كبير لا تريده أن يزدحم سياقك، أو مراجعة تريد أن يقوم بها شيء لا يستطيع حرفيًا تعديل ملفاتك. أمر الشرطة المائلة هو شيء ثالث أبسط: توجيه محفوظ تُفعّله بكتابة /الاسم، يعمل مباشرة، دون عزل ودون هوية منفصلة.
كيف أنشئ وكيلاً فرعيًا في Claude Code؟
أنشئ المجلد باستخدام mkdir -p .claude/agents، واحفظ فيه ملف markdown باسم الوكيل الفرعي، ثم أعد تحميل Claude Code. يحتاج الملف إلى ترويسة YAML تحتوي على الأقل على name (أحرف صغيرة وشرطات فقط، بدون نقطتين رأسيتين، فريد) وdescription (متى يجب على Claude التفويض له)، يتبعها النص الذي يعمل كتوجيه نظامه. ضعه في .claude/agents/ داخل المستودع لعمل commit له على git ومشاركته مع فريقك، أو في ~/.claude/agents/ في مجلدك الشخصي لإبقائه خاصًا عبر كل مشاريعك. إذا وُجد كلاهما بنفس الاسم، يفوز إصدار المشروع داخل ذلك المستودع. يكتب هذا المولّد الملف بأكمله نيابة عنك ويعرض المسار الدقيق وأمر mkdir للنطاق الذي تختاره.
لماذا تهم قائمة الأدوات المسموح بها كثيرًا؟
لأنها الحد الصارم الوحيد لما يمكن أن يفعله الوكيل الفرعي. اترك tools فارغًا وسيرث الوكيل الفرعي كل ما تملكه المحادثة الرئيسية، بما في ذلك أدوات MCP - وهذا جيد لمساعد موثوق، لكنه خطر لا داعي له لوكيل مهمته بالكامل هي النظر والإبلاغ. مراجع أمني يملك Read وGlob وGrep لا يستطيع فعليًا تعديل شجرة عملك؛ لكن نفس المراجع مع Bash وWrite يستطيع ذلك. القاعدة العامة هي الحد الأدنى من الامتيازات: امنح الحد الأدنى الذي ينجز المهمة، وأضف Write وEdit فقط لوكيل فرعي من المفترض أن يغيّر الملفات، وأضف Bash فقط عندما يحتاج فعليًا لتشغيل شيء مثل مجموعة اختبارات. تُنبّه أداة الإنشاء هذه على عدم التطابق في الاتجاهين - وصف على شكل مراجعة يحمل أدوات كتابة، ووصف على شكل إصلاح دون أي وسيلة لكتابة أي شيء.
كيف يقرر Claude أي وكيل فرعي يستخدم؟
يطابق المهمة مع وصف كل وكيل فرعي، لذا فإن تلك السلسلة النصية هي جدول التوجيه الخاص بك. وصف مثل «يراجع الشيفرة» لا يمنح Claude شيئًا للتمييز وسيُختار إما لكل شيء أو لا شيء. اذكر المحفّزات المحددة بدلاً من ذلك: «يراجع الشيفرة المعدَّلة بحثًا عن ثغرات أمنية - حقن، غياب التفويض، فك تسلسل غير آمن، أسرار مسرّبة. استخدمه بشكل استباقي بعد أي تغيير على المصادقة أو معالجة المدخلات، وكلما طلب المستخدم مراجعة أمنية.» قول «استخدمه بشكل استباقي» يشجع على التفويض التلقائي؛ ويمكنك دائمًا تجاوز ذلك بطلب وكيل معيّن بالاسم - «استخدم الوكيل الفرعي security-code-reviewer لفحص هذا الفرق (diff)». في إعداد متعدد الوكلاء حيث يتداخل عدة وكلاء فرعيين، تحتاج الأوصاف إلى رسم حدود واضحة بينها، ولهذا يحذّرك هذا المولّد مباشرة عندما يبدو وصفك عامًا جدًا أو يُسقط جزء «متى».
رفيقان لهذه الأداة: Claude Skill Generator يكتب SKILL.md يحمّل تعليمات في المحادثة التي أنت فيها فعلاً، وAI Slash Command Generator يكتب نسخة الملف الواحد بصيفة /command.