Community translations by veiseule.ai — Help improve them on Crowdin
Skip to main content

Cron vs Heartbeat: Kiedy używać którego

Zarówno heartbeat, jak i zadania cron umożliwiają uruchamianie zadań według harmonogramu. Ten przewodnik pomaga wybrać właściwy mechanizm dla Twojego przypadku użycia.

Szybki przewodnik decyzyjny

Przypadek użycia Zalecane Dlaczego
Sprawdzanie skrzynki co 30 min Heartbeat Grupuje z innymi sprawdzeniami, świadome kontekstu
Wysyłka dziennego raportu o 9:00 Cron (izolowany) Wymagane dokładne wyczucie czasu
Monitorowanie kalendarza wydarzeń Heartbeat Naturalne dopasowanie do okresowej świadomości
Cotygodniowa głęboka analiza Cron (izolowany) Zadanie samodzielne, może używać innego modelu
Przypomnij za 20 minut Cron (główny, --at) Jednorazowe z precyzyjnym czasem
Kontrola kondycji projektu w tle Heartbeat Piggybacks w istniejącym cyklu

Heartbeat: Okresowa świadomość

Heartbeat działa w głównej sesji w regularnych odstępach (domyślnie: co 30 min). Został zaprojektowany tak, aby agent sprawdzał różne rzeczy i sygnalizował wszystko, co istotne.

Kiedy używać heartbeat

  • Wiele okresowych sprawdzeń: Zamiast 5 oddzielnych zadań cron sprawdzających skrzynkę, kalendarz, pogodę, powiadomienia i status projektu, pojedynczy heartbeat może zgrupować je wszystkie.
  • Decyzje świadome kontekstu: Agent ma pełny kontekst głównej sesji, więc potrafi rozsądnie zdecydować, co jest pilne, a co może poczekać.
  • Ciągłość konwersacji: Uruchomienia heartbeat współdzielą tę samą sesję, więc agent pamięta ostatnie rozmowy i może naturalnie nawiązywać.
  • Monitorowanie o niskim narzucie: Jeden heartbeat zastępuje wiele drobnych zadań odpytywania.

Zalety heartbeat

  • Grupuje wiele sprawdzeń: Jedna tura agenta może jednocześnie przejrzeć skrzynkę, kalendarz i powiadomienia.
  • Redukuje wywołania API: Pojedynczy heartbeat jest tańszy niż 5 izolowanych zadań cron.
  • Świadomy kontekstu: Agent wie, nad czym pracowałeś(-aś), i odpowiednio ustala priorytety.
  • Inteligentne tłumienie: Jeśli nic nie wymaga uwagi, agent odpowiada HEARTBEAT_OK i żadna wiadomość nie jest dostarczana.
  • Naturalne wyczucie czasu: Niewielkie dryfowanie w zależności od obciążenia kolejki, co jest akceptowalne dla większości monitoringu.

Przykład heartbeat: lista kontrolna HEARTBEAT.md

# 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

Agent odczytuje to przy każdym heartbeat i obsługuje wszystkie elementy w jednej turze.

Konfiguracja heartbeat

{
  agents: {
    defaults: {
      heartbeat: {
        every: "30m", // interval
        target: "last", // where to deliver alerts
        activeHours: { start: "08:00", end: "22:00" }, // optional
      },
    },
  },
}

Zobacz Heartbeat, aby poznać pełną konfigurację.

Cron: Precyzyjne planowanie

Zadania cron uruchamiają się o dokładnych porach i mogą działać w izolowanych sesjach, nie wpływając na główny kontekst.

Kiedy używać cron

  • Wymagana dokładna godzina: „Wyślij to w każdy poniedziałek o 9:00” (a nie „gdzieś około 9”).
  • Zadania samodzielne: Zadania, które nie wymagają kontekstu konwersacyjnego.
  • Inny model/sposób myślenia: Ciężka analiza, która uzasadnia użycie potężniejszego modelu.
  • Jednorazowe przypomnienia: „Przypomnij za 20 minut” z --at.
  • Głośne/częste zadania: Zadania, które zaśmiecałyby historię głównej sesji.
  • Wyzwalacze zewnętrzne: Zadania, które powinny działać niezależnie od aktywności agenta.

Zalety cron

  • Dokładny czas: 5-polowe wyrażenia cron z obsługą stref czasowych.
  • Izolacja sesji: Uruchamia się w cron:<jobId> bez zanieczyszczania głównej historii.
  • Nadpisywanie modelu: Możliwość użycia tańszego lub potężniejszego modelu dla zadania.
  • Kontrola dostarczania: Zadania izolowane domyślnie używają announce (podsumowanie); w razie potrzeby wybierz none.
  • Natychmiastowe dostarczenie: Tryb announce publikuje bezpośrednio, bez czekania na heartbeat.
  • Brak potrzeby kontekstu agenta: Działa nawet, gdy główna sesja jest bezczynna lub skompaktowana.
  • Obsługa jednorazowa: --at dla precyzyjnych przyszłych znaczników czasu.

Przykład cron: Codzienny poranny briefing

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"

Uruchamia się dokładnie o 7:00 czasu Nowego Jorku, używa Opus dla jakości i bezpośrednio ogłasza podsumowanie na WhatsApp.

Przykład cron: Jednorazowe przypomnienie

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

Zobacz Cron jobs, aby uzyskać pełne referencje CLI.

Schemat podejmowania decyzji

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

Łączenie obu

Najbardziej efektywna konfiguracja wykorzystuje oba:

  1. Heartbeat obsługuje rutynowy monitoring (skrzynka, kalendarz, powiadomienia) w jednej zgrupowanej turze co 30 minut.
  2. Cron obsługuje precyzyjne harmonogramy (raporty dzienne, przeglądy tygodniowe) oraz jednorazowe przypomnienia.

Przykład: Efektywna konfiguracja automatyzacji

HEARTBEAT.md (sprawdzany co 30 min):

# 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

Zadania cron (precyzyjne czasy):

# 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: Deterministyczne workflow z zatwierdzeniami

Lobster to środowisko uruchomieniowe workflow dla wielokrokowych potoków narzędzi, które wymagają deterministycznego wykonania i jawnych zatwierdzeń. Użyj go, gdy zadanie to więcej niż pojedyncza tura agenta i chcesz wznawialny workflow z punktami kontrolnymi dla człowieka.

Kiedy Lobster pasuje

  • Automatyzacja wielokrokowa: Potrzebujesz stałego potoku wywołań narzędzi, a nie jednorazowego promptu.
  • Bramki zatwierdzeń: Efekty uboczne powinny się zatrzymać do czasu zatwierdzenia, a następnie wznowić.
  • Wznawialne uruchomienia: Kontynuowanie wstrzymanego workflow bez ponownego wykonywania wcześniejszych kroków.

Jak współpracuje z heartbeat i cron

  • Heartbeat/cron decydują, kiedy następuje uruchomienie.
  • Lobster definiuje, jakie kroki zachodzą po rozpoczęciu uruchomienia.

Dla zaplanowanych workflow użyj cron lub heartbeat, aby wyzwolić turę agenta, która wywoła Lobster. Dla workflow ad-hoc wywołaj Lobster bezpośrednio.

Uwagi operacyjne (z kodu)

  • Lobster działa jako lokalny podproces (CLI lobster) w trybie narzędzia i zwraca kopertę JSON.
  • Jeśli narzędzie zwróci needs_approval, wznawiasz z resumeToken i flagą approve.
  • Narzędzie jest opcjonalną wtyczką; włączaj je addytywnie przez tools.alsoAllow: ["lobster"] (zalecane).
  • Jeśli przekażesz lobsterPath, musi to być ścieżka bezwzględna.

Zobacz Lobster, aby poznać pełne użycie i przykłady.

Główna sesja vs sesja izolowana

Zarówno heartbeat, jak i cron mogą wchodzić w interakcję z główną sesją, ale w różny sposób:

Heartbeat Cron (główny) Cron (izolowany)
Sesja Główna Główna (przez zdarzenie systemowe) cron:<jobId>
Historia Udostępnione Udostępnione Świeża przy każdym uruchomieniu
Kontekst Pełny Pełny Brak (start od zera)
Model Model głównej sesji Model głównej sesji Można nadpisać
Wyjście Dostarczane, jeśli nie HEARTBEAT_OK Prompt heartbeat + zdarzenie Ogłoszenie podsumowania (domyślnie)

Kiedy używać cron w głównej sesji

Użyj --session main z --system-event, gdy chcesz:

  • Aby przypomnienie/zdarzenie pojawiło się w kontekście głównej sesji
  • Aby agent obsłużył je podczas następnego heartbeat z pełnym kontekstem
  • Brak oddzielnego, izolowanego uruchomienia
openclaw cron add \
  --name "Check project" \
  --every "4h" \
  --session main \
  --system-event "Time for a project health check" \
  --wake now

Kiedy używać cron izolowanego

Użyj --session isolated, gdy chcesz:

  • Czysty łupek bez wcześniejszego kontekstu
  • Inne ustawienia modelu lub sposobu myślenia
  • Bezpośrednie ogłaszanie podsumowań na kanał
  • Historię, która nie zaśmieca głównej sesji
openclaw cron add \
  --name "Deep analysis" \
  --cron "0 6 * * 0" \
  --session isolated \
  --message "Weekly codebase analysis..." \
  --model opus \
  --thinking high \
  --announce

Kwestie kosztowe

Mechanizm Profil kosztów
Heartbeat Jedna tura co N minut; skaluje się z rozmiarem HEARTBEAT.md
Cron (główny) Dodaje zdarzenie do następnego heartbeat (bez izolowanej tury)
Cron (izolowany) Pełna tura agenta na zadanie; można użyć tańszego modelu

Wskazówki:

  • Utrzymuj HEARTBEAT.md w niewielkim rozmiarze, aby zminimalizować narzut tokenów.
  • Grupuj podobne sprawdzenia w heartbeat zamiast wielu zadań cron.
  • Użyj target: "none" w heartbeat, jeśli chcesz tylko przetwarzania wewnętrznego.
  • Dla rutynowych zadań używaj izolowanego cron z tańszym modelem.

Powiązane

  • Heartbeat – pełna konfiguracja heartbeat
  • Cron jobs – pełne referencje CLI i API dla cron
  • System – zdarzenia systemowe + kontrola heartbeat