Szybki start
Jak działa cron
- Cron działa wewnątrz procesu Gateway (nie wewnątrz modelu).
- Definicje zadań, stan wykonania i historia uruchomień są utrwalane we współdzielonej bazie stanu SQLite OpenClaw, więc ponowne uruchomienia nie powodują utraty harmonogramów.
- Po uaktualnieniu uruchom
openclaw doctor --fix, aby zaimportować starsze pliki~/.openclaw/cron/jobs.json,jobs-state.jsonorazruns/*.jsonldo SQLite i zmienić ich nazwy, dodając sufiks.migrated. Nieprawidłowo sformatowane wiersze zadań są pomijane w czasie wykonywania i kopiowane dojobs-quarantine.jsonw celu późniejszej naprawy lub przeglądu. cron.storenadal określa logiczny klucz magazynu cron i ścieżkę importu doctor. Po imporcie edycja tego pliku JSON nie zmienia już aktywnych zadań cron; zamiast tego użyjopenclaw cron add|edit|removealbo metod RPC Cron w Gateway.- Wszystkie wykonania cron tworzą rekordy zadania w tle.
- Podczas uruchamiania Gateway zaległe izolowane zadania tur agenta są ponownie planowane poza oknem łączenia kanału, zamiast odtwarzać się natychmiast, dzięki czemu uruchamianie Discord/Telegram i konfiguracja poleceń natywnych pozostają responsywne po restartach.
- Zadania jednorazowe (
--at) domyślnie automatycznie usuwają się po powodzeniu. - Izolowane uruchomienia Cron w trybie best-effort zamykają śledzone karty/procesy przeglądarki dla swojej sesji
cron:<jobId>po zakończeniu uruchomienia, więc odłączona automatyzacja przeglądarki nie zostawia osieroconych procesów. - Izolowane uruchomienia Cron, które otrzymują wąskie uprawnienie samoczyszczenia cron, nadal mogą odczytywać status harmonogramu, przefiltrowaną do siebie listę bieżącego zadania oraz historię uruchomień tego zadania, więc kontrole statusu/Heartbeat mogą sprawdzać własny harmonogram bez uzyskiwania szerszego dostępu do modyfikacji cron.
- Izolowane uruchomienia Cron zabezpieczają się także przed nieaktualnymi odpowiedziami potwierdzającymi. Jeśli pierwszy wynik jest tylko tymczasową aktualizacją statusu (
on it,pulling everything togetheri podobne wskazówki), a żadne potomne uruchomienie subagenta nie odpowiada już za ostateczną odpowiedź, OpenClaw ponawia monit raz, prosząc o właściwy wynik przed dostarczeniem. - Izolowane uruchomienia Cron używają ustrukturyzowanych metadanych odmowy wykonania z osadzonego uruchomienia, w tym opakowań node-host
UNAVAILABLE, których zagnieżdżony komunikat błędu zaczyna się odSYSTEM_RUN_DENIEDalboINVALID_REQUEST, dzięki czemu zablokowane polecenie nie jest raportowane jako udane uruchomienie, a zwykła proza asystenta nie jest traktowana jako odmowa. - Izolowane uruchomienia Cron traktują także awarie agenta na poziomie uruchomienia jako błędy zadania, nawet gdy nie powstaje żaden payload odpowiedzi, więc awarie modelu/dostawcy zwiększają liczniki błędów i wyzwalają powiadomienia o awarii zamiast oznaczać zadanie jako udane.
- Gdy izolowane zadanie tury agenta osiąga
timeoutSeconds, Cron przerywa bazowe uruchomienie agenta i daje mu krótkie okno na sprzątanie. Jeśli uruchomienie nie zostanie opróżnione, sprzątanie należące do Gateway wymusza wyczyszczenie własności sesji tego uruchomienia, zanim Cron zapisze limit czasu, więc zakolejkowana praca czatu nie pozostaje za nieaktualną sesją przetwarzania. - Jeśli izolowana tura agenta zatrzyma się przed startem runnera albo przed pierwszym wywołaniem modelu, Cron zapisuje limit czasu specyficzny dla fazy, taki jak
setup timed out before runner startalbostalled before first model call (last phase: context-engine). Te watchdogi obejmują osadzonych dostawców i dostawców opartych na CLI, zanim ich zewnętrzny proces CLI faktycznie się uruchomi, oraz są limitowane niezależnie od długich wartościtimeoutSeconds, dzięki czemu awarie zimnego startu/uwierzytelniania/kontekstu ujawniają się szybko, zamiast czekać na pełny budżet zadania. - Jeśli używasz systemowego cron albo innego zewnętrznego harmonogramu do uruchamiania
openclaw agent, opakuj go eskalacją hard-kill, mimo że CLI obsługujeSIGTERM/SIGINT. Uruchomienia obsługiwane przez Gateway proszą Gateway o przerwanie zaakceptowanych uruchomień; lokalne i osadzone uruchomienia fallback otrzymują ten sam sygnał przerwania. Dla GNUtimeoutpreferujtimeout -k 60 600 openclaw agent ...zamiast zwykłegotimeout 600 ...; wartość-kjest zabezpieczeniem nadzorcy, jeśli proces nie może się opróżnić. W jednostkach systemd zachowaj ten sam kształt, używając sygnału zatrzymaniaSIGTERMoraz okna łaski, takiego jakTimeoutStopSec, przed ewentualnym końcowym zabiciem. Jeśli ponowienie użyje tego samego--run-id, gdy oryginalne uruchomienie Gateway jest nadal aktywne, duplikat zostanie zgłoszony jako będący w toku zamiast uruchamiać drugie wykonanie.
Uzgadnianie zadań dla cron jest najpierw własnością runtime, a dopiero potem opiera się na trwałej historii: aktywne zadanie cron pozostaje żywe, dopóki runtime cron nadal śledzi to zadanie jako uruchomione, nawet jeśli nadal istnieje stary wiersz sesji potomnej. Gdy runtime przestaje posiadać zadanie i upłynie 5-minutowe okno łaski, kontrole konserwacyjne sprawdzają utrwalone dzienniki uruchomień i stan zadania pod kątem pasującego uruchomienia
cron:<jobId>:<startedAt>. Jeśli ta trwała historia pokazuje wynik końcowy, księga zadań jest finalizowana na jej podstawie; w przeciwnym razie konserwacja należąca do Gateway może oznaczyć zadanie jako lost. Audyt CLI offline może odzyskać stan z trwałej historii, ale nie traktuje własnego pustego zestawu aktywnych zadań w procesie jako dowodu, że uruchomienie cron należące do Gateway zniknęło.Typy harmonogramów
| Rodzaj | Flaga CLI | Opis |
|---|---|---|
at | --at | Jednorazowy znacznik czasu (ISO 8601 lub względny, np. 20m) |
every | --every | Stały interwał |
cron | --cron | 5-polowe lub 6-polowe wyrażenie cron z opcjonalnym --tz |
--tz America/New_York dla harmonogramowania według lokalnego czasu zegarowego.
Powtarzające się wyrażenia na początek godziny są automatycznie rozpraszane o maksymalnie 5 minut, aby ograniczyć skoki obciążenia. Użyj --exact, aby wymusić precyzyjny czas, albo --stagger 30s, aby ustawić jawne okno.
Dzień miesiąca i dzień tygodnia używają logiki OR
Wyrażenia Cron są parsowane przez croner. Gdy pola dnia miesiąca i dnia tygodnia nie są symbolami wieloznacznymi, croner dopasowuje, gdy pasuje którekolwiek z pól, a nie oba. To standardowe zachowanie cron Vixie.+ Cronera (0 9 15 * +1) albo harmonogramuj według jednego pola i zabezpiecz drugie w monicie lub poleceniu zadania.
Style wykonywania
| Styl | Wartość --session | Uruchamia się w | Najlepsze do |
|---|---|---|---|
| Sesja główna | main | Dedykowana ścieżka wybudzania cron | Przypomnienia, zdarzenia systemowe |
| Izolowany | isolated | Dedykowane cron:<jobId> | Raporty, zadania w tle |
| Bieżąca sesja | current | Powiązana w chwili utworzenia | Powtarzalna praca świadoma kontekstu |
| Sesja niestandardowa | session:custom-id | Trwała nazwana sesja | Workflowy budujące na historii |
Sesja główna kontra izolowana kontra niestandardowa
Sesja główna kontra izolowana kontra niestandardowa
Zadania sesji głównej kolejkowały zdarzenie systemowe do należącej do cron ścieżki uruchomień i opcjonalnie wybudzają Heartbeat (
--wake now albo --wake next-heartbeat). Mogą używać ostatniego kontekstu dostarczenia docelowej sesji głównej dla odpowiedzi, ale nie dopisują rutynowych tur cron do ludzkiego kanału czatu i nie przedłużają świeżości dziennego/bezczynnościowego resetu dla docelowej sesji. Zadania izolowane uruchamiają dedykowaną turę agenta ze świeżą sesją. Sesje niestandardowe (session:xxx) utrwalają kontekst między uruchomieniami, umożliwiając workflowy takie jak codzienne standupy budujące na poprzednich podsumowaniach.Zdarzenia cron sesji głównej są samodzielnymi przypomnieniami zdarzeń systemowych. Nie
dołączają automatycznie instrukcji „Read
HEARTBEAT.md” z domyślnego monitu Heartbeat. Jeśli powtarzające się przypomnienie powinno konsultować
HEARTBEAT.md, powiedz to jawnie w tekście zdarzenia cron albo we
własnych instrukcjach agenta.Co oznacza „świeża sesja” dla zadań izolowanych
Co oznacza „świeża sesja” dla zadań izolowanych
W przypadku zadań izolowanych „świeża sesja” oznacza nowy identyfikator transkrypcji/sesji dla każdego uruchomienia. OpenClaw może przenosić bezpieczne preferencje, takie jak ustawienia myślenia/szybkości/szczegółowości, etykiety oraz jawnie wybrane przez użytkownika nadpisania modelu/uwierzytelniania, ale nie dziedziczy otaczającego kontekstu konwersacji ze starszego wiersza cron: routingu kanału/grupy, zasad wysyłania lub kolejkowania, podniesienia uprawnień, pochodzenia ani powiązania runtime ACP. Użyj
current albo session:<id>, gdy powtarzające się zadanie ma celowo budować na tym samym kontekście konwersacji.Sprzątanie runtime
Sprzątanie runtime
W przypadku zadań izolowanych wygaszanie runtime obejmuje teraz best-effort sprzątanie przeglądarki dla tej sesji cron. Awarie sprzątania są ignorowane, aby właściwy wynik cron nadal miał pierwszeństwo.Izolowane uruchomienia Cron usuwają także wszelkie dołączone instancje runtime MCP utworzone dla zadania przez współdzieloną ścieżkę sprzątania runtime. Jest to zgodne ze sposobem wygaszania klientów MCP sesji głównej i sesji niestandardowych, więc izolowane zadania cron nie wyciekają procesów potomnych stdio ani długowiecznych połączeń MCP między uruchomieniami.
Subagent i dostarczanie Discord
Subagent i dostarczanie Discord
Gdy izolowane uruchomienia Cron orkiestrują subagentów, dostarczanie również preferuje ostateczny wynik potomka zamiast nieaktualnego tymczasowego tekstu rodzica. Jeśli potomkowie nadal działają, OpenClaw tłumi tę częściową aktualizację rodzica zamiast ją ogłaszać.Dla tekstowych celów ogłoszeń Discord OpenClaw wysyła kanoniczny ostateczny tekst asystenta raz, zamiast odtwarzać zarówno strumieniowane/pośrednie payloady tekstowe, jak i ostateczną odpowiedź. Multimedia i ustrukturyzowane payloady Discord są nadal dostarczane jako osobne payloady, aby załączniki i komponenty nie zostały pominięte.
Payloady poleceń
Używaj payloadów poleceń dla deterministycznych skryptów, które powinny działać w harmonogramie Gateway bez uruchamiania izolowanej tury agenta opartej na modelu. Zadania poleceń wykonują się na hoście Gateway, przechwytują stdout/stderr, zapisują uruchomienie w historii cron i ponownie używają tych samych trybów dostarczaniaannounce, webhook i none co zadania izolowane.
Cron poleceń jest powierzchnią automatyzacji administracyjnej operatora w Gateway, a nie wywołaniem
tools.exec agenta. Tworzenie, aktualizowanie, usuwanie lub ręczne uruchamianie zadań cron
wymaga operator.admin; zaplanowane uruchomienia poleceń wykonują się później wewnątrz
procesu Gateway jako automatyzacja utworzona przez administratora. Zasady exec agenta, takie jak
tools.exec.mode, monity zatwierdzania i listy dozwolonych narzędzi na agenta, zarządzają
narzędziami exec widocznymi dla modelu, a nie payloadami cron poleceń.--command <shell> przechowuje argv: ["sh", "-lc", <shell>]. Użyj --command-argv '["node","scripts/report.mjs"]', gdy chcesz dokładnego wykonania argv bez parsowania powłoki. Opcjonalne pola --command-env KEY=VALUE, --command-input, --timeout-seconds, --no-output-timeout-seconds i --output-max-bytes kontrolują środowisko procesu, stdin i limity wyjścia.
Jeśli stdout nie jest pusty, ten tekst jest dostarczonym wynikiem. Jeśli stdout jest pusty, a stderr nie jest pusty, dostarczany jest stderr. Jeśli oba strumienie są obecne, cron dostarcza mały blok stdout: / stderr:. Zerowy kod wyjścia zapisuje uruchomienie jako ok; niezerowe wyjście, sygnał, timeout lub timeout braku wyjścia zapisuje error i może wyzwolić alerty o niepowodzeniu. Polecenie, które wypisuje tylko NO_REPLY, używa standardowego tłumienia cichego tokenu cron i nie publikuje niczego z powrotem na czacie.
Opcje payloadu dla izolowanych zadań
Tekst promptu (wymagany dla izolowanego).
Nadpisanie modelu; używa wybranego dozwolonego modelu dla zadania.
Lista modeli fallback dla zadania, na przykład
--fallbacks openrouter/gpt-4.1-mini,openai/gpt-5. Przekaż --fallbacks "", aby uruchomić ściśle bez fallbacków.Przy
cron edit usuwa nadpisanie fallbacków dla zadania, aby zadanie stosowało skonfigurowaną kolejność fallbacków. Nie można łączyć z --fallbacks.Przy
cron edit usuwa nadpisanie modelu dla zadania, aby zadanie stosowało normalną kolejność wyboru modelu cron (zapisane nadpisanie sesji cron, jeśli ustawione, w przeciwnym razie model agenta/domyślny). Nie można łączyć z --model.Nadpisanie poziomu Thinking.
Przy
cron edit usuwa nadpisanie Thinking dla zadania, aby zadanie stosowało normalną kolejność Thinking cron. Nie można łączyć z --thinking.Pomija wstrzykiwanie pliku bootstrapu workspace.
Ogranicza narzędzia, których zadanie może używać, na przykład
--tools exec,read.--model używa wybranego dozwolonego modelu jako podstawowego modelu tego zadania. To nie to samo co nadpisanie /model w sesji czatu: skonfigurowane łańcuchy fallback nadal mają zastosowanie, gdy podstawowy model zadania zawiedzie. Jeśli żądany model nie jest dozwolony lub nie można go rozwiązać, cron kończy uruchomienie niepowodzeniem z jawnym błędem walidacji zamiast po cichu wracać do wyboru modelu agenta/domyślnego dla zadania.
Zadania Cron mogą też przenosić fallbacks na poziomie payloadu. Gdy taka lista jest obecna, zastępuje skonfigurowany łańcuch fallbacków dla zadania. Użyj fallbacks: [] w payloadzie/API zadania, gdy chcesz ścisłego uruchomienia cron, które próbuje tylko wybranego modelu. Jeśli zadanie ma --model, ale nie ma fallbacków ani w payloadzie, ani w konfiguracji, OpenClaw przekazuje jawne puste nadpisanie fallback, aby podstawowy model agenta nie został dołączony jako ukryty dodatkowy cel ponowienia.
Kontrole preflight lokalnych providerów przechodzą po skonfigurowanych fallbackach przed oznaczeniem uruchomienia cron jako skipped; fallbacks: [] utrzymuje tę ścieżkę preflight jako ścisłą.
Kolejność wyboru modelu dla izolowanych zadań to:
- Nadpisanie modelu hooka Gmail (gdy uruchomienie pochodziło z Gmail i to nadpisanie jest dozwolone)
modelw payloadzie zadania- Wybrane przez użytkownika zapisane nadpisanie modelu sesji cron
- Wybór modelu agenta/domyślnego
params.fastMode, izolowany cron domyślnie go używa. Zapisane nadpisanie sesji fastMode nadal wygrywa z konfiguracją w obu kierunkach. Tryb automatyczny używa progu params.fastAutoOnSeconds wybranego modelu, gdy jest obecny, domyślnie 60 sekund.
Jeśli izolowane uruchomienie trafi na aktywne przekazanie przełączenia modelu, cron ponawia z przełączonym providerem/modelem i utrwala tę aktywną selekcję dla aktywnego uruchomienia przed ponowieniem. Gdy przełączenie przenosi też nowy profil uwierzytelniania, cron utrwala również to nadpisanie profilu uwierzytelniania dla aktywnego uruchomienia. Ponowienia są ograniczone: po początkowej próbie plus 2 ponowieniach przełączenia cron przerywa zamiast zapętlać się w nieskończoność.
Zanim izolowane uruchomienie cron wejdzie do runnera agenta, OpenClaw sprawdza osiągalne lokalne endpointy providerów dla skonfigurowanych providerów api: "ollama" i api: "openai-completions", których baseUrl jest local loopback, w sieci prywatnej lub .local. Jeśli ten endpoint jest niedostępny, uruchomienie jest zapisywane jako skipped z czytelnym błędem providera/modelu zamiast rozpoczynać wywołanie modelu. Wynik endpointu jest buforowany przez 5 minut, więc wiele oczekujących zadań używających tego samego niedziałającego lokalnego serwera Ollama, vLLM, SGLang lub LM Studio współdzieli jedną małą próbę zamiast tworzyć burzę żądań. Uruchomienia pominięte przez preflight providera nie zwiększają backoffu błędów wykonania; włącz failureAlert.includeSkipped, gdy chcesz powtarzanych powiadomień o pominięciach.
Dostarczanie i wyjście
| Tryb | Co się dzieje |
|---|---|
announce | Dostarcza tekst końcowy fallbackiem do celu, jeśli agent go nie wysłał |
webhook | Wysyła payload zakończonego zdarzenia metodą POST na URL |
none | Brak fallbackowego dostarczania przez runner |
--announce --channel telegram --to "-1001234567890" do dostarczania na kanał. Dla tematów forum Telegram użyj -1001234567890:topic:123; OpenClaw akceptuje też należący do Telegram skrót -1001234567890:123. Bezpośredni wywołujący RPC/konfiguracji mogą przekazać delivery.threadId jako string lub liczbę. Cele Slack/Discord/Mattermost powinny używać jawnych prefiksów (channel:<id>, user:<id>). Identyfikatory pokojów Matrix rozróżniają wielkość liter; użyj dokładnego identyfikatora pokoju albo formy room:!room:server z Matrix.
Gdy dostarczanie announce używa channel: "last" lub pomija channel, cel z prefiksem providera, taki jak telegram:123, może wybrać kanał, zanim cron wróci do historii sesji albo pojedynczego skonfigurowanego kanału. Selektorami providerów są tylko prefiksy ogłaszane przez załadowany Plugin. Jeśli delivery.channel jest jawne, prefiks celu musi wskazywać tego samego providera; na przykład channel: "whatsapp" z to: "telegram:123" jest odrzucane zamiast pozwalać WhatsApp interpretować identyfikator Telegram jako numer telefonu. Prefiksy rodzaju celu i usługi, takie jak channel:<id>, user:<id>, imessage:<handle> i sms:<number>, pozostają składnią celu należącą do kanału, a nie selektorami providerów.
Dla izolowanych zadań dostarczanie czatu jest współdzielone. Jeśli trasa czatu jest dostępna, agent może użyć narzędzia message, nawet gdy zadanie używa --no-deliver. Jeśli agent wysyła do skonfigurowanego/bieżącego celu, OpenClaw pomija fallback announce. W przeciwnym razie announce, webhook i none kontrolują tylko to, co runner robi z końcową odpowiedzią po turze agenta.
Gdy agent tworzy izolowane przypomnienie z aktywnego czatu, OpenClaw zapisuje zachowany aktywny cel dostarczania dla trasy fallback announce. Wewnętrzne klucze sesji mogą być małymi literami; cele dostarczania providerów nie są rekonstruowane z tych kluczy, gdy dostępny jest bieżący kontekst czatu.
Niejawne dostarczanie announce używa skonfigurowanych list dozwolonych kanałów do walidacji i przekierowywania przestarzałych celów. Zatwierdzenia ze store parowania DM nie są odbiorcami automatyzacji fallback; ustaw delivery.to albo skonfiguruj wpis allowFrom kanału, gdy zaplanowane zadanie ma proaktywnie wysyłać do DM.
Język wyjścia
Zadania Cron nie wywnioskują języka odpowiedzi z kanału, ustawień regionalnych ani poprzednich wiadomości. Umieść regułę języka w zaplanowanej wiadomości lub szablonie:{{language}} są wypełnione przed uruchomieniem zadania. Jeśli
wyjście miesza języki, określ regułę jawnie, na przykład: “Use Chinese
for narrative text and keep technical terms in English.”
Powiadomienia o niepowodzeniach używają osobnej ścieżki docelowej:
cron.failureDestinationustawia globalną wartość domyślną dla powiadomień o niepowodzeniach.job.delivery.failureDestinationnadpisuje ją dla zadania.- Jeśli żadna z nich nie jest ustawiona, a zadanie już dostarcza przez
announce, powiadomienia o niepowodzeniach wracają teraz do tego podstawowego celu announce. delivery.failureDestinationjest obsługiwane tylko w zadaniachsessionTarget="isolated", chyba że podstawowy tryb dostarczania towebhook.failureAlert.includeSkipped: truewłącza dla zadania lub globalnej polityki alertów cron powtarzane alerty o pominiętych uruchomieniach. Pominięte uruchomienia mają osobny licznik kolejnych pominięć, więc nie wpływają na backoff błędów wykonania.
Przykłady CLI
- Jednorazowe przypomnienie
- Cykliczne izolowane zadanie
- Nadpisanie modelu i Thinking
- Wyjście Webhook
- Wyjście polecenia
Webhooks
Gateway może udostępniać endpointy HTTP Webhook dla zewnętrznych wyzwalaczy. Włącz w konfiguracji:Uwierzytelnianie
Każde żądanie musi zawierać token hooka w nagłówku:Authorization: Bearer <token>(zalecane)x-openclaw-token: <token>
POST /hooks/wake
POST /hooks/wake
POST /hooks/agent
POST /hooks/agent
Uruchamia izolowaną turę agenta:Pola:
message (wymagane), name, agentId, wakeMode, deliver, channel, to, model, fallbacks, thinking, timeoutSeconds.Mapowane hooki (POST /hooks/<name>)
Mapowane hooki (POST /hooks/<name>)
Niestandardowe nazwy hooków są rozwiązywane przez
hooks.mappings w konfiguracji. Mapowania mogą przekształcać dowolne payloady w akcje wake lub agent za pomocą szablonów albo transformacji kodem.Integracja Gmail PubSub
Podłącz wyzwalacze skrzynki odbiorczej Gmail do OpenClaw przez Google PubSub.Wymagania wstępne: CLI
gcloud, gog (gogcli), włączone hooki OpenClaw, Tailscale dla publicznego punktu końcowego HTTPS.Konfiguracja kreatorem (zalecane)
hooks.gmail, włącza preset Gmail i używa Tailscale Funnel dla punktu końcowego push.
Automatyczne uruchamianie Gateway
Gdyhooks.enabled=true i ustawiono hooks.gmail.account, Gateway uruchamia gog gmail watch serve przy starcie i automatycznie odnawia obserwację. Ustaw OPENCLAW_SKIP_GMAIL_WATCHER=1, aby z tego zrezygnować.
Ręczna jednorazowa konfiguracja
Select the GCP project
Wybierz projekt GCP, który jest właścicielem klienta OAuth używanego przez
gog:Nadpisanie modelu Gmail
Zarządzanie zadaniami
openclaw cron run <jobId> zwraca wynik po zakolejkowaniu ręcznego uruchomienia. Użyj --wait dla hooków zamykania, skryptów konserwacyjnych lub innej automatyzacji, która musi blokować działanie do zakończenia zakolejkowanego uruchomienia. Tryb oczekiwania odpytuje dokładnie zwrócone runId; kończy się kodem 0 dla statusu ok i kodem niezerowym dla error, skipped albo przekroczenia limitu oczekiwania.
Narzędzie agenta cron zwraca zwarte podsumowania zadań (id, name, enabled, nextRunAtMs, scheduleKind, lastRunStatus) z cron(action: "list"); użyj cron(action: "get", jobId: "..."), aby uzyskać jedną pełną definicję zadania. Bezpośredni wywołujący Gateway mogą przekazać compact: true do cron.list; pominięcie tej opcji zachowuje istniejącą pełną odpowiedź z podglądami dostarczania.
openclaw cron create jest aliasem openclaw cron add, a nowe zadania mogą używać pozycyjnego harmonogramu ("0 9 * * 1", "every 1h", "20m" albo znacznika czasu ISO), po którym następuje pozycyjny prompt agenta. Użyj --webhook <url> w cron add|create albo cron edit, aby wysłać metodą POST payload zakończonego uruchomienia do punktu końcowego HTTP. Dostarczania Webhook nie można łączyć z flagami dostarczania na czat, takimi jak --announce, --channel, --to, --thread-id lub --account. W cron edit opcje --clear-channel, --clear-to, --clear-thread-id i --clear-account usuwają te pola routingu pojedynczo (każda jest odrzucana razem z odpowiadającą jej flagą ustawiającą), co różni się od --no-deliver, które wyłącza awaryjne dostarczanie przez runner.
Uwaga o nadpisaniu modelu:
openclaw cron add|edit --model ...zmienia wybrany model zadania.- Jeśli model jest dozwolony, ten dokładny dostawca/model trafia do izolowanego uruchomienia agenta.
- Jeśli nie jest dozwolony albo nie można go rozwiązać, Cron kończy uruchomienie niepowodzeniem z jawnym błędem walidacji.
- Patche payloadu API
cron.updatemogą ustawićmodel: null, aby wyczyścić zapisane nadpisanie modelu zadania. openclaw cron edit <job-id> --clear-modelczyści to nadpisanie z CLI (ten sam efekt co patchmodel: null) i nie może być łączone z--model.- Skonfigurowane łańcuchy awaryjne nadal obowiązują, ponieważ
--modelCron jest modelem głównym zadania, a nie nadpisaniem sesji/model. openclaw cron add|edit --fallbacks ...ustawiafallbackspayloadu, zastępując skonfigurowane mechanizmy awaryjne dla tego zadania;--fallbacks ""wyłącza mechanizm awaryjny i wymusza rygorystyczne uruchomienie.openclaw cron edit <job-id> --clear-fallbacksczyści nadpisanie dla danego zadania.- Zwykłe
--modelbez jawnej lub skonfigurowanej listy mechanizmów awaryjnych nie przechodzi po cichu do modelu głównego agenta jako dodatkowego celu ponowienia.
Konfiguracja
maxConcurrentRuns ogranicza zarówno zaplanowaną dyspozycję Cron, jak i wykonywanie izolowanych tur agenta, a domyślnie wynosi 8. Izolowane tury agenta Cron używają wewnętrznie dedykowanej kolejki wykonywania cron-nested, więc zwiększenie tej wartości pozwala niezależnym uruchomieniom LLM Cron postępować równolegle, zamiast uruchamiać tylko ich zewnętrzne wrappery Cron. To ustawienie nie poszerza współdzielonej kolejki nie-Cron nested.
cron.store jest logicznym kluczem magazynu i starszą ścieżką importu dla doctor. Uruchom openclaw doctor --fix, aby zaimportować istniejące magazyny JSON do SQLite i je zarchiwizować; przyszłe zmiany Cron powinny przechodzić przez CLI lub API Gateway.
Wyłącz Cron: cron.enabled: false lub OPENCLAW_SKIP_CRON=1.
Retry behavior
Retry behavior
Ponowienie jednorazowe: błędy przejściowe (limit szybkości, przeciążenie, sieć, błąd serwera) są ponawiane do 3 razy z wykładniczym backoffem. Błędy trwałe wyłączają zadanie natychmiast.Ponowienie cykliczne: wykładniczy backoff (od 30 s do 60 min) między ponowieniami. Backoff resetuje się po następnym udanym uruchomieniu.
Maintenance
Maintenance
cron.sessionRetention (domyślnie 24h) usuwa wpisy izolowanych sesji uruchomień. cron.runLog.keepLines ogranicza zachowane wiersze historii uruchomień SQLite na zadanie; maxBytes jest zachowane dla zgodności konfiguracji ze starszymi dziennikami uruchomień opartymi na plikach.Rozwiązywanie problemów
Drabinka poleceń
Cron not firing
Cron not firing
- Sprawdź
cron.enabledi zmienną środowiskowąOPENCLAW_SKIP_CRON. - Potwierdź, że Gateway działa nieprzerwanie.
- Dla harmonogramów
cronzweryfikuj strefę czasową (--tz) względem strefy czasowej hosta. reason: not-duew wyniku uruchomienia oznacza, że ręczne uruchomienie zostało sprawdzone zopenclaw cron run <jobId> --due, a termin zadania jeszcze nie nadszedł.
Cron fired but no delivery
Cron fired but no delivery
- Tryb dostarczania
noneoznacza, że nie oczekuje się awaryjnego wysłania przez runner. Agent nadal może wysłać wiadomość bezpośrednio narzędziemmessage, gdy dostępna jest trasa czatu. - Brakujący/nieprawidłowy cel dostarczania (
channel/to) oznacza, że wysyłka wychodząca została pominięta. - W przypadku Matrix skopiowane lub starsze zadania z zapisanymi małymi literami identyfikatorami pokojów
delivery.tomogą się nie powieść, ponieważ identyfikatory pokojów Matrix rozróżniają wielkość liter. Edytuj zadanie do dokładnej wartości!room:serverlubroom:!room:serverz Matrix. - Błędy uwierzytelniania kanału (
unauthorized,Forbidden) oznaczają, że dostarczanie zostało zablokowane przez poświadczenia. - Jeśli izolowane uruchomienie zwraca tylko token ciszy (
NO_REPLY/no_reply), OpenClaw wstrzymuje bezpośrednie dostarczanie wychodzące, a także wstrzymuje awaryjną ścieżkę zakolejkowanego podsumowania, więc nic nie zostaje opublikowane z powrotem na czacie. - Jeśli agent ma sam wysłać wiadomość do użytkownika, sprawdź, czy zadanie ma użyteczną trasę (
channel: "last"z poprzednim czatem albo jawny kanał/cel).
Cron or heartbeat appears to prevent /new-style rollover
Cron or heartbeat appears to prevent /new-style rollover
- Świeżość resetu dziennego i bezczynności nie opiera się na
updatedAt; zobacz Zarządzanie sesją. - Wybudzenia Cron, uruchomienia Heartbeat, powiadomienia exec i księgowanie gateway mogą aktualizować wiersz sesji dla routingu/statusu, ale nie wydłużają
sessionStartedAtanilastInteractionAt. - Dla starszych wierszy utworzonych przed istnieniem tych pól OpenClaw może odtworzyć
sessionStartedAtz nagłówka sesji transkryptu JSONL, gdy plik jest nadal dostępny. Starsze wiersze bezczynności bezlastInteractionAtużywają tego odtworzonego czasu rozpoczęcia jako bazowej wartości bezczynności.
Timezone gotchas
Timezone gotchas
- Cron bez
--tzużywa strefy czasowej hosta gateway. - Harmonogramy
atbez strefy czasowej są traktowane jako UTC. - Heartbeat
activeHoursużywa skonfigurowanego rozwiązywania strefy czasowej.
Powiązane
- Automatyzacja — wszystkie mechanizmy automatyzacji w skrócie
- Zadania w tle — rejestr zadań dla wykonań Cron
- Heartbeat — okresowe tury sesji głównej
- Strefa czasowa — konfiguracja strefy czasowej