Cron is de ingebouwde planner van de Gateway. Hij bewaart taken, wekt de agent op het juiste moment en kan uitvoer terugsturen naar een chatkanaal of Webhook-eindpunt.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Snel starten
Hoe Cron werkt
- Cron draait binnen het Gateway-proces (niet binnen het model).
- Taakdefinities blijven bewaard in
~/.openclaw/cron/jobs.json, zodat herstarts planningen niet kwijtraken. - Runtime-uitvoeringsstatus blijft ernaast bewaard in
~/.openclaw/cron/jobs-state.json. Als je Cron-definities in git bijhoudt, houd danjobs.jsonbij en voegjobs-state.jsontoe aan gitignore. - Na de splitsing kunnen oudere OpenClaw-versies
jobs.jsonlezen, maar kunnen ze taken als nieuw behandelen omdat runtime-velden nu injobs-state.jsonstaan. - Wanneer
jobs.jsonwordt bewerkt terwijl de Gateway draait of gestopt is, vergelijkt OpenClaw de gewijzigde planningsvelden met metadata van openstaande runtime-slots en wist verouderdenextRunAtMs-waarden. Herschrijvingen die alleen opmaak of sleutelvolgorde wijzigen, behouden de openstaande slot. - Alle Cron-uitvoeringen maken achtergrondtaak-records aan.
- Bij het opstarten van de Gateway worden verlopen geïsoleerde agentbeurt-taken opnieuw gepland buiten het kanaalverbindingsvenster in plaats van onmiddellijk opnieuw afgespeeld, zodat het opstarten van Discord/Telegram en de native-command-instelling responsief blijven na herstarts.
- Eenmalige taken (
--at) worden standaard automatisch verwijderd na succes. - Geïsoleerde Cron-uitvoeringen sluiten op best-effortbasis bijgehouden browsertabs/processen voor hun
cron:<jobId>-sessie wanneer de uitvoering is voltooid, zodat losgekoppelde browserautomatisering geen verweesde processen achterlaat. - Geïsoleerde Cron-uitvoeringen beschermen ook tegen verouderde bevestigingsantwoorden. Als het eerste resultaat slechts een tussentijdse statusupdate is (
on it,pulling everything togetheren vergelijkbare hints) en geen onderliggende subagent-uitvoering nog verantwoordelijk is voor het definitieve antwoord, vraagt OpenClaw één keer opnieuw om het daadwerkelijke resultaat voordat het wordt afgeleverd. - Geïsoleerde Cron-uitvoeringen geven de voorkeur aan gestructureerde metadata over geweigerde uitvoering van de ingebedde uitvoering en vallen daarna terug op bekende markeringen voor definitieve samenvatting/uitvoer, zoals
SYSTEM_RUN_DENIEDenINVALID_REQUEST, zodat een geblokkeerde opdracht niet als een geslaagde uitvoering wordt gerapporteerd. - Geïsoleerde Cron-uitvoeringen behandelen agentfouten op uitvoeringsniveau ook als taakfouten, zelfs wanneer er geen antwoordpayload wordt geproduceerd, zodat model-/providerfouten fouttellers verhogen en foutmeldingen activeren in plaats van de taak als succesvol te wissen.
- Wanneer een geïsoleerde agentbeurt-taak
timeoutSecondsbereikt, breekt Cron de onderliggende agentuitvoering af en geeft die een kort opruimvenster. Als de uitvoering niet leegloopt, wist Gateway-beheerde opruiming geforceerd het sessie-eigendom van die uitvoering voordat Cron de timeout registreert, zodat chatwerk in de wachtrij niet achter een verouderde verwerkende sessie blijft hangen.
Taakverzoening voor Cron is eerst runtime-eigendom en daarna ondersteund door duurzame geschiedenis: een actieve Cron-taak blijft live zolang de Cron-runtime die taak nog als actief bijhoudt, zelfs als er nog een oude onderliggende sessierij bestaat. Zodra de runtime geen eigenaar meer is van de taak en het respijtvenster van 5 minuten is verlopen, controleert onderhoud de opgeslagen uitvoeringslogs en taakstatus voor de overeenkomende
cron:<jobId>:<startedAt>-uitvoering. Als die duurzame geschiedenis een terminaal resultaat toont, wordt het taaklogboek daaruit afgerond; anders kan Gateway-beheerd onderhoud de taak als lost markeren. Offline CLI-audit kan herstellen uit duurzame geschiedenis, maar behandelt zijn eigen lege actieve-taakset in het proces niet als bewijs dat een Gateway-beheerde Cron-uitvoering verdwenen is.Planningstypen
| Soort | CLI-vlag | Beschrijving |
|---|---|---|
at | --at | Eenmalige tijdstempel (ISO 8601 of relatief zoals 20m) |
every | --every | Vast interval |
cron | --cron | Cron-expressie met 5 of 6 velden met optionele --tz |
--tz America/New_York toe voor planning op basis van lokale wandkloktijd.
Terugkerende expressies aan het begin van het uur worden automatisch tot maximaal 5 minuten gespreid om belastingpieken te verminderen. Gebruik --exact om precieze timing af te dwingen of --stagger 30s voor een expliciet venster.
Dag-van-de-maand en dag-van-de-week gebruiken OF-logica
Cron-expressies worden geparseerd door croner. Wanneer zowel de velden dag-van-de-maand als dag-van-de-week geen wildcard zijn, matcht croner wanneer een van beide velden matcht, niet beide. Dit is standaard Vixie cron-gedrag.+-modifier voor dag-van-de-week (0 9 15 * +1) of plan je op één veld en bewaak je het andere in de prompt of opdracht van je taak.
Uitvoeringsstijlen
| Stijl | --session-waarde | Draait in | Beste voor |
|---|---|---|---|
| Hoofdsessie | main | Volgende Heartbeat-beurt | Herinneringen, systeemgebeurtenissen |
| Geïsoleerd | isolated | Toegewijde cron:<jobId> | Rapporten, achtergrondklussen |
| Huidige sessie | current | Gebonden bij aanmaken | Terugkerend werk met context |
| Aangepaste sessie | session:custom-id | Blijvende benoemde sessie | Workflows die voortbouwen op geschiedenis |
Hoofdsessie vs geïsoleerd vs aangepast
Hoofdsessie vs geïsoleerd vs aangepast
Hoofdsessie-taken plaatsen een systeemgebeurtenis in de wachtrij en wekken optioneel de Heartbeat (
--wake now of --wake next-heartbeat). Die systeemgebeurtenissen verlengen de versheid voor dagelijkse/inactieve resets van de doelsessie niet. Geïsoleerde taken draaien een toegewijde agentbeurt met een nieuwe sessie. Aangepaste sessies (session:xxx) behouden context tussen uitvoeringen, waardoor workflows zoals dagelijkse standups mogelijk worden die voortbouwen op eerdere samenvattingen.Wat 'nieuwe sessie' betekent voor geïsoleerde taken
Wat 'nieuwe sessie' betekent voor geïsoleerde taken
Voor geïsoleerde taken betekent “nieuwe sessie” een nieuwe transcript-/sessie-id voor elke uitvoering. OpenClaw kan veilige voorkeuren meenemen, zoals instellingen voor thinking/fast/verbose, labels en expliciet door de gebruiker geselecteerde model-/auth-overschrijvingen, maar erft geen omgevingsgesprekscontext van een oudere Cron-rij: kanaal-/groepsroutering, verzend- of wachtrijbeleid, elevatie, herkomst of ACP-runtimebinding. Gebruik
current of session:<id> wanneer een terugkerende taak bewust op dezelfde gesprekscontext moet voortbouwen.Runtime-opruiming
Runtime-opruiming
Voor geïsoleerde taken omvat runtime-afbouw nu best-effort browseropruiming voor die Cron-sessie. Opruimfouten worden genegeerd, zodat het daadwerkelijke Cron-resultaat nog steeds leidend is.Geïsoleerde Cron-uitvoeringen ruimen ook alle gebundelde MCP-runtime-instanties op die voor de taak zijn aangemaakt via het gedeelde pad voor runtime-opruiming. Dit komt overeen met hoe MCP-clients voor hoofdsessies en aangepaste sessies worden afgebouwd, zodat geïsoleerde Cron-taken geen stdio-childprocessen of langdurige MCP-verbindingen tussen uitvoeringen lekken.
Subagent en Discord-aflevering
Subagent en Discord-aflevering
Wanneer geïsoleerde Cron-uitvoeringen subagents orkestreren, geeft aflevering ook de voorkeur aan de definitieve onderliggende uitvoer boven verouderde tussentijdse parent-tekst. Als onderliggende uitvoeringen nog actief zijn, onderdrukt OpenClaw die gedeeltelijke parent-update in plaats van die aan te kondigen.Voor tekst-only Discord-aankondigingsdoelen verzendt OpenClaw de canonieke definitieve assistenttekst één keer in plaats van zowel gestreamde/tussentijdse tekstpayloads als het definitieve antwoord opnieuw af te spelen. Media en gestructureerde Discord-payloads worden nog steeds als afzonderlijke payloads afgeleverd, zodat bijlagen en componenten niet worden weggelaten.
Payloadopties voor geïsoleerde taken
Prompttekst (vereist voor geïsoleerd).
Modeloverschrijving; gebruikt het geselecteerde toegestane model voor de taak.
Overschrijving van thinking-niveau.
Sla injectie van workspace-bootstrapbestanden over.
Beperk welke tools de taak kan gebruiken, bijvoorbeeld
--tools exec,read.--model gebruikt het geselecteerde toegestane model als primair model van die taak. Het is niet hetzelfde als een /model-overschrijving voor een chatsessie: geconfigureerde fallbackketens blijven gelden wanneer het primaire model van de taak faalt. Als het gevraagde model niet is toegestaan of niet kan worden opgelost, laat Cron de uitvoering mislukken met een expliciete validatiefout in plaats van stil terug te vallen op de agent-/standaardmodelselectie van de taak.
Cron-taken kunnen ook fallbacks op payloadniveau bevatten. Wanneer aanwezig, vervangt die lijst de geconfigureerde fallbackketen voor de taak. Gebruik fallbacks: [] in de taakpayload/API wanneer je een strikte Cron-uitvoering wilt die alleen het geselecteerde model probeert. Als een taak --model heeft maar geen payload- of geconfigureerde fallbacks, geeft OpenClaw een expliciete lege fallbackoverschrijving door zodat het primaire agentmodel niet als verborgen extra opnieuw-te-proberen doel wordt toegevoegd.
Voorrang voor modelselectie bij geïsoleerde taken is:
- Gmail-hookmodeloverschrijving (wanneer de uitvoering uit Gmail kwam en die overschrijving is toegestaan)
modelper taakpayload- Door de gebruiker geselecteerde opgeslagen modeloverschrijving voor Cron-sessie
- Agent-/standaardmodelselectie
params.fastMode heeft, gebruikt geïsoleerde Cron die standaard. Een opgeslagen sessieoverschrijving voor fastMode wint nog steeds van configuratie in beide richtingen.
Als een geïsoleerde uitvoering een live model-switchhandoff raakt, probeert Cron opnieuw met de gewisselde provider/het gewisselde model en bewaart die live selectie voor de actieve uitvoering voordat opnieuw wordt geprobeerd. Wanneer de switch ook een nieuw auth-profiel bevat, bewaart Cron die auth-profieloverschrijving ook voor de actieve uitvoering. Nieuwe pogingen zijn begrensd: na de eerste poging plus 2 switch-pogingen breekt Cron af in plaats van eindeloos te blijven herhalen.
Voordat een geïsoleerde Cron-uitvoering de agentrunner binnengaat, controleert OpenClaw bereikbare lokale provider-eindpunten voor geconfigureerde api: "ollama"- en api: "openai-completions"-providers waarvan baseUrl local loopback, private-network of .local is. Als dat eindpunt niet beschikbaar is, wordt de uitvoering geregistreerd als skipped met een duidelijke provider-/modelfout in plaats van een modelaanroep te starten. Het eindpuntresultaat wordt 5 minuten gecachet, zodat veel verschuldigde taken die dezelfde uitgevallen lokale Ollama-, vLLM-, SGLang- of LM Studio-server gebruiken, één kleine probe delen in plaats van een verzoekstorm te creëren. Overgeslagen provider-preflight-uitvoeringen verhogen de backoff voor uitvoeringsfouten niet; schakel failureAlert.includeSkipped in wanneer je herhaalde skip-meldingen wilt.
Aflevering en uitvoer
| Modus | Wat er gebeurt |
|---|---|
announce | Levert definitieve tekst als fallback aan het doel als de agent niets verzond |
webhook | POST de payload van de voltooide gebeurtenis naar een URL |
none | Geen fallbackaflevering door de runner |
--announce --channel telegram --to "-1001234567890" voor aflevering aan een kanaal. Gebruik voor Telegram-forumonderwerpen -1001234567890:topic:123; directe RPC-/config-aanroepers kunnen ook delivery.threadId als string of getal doorgeven. Slack-/Discord-/Mattermost-doelen moeten expliciete prefixen gebruiken (channel:<id>, user:<id>). Matrix-kamer-ID’s zijn hoofdlettergevoelig; gebruik de exacte kamer-ID of de vorm room:!room:server uit Matrix.
Voor geïsoleerde taken wordt chataflevering gedeeld. Als er een chatroute beschikbaar is, kan de agent de tool message gebruiken, zelfs wanneer de taak --no-deliver gebruikt. Als de agent naar het geconfigureerde/huidige doel verzendt, slaat OpenClaw de fallback-aankondiging over. Anders bepalen announce, webhook en none alleen wat de runner doet met het uiteindelijke antwoord na de agentbeurt.
Wanneer een agent een geïsoleerde herinnering maakt vanuit een actieve chat, slaat OpenClaw het behouden live-afleverdoel op voor de fallback-aankondigingsroute. Interne sessiesleutels kunnen kleine letters bevatten; provider-afleverdoelen worden niet opnieuw opgebouwd uit die sleutels wanneer de huidige chatcontext beschikbaar is.
Foutmeldingen volgen een afzonderlijk bestemmingspad:
cron.failureDestinationstelt een globale standaard in voor foutmeldingen.job.delivery.failureDestinationoverschrijft dat per taak.- Als geen van beide is ingesteld en de taak al via
announceaflevert, vallen foutmeldingen nu terug op dat primaire aankondigingsdoel. delivery.failureDestinationwordt alleen ondersteund voor taken metsessionTarget="isolated", tenzij de primaire aflevermoduswebhookis.failureAlert.includeSkipped: truelaat een taak of globaal cron-waarschuwingsbeleid kiezen voor herhaalde waarschuwingen over overgeslagen runs. Overgeslagen runs houden een aparte teller voor opeenvolgende overslagen bij, zodat ze geen invloed hebben op de backoff voor uitvoeringsfouten.
CLI-voorbeelden
- Eenmalige herinnering
- Terugkerende geïsoleerde taak
- Model en denkmodus overschrijven
Webhooks
Gateway kan HTTP-Webhook-eindpunten beschikbaar maken voor externe triggers. Schakel dit in de configuratie in:Authenticatie
Elke aanvraag moet het hook-token via een header bevatten:Authorization: Bearer <token>(aanbevolen)x-openclaw-token: <token>
POST /hooks/wake
POST /hooks/wake
POST /hooks/agent
POST /hooks/agent
Voer een geïsoleerde agentbeurt uit:Velden:
message (vereist), name, agentId, wakeMode, deliver, channel, to, model, fallbacks, thinking, timeoutSeconds.Toegewezen hooks (POST /hooks/<name>)
Toegewezen hooks (POST /hooks/<name>)
Aangepaste hooknamen worden opgelost via
hooks.mappings in de configuratie. Toewijzingen kunnen willekeurige payloads omzetten in wake- of agent-acties met sjablonen of codetransformaties.Gmail PubSub-integratie
Verbind Gmail-inboxtriggers met OpenClaw via Google PubSub.Vereisten:
gcloud CLI, gog (gogcli), ingeschakelde OpenClaw-hooks, Tailscale voor het openbare HTTPS-eindpunt.Wizardconfiguratie (aanbevolen)
hooks.gmail-configuratie, schakelt de Gmail-preset in en gebruikt Tailscale Funnel voor het push-eindpunt.
Gateway automatisch starten
Wanneerhooks.enabled=true en hooks.gmail.account is ingesteld, start de Gateway bij het opstarten gog gmail watch serve en vernieuwt de watch automatisch. Stel OPENCLAW_SKIP_GMAIL_WATCHER=1 in om u af te melden.
Handmatige eenmalige configuratie
Selecteer het GCP-project
Selecteer het GCP-project dat eigenaar is van de OAuth-client die door
gog wordt gebruikt:Gmail-model overschrijven
Taken beheren
Opmerking over modeloverschrijving:
openclaw cron add|edit --model ...wijzigt het geselecteerde model van de taak.- Als het model is toegestaan, bereikt die exacte provider/model-combinatie de geïsoleerde agentrun.
- Als het niet is toegestaan of niet kan worden opgelost, laat cron de run mislukken met een expliciete validatiefout.
- Geconfigureerde fallback-ketens blijven van toepassing omdat cron
--modeleen primaire taakinstelling is, geen sessie-overschrijving met/model. - Payload
fallbacksvervangt geconfigureerde fallbacks voor die taak;fallbacks: []schakelt fallback uit en maakt de run strikt. - Een gewone
--modelzonder expliciete of geconfigureerde fallback-lijst valt niet door naar de primaire agent als stil extra retrydoel.
Configuratie
maxConcurrentRuns beperkt zowel geplande cron-dispatch als geïsoleerde uitvoering van agentbeurten. Geïsoleerde cron-agentbeurten gebruiken intern de toegewijde cron-nested-uitvoeringsbaan van de wachtrij, dus door deze waarde te verhogen kunnen onafhankelijke cron-LLM-runs parallel voortgang boeken in plaats van alleen hun buitenste cron-wrappers te starten. De gedeelde niet-cron-nested-baan wordt door deze instelling niet verbreed.
De runtime-state-sidecar wordt afgeleid van cron.store: een .json-store zoals ~/clawd/cron/jobs.json gebruikt ~/clawd/cron/jobs-state.json, terwijl een storepad zonder .json-achtervoegsel -state.json toevoegt.
Als u jobs.json handmatig bewerkt, laat jobs-state.json dan buiten versiebeheer. OpenClaw gebruikt die sidecar voor wachtende slots, actieve markeringen, metadata van laatste runs en de planningsidentiteit die de planner vertelt wanneer een extern bewerkte taak een nieuwe nextRunAtMs nodig heeft.
Cron uitschakelen: cron.enabled: false of OPENCLAW_SKIP_CRON=1.
Retrygedrag
Retrygedrag
Eenmalige retry: tijdelijke fouten (rate limit, overbelasting, netwerk, serverfout) worden tot 3 keer opnieuw geprobeerd met exponentiële backoff. Permanente fouten schakelen onmiddellijk uit.Terugkerende retry: exponentiële backoff (30s tot 60m) tussen retries. Backoff wordt gereset na de volgende succesvolle run.
Onderhoud
Onderhoud
cron.sessionRetention (standaard 24h) ruimt geïsoleerde run-sessie-items op. cron.runLog.maxBytes / cron.runLog.keepLines ruimen run-logbestanden automatisch op.Probleemoplossing
Commandoladder
Cron wordt niet uitgevoerd
Cron wordt niet uitgevoerd
- Controleer de omgevingsvariabele
cron.enabledenOPENCLAW_SKIP_CRON. - Bevestig dat de Gateway continu draait.
- Controleer voor
cron-schema’s de tijdzone (--tz) ten opzichte van de hosttijdzone. reason: not-duein run-uitvoer betekent dat een handmatige run is gecontroleerd metopenclaw cron run <jobId> --dueen dat de taak nog niet aan de beurt was.
Cron is uitgevoerd maar zonder aflevering
Cron is uitgevoerd maar zonder aflevering
- Aflevermodus
nonebetekent dat er geen fallback-verzending door de runner wordt verwacht. De agent kan nog steeds rechtstreeks verzenden met de toolmessagewanneer er een chatroute beschikbaar is. - Ontbrekend/ongeldig afleverdoel (
channel/to) betekent dat uitgaand verkeer is overgeslagen. - Voor Matrix kunnen gekopieerde of oude taken met naar kleine letters omgezette
delivery.to-kamer-ID’s mislukken, omdat Matrix-kamer-ID’s hoofdlettergevoelig zijn. Bewerk de taak naar de exacte waarde!room:serverofroom:!room:serveruit Matrix. - Kanaal-authenticatiefouten (
unauthorized,Forbidden) betekenen dat aflevering is geblokkeerd door inloggegevens. - Als de geïsoleerde run alleen het stille token (
NO_REPLY/no_reply) retourneert, onderdrukt OpenClaw rechtstreekse uitgaande aflevering en onderdrukt het ook het fallback-pad voor samenvattingen in de wachtrij, zodat er niets terug naar de chat wordt geplaatst. - Als de agent de gebruiker zelf een bericht moet sturen, controleer dan of de taak een bruikbare route heeft (
channel: "last"met een eerdere chat, of een expliciet kanaal/doel).
Cron of Heartbeat lijkt /new-style-overgang te verhinderen
Cron of Heartbeat lijkt /new-style-overgang te verhinderen
- De actualiteit voor dagelijkse resets en inactiviteitsresets is niet gebaseerd op
updatedAt; zie Sessiebeheer. - Cron-wake-ups, Heartbeat-runs, exec-meldingen en Gateway-administratie kunnen de sessierij bijwerken voor routering/status, maar ze verlengen
sessionStartedAtoflastInteractionAtniet. - Voor verouderde rijen die zijn gemaakt voordat die velden bestonden, kan OpenClaw
sessionStartedAtherstellen uit de JSONL-sessieheader van het transcript wanneer het bestand nog beschikbaar is. Verouderde inactieve rijen zonderlastInteractionAtgebruiken die herstelde starttijd als hun basislijn voor inactiviteit.
Valkuilen met tijdzones
Valkuilen met tijdzones
- Cron zonder
--tzgebruikt de tijdzone van de Gateway-host. at-planningen zonder tijdzone worden behandeld als UTC.- Heartbeat
activeHoursgebruikt de geconfigureerde tijdzone-resolutie.
Gerelateerd
- Automatisering en taken — alle automatiseringsmechanismen in één oogopslag
- Achtergrondtaken — taaklogboek voor Cron-uitvoeringen
- Heartbeat — periodieke beurten in de hoofdsessie
- Tijdzone — tijdzoneconfiguratie