Hoppa till huvudinnehåll

Cron vs Heartbeat: När du ska använda vad

Både hjärtslag och cron-jobb låter dig köra uppgifter på ett schema. Denna guide hjälper dig att välja rätt mekanism för ditt användningsfall.

Snabb beslutshjälp

AnvändningsfallRekommenderatVarför
Kontrollera inkorgen var 30:e minutHeartbeatBatchas med andra kontroller, kontextmedvetet
Skicka daglig rapport kl. 9 exaktCron (isolated)Exakt timing krävs
Övervaka kalendern för kommande händelserHeartbeatNaturlig passform för periodisk medvetenhet
Köra veckovis djupanalysCron (isolated)Fristående uppgift, kan använda annan modell
Påminn mig om 20 minuterCron (main, --at)Engångsuppgift med exakt timing
Bakgrundskontroll av projekthälsaHeartbeatÅker snålskjuts på befintlig cykel

Heartbeat: Periodisk medvetenhet

Hjärtslag körs i huvudsessionen med ett regelbundet intervall (standard: 30 min). De är utformade för agenten att kontrollera saker och yta allt viktigt.

När du ska använda heartbeat

  • Flera periodiska kontroller: I stället för 5 separata cron-jobb som kontrollerar inkorg, kalender, väder, aviseringar och projektstatus kan en enda heartbeat batcha allt detta.
  • Kontextmedvetna beslut: Agenten har full kontext från huvudsessionen och kan göra smarta bedömningar av vad som är brådskande respektive kan vänta.
  • Samtalskontinuitet: Heartbeat-körningar delar samma session, så agenten minns nyliga samtal och kan följa upp naturligt.
  • Övervakning med låg overhead: En heartbeat ersätter många små pollande uppgifter.

Fördelar med heartbeat

  • Batchar flera kontroller: Ett agentvarv kan granska inkorg, kalender och aviseringar tillsammans.
  • Minskar API-anrop: En enda heartbeat är billigare än 5 isolerade cron-jobb.
  • Kontextmedveten: Agenten vet vad du har arbetat med och kan prioritera därefter.
  • Smart undertryckning: Om inget kräver uppmärksamhet svarar agenten HEARTBEAT_OK och inget meddelande levereras.
  • Naturlig timing: Driver något beroende på köbelastning, vilket är okej för de flesta övervakningar.

Heartbeat-exempel: HEARTBEAT.md-checklista

# 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
Agenten läser detta vid varje heartbeat och hanterar alla punkter i ett enda varv.

Konfigurera heartbeat

{
  agents: {
    defaults: {
      heartbeat: {
        every: "30m", // interval
        target: "last", // where to deliver alerts
        activeHours: { start: "08:00", end: "22:00" }, // optional
      },
    },
  },
}
Se Heartbeat för fullständig konfiguration.

Cron: Precis schemaläggning

Cron-jobb körs vid exakta tider och kan köras i isolerade sessioner utan att påverka huvudkontexten.

När du ska använda cron

  • Exakt timing krävs: ”Skicka detta kl. 9:00 varje måndag” (inte ”någon gång runt 9”).
  • Fristående uppgifter: Uppgifter som inte behöver samtalskontext.
  • Annan modell/tänkande: Tung analys som motiverar en kraftfullare modell.
  • Engångspåminnelser: ”Påminn mig om 20 minuter” med --at.
  • Stökiga/frekventa uppgifter: Uppgifter som skulle skräpa ned huvudsessionens historik.
  • Externa triggers: Uppgifter som ska köras oberoende av om agenten annars är aktiv.

Fördelar med cron

  • Exakt timing: 5-fälts cron-uttryck med stöd för tidszoner.
  • Sessionsisolering: Körs i cron:<jobId> utan att förorena huvudhistoriken.
  • Modellöverskrivningar: Använd en billigare eller kraftfullare modell per jobb.
  • Leveranskontroll: Isolerade jobb använder som standard announce (sammanfattning); välj none vid behov.
  • Omedelbar leverans: Announce-läget publicerar direkt utan att vänta på heartbeat.
  • Ingen agentkontext krävs: Körs även om huvudsessionen är inaktiv eller komprimerad.
  • Stöd för engångskörning: --at för exakta framtida tidsstämplar.

Cron-exempel: Daglig morgonbriefing

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"
Detta körs exakt kl. 7:00 New York-tid, använder Opus för kvalitet och annonserar en sammanfattning direkt till WhatsApp.

Cron-exempel: Engångspåminnelse

openclaw cron add \
  --name "Meeting reminder" \
  --at "20m" \
  --session main \
  --system-event "Reminder: standup meeting starts in 10 minutes." \
  --wake now \
  --delete-after-run
Se Cron jobs för fullständig CLI-referens.

Beslutsflödesschema

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

Kombinera båda

Den mest effektiva uppsättningen använder båda:
  1. Heartbeat hanterar rutinövervakning (inkorg, kalender, aviseringar) i ett batchat varv var 30:e minut.
  2. Cron hanterar exakta scheman (dagliga rapporter, veckovisa genomgångar) och engångspåminnelser.

Exempel: Effektiv automationsuppsättning

HEARTBEAT.md (kontrolleras var 30:e minut):
# 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-jobb (exakt timing):
# 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: Deterministiska arbetsflöden med godkännanden

Hummer är arbetsflödets körtid för flerstegs verktygsrörledningar som behöver deterministisk exekvering och uttryckliga godkännanden. Använd det när uppgiften är mer än en enda agent tur, och du vill ha ett återupptagbart arbetsflöde med mänskliga kontrollpunkter.

När Lobster passar

  • Flerstegsautomatisering: Du behöver en fast pipeline av verktygsanrop, inte en engångsprompt.
  • Godkännandegrindar: Bieffekter ska pausas tills du godkänner, och sedan återupptas.
  • Återupptagbara körningar: Fortsätt ett pausat arbetsflöde utan att köra om tidigare steg.

Hur den samspelar med heartbeat och cron

  • Heartbeat/cron avgör när en körning sker.
  • Lobster definierar vilka steg som sker när körningen startar.
För schemalagda arbetsflöden, använd cron eller hjärtslag för att utlösa en agent tur som kallar Lobster. För ad-hoc arbetsflöden, ring Hummer direkt.

Operativa noteringar (från koden)

  • Lobster körs som en lokal underprocess (lobster CLI) i verktygsläge och returnerar ett JSON-kuvert.
  • Om verktyget returnerar needs_approval återupptar du med en resumeToken och flaggan approve.
  • Verktyget är ett valfritt plugin; aktivera det additivt via tools.alsoAllow: ["lobster"] (rekommenderas).
  • Om du skickar lobsterPath måste det vara en absolut sökväg.
Se Lobster för fullständig användning och exempel.

Huvudsession vs Isolerad session

Både heartbeat och cron kan interagera med huvudsessionen, men på olika sätt:
HeartbeatCron (main)Cron (isolated)
SessionHuvudHuvud (via systemhändelse)cron:<jobId>
HistorikDeladDeladNy vid varje körning
KontextFullFullIngen (startar rent)
ModellHuvudsessionens modellHuvudsessionens modellKan överskrivas
UtdataLevereras om inte HEARTBEAT_OKHeartbeat-prompt + händelseAnnonsera sammanfattning (standard)

När du ska använda main-session-cron

Använd --session main med --system-event när du vill:
  • Att påminnelsen/händelsen ska visas i huvudsessionens kontext
  • Att agenten ska hantera den under nästa heartbeat med full kontext
  • Ingen separat isolerad körning
openclaw cron add \
  --name "Check project" \
  --every "4h" \
  --session main \
  --system-event "Time for a project health check" \
  --wake now

När du ska använda isolerad cron

Använd --session isolated när du vill:
  • En ren start utan tidigare kontext
  • Annan modell eller tänkandeinställningar
  • Annonsera sammanfattningar direkt till en kanal
  • Historik som inte skräpar ned huvudsessionen
openclaw cron add \
  --name "Deep analysis" \
  --cron "0 6 * * 0" \
  --session isolated \
  --message "Weekly codebase analysis..." \
  --model opus \
  --thinking high \
  --announce

Kostnadsöverväganden

MekanismKostnadsprofil
HeartbeatEtt varv var N:e minut; skalar med HEARTBEAT.md-storlek
Cron (main)Lägger till händelse till nästa heartbeat (ingen isolerad körning)
Cron (isolated)Fullt agentvarv per jobb; kan använda billigare modell
Tips:
  • Håll HEARTBEAT.md liten för att minimera token-overhead.
  • Batcha liknande kontroller i heartbeat i stället för flera cron-jobb.
  • Använd target: "none" på heartbeat om du bara vill ha intern bearbetning.
  • Använd isolerad cron med en billigare modell för rutinuppgifter.

Relaterat

  • Heartbeat – fullständig heartbeat-konfiguration
  • Cron jobs – fullständig CLI- och API-referens för cron
  • System – systemhändelser + heartbeat-kontroller