/pattern/blackboard/

03 · Multi-AgentShared WorkspaceBlackboard ArchitectureShared State Coordination

Blackboard.
Ein gemeinsames Notizbuch. Spezialisten reagieren.

Agenten koordinieren sich indirekt über eine gemeinsame Zustandsablage, in der Ergebnisse, Hypothesen und Aufgaben hinterlegt werden, anstatt direkte Nachrichten auszutauschen.

Wann man dazu greift

  • Viele Agenten asynchron beitragen.
  • Gemeinsamer Zustand wichtiger ist als direkte Konversation.
  • Zwischenergebnisse persistent bleiben müssen.

Wann es nach hinten losgeht

  • Strenge lineare Steuerung erforderlich ist.
  • Zustandskonsistenz nicht garantiert werden kann.
  • Ein einfacher Chat-Kontext ausreicht.

Die Abwägung

Hochgradig entkoppelte Zusammenarbeit wird auf Kosten anspruchsvoller Zustandsverwaltung und Konsistenzanforderungen erreicht.

Das mentale Modell

Eine Form, die du auf eine Serviette zeichnen kannst.

Spezialisten lesen und schreiben ein gemeinsames Blackboard; jeder handelt, wenn seine Vorbedingung erfüllt ist. Keine feste Reihenfolge.

  1. Agenten adressieren einander nie — sie lesen und schreiben ein geteiltes Board.
  2. Wessen Vorbedingung zum aktuellen Zustand passt, aktiviert sich selbst.
  3. Einen Agenten hinzuzufügen ist ein Abonnement, keine Neuverdrahtung der Topologie.

Alle sechs Koordinations-Patterns im Vergleich

lesen / schreibenBlackboardAgent 1Agent 2Agent 3+Agent n
Einmal durchspielen

Ein realer Ablauf, Schritt für Schritt.

Aufgabe"Untersuche einen Produktionsvorfall mit drei Bereitschaftsspezialisten."
1 / 6
EintragVorfall auf Blackboard gepostet: { service: 'payments', alert: 'p99 > 2s' }
Diagnosediagnostic_specialist(board) → schreibt Hypothese: 'DB connection pool exhaustion'
Bestätigunglog_specialist(board) → schreibt bestätigenden Befund: connection_wait_time spike at 14:03
Lösung vorschlagenfix_specialist(board) → schreibt vorgeschlagene Abhilfemaßnahme: increase pool size + add circuit breaker
AbgeschlossenBlackboard enthält nun { hypothesis, evidence, remediation } → Zustand ist vollständig
AntwortAbschließender Vorfallsbericht aus dem Blackboard zusammengestellt. Keine feste Reihenfolge; jeder Spezialist reagierte, als seine Vorbedingung erfüllt war.
Im Code

Die Schleife ist schon eingebaut.

LangGraphpython
from typing import TypedDict, Any
from langgraph.graph import StateGraph, END

class State(TypedDict):
    board: dict[str, Any]

def diagnostic(state):
    if "hypothesis" not in state["board"]:
        return {"board": {**state["board"], "hypothesis": diagnose(state["board"])}}
    return state

def log_analyst(state):
    if "hypothesis" in state["board"] and "evidence" not in state["board"]:
        return {"board": {**state["board"], "evidence": fetch_logs(state["board"])}}
    return state

def fix_specialist(state):
    if "evidence" in state["board"] and "remediation" not in state["board"]:
        return {"board": {**state["board"], "remediation": propose_fix(state["board"])}}
    return state

def is_complete(state):
    board = state["board"]
    return "hypothesis" in board and "evidence" in board and "remediation" in board

g = StateGraph(State)
g.add_node("diagnostic", diagnostic)
g.add_node("log_analyst", log_analyst)
g.add_node("fix_specialist", fix_specialist)

# Each specialist loops back until completion
g.add_conditional_edges("diagnostic", lambda s: END if is_complete(s) else "log_analyst")
g.add_conditional_edges("log_analyst", lambda s: END if is_complete(s) else "fix_specialist")
g.add_conditional_edges("fix_specialist", lambda s: END if is_complete(s) else "diagnostic")
g.set_entry_point("diagnostic")
blackboard = g.compile()
Fallstricke

Zwei Wege, wie dieses Pattern Probleme verursachen kann.

Kein Abschlusskriterium — Spezialisten feuern endlos weiter

Das Blackboard erreicht nie einen Endzustand. Spezialisten durchlaufen endlose Schleifen und überschreiben dieselben Einträge.

Lösung · Ein 'complete'-Prädikat im Blackboard-Schema definieren. Wenn es gilt, zum END routen, unabhängig davon, welcher Knoten aktiv ist.

Das Blackboard wird zur Rumpelkammer — das Schema veraltet

Jeder Spezialist schreibt alles, was er weiß, in den gemeinsamen Zustand. Das Schema bläht sich auf, und spätere Spezialisten finden nicht mehr, was sie brauchen.

Lösung · Ein typisiertes Schema pro Blackboard-Domäne erzwingen. Schreibvorgänge ablehnen, die nicht den deklarierten Feldern entsprechen.

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 Blackboard nativ ist.

Microsoft Agent FrameworkNativ

Suche

Patterns, Frameworks und Seiten durchsuchen.