في الفصل السابق تناولنا كيف نربط بوكيل واحد أدواتٍ خارجيةً عبر MCP. حتى هنا صار لديك وكيل مستقلّ واحد يعمل، مزوّد بـ«العقل والأدوات والذاكرة والحلقة». لكن حين يكبر العمل، ينهار في مكانٍ ما تصميمُ حشو كلّ شيء في وكيل واحد. في هذا الفصل ننظّم — على مستوى المفهوم بلا اعتماد على إطار بعينه — «تصميم الوكلاء المتعدّدين» الذي يقسّم الأدوار ويحلّ بعدّة وكلاء، وفكرة تنسيقهم (A2A: من وكيل إلى وكيل).
الهدف أن تستطيع الحكم «متى وكيف تقسّم فتقوى»
حين لا يكفي وكيل واحد
الوكيل الواحد بسيط وواضح الرؤية وسهل التتبّع — ولهذا البناء بوكيل واحد أوّلاً هو الصواب. المشكلة تقع حين تضيف إليه دوراً بعد دور. حين تحشو المسؤوليات في تعليمة واحدة «ابحث، واكتب، وراجع، وترجم، وانشر أيضاً…»، تبدأ الدقّة بالانخفاض فجأةً عند نقطة ما.
الأسباب أساساً ثلاثة. ① تطول التعليمة وتغمض (كلّما كتبت هذا وذاك، حار النموذج أيّها يُقدّم). ② يتضخّم السياق (يحمل معلومات لا صلة لها، فتخفّ التعليمة الجوهرية). ③ الأدوات كثيرة جداً (كلّما زادت الخيارات سهُل اختيار أداة خاطئة). حالةُ الحشو المفرط في وكيل واحد تشبه «مكان عمل يعمّه الارتباك لأنّ شخصاً واحداً يجمع أدواراً كثيرة».
💡 قلبٌ في الفكرة. بدل أن تستمرّ بتذكية وكيل واحد، انتقل إلى فكرة «أن تجعل عدّة وكلاء صغار، كلٌّ متركّز على دور واحد، يتعاونون». هذه نقطة انطلاق تصميم الوكلاء المتعدّدين. بالمنطق نفسه لتقسيم العمل في المنظّمة البشرية، كلّما ضاقت مسؤولية كلّ فرد ووضحت، ازداد الكلّ استقراراً.
غير أنّ التقسيم لا يحسّن حتماً. فالتقسيم يلازمه تكلفة تنسيق. لذا فصلب هذا الفصل ليس «كيف تقسّم» فحسب، بل أن تتبيّن «هل ينبغي التقسيم أصلاً». لننظر أوّلاً إلى الأشكال الثلاثة الممثِّلة، ثم نمضي إلى معيار الحكم ذاك.
ثلاثة أنماط أساسية
يمكن رسم تركيبات لا حصر لها للوكلاء المتعدّدين، لكنّ الهيكل الذي يتكرّر ظهوره في العمل الفعلي يتلخّص في ثلاثة. بتركيب هذه الثلاثة يمكن شرح معظم التركيبات. لنمسك بكلٍّ منها، بدوره وبمواطن قوّته وضعفه.
يضع الأب (المنسّق) الخطّة الكلّية، ويوزّع المهامّ على الأبناء (العمّال) لينفّذوها، ثم يجمع النتائج ويوحّدها. لا يعرف الأبناءُ بعضهم، بل ينظرون إلى الأب وحده. مركزيّته وسهولة التحكّم فيه قوّته.
مناسب حين: يمكن تقسيم المهمّة وتريد تشغيلها بالتوازي.
ترصّ المراحل، وتمرّر خرْج الوكيل السابق دخْلاً للوكيل التالي بالترتيب. مثلاً «بحث ← كتابة ← تدقيق». إذ يتولّى كلّ مرحلة عمليةً واحدة فقط، تصير المسؤولية واضحة والتحقّق يسيراً.
مناسب حين: يكون المسار خطّياً والمراحل محدّدة.
مثل «مسؤول البحث» و«مسؤول الشيفرة» و«مسؤول المراجعة»، تهيّئ وكلاء متخصّصين لكلٍّ مجاله، وتنادي بينهم حسب الموقف. إذ تستطيع تضييق تعليمة كلٍّ وأدواته، ترتفع التخصّصية.
مناسب حين: تختلف القدرة المطلوبة اختلافاً كبيراً بين المجالات.
هذه الثلاثة ليست متنافية. النظام الفعلي كثيراً ما يصير بنية متداخلة، مثل «منسّق يجمع عمّالاً من نمط الخبراء، وأحدهم في داخله خطّ أنابيب». طريقة البناء المريحة أن تحدّد أوّلاً هيكلاً واحداً في الطبقة الأبعد، ثم تستخدم نمطاً آخر في الداخل عند المواضع اللازمة فقط.
📊 إن حرت فابدأ من ①. أعمّ الثلاثة استخداماً هو المنسّق + العمّال. لأنّ الأب يمسك مركزياً بالتخطيط والتوحيد، فهو سهل التحكّم، ويصير الشكل الأساس لكثير من تركيبات الوكلاء المتعدّدين. لتنظيم الأنماط كلّها راجع ما هو تعدّد الوكلاء، ولإدراكه نظاماً راجع ما هو نظام الوكلاء المتعدّدين.
متى تقسّم ومتى لا تقسّم
حين تعرف الأنماط، تميل إلى تقسيم كلّ شيء. لكنّ التقسيم يلازمه دائماً «تكلفة التنسيق» — عناء تمرير المعلومات بين الوكلاء وتوليفها وانتظار بعضها بعضاً. لا يصير تعدّد الوكلاء صواباً إلا حين تفوق فائدةُ التقسيم تكلفةَ التنسيق هذه. لننظر أوّلاً إلى الجانبين جنباً إلى جنب.
- يمكن التوازي: تشغّل مهامّ فرعية مستقلّة في آنٍ فتختصر الوقت
- يلزم التخصّص: تضييق التعليمة والأدوات لكلّ مجال يرفع الدقّة
- الاستكشاف واسع: تريد اقتسام البحث عبر عدّة وجهات نظر أو مرشّحين
- تريد فصل السياق: تقطع السياق لكلّ دور فتمنع التداخل
- الأمر بسيط أصلاً: تعقّد بلا داعٍ معالجةً يكفيها وكيل واحد
- تزداد التكلفة: كلّما زاد الوكلاء تراكمت استدعاءات الـLLM والرموز
- التنسيق ثقيل: عناء التسليم والانتظار يلتهم فائدة التقسيم
- تبعية تسلسلية قويّة: يعتمد بشدّة على النتيجة السابقة ولا مجال للتوازي تقريباً
⚠️ اسأل أوّلاً «هل يكفي وكيل واحد». تعدّد الوكلاء قويّ، لكنّه ليس ما تختاره في الخطوة الأولى. القاعدة الذهبية أن ترتقي بالدرجات: وكيل واحد ← حسّن التعليمة ← أضِف أداة ← وإن لم يكفِ بعدُ فقسّم. أضِف التعقيد بعد أن تتأكّد «هل بلغ وكيلك الحالي حدّه فعلاً». والتقسيم يمكن لاحقاً أيضاً.
كدليل عمليّ، تخيّل «حين تشرح هذا الدور لزميل بشريّ، أينطوي طبيعياً في توصيف وظيفة شخص واحد؟». إن أمكن كتابته بمسمّى وظيفيّ واحد، فوكيل واحد لا يزال يكفي. اللحظة التي تريد فيها جعله شخصين «هذا مسؤول البحث وهذا مسؤول الكتابة» هي وقت النظر في التقسيم. للصورة الكاملة للحكم راجع أيضاً كيف تبني نظام وكلاء متعدّدين.
التنسيق بين الوكلاء (A2A)
حين تقرّر التقسيم، فمهمّة التصميم التالية هي «كيف يتبادل الوكلاء المعلومات فيما بينهم». في الفريق البشريّ يعادل هذا عملَ تحديد صيغة كتيّب التسليم وقواعد الإبلاغ. إن غمض هذا، فمهما برع الأفراد لن يتوافق الكلّ. نقطتان كبيرتان ينبغي الإمساك بهما في التنسيق.
حدّد ماذا تمرّر وبأيّ صيغة. حين تجعل «تعليمة المهمّة، والدخل اللازم، وصيغة الخرج المتوقّعة» اتفاقاً صريحاً، لا يحار المتلقّي. التمرير المُهيكل أكثر استقراراً من رمي نصّ حرّ.
مرحلة جمع عدّة مخرجات في واحد. حدّد سلفاً من يتحمّل المسؤولية النهائية عن التوحيد. أدرِج في التصميم أيضاً أولويةَ التعامل مع النتائج المتناقضة، وطريقةَ الجمع (تلخيص، مطابقة، تصويت أغلبية).
هذه الفكرة «أن يقتسم الوكلاء الأدوار ويتعاونوا»، تسعى إلى تنظيمها ومعيَرَتها حركةٌ اسمها A2A (من وكيل إلى وكيل). فبينما كان MCP في الفصل السابق اتفاقاً يربط «الوكيل ↔ الأدوات/البيانات»، فإنّ A2A هو اتفاق يربط «الوكيل ↔ الوكيل» — اعتبره أدباً موحّداً لأن تعرف ما يستطيعه الوكيل المقابل، وتطلب منه مهمّة، وتستلم النتيجة.
💡 احفظ MCP وA2A بالتقابل. بإيجاز: MCP = يصل «يداً» بالوكيل، وA2A = «يصل» الوكلاء بعضهم ببعض. الأوّل ربطُ أدوات وبيانات، والثاني أدبُ تعاون. يكفي أن تمسك به مفهوماً أوّلاً، والبروتوكولات الملموسة نلمسها في الفصول اللاحقة أيضاً. للتفصيل راجع ما هو بروتوكول A2A. وحين تقارنه بقراءة MCP وربط الأدوات في الفصل السابق يتّضح الفرق.
المهمّ ليس حفظ اسم البروتوكول، بل موقف التصميم القائل «التنسيق يلزمه اتفاق صريح». من يمسك أيّ مهمّة، وبأيّ دخل يبدأ، وماذا يعيد، وإن فشل فإلى من يُعاد — إنّ تحديد هذا الاتفاق مسبقاً هو أساس نظام لا ينهار وإن كبر حجمه.
إدارة السياق والتكلفة
أكبر خطر عمليّ في تعدّد الوكلاء هو تضخّم السياق والتكلفة. كلّما زاد الوكلاء وتبادلوا المعلومات، سمِن السياق الذي يحمله كلّ وكيل، وتراكم عددُ استدعاءات الـLLM وكمّيةُ الرموز. إن تركته وشأنه، مال النظام إلى أن يصير بطيئاً وباهظاً وغير مستقرّ. أمسِك بالزمام في مرحلة التصميم.
مرّر للأبناء القدر اللازم لتلك المهمّة فقط. لا تُسِل السجلّ كلّه كما هو. السياق غير المتّصل يخفض الدقّة أيضاً.
النتائج الطويلة لخّصها إلى نقاطها قبل تمريرها للتالي. فكرةُ تسليم «الخلاصة والدليل» بدل السجلّ الخام.
ضع حدّاً أقصى لعدد الأبناء العاملين في آنٍ. الزيادة بلا حدّ تنهار بالتكلفة وحدود المعدّل.
وزّع حجم النموذج بين أبٍ ذي استدلال ثقيل وأبناءٍ ذوي عمل بسيط. لا تجعل الكلّ على أرقى نموذج.
و«تضييق المعلومات المُمرّرة» خاصّةً قرارُ تصميم عظيم الأثر. في نمط المنسّق + العمّال، يحمل الأبُ الصورة الكاملة، لكن يمرّر للأبناء المهمّةَ المقتطعة والدخلَ الأدنى فقط. كلّما أبقيت السياق الذي يحمله الابن صغيراً، ارتفعت الدقّة وانخفضت التكلفة. اعتبر هذا امتداداً لفكرة هندسة السياق التي لمسناها حتى الفصل السابق، موسَّعةً إلى عدّة وكلاء.
⚠️ التكلفة تُحسب بـ«عدد الوكلاء × عدد الخطوات». زيادةُ وكيل واحد تراكم استدعاءاتِه بمقدار عدد دورات الحلقة. انتبه إلى أنّ كلّما زاد عدد الوكلاء، تضخّم الهدرُ لكلّ وكيل أضعافاً في الكلّ. حدّد من البداية الحدّ الأقصى لعدد التوازي، والحدّ الأقصى لخطوات كلّ وكيل (وقت التوقّف). وحديثُ قياس «كم تستهلك» هذا يتّصل بالقابلية للمراقبة في الفصل التالي.
التعثّرات والوقاية بالتصميم
لتعدّد الوكلاء إخفاقات خاصّة به لم تكن تقع في الوكيل المفرد. والأساس في كلّها أن تمنعها مسبقاً بالتصميم لا أن تتركها لحظّ وقت التنفيذ. لنمسك بثلاثة ممثِّلة وطرق التصدّي لها.
يؤدّي عدّة وكلاء العمل نفسه مزدوجاً، أو يغمض «لأيّهما المسؤولية» فلا يؤدّيه أحد.
الوقاية: اقسم مسؤولية كلّ وكيل بلا تداخل ولا ثغرة، بحيث يمكن قول الحدّ بجملة واحدة قاطعة.
أ يدفع إلى ب، وب يدفع إلى أ… يتقاذفان العمل بلا نهاية، فلا ينتهي أبداً أو يكرّر التبادل نفسه.
الوقاية: ضع دائماً شرط إنهاء وحدّاً أقصى للتبادلات والخطوات. جعلُ المركز (الأب) يمسك بالحكم النهائي يقلّل الانفلات.
فشلُ وكيل واحد أو خرْجُه الخاطئ يسيل كما هو إلى التالي، فيوقف الكلّ أو يبني نتاجاً خاطئاً.
الوقاية: تحقّق من الخرج قبل التسليم، وحدّد بديل السقوط عند الفشل (إعادة محاولة، بديل، تصعيد إلى إنسان).
العبرة المشتركة في الثلاثة أن تحدّد «الحدود وشرط الإنهاء والتحقّق» قبل كتابة الشيفرة. من يتولّى ماذا (الحدود)، ومتى يتوقّف (شرط الإنهاء)، وماذا تتأكّد منه قبل التمرير (التحقّق). إن نسجت هذه النقاط الثلاث في التصميم، أمكن اتّقاء معظم مشاكل تعدّد الوكلاء الخاصّة سلفاً.
📊 «ما لا يُرى لا يُصلَح». هذه الإخفاقات لا تنتبه إليها إلا حين يصير ما فعله كلّ وكيل قابلاً للتتبّع لاحقاً. حين تتشابك عدّة وكلاء، يصير «أين وقع ماذا» أخفى مما في الوكيل المفرد — ولهذا بالذات يصير التقييم والقابلية للمراقبة في الفصل التالي أشدّ أهمّيةً في تعدّد الوكلاء.
- الحشو المفرط في وكيل واحد يخفض الدقّة. حُلّ بـتعاون وكلاء صغار مقسّمي الأدوار بضيق.
- الأنماط الأساسية ثلاثة — المنسّق + العمّال، وخطّ الأنابيب، وتقسيم الأدوار. يمكن تداخلها.
- قسّم حين يلزم التوازي أو التخصّص أو الاستكشاف الواسع. وإن كان بسيطاً فابقَ على وكيل واحد. اسأل أوّلاً «هل يكفي وكيل واحد».
- نسّق بـاتفاق صريح (A2A = أدب وصل الوكلاء بعضهم ببعض). وأدِر السياق والتكلفة بالتضييق.
- المزالق الخاصّة (التداخل، التقاذف، الفشل المتسلسل) امنعها بتحديد الحدود وشرط الإنهاء والتحقّق في التصميم سلفاً.
حين يبدأ عدّة وكلاء بالعمل، فما تحتاجه تالياً أن «تقيس هل يعمل حقّاً بشكل جيّد، وتجعل الحركة مرئيّة». في الفصل الخامس «التقييم والقابلية للمراقبة» نمضي إلى كيفية قياس جودة الوكيل وجعل حركته الداخلية قابلة للتتبّع.