Gateway
Heartbeat
Heartbeat führt in der Hauptsitzung regelmäßige Agent-Durchläufe aus, damit das Modell auf alles aufmerksam machen kann, was beachtet werden muss, ohne Sie mit Nachrichten zu überhäufen.
Heartbeat ist ein geplanter Durchlauf der Hauptsitzung – dabei werden keine Datensätze für Hintergrundaufgaben erstellt. Aufgabendatensätze sind für entkoppelte Arbeiten vorgesehen (ACP-Ausführungen, Subagenten, isolierte cron-Aufträge).
Intern wird der Heartbeat-Takt vom cron-Scheduler verwaltet: Das Gateway verwaltet für jeden Agenten mit aktiviertem Heartbeat einen systemeigenen cron-Auftrag (in openclaw cron list --all als Heartbeat (agent-id) sichtbar). Die Heartbeat-Konfiguration bleibt die Eingabe für den gewünschten Zustand, während der persistierte Überwachungszeitplan den tatsächlichen Takt und die anschließende Abkühlphase des Runners bestimmt. Das Gateway übernimmt Konfigurationsänderungen beim Start und beim erneuten Laden der Konfiguration; openclaw doctor --fix kann fehlende oder veraltete Überwachungszeilen vor dem nächsten Gateway-Start anlegen. Bearbeiten Sie agents.*.heartbeat, nicht den cron-Auftrag.
Geplante Heartbeats erfordern cron. Wenn cron.enabled den Wert false oder OPENCLAW_SKIP_CRON=1 hat, protokolliert das Gateway beim Start eine Warnung und führt keine geplanten Heartbeats aus; manuelle und ereignisgesteuerte Heartbeat-Aktivierungen bleiben verfügbar. Es gibt keinen separaten Heartbeat-Ersatz-Timer.
Fehlerbehebung: Geplante Aufgaben
Schnellstart (Einsteiger)
Takt auswählen
Lassen Sie Heartbeats aktiviert (Standard ist 30m oder 1h, wenn die Anthropic-Authentifizierung per OAuth/Token konfiguriert ist, einschließlich der Wiederverwendung der Claude CLI), oder legen Sie einen eigenen Takt fest.
Überwachungsnotizen hinzufügen (optional)
Speichern Sie mit openclaw cron scratch <jobId> --set "..." eine kurze Checkliste in den Notizen der Heartbeat-Überwachung.
Ziel für Heartbeat-Nachrichten festlegen
target: "none" ist der Standard; legen Sie target: "last" fest, um Nachrichten an den letzten Kontakt weiterzuleiten.
Optionale Feinabstimmung
- Verwenden Sie einen schlanken Bootstrap-Kontext, wenn Heartbeat-Ausführungen nur die Überwachungsnotizen benötigen.
- Aktivieren Sie isolierte Sitzungen, damit nicht bei jedem Heartbeat der vollständige Gesprächsverlauf gesendet wird.
- Beschränken Sie Heartbeats auf aktive Zeiten (Ortszeit).
Beispielkonfiguration:
{ agents: { defaults: { heartbeat: { every: "30m", target: "last", // explizite Zustellung an den letzten Kontakt (Standard ist "none") directPolicy: "allow", // Standard: direkte/DM-Ziele zulassen; auf "block" setzen, um sie zu unterdrücken lightContext: true, // optional: Workspace-Bootstrap-Dateien für Heartbeat-Ausführungen überspringen isolatedSession: true, // optional: neue Sitzung bei jeder Ausführung (kein Gesprächsverlauf) // activeHours: { start: "08:00", end: "24:00" }, }, }, },}Standardwerte
- Intervall:
30m. Durch Anwenden der Anthropic-Provider-Standardwerte wird dies auf1herhöht, wenn der ermittelte Authentifizierungsmodus OAuth/Token ist (einschließlich der Wiederverwendung der Claude CLI), jedoch nur, solangeheartbeat.everynicht festgelegt ist. Legen Sieagents.defaults.heartbeat.everyoder agentenspezifischagents.entries.*.heartbeat.everyfest; verwenden Sie zum Deaktivieren0m. - Prompt-Inhalt (über
agents.defaults.heartbeat.promptkonfigurierbar):Follow the heartbeat monitor scratch context when provided. Recurring tasks are cron jobs; create or change their schedules with cron tools or the openclaw cron CLI, not heartbeat scratch. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK. - Zeitüberschreitung: Heartbeat-Durchläufe ohne festgelegten Wert verwenden
agents.defaults.timeoutSeconds, sofern dieser Wert gesetzt ist. Andernfalls verwenden sie den Heartbeat-Takt, begrenzt auf 600 Sekunden. Legen Sie für längere Heartbeat-Arbeitenagents.defaults.heartbeat.timeoutSecondsoder agentenspezifischagents.entries.*.heartbeat.timeoutSecondsfest. - Der Heartbeat-Prompt wird unverändert als Benutzernachricht gesendet. Der System-Prompt enthält einen Abschnitt „Heartbeats“, wenn Heartbeats für den Standardagenten aktiviert sind, und die Ausführung wird intern entsprechend gekennzeichnet.
- Wenn Heartbeats mit
0mdeaktiviert werden, bleibt der cron-Überwachungsauftrag bestehen, wird jedoch deaktiviert. Seine Notizen bleiben erhalten, bis Sie den Takt wieder aktivieren. - Wenn cron selbst deaktiviert ist, werden geplante Heartbeats nicht ausgeführt, auch wenn der Heartbeat-Takt weiterhin aktiviert ist.
- Aktive Zeiten (
heartbeat.activeHours) werden in der konfigurierten Zeitzone geprüft. Außerhalb des Zeitfensters werden Heartbeats bis zum nächsten Takt innerhalb des Fensters übersprungen. - Heartbeats werden automatisch zurückgestellt, solange cron-Arbeiten aktiv sind oder sich in der Warteschlange befinden oder solange die sitzungsschlüsselgebundenen Subagenten- oder verschachtelten Befehls-Lanes dieses Agenten ausgelastet sind. Gleichgeordnete Agenten pausieren einander nicht.
Zweck des Heartbeat-Prompts
Der Standard-Prompt ist bewusst allgemein gehalten:
- Hintergrundaufgaben: „Ausstehende Aufgaben berücksichtigen“ fordert den Agenten auf, Folgemaßnahmen zu prüfen (Posteingang, Kalender, Erinnerungen, Arbeiten in der Warteschlange) und auf dringende Punkte hinzuweisen.
- Nachfrage beim Menschen: „Gelegentlich tagsüber nach dem Menschen sehen“ regt zu einer gelegentlichen kurzen Nachricht wie „Benötigen Sie etwas?“ an, vermeidet jedoch durch Verwendung Ihrer konfigurierten lokalen Zeitzone nächtliche Nachrichtenfluten (siehe Zeitzone).
Heartbeat kann auf abgeschlossene Hintergrundaufgaben reagieren, aber eine Heartbeat-Ausführung selbst erstellt keinen Aufgabendatensatz.
Wenn ein Heartbeat etwas ganz Bestimmtes tun soll (z. B. „Gmail-PubSub-Statistiken prüfen“ oder „Gateway-Zustand überprüfen“), legen Sie agents.defaults.heartbeat.prompt (oder agents.entries.*.heartbeat.prompt) auf einen benutzerdefinierten Inhalt fest (wird unverändert gesendet).
Antwortvertrag
- Wenn nichts beachtet werden muss, antworten Sie mit
HEARTBEAT_OK. - Heartbeat-Ausführungen können stattdessen
heartbeat_respondmitnotify: falseaufrufen, wenn keine sichtbare Aktualisierung erfolgen soll, odernotify: truezusammen mitnotificationTextfür eine Warnung. Falls vorhanden, hat die strukturierte Tool-Antwort Vorrang vor dem textbasierten Rückfall. - Ein aussagekräftiges
heartbeat_respond-Ergebnis mitnotify: falsebleibt unsichtbar, wird jedoch als begrenzter interner Kontext für den nächsten Benutzerdurchlauf in dieser Sitzung gespeichert.no_change-Bestätigungen und sichtbare Benachrichtigungen werden nicht auf diese Weise gespeichert. - Während Heartbeat-Ausführungen behandelt OpenClaw
HEARTBEAT_OKals Bestätigung, wenn es am Anfang oder Ende der Antwort erscheint. Das Token wird entfernt und die Antwort verworfen, wenn der verbleibende Inhalt höchstens 300 Zeichen umfasst. - Wenn
HEARTBEAT_OKin der Mitte einer Antwort erscheint, wird es nicht besonders behandelt. - Fügen Sie bei Warnungen
HEARTBEAT_OKnicht ein; geben Sie ausschließlich den Warntext zurück.
Außerhalb von Heartbeats wird ein unbeabsichtigtes HEARTBEAT_OK am Anfang oder Ende einer Nachricht entfernt und protokolliert; eine Nachricht, die nur aus HEARTBEAT_OK besteht, wird verworfen.
Konfiguration
{ agents: { defaults: { heartbeat: { every: "30m", // Standard: 30m (0m deaktiviert) model: "anthropic/claude-opus-4-6", lightContext: false, // Standard: false; true überspringt Workspace-Bootstrap-Dateien für Heartbeat-Ausführungen isolatedSession: false, // Standard: false; true führt jeden Heartbeat in einer neuen Sitzung aus (kein Gesprächsverlauf) target: "last", // Standard: none | Optionen: last | none | <channel id> (Kern oder Plugin, z. B. "imessage") to: "+15551234567", // optionale kanalspezifische Überschreibung accountId: "ops-bot", // optionale Kanal-ID bei mehreren Konten prompt: "Befolgen Sie den Kontext der Heartbeat-Überwachungsnotizen, sofern er bereitgestellt wird. Wiederkehrende Aufgaben sind cron-Aufträge; erstellen oder ändern Sie deren Zeitpläne mit cron-Tools oder der openclaw cron CLI, nicht mit Heartbeat-Notizen. Leiten Sie keine alten Aufgaben aus früheren Chats ab und wiederholen Sie diese nicht. Wenn nichts beachtet werden muss, antworten Sie mit HEARTBEAT_OK.", }, }, },}Geltungsbereich und Rangfolge
agents.defaults.heartbeatlegt das globale Heartbeat-Verhalten fest.agents.entries.*.heartbeatwird darübergelegt; wenn ein Agent einenheartbeat-Block besitzt, führen nur diese Agenten Heartbeats aus.channels.defaults.heartbeatVisibilitylegt die Sichtbarkeitsstandards für alle Kanäle fest.channels.<channel>.heartbeatVisibilityüberschreibt die Kanalstandards.channels.<channel>.accounts.<id>.heartbeatVisibility(Kanäle mit mehreren Konten) überschreibt die kanalspezifischen Einstellungen.
Agentenspezifische Heartbeats
Wenn ein agents.entries.*-Eintrag einen heartbeat-Block enthält, führen nur diese Agenten Heartbeats aus. Der agentenspezifische Block wird über agents.defaults.heartbeat gelegt (Sie können daher gemeinsame Standardwerte einmalig festlegen und sie für einzelne Agenten überschreiben).
Beispiel: zwei Agenten, wobei nur der zweite Agent Heartbeats ausführt.
{ agents: { defaults: { heartbeat: { every: "30m", target: "last", // explizite Zustellung an den letzten Kontakt (Standard ist "none") }, }, list: [ { id: "main", default: true }, { id: "ops", heartbeat: { every: "1h", target: "whatsapp", to: "+15551234567", timeoutSeconds: 45, prompt: "Befolgen Sie den Kontext der Heartbeat-Überwachungsnotizen, sofern er bereitgestellt wird. Wiederkehrende Aufgaben sind cron-Aufträge; erstellen oder ändern Sie deren Zeitpläne mit cron-Tools oder der openclaw cron CLI, nicht mit Heartbeat-Notizen. Leiten Sie keine alten Aufgaben aus früheren Chats ab und wiederholen Sie diese nicht. Wenn nichts beachtet werden muss, antworten Sie mit HEARTBEAT_OK.", }, }, ], },}Beispiel für aktive Zeiten
Beschränken Sie Heartbeats auf Geschäftszeiten in einer bestimmten Zeitzone:
{ agents: { defaults: { heartbeat: { every: "30m", target: "last", // explizite Zustellung an den letzten Kontakt (Standard ist "none") activeHours: { start: "09:00", end: "22:00", timezone: "America/New_York", // optional; verwendet userTimezone, falls festgelegt, andernfalls die Zeitzone des Hosts }, }, }, },}Außerhalb dieses Zeitfensters (vor 9 Uhr oder nach 22 Uhr Eastern Time) werden Heartbeats übersprungen. Der nächste geplante Takt innerhalb des Fensters wird normal ausgeführt.
Einrichtung von 24/7
Wenn Heartbeats ganztägig ausgeführt werden sollen, verwenden Sie eines dieser Muster:
- Lassen Sie
activeHoursvollständig weg (keine Zeitfensterbeschränkung; dies ist das Standardverhalten). - Legen Sie ein ganztägiges Zeitfenster fest:
activeHours: { start: "00:00", end: "24:00" }.
Beispiel mit mehreren Konten
Verwenden Sie accountId, um auf Kanälen mit mehreren Konten wie Telegram ein bestimmtes Konto auszuwählen:
{ agents: { list: [ { id: "ops", heartbeat: { every: "1h", target: "telegram", to: "12345678:topic:42", // optional: an ein bestimmtes Thema/einen bestimmten Thread weiterleiten accountId: "ops-bot", }, }, ], }, channels: { telegram: { accounts: { "ops-bot": { botToken: "YOUR_TELEGRAM_BOT_TOKEN" }, }, }, },}Feldhinweise
everystringHeartbeat-Intervall (Zeitdauerzeichenfolge; Standardeinheit = Minuten).
modelstringOptionale Modellüberschreibung für Heartbeat-Ausführungen (provider/model).
lightContextbooleandefault: falseBei true verwenden Heartbeat-Ausführungen einen schlanken Bootstrap-Kontext und überspringen Workspace-Bootstrap-Dateien. Die Überwachungsnotizen werden in jedem Fall vom Heartbeat-Runner eingefügt.
isolatedSessionbooleandefault: falseBei true wird jeder Heartbeat in einer neuen Sitzung ohne vorherigen Gesprächsverlauf ausgeführt. Verwendet dasselbe Isolationsmuster wie cron sessionTarget: "isolated". Reduziert die Token-Kosten pro Heartbeat erheblich. Kombinieren Sie dies mit lightContext: true, um maximale Einsparungen zu erzielen. Die Zustellungsweiterleitung verwendet weiterhin den Kontext der Hauptsitzung.
sessionstringOptionaler Sitzungsschlüssel für Heartbeat-Ausführungen.
main(Standard): Hauptsitzung des Agenten.- Expliziter Sitzungsschlüssel (aus
openclaw sessions --jsonoder der Sitzungs-CLI kopieren). - Formate für Sitzungsschlüssel: siehe Sitzungen und Gruppen.
targetstringlast: an den zuletzt verwendeten externen Kanal zustellen.- Expliziter Kanal: eine beliebige konfigurierte Kanal- oder Plugin-ID, zum Beispiel
discord,matrix,telegramoderwhatsapp. none(Standard): den Heartbeat ausführen, aber nicht extern zustellen.
directPolicy"allow" | "block"default: allowSteuert das Zustellungsverhalten für direkte Nachrichten/DMs. allow: Heartbeat-Zustellung für direkte Nachrichten/DMs zulassen. block: Zustellung für direkte Nachrichten/DMs unterdrücken (reason=dm-blocked).
tostringOptionale Überschreibung des Empfängers (kanalspezifische ID, z. B. E.164 für WhatsApp oder eine Telegram-Chat-ID). Verwenden Sie für Telegram-Themen/Threads <chatId>:topic:<messageThreadId>.
accountIdstringOptionale Konto-ID für Kanäle mit mehreren Konten. Bei target: "last" gilt die Konto-ID für den ermittelten letzten Kanal, sofern dieser Konten unterstützt; andernfalls wird sie ignoriert. Wenn die Konto-ID keinem konfigurierten Konto des ermittelten Kanals entspricht, wird die Zustellung übersprungen.
promptstringÜberschreibt den standardmäßigen Prompt-Inhalt (wird nicht zusammengeführt).
timeoutSecondsnumberdefault: global timeout or min(every, 600)Maximale Anzahl von Sekunden, die ein Heartbeat-Agentendurchlauf dauern darf, bevor er abgebrochen wird. Lassen Sie dies ungesetzt, um agents.defaults.timeoutSeconds zu verwenden, sofern festgelegt; andernfalls wird das Heartbeat-Intervall mit einer Obergrenze von 600 Sekunden verwendet.
activeHoursobjectBeschränkt Heartbeat-Ausführungen auf ein Zeitfenster. Objekt mit start (HH:MM, einschließlich; verwenden Sie 00:00 für den Tagesbeginn), end (HH:MM, ausschließlich; 24:00 für das Tagesende zulässig) und optional timezone.
- Nicht angegeben oder
"user": verwendet Ihre Einstellungagents.defaults.userTimezone, sofern festgelegt; andernfalls wird auf die Zeitzone des Hostsystems zurückgegriffen. "local": verwendet immer die Zeitzone des Hostsystems.- Beliebige IANA-Kennung (z. B.
America/New_York): wird direkt verwendet; ist sie ungültig, wird auf das oben beschriebene Verhalten von"user"zurückgegriffen. startundenddürfen für ein aktives Zeitfenster nicht gleich sein; gleiche Werte werden als Fenster mit einer Breite von null behandelt (immer außerhalb des Fensters).- Außerhalb des aktiven Zeitfensters werden Heartbeats bis zum nächsten Tick innerhalb des Fensters übersprungen.
Zustellungsverhalten
Sitzungs- und Zielrouting
- Heartbeats werden standardmäßig in der Hauptsitzung des Agenten ausgeführt (
agent:<id>:<mainKey>) oder inglobal, wennsession.scope = "global". Legen Siesessionfest, um dies mit einer bestimmten Kanalsitzung (Discord/WhatsApp/usw.) zu überschreiben. sessionwirkt sich nur auf den Ausführungskontext aus; die Zustellung wird durchtargetundtogesteuert.- Um an einen bestimmten Kanal/Empfänger zuzustellen, legen Sie
target+tofest. Mittarget: "last"verwendet die Zustellung den letzten externen Kanal dieser Sitzung. - Heartbeat-Zustellungen lassen standardmäßig direkte Ziele/DM-Ziele zu. Legen Sie
directPolicy: "block"fest, um Sendungen an direkte Ziele zu unterdrücken, während der Heartbeat-Durchlauf weiterhin ausgeführt wird. - Wenn die Hauptwarteschlange, die Ziel-Sitzungsspur, die Cron-Spur oder ein aktiver Cron-Job ausgelastet ist, wird der Heartbeat übersprungen und später erneut versucht.
- Wenn
targetkein externes Ziel ergibt, wird der Durchlauf dennoch ausgeführt, aber keine ausgehende Nachricht gesendet.
Sichtbarkeits- und Überspringverhalten
- Wenn
showOk,showAlertsunduseIndicatoralle deaktiviert sind, wird der Durchlauf vorab alsreason=alerts-disabledübersprungen. - Wenn nur die Alarmzustellung deaktiviert ist, kann OpenClaw den Heartbeat dennoch ausführen, die Zeitstempel fälliger Aufgaben aktualisieren, den Leerlauf-Zeitstempel der Sitzung wiederherstellen und die nach außen gerichtete Alarmnutzlast unterdrücken.
- Wenn das ermittelte Heartbeat-Ziel Tippanzeigen unterstützt, zeigt OpenClaw während des aktiven Heartbeat-Durchlaufs eine Tippanzeige an. Dabei wird dasselbe Ziel verwendet, an das der Heartbeat Chat-Ausgaben senden würde; durch
typingMode: "never"wird dies deaktiviert.
Sitzungslebenszyklus und Audit
- Reine Heartbeat-Antworten halten die Sitzung nicht aktiv. Heartbeat-Metadaten können die Sitzungszeile aktualisieren, für den Ablauf wegen Inaktivität wird jedoch
lastInteractionAtaus der letzten echten Benutzer-/Kanalnachricht verwendet und für den täglichen AblaufsessionStartedAt. - Der Verlauf in Control UI und WebChat blendet Heartbeat-Prompts und reine OK-Bestätigungen aus. Das zugrunde liegende Sitzungsprotokoll kann diese Durchläufe für Audit/Wiedergabe weiterhin enthalten.
- Abgekoppelte Hintergrundaufgaben können ein Systemereignis in die Warteschlange stellen und den Heartbeat aktivieren, wenn die Hauptsitzung schnell auf etwas aufmerksam werden soll. Diese Aktivierung macht den Heartbeat-Durchlauf nicht zu einer Hintergrundaufgabe.
Sichtbarkeitssteuerung
Standardmäßig werden HEARTBEAT_OK-Bestätigungen unterdrückt, während Alarminhalte zugestellt werden. Sie können dies pro Kanal oder pro Konto anpassen:
channels: defaults: heartbeat: showOk: false # HEARTBEAT_OK ausblenden (Standard) showAlerts: true # Alarmmeldungen anzeigen (Standard) useIndicator: true # Indikatorereignisse ausgeben (Standard) telegram: heartbeat: showOk: true # OK-Bestätigungen auf Telegram anzeigen whatsapp: accounts: work: heartbeat: showAlerts: false # Alarmzustellung für dieses Konto unterdrückenPriorität: pro Konto → pro Kanal → Kanalstandards → integrierte Standards.
Funktion der einzelnen Flags
showOk: sendet eineHEARTBEAT_OK-Bestätigung, wenn das Modell eine reine OK-Antwort zurückgibt.showAlerts: sendet den Alarminhalt, wenn das Modell eine andere als eine OK-Antwort zurückgibt.useIndicator: gibt Indikatorereignisse für UI-Statusoberflächen aus.
Wenn alle drei auf false gesetzt sind, überspringt OpenClaw den Heartbeat-Durchlauf vollständig (kein Modellaufruf).
Beispiele für Einstellungen pro Kanal und pro Konto
channels: defaults: heartbeat: showOk: false showAlerts: true useIndicator: true slack: heartbeat: showOk: true # alle Slack-Konten accounts: ops: heartbeat: showAlerts: false # Alarme nur für das ops-Konto unterdrücken telegram: heartbeat: showOk: trueHäufige Muster
| Ziel | Konfiguration |
|---|---|
| Standardverhalten (stille OKs, Alarme aktiviert) | (keine Konfiguration erforderlich) |
| Vollständig still (keine Nachrichten, kein Indikator) | channels.defaults.heartbeat: { showOk: false, showAlerts: false, useIndicator: false } |
| Nur Indikator (keine Nachrichten) | channels.defaults.heartbeat: { showOk: false, showAlerts: false, useIndicator: true } |
| OKs nur in einem Kanal | channels.telegram.heartbeat: { showOk: true } |
Monitor-Notizen (optional)
Jeder Cron-Job des Heartbeat-Monitors besitzt ein privates Notizdokument, das in der gemeinsamen Zustandsdatenbank gespeichert ist. Betrachten Sie es als Ihre „Heartbeat-Checkliste“: klein, stabil und sicher alle 30 Minuten zu berücksichtigen. Wenn Notizen vorhanden sind, wird ihr Inhalt an den Heartbeat-Prompt angehängt.
Verwalten Sie sie mit der Cron-CLI (die Job-ID stammt aus openclaw cron list --all):
openclaw cron scratch <jobId> # aktuelle Notizen ausgebenopenclaw cron scratch <jobId> --set "..." # durch den exakten Text ersetzenopenclaw cron scratch <jobId> --file notes.md # durch den Inhalt einer Datei ersetzen (- für stdin)openclaw cron scratch <jobId> --unset # entfernenSchreibvorgänge sind durch Compare-and-Swap geschützt: Übergeben Sie --expected-revision <n>, damit der Vorgang fehlschlägt, statt eine gleichzeitige Bearbeitung zu überschreiben. Die Notizen sind auf 256 KiB begrenzt und erscheinen niemals in der Ausgabe von cron list/cron runs.
Der Agent kann auch seine eigenen Notizen aktualisieren: Während eines Heartbeat-Durchlaufs akzeptiert heartbeat_respond eine optionale Zeichenfolge scratch, die die Notizen des Monitors für zukünftige Heartbeats vollständig ersetzt.
Wenn Notizen vorhanden, aber praktisch leer sind (nur Leerzeilen, Markdown-/HTML-Kommentare, Markdown-Überschriften wie # Heading, Fence-Markierungen oder leere Checklisten-Platzhalter), überspringt OpenClaw den Heartbeat-Durchlauf, um API-Aufrufe zu sparen. Dieses Überspringen wird als reason=empty-heartbeat-file gemeldet. Sind keine Notizen vorhanden, wird der Heartbeat dennoch ausgeführt und das Modell entscheidet, was zu tun ist.
Halten Sie sie knapp (kurze Checkliste oder Erinnerungen), um ein unnötiges Anwachsen des Prompts zu vermeiden.
Beispielnotizen:
# Heartbeat-Checkliste - Kurz prüfen: Gibt es etwas Dringendes in den Posteingängen?- Wenn es Tag ist und sonst nichts ansteht, kurz und unaufwendig nachfragen.- Wenn eine Aufgabe blockiert ist, notieren, _was fehlt_, und Peter beim nächsten Mal fragen.Wiederkehrende Prüfungen mit Cron planen
Heartbeat-Notizen sind Prompt-Kontext und kein Zeitplaner. Erstellen Sie jede wiederkehrende Prüfung als Cron-Job, damit sie über ein eigenes Intervall, einen eigenen Aktivierungsstatus und einen eigenen Ausführungsverlauf verfügt. Cron-Jobs können weiterhin auf die Hauptsitzung abzielen, wenn für die Prüfung der normale Gesprächskontext verwendet werden soll.
Ältere Notizen können einen strukturierten tasks:-Block enthalten. Führen Sie nach dem Upgrade einmal openclaw doctor --fix aus: Doctor wandelt jeden gültigen Eintrag in einen unabhängig geplanten Cron-Job um, behält sein Intervall und den vorherigen Zeitpunkt der letzten Ausführung bei und entfernt den eingestellten Block, während der umgebende Notiztext erhalten bleibt. Heartbeat-Durchläufe zur Laufzeit interpretieren tasks:-Text nicht als Zeitpläne.
Von Doctor erstellte Heartbeat-Aufgabenjobs behalten die aktiven Heartbeat-Zeiten sowie die Schutzmechanismen für Abkühlzeit, Überlastung und Auslastung bei. Gleichzeitig fällige Jobs können zu einem einzigen Heartbeat-Durchlauf zusammengefasst werden. Ein Vorkommen außerhalb der aktiven Zeiten wird übersprungen und beim nächsten Cron-Vorkommen erneut versucht.
Kann der Agent seine Notizen aktualisieren?
Ja. Während eines Heartbeat-Durchlaufs kann der Agent einen scratch-Wert an heartbeat_respond übergeben, um den Monitor-Text für zukünftige Heartbeats vollständig zu ersetzen. Sie können ihn auch in einem normalen Chat auffordern, openclaw cron scratch <jobId> --set ... auszuführen, oder die Notizen selbst mit demselben Befehl bearbeiten. Verwalten Sie wiederkehrende Zeitpläne mit Cron, statt Zeitplanersyntax in die Notizen zu schreiben.
Manuelle Aktivierung (bei Bedarf)
Verwenden Sie openclaw system event, um ein Systemereignis in die Warteschlange zu stellen und optional sofort einen Heartbeat auszulösen:
openclaw system event --text "Auf dringende Nachfassaktionen prüfen" --mode now| Flag | Beschreibung |
|---|---|
--text <text> |
Systemereignistext (erforderlich). |
--mode <mode> |
now führt sofort einen Heartbeat aus; next-heartbeat (Standard) wartet auf den nächsten geplanten Tick. |
--session-key <sessionKey> |
Richtet das Ereignis an eine bestimmte Sitzung; standardmäßig wird die Hauptsitzung des Agenten verwendet. |
--json |
Gibt JSON aus. |
Wenn kein --session-key angegeben ist und für mehrere Agenten heartbeat konfiguriert ist, führt --mode now die Heartbeats all dieser Agenten sofort aus.
Zugehörige Heartbeat-Steuerelemente in derselben CLI-Gruppe:
openclaw system heartbeat last # letztes Heartbeat-Ereignis anzeigenopenclaw system heartbeat enable # Heartbeats aktivierenopenclaw system heartbeat disable # Heartbeats deaktivierenKostenbewusstsein
Heartbeats führen vollständige Agentendurchläufe aus. Kürzere Intervalle verbrauchen mehr Token. So lassen sich die Kosten reduzieren:
- Verwenden Sie
isolatedSession: true, damit nicht der vollständige Konversationsverlauf gesendet wird (~100K Token werden auf ~2-5K pro Ausführung reduziert). - Verwenden Sie
lightContext: true, um Workspace-Bootstrap-Dateien bei Heartbeat-Ausführungen zu überspringen. - Legen Sie ein kostengünstigeres
modelfest (z. B.ollama/llama3.2:1b). - Halten Sie den temporären Monitorbereich klein.
- Verwenden Sie
target: "none", wenn Sie nur interne Statusaktualisierungen wünschen.
Kontextüberlauf nach einem Heartbeat
Heartbeats behalten nach Abschluss der Ausführung das vorhandene Laufzeitmodell der gemeinsam genutzten Sitzung bei. Daher kann ein Heartbeat, der eine Sitzung auf ein kleineres lokales Modell umgestellt hat (beispielsweise ein Ollama-Modell mit einem 32k-Kontextfenster), dieses Modell für den nächsten Durchlauf der Hauptsitzung aktiv lassen. Wenn dieser nächste Durchlauf dann einen Kontextüberlauf meldet und das zuletzt verwendete Laufzeitmodell der Sitzung mit dem konfigurierten heartbeat.model übereinstimmt, nennt die Wiederherstellungsmeldung von OpenClaw die Übernahme des Heartbeat-Modells als wahrscheinliche Ursache und schlägt eine Korrektur vor.
So vermeiden Sie dies: Verwenden Sie isolatedSession: true, um Heartbeats in einer neuen Sitzung auszuführen (optional in Kombination mit lightContext: true für den kleinstmöglichen Prompt), oder wählen Sie ein Heartbeat-Modell mit einem Kontextfenster, das groß genug für die gemeinsam genutzte Sitzung ist.
Verwandte Themen
- Automatisierung – alle Automatisierungsmechanismen auf einen Blick
- Hintergrundaufgaben – wie abgekoppelte Arbeiten nachverfolgt werden
- Zeitzone – wie sich die Zeitzone auf die Heartbeat-Planung auswirkt
- Fehlerbehebung – Fehler bei der Automatisierung diagnostizieren