Wann man dazu greift
- Dezentralisierte Erkundung gewünscht ist.
- Aufgaben adaptiv verteilt werden können.
- Zentrale Kontrolle zu starr wäre.
/pattern/swarm/
Agenten koordinieren sich dezentral über lokale Regeln, Nachrichten und Handoffs, sodass der Ausführungspfad zur Laufzeit entsteht.
Wann man dazu greift
Wann es nach hinten losgeht
Die Abwägung
Hohe Anpassungsfähigkeit wird auf Kosten geringerer Vorhersagbarkeit und schwieriger Fehlersuche erkauft.
Jeder Agent kann übernehmen. Nachrichten fließen Peer-to-Peer; der nächste Sprecher entsteht aus lokalen Regeln, nicht aus einer zentralen Warteschlange.
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
)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.
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.
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.
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.
| Dimension | Blackboard | Swarm |
|---|---|---|
| Handoff-Vektor | Indirekt — ein Schreibzugriff auf den gemeinsamen Zustand | Direkt — transfer_to(named_peer) |
| Wer wird adressiert | Das Board (ein Zustandsprädikat) | Ein bestimmter Peer-Agent |
| Aktivierung | Datengetrieben („ich habe jetzt etwas beizutragen“) | Kontrollgetrieben (der aktive Agent gibt den Staffelstab weiter) |
| Wo der Kontext liegt | Bleibend und sichtbar auf dem Board | Reist mit jeder Übergabe mit |
| Agent hinzufügen | Ein Abo — bestehende Agenten bleiben unverändert | Muss in den transfer_to-Listen der Peers stehen |
| Synchronität | Ideal für asynchrone, langlaufende Arbeit | Staffelstab-Übergabe live; Kontrolle fließt kontinuierlich |
| Terminierung | Quiescence — kein Agent hat noch eine relevante Aktion | Ein Agent antwortet, oder max_handoffs ist erreicht |
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.
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.
Patterns, Frameworks und Seiten durchsuchen.