/pattern/swarm/

03 · Multi-AgentDecentralized AgentsPeer Agent SwarmEmergent Coordination

Swarm.
Lokale Regeln. Globale Emergenz. Kein Zentrum.

Agenten koordinieren sich dezentral über lokale Regeln, Nachrichten und Handoffs, sodass der Ausführungspfad zur Laufzeit entsteht.

Wann man dazu greift

  • Dezentralisierte Erkundung gewünscht ist.
  • Aufgaben adaptiv verteilt werden können.
  • Zentrale Kontrolle zu starr wäre.

Wann es nach hinten losgeht

  • Strikte Nachvollziehbarkeit erforderlich ist.
  • Nachrichten-Floods verhindert werden müssen.
  • Klare Verantwortlichkeit emergentes Verhalten überwiegt.

Die Abwägung

Hohe Anpassungsfähigkeit wird auf Kosten geringerer Vorhersagbarkeit und schwieriger Fehlersuche erkauft.

Das mentale Modell

Eine Form, die du auf eine Serviette zeichnen kannst.

Jeder Agent kann übernehmen. Nachrichten fließen Peer-to-Peer; der nächste Sprecher entsteht aus lokalen Regeln, nicht aus einer zentralen Warteschlange.

  1. Jeder Agent deklariert, an welche Peers er übergeben darf.
  2. Ein Handoff überträgt die Kontrolle vollständig — es gibt keinen Rückweg.
  3. Die Route entsteht zur Laufzeit; der Graph ist eine Spur, kein Plan.

Alle sechs Koordinations-Patterns im Vergleich

kein zentraler ControllerAgent AAgent BAgent C
Einmal durchspielen

Ein realer Ablauf, Schritt für Schritt.

Aufgabe"Eine Doppelbelastung und ein toter Router — und keine Zentrale entscheidet, wer hilft."
1 / 6
StartDer triage-Agent liest die Nachricht und erkennt zwei Anliegen: eine Abrechnungsreklamation und einen Gerätefehler.
Handofftriage ruft transfer_to(billing) auf: Kontrolle und das gesamte Gespräch gehen an billing über; triage kehrt nicht zurück.
Handoffbilling erstattet die Doppelbelastung, erkennt dann den Gerätefehler als Ursache und ruft transfer_to(tech) auf.
Handelntech setzt den Router aus der Ferne zurück und bestätigt, dass er wieder online ist.
Antworttech hat keinen besser geeigneten Peer und beantwortet die Anfrage direkt, statt erneut zu übergeben.
EndeDer Lauf endet, wenn ein Agent antwortet. Kein Knoten hat die Route geplant; sie entstand triage → billing → tech, begrenzt durch max_handoffs.
Im Code

Die Schleife ist schon eingebaut.

LangGraph Swarmpython
from langgraph_swarm import create_handoff_tool, create_swarm
from langgraph.prebuilt import create_react_agent

# Each agent carries ONLY the peers it may hand off to. The edge set is the
# union of these handoff tools, never registered in one central place;
# the path through the swarm emerges at runtime, one handoff at a time.
billing = create_react_agent(
    model,
    tools=[issue_refund, create_handoff_tool(agent_name="tech")],
    prompt="Resolve billing questions. Hand device faults to tech.",
    name="billing",
)
tech = create_react_agent(
    model,
    tools=[reset_device, create_handoff_tool(agent_name="billing")],
    prompt="Resolve technical issues. Hand charge disputes to billing.",
    name="tech",
)

# No supervisor node: control passes peer-to-peer, not back to a hub.
swarm = create_swarm([billing, tech], default_active_agent="billing").compile()
result = swarm.invoke(
    {"messages": [("user", "I was double-charged and my router is dead.")]},
    config={"recursion_limit": 12},  # the max_handoffs fuse
)
Fallstricke

Zwei Wege, wie dieses Pattern Probleme verursachen kann.

Nachrichten-Flood ohne Backpressure

Jeder Agent sendet an jeden anderen Agenten. Token-Verbrauch explodiert und Latenz wird unvorhersehbar.

Lösung · Ein Broadcast-Budget pro Runde hinzufügen oder Nachrichten über einen leichtgewichtigen Koordinator leiten, der Backpressure durchsetzt.

Emergentes Verhalten ist nicht reproduzierbar

Dieselbe Eingabe produziert bei jedem Durchlauf unterschiedliche Ausführungspfade. Fehler sind nicht-deterministisch und schwer zu debuggen.

Lösung · Die vollständige Nachrichtensequenz protokollieren und die Turn-Order-Regel mit einem Seed versehen. Wiederholungen sollten bei gleichem Seed deterministisch sein.

Dezentrales Paar

Blackboard vs. Swarm

Beide sind dezentral — kein zentraler Knoten besitzt den Kontrollfluss —, deshalb stehen sie am autonomen Ende des Spektrums nebeneinander und werden am häufigsten verwechselt. Der Unterschied liegt nicht darin, ob sie sich selbst organisieren, sondern im Koordinations-Substrat.

Der Diskriminator in einem Satz

Swarm ist push, Blackboard ist pull.

Es ist die klassische Unterscheidung aus den verteilten Systemen: Swarm koordiniert per Nachrichtenaustausch — ein Agent benennt seinen Nachfolger und übergibt Kontrolle und Kontext; Blackboard koordiniert über gemeinsamen, stigmergischen Zustand — Agenten sprechen einander nie an, sie reagieren auf das, was auf einem gemeinsamen Board steht.

Auf einen Blick

DimensionBlackboardSwarm
Handoff-VektorIndirekt — ein Schreibzugriff auf den gemeinsamen ZustandDirekt — transfer_to(named_peer)
Wer wird adressiertDas Board (ein Zustandsprädikat)Ein bestimmter Peer-Agent
AktivierungDatengetrieben („ich habe jetzt etwas beizutragen“)Kontrollgetrieben (der aktive Agent gibt den Staffelstab weiter)
Wo der Kontext liegtBleibend und sichtbar auf dem BoardReist mit jeder Übergabe mit
Agent hinzufügenEin Abo — bestehende Agenten bleiben unverändertMuss in den transfer_to-Listen der Peers stehen
SynchronitätIdeal für asynchrone, langlaufende ArbeitStaffelstab-Übergabe live; Kontrolle fließt kontinuierlich
TerminierungQuiescence — kein Agent hat noch eine relevante AktionEin Agent antwortet, oder max_handoffs ist erreicht
Blackboard, wenn

mehrere Spezialisten inkrementell ein gemeinsames Artefakt aufbauen und Teilergebnisse weitere Arbeit freischalten, Beteiligte nicht gleichzeitig verfügbar sind, oder Spezialisten hinzukommen und wegfallen sollen, ohne die anderen umzuverdrahten.

Swarm, wenn

eine einzelne Aufgabe live zwischen Spezialisten wandern muss, der nächste Spezialist davon abhängt, was der vorige herausgefunden hat, und sich kein statischer Plan im Voraus zeichnen lässt.

Beide geben die Garantien von Pipeline und Graph über Pfadlänge, Abdeckung und Kosten auf, und beide machen Tracing unverzichtbar. Der Fehlermodus von Swarm ist Hallucinated Routing und unbeschränkte Schleifen — max_handoffs begrenzen und Transfers schema-validieren; der von Blackboard ist Stillstand (Stall) und mühsames Debugging — einen Liveness-Check ergänzen und das Board nach Trust-Level partitionieren.

Framework-Unterstützung

Wo Swarm nativ ist.

LangGraphLangGraph SwarmNativ
AWS StrandsAWS Strands SwarmNativ
Microsoft Agent FrameworkNativ

Suche

Patterns, Frameworks und Seiten durchsuchen.