Zum Inhalt springen
Alle Systeme betriebsbereitStatusLooking GlassGlossar
IT-Check →
Start / Lösungen / Durable Execution

Ein Lauf, der einen Node­ausfall überlebt

Durable Execution heißt: Der Fortschritt eines Agenten liegt nicht im Prozessspeicher, sondern in einem append-only Event Log. Fällt der ausführende Node aus, setzt der Lauf auf dem letzten Checkpoint auf — ohne bereits ausgeführte Seiteneffekte zu wiederholen.

Geeignet fürUnternehmen, deren Agenten Geld bewegen, Tickets schließen oder Daten schreiben

Durable Execution · Checkpoints · Idempotenz — ein Nodeausfall kostet keinen Lauf
ECKDATEN
Durable ExecutionFortschritt liegt außerhalb des Prozesses
Checkpointkonsistenter Zustand an definierter Grenze
Idempotenz-Keyaus Lauf-ID und Schrittnummer abgeleitet
NodeausfallWiederaufnahme am letzten Checkpoint
runtimeLive
ASCII-Grafik: ein gerippter Container in einer doppelten Umrandung, daneben ein Waechterpunkt mit Ringen — Titelbild zum Thema Ein Lauf, der einen Node­ausfall überlebt
checkpointtool.call#3 · t + 38 s
idempotenzlauf-id + schrittnummer
nodeausfalllauf läuft weiter, nicht neu
zustandaußerhalb des prozesses abgelegt
betrieb durch hostspezial
Ausführung durableWiederaufnahme am letzten CheckpointTool-Calls idempotent je Lauf und SchrittZustand persistent außerhalb des Prozesses
AUF EINEN BLICK

Das Wichtigste auf einen Blick

Geeignet für
Unternehmen, deren Agenten Geld bewegen, Tickets schließen oder Daten schreiben — wo eine Doppelbuchung teuer wird
Ausgangssituation
Ein Nodeausfall mitten im Lauf kostet heute den ganzen Vorgang — oder erzeugt beim Neustart eine zweite Buchung
Wir übernehmen
Betrieb der Runtime mit Event Log, Checkpoints vor und nach jedem Tool-Call, Idempotenz-Keys und Budgetgrenzen je Lauf
Bei Ihnen bleibt
Ihre Daten und die Entscheidung, welche davon ein Modell sehen darf. Eigentum und Hoheit wechseln nicht.
Vorhandene Systeme
Welche Hardware und welche Schnittstellen sich weiterverwenden lassen, klären wir vor dem Angebot. Das Ergebnis steht schriftlich fest, bevor Sie beauftragen.
Ihr Ergebnis
Ein Ausfall kostet keinen Lauf. Die Wiederaufnahme setzt am letzten Checkpoint auf, Schreib-Calls laufen genau einmal
Preisrahmen
ab 690 € im Monat (Einstiegsklasse der Plattform)Business 1.490 €, Enterprise 3.900 € — Schritte, Tool-Calls und Tokens werden getrennt abgerechnet
Reaktionszeit
99,95 % zugesicherte Verfügbarkeit der Plattform; Wiederanlaufziele werden je Umgebung vertraglich vereinbart
Dauer
Erst ein Lauf in der Sandbox, dann ein Pilot, dann der VertragEin einzelner Lauf darf bis zu 72 Stunden dauern, Wartezeit auf Freigaben eingeschlossen
Erster Schritt
In der Sandbox schalten wir während Ihres Laufs einen Node ab — Sie sehen im Trace, wo er wieder aufsetzt
Sandbox-Lauf vereinbaren → 09571 873149 Ihr Ansprechpartner: Sales-Team, Beratung und Angebot
/01 — 08Überblick

Warum ein Agent kein normaler Request ist

$ sec1

Durable Execution

Ausführungsmodell, bei dem der Fortschritt eines langlaufenden Prozesses persistent außerhalb des ausführenden Prozesses gehalten wird, sodass die Ausführung nach einem Ausfall an der letzten bekannten Stelle fortgesetzt werden kann.

Checkpoint

Konsistenter, persistierter Zustand eines Laufs an einer definierten Grenze — in der Regel unmittelbar vor und nach jedem Tool-Call. Ein Checkpoint enthält Schrittzähler, Kontextreferenzen und die Ergebnisse abgeschlossener Aufrufe.

Idempotenz-Key

Eindeutiger, aus Lauf-ID und Schrittnummer abgeleiteter Schlüssel, der einem Tool-Call mitgegeben wird. Erhält das Zielsystem denselben Schlüssel zweimal, führt es die Aktion nur einmal aus und liefert beim zweiten Mal dasselbe Ergebnis zurück.

/02 — 08Überblick

Was bei einem Ausfall tatsächlich passiert

$ sec2

checkpoint tool.call#3 letzter Checkpoint Node A · Prozess verloren

t + 38 s, mitten in tool.call#3

Node B · Wiederaufnahme

replay 7 events → Zustand rekonstruiert

EVENT LOG · APPEND-ONLY run.started plan.created tool.call#1 tool.ok#1 tool.call#2 tool.ok#2 checkpoint tool.call#3 letzter Checkpoint Node A · Prozess verloren t + 38 s, mitten in tool.call#3 Node B · Wiederaufnahme replay 7 events → Zustand rekonstruiert Ergebnis: tool.call#3 wird genau einmal ausgeführt — der Idempotenz-Key verhindert die Dopplung.
Wiederaufnahme aus dem Event Log. Der Zustand wird nicht kopiert, sondern aus den Ereignissen abgeleitet.
/03 — 08Überblick

Schritte, die Sie selbst schreiben

$ sec3
Ein Schritt ist eine gewöhnliche Funktion. Die Runtime umgibt sie mit Persistenz, Retry-Politik und Idempotenz — sichtbar bleibt nur die Deklaration.
refund-agent.ts
import { defineAgent, step } from "@hostspezial/agent-sdk";

export default defineAgent({
  name: "refund-agent",
  // Harte Obergrenze pro Lauf. Wird sie erreicht, endet der Lauf
  // mit status=budget_exceeded — nicht mit einer Endlosschleife.
  budget: { tokens: 200_000, eur: 0.50, wallClockMs: 120_000 },

  async run(ctx, input) {
    // Lesende Schritte sind frei wiederholbar.
    const order = await step(ctx, "load-order", () =>
      ctx.tools.postgres.query("SELECT * FROM orders WHERE id = $1", [input.orderId])
    );

    // Schreibende Schritte bekommen einen Idempotenz-Key aus
    // Lauf-ID und Schrittnamen. Nach einem Absturz liefert das
    // Zielsystem dasselbe Ergebnis statt einer zweiten Buchung.
    const refund = await step(ctx, "issue-refund", {
      idempotencyKey: `${ctx.runId}:issue-refund`,
      retry: { attempts: 3, backoff: "exponential", maxDelayMs: 8_000 },
    }, () => ctx.tools.stripe.refund({ orderId: order.id, amount: order.total }));

    return { refundId: refund.id, status: "settled" };
  },
});
/04 — 08Überblick

Fehlermodi und das Verhalten der Runtime

$ sec4
Verhalten der Runtime je Fehlermodus
FehlermodusVerhaltenSichtbar als
Tool antwortet mit 5xxRetry mit exponentiellem Backoff bis zur konfigurierten Obergrenze, danach Eskalation an den definierten Fehlerpfad.tool.failed → tool.retried
Tool antwortet gar nichtTimeout je Tool, Abbruch des Aufrufs, Checkpoint bleibt auf dem Stand davor.tool.timeout
Node fällt zwischen zwei Schritten ausEin anderer Node übernimmt, spielt das Event Log ein und setzt am nächsten Schritt an.run.resumed
Node fällt während eines Schreib-Calls ausWiederaufnahme wiederholt den Call mit demselben Idempotenz-Key. Das Zielsystem führt ihn nicht erneut aus.run.resumed (dedup)
Modell liefert unbrauchbare AntwortSchema-Validierung schlägt an, ein Reparaturversuch mit engerem Prompt, danach Abbruch.plan.invalid
Budget aufgebrauchtHarter Stopp. Der Lauf endet mit budget_exceeded, der bisherige Zustand bleibt einsehbar.run.budget_exceeded
Mensch antwortet nicht auf FreigabeLauf bleibt im Wartezustand, ohne Rechenkosten zu erzeugen, bis Freigabe oder Ablauffrist.run.awaiting_approval
/05 — 08Überblick

Was das nicht löst

$ sec5

Ehrliche Grenzen

Exactly-once gilt nur, soweit das Zielsystem mitspielt. Ein Tool ohne Idempotenz-Unterstützung kann die Runtime nicht nachrüsten — sie kann den Aufruf nur als „bereits versucht“ markieren und die Entscheidung an Ihre Fehlerbehandlung geben. Und: Wiederaufnahme reproduziert den Zustand, nicht die Modellantwort. Wer bitgleiche Wiederholbarkeit braucht, arbeitet mit dem deterministischen Replay gegen aufgezeichnete Antworten.

/06 — 08Überblick

Durable Execution im Detail

$ sec6
/01Was unterscheidet Durable Execution von einer Retry-Schleife?+

Eine Retry-Schleife wiederholt den gesamten Vorgang. Durable Execution wiederholt nur den fehlgeschlagenen Schritt und kennt den Zustand aller vorherigen. Der Unterschied wird bei Seiteneffekten entscheidend: Die Schleife bucht zweimal, die Runtime einmal.

/02Event-Sourcing oder Snapshotting?+

Beides. Jeder Schritt wird als Ereignis geschrieben; zusätzlich wird periodisch ein Snapshot abgelegt, damit die Wiederaufnahme nicht bei langen Läufen tausende Ereignisse einspielen muss. Die Begründung für diese Kombination steht im Architektur-Kapitel.

/03Wie lange darf ein Lauf dauern?+

Bis zu 72 Stunden am Stück — das deckt auch Wartezustände auf menschliche Freigaben ab. Längere Vorhaben wie eine Codebase-Migration werden als Kette geplanter Läufe modelliert, damit jeder Abschnitt einzeln bewertbar bleibt.

/04Kostet ein wartender Lauf Geld?+

Rechenzeit nicht. Ein Lauf im Wartezustand hält keinen Prozess offen, sondern nur einen Datensatz. Abgerechnet werden Schritte, Tool-Calls und Tokens — die Aufteilung steht auf der Preisseite.

/05Kann ich einen abgebrochenen Lauf manuell fortsetzen?+

Ja. Jeder Lauf lässt sich ab einem beliebigen Checkpoint fortsetzen — auch mit geändertem Modell, geänderter Policy oder korrigierten Eingaben. Der neue Zweig wird als eigener Lauf geführt, der ursprüngliche bleibt unverändert im Log.

/06Was passiert bei einem Rechenzentrums-Ausfall?+

Der Zustandsspeicher wird an den DR-Standort repliziert. Laufende Runs werden dort fortgesetzt, sobald die Kontrollebene übernimmt. Verfügbarkeits- und Wiederanlaufziele werden vertraglich je Umgebung vereinbart — Details auf der Trust-Seite.

/07 — 08Überblick

Weiter in der Plattform

$ sec7
/08 — 08Überblick

Testen Sie den Fehlerfall, nicht den Glücksfall

$ sec8
In der Sandbox schalten wir einen Node während Ihres Laufs ab. Sie sehen im Trace, wo er wieder aufsetzt — und dass die Buchung nur einmal existiert.
// nächster schritt

Einen Lauf ansehen.

Wie sich ein Lauf verhält, wenn mitten darin ein Knoten wegbricht, sieht man nicht in einer Präsentation. Wir zeigen es an einem Ihrer Vorgänge. Ausführlich beschrieben ist das unter Agentic AI.

Betrieb in deutschen Rechenzentren

$ runtime --sandbox
Sandbox besprechen → 09571 873149
Termin vereinbaren →
30 Minuten, unverbindlich und direkt mit einem technischen Ansprechpartner.