Phase 16: Multi-Agent & Swarms

الموازات / الساحة / المعماريات المتصلة

على عكس المشرف: لا يوجد قرار مركزي العملاء يقرأون حافلة الحدث المشتركة، يلتقطون العمل بشكل غير متزامن، ويكتبون النتائج مرة أخرى. تدعم لانغغغراف بشكل صريح "آرشيتشورت السلالة" للبيئات المتحولة والحيوية. المصفوفة (arXiv:2511.21686) تمثل كل من التحكم وتدفق البيانات كرسائل تسلسلية تمر عبر طوابير موزعة للقضاء على عنق الزجاجة للموسيقي. التنازل صريح: التحديد والتبّع للقدرة على التطوير. يتناسب السحابة مع المهام التي تتضمن العديد من المشاكل الفرعية المستقلة؛ لا يناسب المهام التي تحتاج إلى خطة متماسكة واحدة.

Type: Learn + Build

Languages: Python (stdlib, threading, queue)

Prerequisites: Phase 16 · 05 (Supervisor Pattern), Phase 16 · 04 (Primitive Model)

Time: ~75 minutes

المشكلة

المدير يُقَدِّم إلى عدد قليل من العمال. ماذا عن المئات؟ المدير نفسه يصبح عقدة الزجاجة: كل قرار حول من يفعل ما يُقود عبر وكيل واحد. خطوة خطة بطيئة واحدة تعيق النظام بأكمله.

تعديل معمارات السحابة التصميم. بدلا من تخطيط مركزي يرسل العمل ، يقوم العمال بتحديد العمل من صف مشترك. يتم إدخال "التنسيق" في أساسية الحافلة الحادثة. لا يوجد منظمة. النظام يتقييم حتى يقوم الصف.

المفهوم

الشكل

                ┌──── shared queue ────┐
                │                      │
       ┌────────┼────────┐  ◄──────┬───┘
       ▼        ▼        ▼         │
     Worker  Worker  Worker   Worker
      A       B       C        D
       │        │        │         │
       └────────┴────────┴─────────┘
                 │
                 ▼
            results pool

لا يوجد منظم. كل عامل يكرر: سحب مهمة، وعملية، كتابة النتيجة (وبإمكانك اختيار متابعة).

عندما يتناسب السحابة

  • Many independent tasks.إزالة، تحويل، تصنيف، المهام لا تعتمد على بعضها البعض
  • Variable-duration work.إذا استغرق بعض المهام 100 دقيقة وآخرون 10 دقائق، فإن السحابة توازن الحمل تلقائيًا أسرع العمال سحب الوظائف التالية. يجب على المشرف توقع المدة.
  • Throughput over determinism.أنت تهتم بأكمله وقت الانتهاء، وليس الطلبات الصارمة.

عندما ينفذ الجماعة

  • Ordered workflows.إذا كانت الخطوة الثالثة تحتاج إلى خروج الخطوة الثانية، فإن السحابة تخاطر بإطلاق الخطوة الثالثة قبل أن يتم الخطوة الثانية.
  • Global-plan tasks.تُستفيد الأسئلة البحثية المعقدة من المخطط. مجموعة من الباحثين تنتج حقائق مستقلة، وليس تقرير متماسك.
  • Debugging.بدون سجل مركزي وعمليات غير متزامنة، إن إعادة إنتاج حشرة مكلفة.

المصفوفة (arXiv:2511.21686)

المصفوفة هي ورقة 2025 التي تأخذ السحابة إلى استنتاجها الطبيعي: كل من تدفق التحكم وتدفق البيانات هي رسائل تسلسلية على صفوف موزعة. لا يوجد منسق مركزي. تعود تسامح الأخطاء من استمرارية الرسالة. القياسية هي مشكلة وسيط الرسالة ، وليس مشكلة النظام.

المساهمة: نموذج برمجة يتعلق بالتنسيق بين وكلاء متعددين "ما هو موضوع الرسالة التي يشترك بها هذا الوكيل؟" بدلاً من "ما هو الوكيل الذي يختار المشرف بعد ذلك؟" وهذا يجعل النظام يبدو مثل شبكة الحدث الإعلاني / الفرعي.

السحابة في إطار الرسم البياني

يصف وثائق لانغغغراف 2025 صراحة "هندسة معمارية السلالة" بأنها واحدة من أنماط الوكلاء المتعددة: العاملون عقدات ، ولكن الحواف تشكل الرسم البياني الموجب مع الدورات ويمكن تنشيط أي عقدة من المجمعات. يختار العامل من العمل المتاحة حسب الحالة ، وليس عن طريق مهمة المشرف.

وضع الفشل: الجوع والبقع الحارة

إذا قام جميع العمال بأسرع مهمة متاحة، فلن يتم اختيار المهام الطويلة حتى تكون الوحيدة المتبقية.

التخفيف:

  • صفوف الأولوية مع تقدم السن الصريح (زيادة الأولوية مع وقت الانتظار).
  • تخصص العمال: بعض العمال يتولون فقط مهام "طويلة".
  • الضغط الخلفي: حدد عدد المهام السريعة التي تدخل الصف.

الرابط التوجيهي القائم على المحتوى

تعتبر المجموعة من الزوجات بشكل طبيعي مع التوجيه القائم على المحتوى (الدرس 22) بدلاً من صف عام ، يكون هناك صف واحد لكل نوع رسالة. يعمل العمال المتخصصون على إشتراك فقط في نوعهم. هذه هي الأساس لهياكل الباصات الرسائل التي تتحمل آلاف العملاء.

بناءها

code/main.pyيطبق حشرة من 4 خيوط عاملة تسحب من المشترك queue.Queue. المهام لها مدة متغيرة (بعضها سريع، بعضها بطيء).

  • Sequential baseline:عامل واحد يقوم بمعالجة جميع المهام بشكل متسلسل.
  • Fixed assignment:كل مهمة تم تعيينها مسبقاً لعامل معين (مثل المشرف).
  • Swarm:العمال يخرجون من صف مشترك

تُحمل الميزانات الساحقة تلقائياً؛ تترك المهام الثابتة العمال السريعين عجلين عندما تكون مهمتهم بطيئة.

أركض

python3 code/main.py

يظهر الإنتاج عدد المهام لكل عامل (توزيع السحابة بشكل غير متساوٍ ولكن بشكل مثالي) وأوقات الساعة الحائطية.

استخدمها

outputs/skill-swarm-fit.mdيقيّم ما إذا كان يجب على المهمة استخدام السلالة مقابل المشرف. المدخلات: استقلالية المهمة، اختلاف المدة، متطلبات الطلبات، احتياجات إصلاح الأخطاء.

أرسله

قائمة التحقق:

  • Priority queue with aging.منع المجاعة المكثفة
  • Worker idempotency.قد يتم تنفيذ مهمة أكثر من مرة إذا سقط عامل في منتصف الجولة. يجب أن يكون العمال غير قادرين.
  • Durable queue.استخدم كافكا، ريديس ستريمز، أو صف مدعوم من قاعدة البيانات للإنتاج. queue.Queueهو فقط في الذاكرة.
  • Observability per task.كل مهمة لديها هوية تتبع؛ كل عامل يبدأ/ ينتهي بها.
  • Back-pressure.إذا كان الصف ينمو أسرع من العمال يستنزفوه، تبطئ المنتج.

التمارين

  1. أركضcode/main.pyكم أسرع السحابة من التسلسل على عبء العمل المتغير؟ كم أسرع من المهام الثابتة؟
  2. إضافة متغير في صف الأولوية (استخدام queue.PriorityQueue) تعيين الأولوية حسب المهام "الأهمية" الحقل. لاحظ ما إذا كانت المهام ذات الأولوية المنخفضة تجوع تحت الحمل المستمر.
  3. تنفيذ كاشف نقاط الاحتراق: تسجيل عندما يقوم أي عامل بمعالجة 3x أكثر من المهام من أكثر عامل بطء. ما الذي يدل ذلك على توزيع مدة المهام؟
  4. اقرأ ورقة ماتريكس (arXiv:2511.21686) المجرد والقسم 3. حدد تعادل معين يقبله ماتريكس (مزيد من التوسع) و الذي يتخلى عنه (التتبعية، الدستيرنيزم).
  5. حول التجربة المثيرة للاستخدامqueue.Queueمن (مجموعة المهام، والحميل المفيد) ، مع العمال الذين يشتركون فقط في أنواع محددة. ما هي قواعد التوجيه التي لها معنى عندما تكون المهام متناثرة؟

الشروط الرئيسية

TermWhat people sayWhat it actually means
Swarm architecture"Decentralized agents"Workers pull from shared queue; no central orchestrator.
Event bus"Agents subscribe to topics"Message broker that routes tasks to workers by type or content.
Starvation"Task never runs"Low-priority task never gets picked because higher-priority work arrives continuously.
Hot-spotting"One worker drowns"Load imbalance where one worker gets most tasks.
Back-pressure"Slow down the producer"Mechanism that signals upstream to stop producing when the queue fills up.
Idempotent worker"Safe to re-run"A task processed twice produces the same result. Required because workers may crash mid-run.
Durable queue"Survives crashes"Queue backed by disk or replicated storage; tasks are not lost when a worker crashes.
Matrix framework"Full message-passing swarm"Both data and control flow are serialized messages on distributed queues.

المزيد من القراءة

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.