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ändningsfall | Rekommenderat | Varför |
|---|---|---|
| Kontrollera inkorgen var 30:e minut | Heartbeat | Batchas med andra kontroller, kontextmedvetet |
| Skicka daglig rapport kl. 9 exakt | Cron (isolated) | Exakt timing krävs |
| Övervaka kalendern för kommande händelser | Heartbeat | Naturlig passform för periodisk medvetenhet |
| Köra veckovis djupanalys | Cron (isolated) | Fristående uppgift, kan använda annan modell |
| Påminn mig om 20 minuter | Cron (main, --at) | Engångsuppgift med exakt timing |
| Bakgrundskontroll av projekthälsa | Heartbeat | Å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_OKoch 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
Konfigurera heartbeat
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äljnonevid 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:
--atför exakta framtida tidsstämplar.
Cron-exempel: Daglig morgonbriefing
Cron-exempel: Engångspåminnelse
Beslutsflödesschema
Kombinera båda
Den mest effektiva uppsättningen använder båda:- Heartbeat hanterar rutinövervakning (inkorg, kalender, aviseringar) i ett batchat varv var 30:e minut.
- Cron hanterar exakta scheman (dagliga rapporter, veckovisa genomgångar) och engångspåminnelser.
Exempel: Effektiv automationsuppsättning
HEARTBEAT.md (kontrolleras var 30:e minut):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.
Operativa noteringar (från koden)
- Lobster körs som en lokal underprocess (
lobsterCLI) i verktygsläge och returnerar ett JSON-kuvert. - Om verktyget returnerar
needs_approvalåterupptar du med enresumeTokenoch flagganapprove. - Verktyget är ett valfritt plugin; aktivera det additivt via
tools.alsoAllow: ["lobster"](rekommenderas). - Om du skickar
lobsterPathmåste det vara en absolut sökväg.
Huvudsession vs Isolerad session
Både heartbeat och cron kan interagera med huvudsessionen, men på olika sätt:| Heartbeat | Cron (main) | Cron (isolated) | |
|---|---|---|---|
| Session | Huvud | Huvud (via systemhändelse) | cron:<jobId> |
| Historik | Delad | Delad | Ny vid varje körning |
| Kontext | Full | Full | Ingen (startar rent) |
| Modell | Huvudsessionens modell | Huvudsessionens modell | Kan överskrivas |
| Utdata | Levereras om inte HEARTBEAT_OK | Heartbeat-prompt + händelse | Annonsera 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
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
Kostnadsöverväganden
| Mekanism | Kostnadsprofil |
|---|---|
| Heartbeat | Ett 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 |
- Håll
HEARTBEAT.mdliten 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.