LangGraph-Alternative
Eine Laufzeit für Agent-Workflows statt einer Bibliothek in Ihrer Anwendung.
LangGraph ist ein guter Weg, einen Agent-Graphen in Code auszudrücken. Dagu ist die Schicht, die ihn ausführt: eine einzige selbst gehostete Binary, in der ein Workflow YAML ist, Agents gewöhnliche Schritte sind und Zeitpläne, Queues, Retries, dauerhafte Pausen und Lauf-Historie aus der Engine kommen statt aus der Anwendung, die Sie darum herum schreiben.
# triage.yaml
schedule: "*/15 * * * *"
max_active_runs: 1
steps:
- id: fetch
run: ./scripts/fetch-new-issues.sh
output: ISSUES
- id: classify
action: harness.run
with:
provider: claude
prompt: Classify each issue in ${ISSUES}. Return JSON.
output_schema: schemas/triage.json
retry_policy:
limit: 3
interval_sec: 30
depends: [fetch]
- id: apply_labels
run: ./scripts/apply-labels.sh
depends: [classify]Workflows sind YAML, kein Anwendungscode
Schritte sind Prozesse, also funktioniert jede Sprache und jede CLI
Zeitpläne, Queues, Retries und Historie stecken in der Binary
Wartende Läufe geben den Prozess frei und setzen später fort
At a glance
LangGraph und Dagu aus Betriebssicht
Eine Workflow-Engine, die Sie als Binary betreiben.
Eine Bibliothek, die in eine Python- oder JavaScript-Anwendung eingebettet wird.
Deklaratives YAML, versioniert neben dem Code, den es ausführt.
Graphaufbau im Anwendungscode.
Zeitpläne, Queues, Retries, Artefakte und Lauf-Historie kommen mit der Engine.
Checkpointer persistieren den Graphzustand; Planung und Bereitstellung kommen von Ihrem Dienst oder von LangGraph Platform.
Ein Prozess: jede Sprache, jede CLI, bei Bedarf im Container.
Eine Funktion im Host-Prozess.
In depth
Where each tool fits
Eine Bibliothek braucht eine Anwendung. Eine Engine nicht.
LangGraph baut den Graphen. Etwas muss ihn dennoch planen, in eine Queue legen, wiederholen, seinen Zustand persistieren und zeigen, was passiert ist. Dieses Etwas ist der Dienst, den Sie schreiben, oder LangGraph Platform. Dagu ist bereits diese Schicht.
- Eine Binary starten. Kein Webdienst zu schreiben, kein Worker-Pool zu entwerfen
- Zeitpläne, Queues, Retries und Lauf-Historie sind Engine-Funktionen, keine Integrationen
- Dieselbe Definition läuft auf einem Laptop, einer VM oder einem Coordinator mit Workern
Schritte sind Prozesse, deshalb ist der Workflow nicht sprachgebunden
LangGraph-Knoten sind Python- oder JavaScript-Funktionen in Ihrem Prozess. Ein Dagu-Schritt ist ein Kommando, also ist die Arbeitseinheit das, was in Ihrer Umgebung ohnehin schon läuft.
- Shell-Skripte, Binaries, Container, SSH-Kommandos, HTTP-Endpunkte und SQL aus einem Workflow aufrufen
- Coding-Agents über harness.run ausführen: Claude, Codex, Gemini, OpenCode oder eine interne CLI
- Jedem Schritt eine Container-Sandbox mit expliziten Mounts, Toolchain und Egress-Regeln geben
Zeichnen Sie den Graphen, wenn Sie können, und geben Sie die Reihenfolge ab, wenn nicht
LangGraph verlangt, jeden Pfad zu zeichnen. Das ist richtig, bis die Reihenfolge davon abhängt, was ein Reviewer gesagt hat. Dagu behält type: graph als Standard und ergänzt type: controller für die Arbeit, die nie in einen Graphen passte.
- Ein Controller-Workflow deklariert Abschlusskriterien und lässt ein Modell die nächste Aktion wählen
- Das Modell wählt nur aus den deklarierten Schritten, der Wirkungsradius ist also die Datei
- Beide Typen erzeugen denselben Lauf, mit denselben Logs, Retries, Artefakten und derselben Historie
FAQ
Practical questions before adopting Dagu
Ersetzt Dagu LangGraph eins zu eins?
Nein. Beide sitzen auf verschiedenen Schichten. LangGraph passt, wenn Sie Modellaufrufe in Python oder JavaScript komponieren und den Graphzustand fein steuern wollen. Dagu passt besser, wenn die Arbeit aus Kommandos und Agent-CLIs besteht, die Zeitpläne, Retries, Freigaben und eine Audit-Spur brauchen.
Kann ich LangGraph weiter innerhalb von Dagu nutzen?
Ja. Behalten Sie die LangGraph-Anwendung als Skript oder Container und führen Sie sie als Schritt aus. Dagu liefert darum herum Zeitplan, Retry-Policy, Logs, Artefakte und Lauf-Historie.
Wie geht Dagu mit Human-in-the-Loop um?
Human Tasks und ask_user innerhalb von Controller-Workflows unterbrechen den Lauf dauerhaft. Der Prozess endet, der Worker-Slot wird frei, und der Lauf setzt in einem frischen Prozess fort, sobald jemand antwortet.
Braucht Dagu eine Datenbank?
Nein. Dagu ist eine einzelne Binary, die Definitionen, Lauf-Historie und Logs als Dateien ablegt. Vor dem ersten Lauf ist weder eine Metadatenbank noch ein Message Broker zu betreiben.
Next step
Start with one workflow.
Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.