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.اگر برخی از وظایف 100ms و دیگران 10s را می گیرند، یک توازن سواد بار به طور خودکار کارگران سریع کار بعدی را می کشند. یک سرپرست باید مدت زمان را پیش بینی کند.
  • Throughput over determinism.تو به زمان کامل تکمیل اهمیت میدی نه به دستورات سخت

وقتی که غول شکست می خورد

  • Ordered workflows.اگر مرحله 3 نیاز به خروج مرحله 2 دارد، یک سور خطر مرحله 3 را قبل از مرحله 2 انجام می دهد.
  • Global-plan tasks.پرسش های پیچیده تحقیق از یک برنامه نویس بهره مند می شوند.
  • Debugging.بدون دفترچه مرکزی و کار غیرمسلسل، تولید یک خطا گران است.

ماتریکس (arXiv:2511.21686)

ماتریکس مقاله 2025 است که به نتیجه طبیعی خود می برد: جریان کنترل و جریان داده ها پیام های سریالیز شده در صف های توزیع شده هستند. هیچ هماهنگ کننده مرکزی وجود ندارد. تحمل خطای ناشی از دوام پیام است. مقیاس پذیری مشکل میانجی پیام است، نه سیستم.

مشارکت: یک مدل برنامه نویسی که در آن هماهنگی چند عامل "این عامل به چه موضوع پیام اشتراک می کند؟" به جای "کدام عامل را نظارت کننده بعدی انتخاب می کند؟" این باعث می شود که سیستم شبیه یک شبکه پاب / زیر رویداد باشد.

جمع بندی در چارچوب های نمودار

اسناد لینگ گراف 2025 به طور صریح "ارشیکتور سوار" را به عنوان یکی از الگوهای چند عامل توصیف می کنند: عوامل گره هستند، اما حاشیه ها یک نمودار هدایت شده با چرخه ها را تشکیل می دهند و هر گره ای می تواند از حوضچه فعال شود. یک کارگر از کار موجود با شرایط، نه با وظیفه نظارت انتخاب می کند.

حالت شکست: گرسنگی و داغ شدن

اگر همه کارگران سریع ترین کار موجود را انجام دهند، کارهای طولانی مدت هرگز انتخاب نمی شوند تا زمانی که تنها آنها باقی بمانند.

کاهش:

  • صف های اولویت با پیری صریح (در زمان انتظار اولویت را افزایش دهید).
  • تخصص کارگران: برخی از کارگران فقط وظایف "طول" را انجام می دهند.
  • فشار عقب: محدودیت تعداد کارهای سریع وارد صف می شود.

لینک رویتینگ مبتنی بر محتوا

به جای یک صف عمومی، یک صف برای هر نوع پیام داشته باشید. کارکنان متخصص فقط به نوع خود اشتراک می گذارند. این پایه ای برای معماری های پیام بس است که به هزاران عامل می رسد.

آن را بسازید

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. پیاده سازی یک آشکارساز نقطه داغ: ثبت زمانی که هر کارگر 3 برابر بیشتر از کندترین کارگر وظایف را پردازش می کند. این چه چیزی در مورد توزیع زمان کار نشان می دهد؟
  4. مقاله ماتریکس را بخوانید (arXiv:2511.21686) خلاصه و بخش 3. یک تعادل خاص را شناسایی کنید که ماتریکس قبول می کند (توانایی افزایش) و یکی را که از آن دست می دهد (تراسیب بودن، تعیین گرایی).
  5. Demo را به استفاده از یک 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.