Zum Inhalt springen

OpenClaw: Heartbeat vs. Cron – Die richtige Wahl treffen

Kennst du das? Du baust einen Agenten, der eigentlich nur ab und zu nach dem Rechten sehen soll, aber plötzlich ertrinkst du in unzähligen Cron-Jobs oder der Agent verliert den Kontext, weil jeder Task in einer isolierten Umgebung startet. Die Wahl zwischen Heartbeats und Cron-Jobs entscheidet oft darüber, ob dein System effizient läuft oder unnötig API-Kosten verursacht.

Sowohl Heartbeats als auch Cron-Jobs ermöglichen es dir, Aufgaben nach einem Zeitplan auszuführen. Dieser Guide hilft dir dabei, den richtigen Mechanismus für deinen Use Case zu wählen.

Use CaseEmpfehlungWarum
Inbox alle 30 Min. prüfenHeartbeatBündelt Checks, kontextbewusst
Täglicher Report punkt 9:00 UhrCron (isolated)Exaktes Timing erforderlich
Kalender auf anstehende Events prüfenHeartbeatPasst natürlich zu periodischem Bewusstsein
Wöchentliche TiefenanalyseCron (isolated)Eigenständiger Task, anderes Modell möglich
Erinnerung in 20 MinutenCron (main, --at)Einmalig mit präzisem Timing
Health Check für HintergrundprojekteHeartbeatNutzt bestehende Zyklen

Heartbeats laufen in der Main Session in einem regelmäßigen Intervall (Standard: 30 Min.). Sie sind dafür gedacht, dass der Agent nach dem Rechten sieht und wichtige Informationen an die Oberfläche bringt.

  • Mehrere periodische Checks: Statt 5 separate Cron-Jobs für Inbox, Kalender, Wetter, Benachrichtigungen und Projektstatus zu nutzen, kann ein einziger Heartbeat all das bündeln.
  • Kontextbewusste Entscheidungen: Der Agent hat den vollen Kontext der Main Session. Er kann also kluge Entscheidungen treffen, was dringend ist und was warten kann.
  • Kontinuität im Gespräch: Heartbeat-Durchläufe teilen sich dieselbe Session. Der Agent erinnert sich an letzte Gespräche und kann natürlich daran anknüpfen.
  • Monitoring mit wenig Overhead: Ein Heartbeat ersetzt viele kleine Polling-Tasks.
  • Bündelt mehrere Checks: Ein Agent-Turn kann Inbox, Kalender und Benachrichtigungen zusammen prüfen.
  • Reduziert API-Aufrufe: Ein einzelner Heartbeat ist günstiger als 5 isolierte Cron-Jobs.
  • Kontextbewusst: Der Agent weiß, woran du gerade arbeitest, und kann Prioritäten entsprechend setzen.
  • Intelligente Unterdrückung: Wenn nichts Aufmerksamkeit erfordert, antwortet der Agent mit HEARTBEAT_OK und es wird keine Nachricht zugestellt.
  • Natürliches Timing: Verschiebt sich leicht je nach Queue-Last, was für die meisten Monitoring-Aufgaben völlig okay ist.
# Heartbeat checklist
- Check email for urgent messages
- Review calendar for events in next 2 hours
- If a background task finished, summarize results
- If idle for 8+ hours, send a brief check-in

Der Agent liest dies bei jedem Heartbeat und bearbeitet alle Punkte in einem Turn.

{
agents: {
defaults: {
heartbeat: {
every: "30m", // interval
target: "last", // explicit alert delivery target (default is "none")
activeHours: { start: "08:00", end: "22:00" }, // optional
},
},
},
}

Siehe Heartbeat für die vollständige Konfiguration.

Cron-Jobs laufen zu exakten Zeiten und können in isolierten Sessions ausgeführt werden, ohne den Hauptkontext zu beeinflussen. Wiederkehrende Zeitpläne zur vollen Stunde werden automatisch durch einen deterministischen Offset pro Job in einem Fenster von 0-5 Minuten verteilt.

  • Exaktes Timing erforderlich: “Sende dies jeden Montag um Punkt 9:00 Uhr” (nicht “irgendwann um 9 herum”).
  • Eigenständige Aufgaben: Tasks, die keinen Gesprächskontext benötigen.
  • Anderes Modell/Thinking: Komplexe Analysen, die ein leistungsstärkeres Modell rechtfertigen.
  • Einmalige Erinnerungen: “Erinnere mich in 20 Minuten” mit --at.
  • Häufige Aufgaben: Tasks, die den Verlauf der Main Session unnötig aufblähen würden.
  • Externe Trigger: Aufgaben, die unabhängig davon laufen sollen, ob der Agent ansonsten aktiv ist.
  • Präzises Timing: 5-Feld oder 6-Feld (Sekunden) Cron-Expressions mit Zeitzonen-Support.
  • Integrierte Lastverteilung: Zeitpläne zur vollen Stunde werden standardmäßig um bis zu 5 Minuten versetzt.
  • Kontrolle pro Job: Überschreibe den Versatz mit --stagger <duration> oder erzwinge exaktes Timing mit --exact.
  • Session-Isolierung: Läuft in cron:<jobId>, ohne die Main History zu belasten.
  • Modell-Overrides: Nutze ein günstigeres oder stärkeres Modell pro Job.
  • Zustellungs-Kontrolle: Isolierte Jobs nutzen standardmäßig announce (Zusammenfassung); wähle none nach Bedarf.
  • Sofortige Zustellung: Der Announce-Modus postet direkt, ohne auf den Heartbeat zu warten.
  • Kein Agent-Kontext nötig: Läuft auch dann, wenn die Main Session inaktiv oder komprimiert ist.
  • Einmaliger Support: --at für präzise zukünftige Zeitstempel.
Terminal-Fenster
openclaw cron add \
--name "Morning briefing" \
--cron "0 7 * * *" \
--tz "America/New_York" \
--session isolated \
--message "Generate today's briefing: weather, calendar, top emails, news summary." \
--model opus \
--announce \
--channel whatsapp \
--to "+15551234567"

Dies läuft exakt um 7:00 Uhr New Yorker Zeit, nutzt Opus für hohe Qualität und sendet eine Zusammenfassung direkt an WhatsApp.

Terminal-Fenster
openclaw cron add \
--name "Meeting reminder" \
--at "20m" \
--session main \
--system-event "Reminder: standup meeting starts in 10 minutes." \
--wake now \
--delete-after-run

Siehe Cron jobs für die vollständige CLI-Referenz.

Does the task need to run at an EXACT time?
YES -> Use cron
NO -> Continue...
Does the task need isolation from main session?
YES -> Use cron (isolated)
NO -> Continue...
Can this task be batched with other periodic checks?
YES -> Use heartbeat (add to HEARTBEAT.md)
NO -> Use cron
Is this a one-shot reminder?
YES -> Use cron with --at
NO -> Continue...
Does it need a different model or thinking level?
YES -> Use cron (isolated) with --model/--thinking
NO -> Use heartbeat

Das effizienteste Setup nutzt beides:

  1. Heartbeat übernimmt das Routine-Monitoring (Inbox, Kalender, Benachrichtigungen) in einem gebündelten Turn alle 30 Minuten.
  2. Cron übernimmt präzise Zeitpläne (tägliche Reports, wöchentliche Reviews) und einmalige Erinnerungen.

HEARTBEAT.md (alle 30 Min. geprüft):

# Heartbeat checklist
- Scan inbox for urgent emails
- Check calendar for events in next 2h
- Review any pending tasks
- Light check-in if quiet for 8+ hours

Cron-Jobs (präzises Timing):

Terminal-Fenster
# Daily morning briefing at 7am
openclaw cron add --name "Morning brief" --cron "0 7 * * *" --session isolated --message "..." --announce
# Weekly project review on Mondays at 9am
openclaw cron add --name "Weekly review" --cron "0 9 * * 1" --session isolated --message "..." --model opus
# One-shot reminder
openclaw cron add --name "Call back" --at "2h" --session main --system-event "Call back the client" --wake now

Lobster ist die Workflow-Runtime für mehrstufige Tool-Pipelines, die eine deterministische Ausführung und explizite Freigaben benötigen. Nutze es, wenn die Aufgabe mehr als ein einzelner Agent-Turn ist und du einen fortsetzbaren Workflow mit menschlichen Checkpoints willst.

  • Mehrstufige Automatisierung: Du brauchst eine feste Pipeline von Tool-Aufrufen, keinen einmaligen Prompt.
  • Freigabe-Schranken: Side-Effects sollen pausieren, bis du sie genehmigst, und dann fortfahren.
  • Fortsetzbare Durchläufe: Setze einen pausierten Workflow fort, ohne frühere Schritte erneut auszuführen.
  • Heartbeat/Cron entscheiden, wann ein Durchlauf stattfindet.
  • Lobster definiert, welche Schritte passieren, sobald der Durchlauf startet.

Für geplante Workflows nutzt du Cron oder Heartbeat, um einen Agent-Turn auszulösen, der Lobster aufruft. Für Ad-hoc-Workflows rufst du Lobster direkt auf.

  • Lobster läuft als lokaler Subprozess (lobster CLI) im Tool-Modus und gibt ein JSON-Envelope zurück.
  • Wenn das Tool needs_approval zurückgibt, setzt du es mit einem resumeToken und dem approve-Flag fort.
  • Das Tool ist ein optionales Plugin; aktiviere es additiv über tools.alsoAllow: ["lobster"] (empfohlen).
  • Lobster erwartet, dass die lobster CLI im PATH verfügbar ist.

Siehe Lobster für die vollständige Nutzung und Beispiele.

Sowohl Heartbeat als auch Cron können mit der Main Session interagieren, aber auf unterschiedliche Weise:

HeartbeatCron (main)Cron (isolated)
SessionMainMain (via System-Event)cron:<jobId>
HistoryGeteiltGeteiltFrisch bei jedem Start
KontextVollständigVollständigKeiner (startet sauber)
ModellMain Session ModellMain Session ModellKann überschrieben werden
OutputZustellung, wenn nicht HEARTBEAT_OKHeartbeat-Prompt + EventAnnounce-Summary (Standard)

Nutze --session main mit --system-event, wenn du möchtest, dass:

  • Die Erinnerung/das Event im Kontext der Main Session erscheint.
  • Der Agent es beim nächsten Heartbeat mit vollem Kontext bearbeitet.
  • Kein separater isolierter Durchlauf stattfindet.
Terminal-Fenster
openclaw cron add \
--name "Check project" \
--every "4h" \
--session main \
--system-event "Time for a project health check" \
--wake now

Nutze --session isolated, wenn du möchtest, dass:

  • Ein sauberer Start ohne vorherigen Kontext erfolgt.
  • Andere Modell- oder Thinking-Einstellungen verwendet werden.
  • Zusammenfassungen direkt in einen Channel gepostet werden.
  • Die History der Main Session nicht belastet wird.
Terminal-Fenster
openclaw cron add \
--name "Deep analysis" \
--cron "0 6 * * 0" \
--session isolated \
--message "Weekly codebase analysis..." \
--model opus \
--thinking high \
--announce
MechanismusKostenprofil
HeartbeatEin Turn alle N Minuten; skaliert mit HEARTBEAT.md Größe
Cron (main)Fügt Event zum nächsten Heartbeat hinzu (kein isolierter Turn)
Cron (isolated)Voller Agent-Turn pro Job; kann günstigeres Modell nutzen

Tipps:

  • Halte die HEARTBEAT.md klein, um den Token-Overhead zu minimieren.
  • Bündle ähnliche Checks im Heartbeat, statt viele Cron-Jobs zu nutzen.
  • Nutze target: "none" beim Heartbeat, wenn du nur interne Verarbeitung wünschst.
  • Nutze isolierte Crons mit einem günstigeren Modell für Routineaufgaben.
  • Heartbeat – vollständige Heartbeat-Konfiguration
  • Cron jobs – vollständige Cron CLI- und API-Referenz
  • System – System-Events + Heartbeat-Steuerung
  • Richte deinen ersten Heartbeat in der config.json5 ein.
  • Erstelle eine HEARTBEAT.md in deinem Workspace.
  • Probiere openclaw cron add --at "5m" --message "Test" aus.

AI Setup Assistant

OpenClaw

OpenClaw Expert

Noch festgefahren?

Wenn diese Seite nicht hilft, frage OpenClaw Expert nach Schritt-fuer-Schritt-Loesungen.