Hjärtslag (Gateway)
Heartbeat vs Cron? Se Cron vs Heartbeat för vägledning om när du ska använda respektive.Heartbeat kör periodiska agentvarv i huvudsessionen så att modellen kan lyfta fram sådant som behöver uppmärksamhet utan att spamma dig. Felsökning: /automation/troubleshooting
Snabbstart (nybörjare)
- Låt heartbeats vara aktiverade (standard är
30m, eller1hför Anthropic OAuth/setup-token) eller ställ in din egen frekvens. - Skapa en liten
HEARTBEAT.md-checklista i agentens arbetsyta (valfritt men rekommenderat). - Bestäm vart heartbeat-meddelanden ska skickas (
target: "last"är standard). - Valfritt: aktivera leverans av heartbeat-resonemang för transparens.
- Valfritt: begränsa heartbeats till aktiva timmar (lokal tid).
Standardvärden
- Interval:
30m(eller1hnär Anthropic OAuth/setup-token är det detekterade auth läget). Angeagents.defaults.heartbeat.everyeller per-agentagents.list[].heartbeat.every; använd0mför att inaktivera. - Prompt kropp (konfigurerbar via
agents.defaults.heartbeat.prompt):Read HEARTBEAT.md om den existerar (arbetsytans sammanhang). Följ den strikt. Sluta inte eller upprepa gamla uppgifter från tidigare chattar. Om inget behöver uppmärksamhet, svara HEARTBEAT_OK. - Hjärtslag-prompten skickas ordagrande som användarmeddelande. Systemet prompten innehåller en “Heartbeat” sektion och körningen är flaggad internt.
- Aktiva timmar (
heartbeat.activeHours) kontrolleras i den konfigurerade tidszonen. Utanför fönstret hoppas hjärtslag över till nästa fästing inne i fönstret.
Vad heartbeat-prompten är till för
Standardprompten är avsiktligt bred:- Bakgrundsuppgifter: ”Consider outstanding tasks” uppmanar agenten att granska uppföljningar (inkorg, kalender, påminnelser, köat arbete) och lyfta fram det som är brådskande.
- Mänsklig avstämning: ”Checkup sometimes on your human during day time” uppmuntrar till ett ibland förekommande lättviktigt ”behöver du något?”-meddelande, men undviker nattligt spam genom att använda din konfigurerade lokala tidszon (se /concepts/timezone).
agents. efaults.heartbeat.prompt (eller
agents.list[].heartbeat.prompt) till en anpassad kropp (skickad verbatim).
Svarskontrakt
- Om inget kräver uppmärksamhet, svara med
HEARTBEAT_OK. - Under hjärtslag körs behandlar OpenClaw
HEARTBEAT_OKsom en ack när det visas vid början eller slutet av svaret. Talet är borttaget och svaret är tappat om det återstående innehållet är ≤ackMaxChars(standard: 300). - Om
HEARTBEAT_OKförekommer i mitten av ett svar behandlas den inte särskilt. - För larm ska du inte inkludera
HEARTBEAT_OK; returnera endast larmtexten.
HEARTBEAT_OK i början/slutet av ett meddelande bort
och loggas; ett meddelande som bara är HEARTBEAT_OK slängs.
Konfig
Omfattning och prioritet
agents.defaults.heartbeatsätter globalt heartbeat-beteende.agents.list[].heartbeatslås samman ovanpå; om någon agent har ettheartbeat-block kör endast dessa agenter heartbeats.channels.defaults.heartbeatsätter synlighetsstandarder för alla kanaler.kanaler.<channel>.heartbeatåsidosätter kanalstandard.kanaler.<channel>.accounts.<id>.heartbeat(multi-account kanaler) åsidosätter inställningar per kanal.
Per-agent-heartbeats
Om någonagents.list[] inlägg innehåller ett heartbeat-block, bara de agenterna
kör hjärtslag. Blocket per agent sammanfogas ovanpå agents.defaults.heartbeat
(så att du kan ställa in delade standardvärden en gång och åsidosätta per agent).
Exempel: två agenter, endast den andra agenten kör heartbeats.
Exempel: aktiva timmar
Begränsa heartbeats till kontorstid i en specifik tidszon:Exempel: flera konton
AnvändaccountId för att rikta in dig på ett specifikt konto i kanaler med flera
konton som Telegram:
Fältnoteringar
every: heartbeat-intervall (varaktighetssträng; standardenhet = minuter).model: valfri modellåsidosättning för heartbeat-körningar (provider/model).includeReasoning: när aktiverad, levererar även det separataReasoning:-meddelandet när tillgängligt (samma form som/reasoning on).session: valfri sessionsnyckel för heartbeat-körningar.main(standard): agentens huvudsession.- Explicit sessionsnyckel (kopiera från
openclaw sessions --jsoneller sessions CLI). - Format för sessionsnycklar: se Sessions och Groups.
target:last(standard): leverera till senast använda externa kanal.- Explicit kanal:
whatsapp/telegram/discord/googlechat/slack/msteams/signal/imessage. none: kör heartbeaten men leverera inte externt.
to: valfri mottagare åsidosätter (kanalspecifikt id, t.ex. E.164 för WhatsApp eller ett Telegram chatt-id).accountId: valfritt kontonummer för kanaler med flera konton. Närtarget: "last", gäller konto-id för den lösta sista kanalen om den stöder konton; annars ignoreras. Om konto-id inte matchar ett konfigurerat konto för den lösta kanalen, hoppas leveransen över.prompt: åsidosätter standardpromptens text (slås inte samman).ackMaxChars: max antal tecken som tillåts efterHEARTBEAT_OKföre leverans.activeHours: begränsar hjärtslag körs till ett tidsfönster. Objekt medstart(HH:MM, inclusive),end(HH:MM exklusive;24:00tillåts för slut-av-dag) och valfritimezone.- Utelämnad eller
"user": använder dinagents.defaults.userTimezoneom den är satt, annars faller den tillbaka till värdsystemets tidszon. "local": använder alltid värdsystemets tidszon.- Någon IANA identifierare (t.ex.
America/New_York): används direkt; om ogiltigt, faller tillbaka till"användar"beteende ovan. - Utanför det aktiva fönstret hoppas heartbeats över till nästa tick inom fönstret.
- Utelämnad eller
Leveransbeteende
- Heartbeats körs i agentens huvudsession som standard (
agent:<id>:<mainKey>), ellerglobalnärsession.scope = "global". Setsessionto override to a specific channel session (Discord/WhatsApp/etc.). sessionpåverkar endast körningskontexten; leverans styrs avtargetochto.- För att leverera till en specifik kanal / mottagare, sätt
target+to. Medtarget: "last", använder leverans den sista externa kanalen för den sessionen. - Om huvudkön är upptagen hoppas heartbeaten över och försöks igen senare.
- Om
targetlöses till ingen extern destination körs varvet ändå men inget utgående meddelande skickas. - Endast-heartbeat-svar håller inte sessionen vid liv; den senaste
updatedAtåterställs så att inaktiv utgång beter sig normalt.
Synlighetskontroller
Som standard undertrycks ‘HEARTBEAT_OK’ bekräftelser medan varningens innehåll är levereras. Du kan justera detta per kanal eller per konto:Vad varje flagga gör
showOk: skickar enHEARTBEAT_OK-kvittens när modellen returnerar ett svar som endast är OK.showAlerts: skickar larm-innehållet när modellen returnerar ett icke-OK-svar.useIndicator: emitterar indikatorhändelser för UI-statusytor.
Exempel: per kanal vs per konto
Vanliga mönster
| Mål | Konfig |
|---|---|
| Standardbeteende (tysta OK, larm på) | (ingen konfig behövs) |
| Helt tyst (inga meddelanden, ingen indikator) | channels.defaults.heartbeat: { showOk: false, showAlerts: false, useIndicator: false } |
| Endast indikator (inga meddelanden) | channels.defaults.heartbeat: { showOk: false, showAlerts: false, useIndicator: true } |
| OK i endast en kanal | channels.telegram.heartbeat: { showOk: true } |
HEARTBEAT.md (valfritt)
Om en ‘HEARTBEAT.md’ fil finns i arbetsytan, säger standardprompten till agenten att läsa den. Tänk på det som en ”hjärtslagschecklista”: liten, stabil och säker att inkludera var 30:e minut. OmHEARTBEAT. d finns men är effektivt tom (endast tomma rader och markdown
rubriker som # Heading), hoppar OpenClaw över hjärtslaget för att spara API-samtal.
Om filen saknas körs heartbeat ändå och modellen avgör vad som ska göras.
Håll den liten (kort checklista eller påminnelser) för att undvika prompt-svällning.
Exempel på HEARTBEAT.md:
Kan agenten uppdatera HEARTBEAT.md?
Ja — om du ber den.HEARTBEAT.md är bara en vanlig fil i agentens arbetsyta, så du kan säga till
agenten (i en vanlig chatt) något som:
- ”Uppdatera
HEARTBEAT.mdför att lägga till en daglig kalenderkontroll.” - ”Skriv om
HEARTBEAT.mdså att den blir kortare och fokuserad på inkorgsuppföljningar.”
HEARTBEAT.md — den blir en del av promptkontexten.
Manuell väckning (on-demand)
Du kan köa en systemhändelse och trigga en omedelbar heartbeat med:heartbeat konfigurerat kör en manuell väckning varje
agents heartbeat omedelbart.
Använd --mode next-heartbeat för att vänta på nästa schemalagda tick.
Leverans av resonemang (valfritt)
Som standard levererar heartbeats endast den slutliga ”svar”-payloaden. Om du vill ha transparens, aktivera:agents.defaults.heartbeat.includeReasoning: true
Anledning: (samma form som /resonemang på). Detta kan vara användbart när agenten
hanterar flera sessioner/codexes och du vill se varför det bestämde sig för att pinga
du — men det kan också läcka mer intern detalj än du vill. Föredrar att hålla den
borta i gruppchattar.
Kostnadsmedvetenhet
Heartbeats kör full agent varv. Kortare intervaller brinner fler tokens. BehållHEARTBEAT.md liten och överväg en billigare modell eller target: "none" om du
bara vill ha interna statusuppdateringar.