Zamanlanmış Görevler (Cron)
Cron, Gateway’in yerleşik zamanlayıcısıdır. İşleri kalıcı olarak saklar, aracıyı doğru zamanda uyandırır ve çıktıyı bir sohbet kanalına veya webhook uç noktasına geri iletebilir.Hızlı başlangıç
Cron nasıl çalışır
- Cron, modelin içinde değil, Gateway süreci içinde çalışır.
- Yeniden başlatmaların zamanlamaları kaybetmemesi için işler
~/.openclaw/cron/jobs.jsoniçinde kalıcı olarak saklanır. - Tüm cron çalıştırmaları arka plan görevi kayıtları oluşturur.
- Tek seferlik işler (
--at), varsayılan olarak başarıdan sonra otomatik silinir. - Yalıtılmış cron çalıştırmaları, çalışma tamamlandığında
cron:<jobId>oturumları için izlenen tarayıcı sekmelerini/süreçlerini en iyi çabayla kapatır; böylece ayrılmış tarayıcı otomasyonu geride sahipsiz süreçler bırakmaz. - Yalıtılmış cron çalıştırmaları ayrıca eski onay yanıtlarına karşı da koruma sağlar. İlk sonuç yalnızca geçici bir durum güncellemesiyse (
on it,pulling everything togetherve benzeri ipuçları) ve son yanıttan artık hiçbir alt aracı çalıştırması sorumlu değilse, OpenClaw teslimattan önce gerçek sonuç için bir kez daha istem gönderir.
lost olarak işaretleyebilir.
Zamanlama türleri
| Tür | CLI bayrağı | Açıklama |
|---|---|---|
at | --at | Tek seferlik zaman damgası (ISO 8601 veya 20m gibi göreli) |
every | --every | Sabit aralık |
cron | --cron | İsteğe bağlı --tz ile 5 alanlı veya 6 alanlı cron ifadesi |
--tz America/New_York ekleyin.
Yinelenen saat başı ifadeleri, yük sıçramalarını azaltmak için otomatik olarak 5 dakikaya kadar kademelendirilir. Kesin zamanlamayı zorlamak için --exact, açık bir pencere için --stagger 30s kullanın.
Ayın günü ve haftanın günü OR mantığı kullanır
Cron ifadeleri croner tarafından ayrıştırılır. Ayın günü ve haftanın günü alanlarının ikisi de joker karakter değilse, croner her iki alan da eşleştiğinde değil, alanlardan biri eşleştiğinde eşleşme kabul eder. Bu, standart Vixie cron davranışıdır.+ haftanın günü değiştiricisini kullanın (0 9 15 * +1) ya da bir alan üzerinden zamanlayıp diğerini işinizin isteminde veya komutunda denetleyin.
Yürütme stilleri
| Stil | --session değeri | Çalıştığı yer | En uygun kullanım |
|---|---|---|---|
| Ana oturum | main | Sonraki heartbeat turu | Hatırlatıcılar, sistem olayları |
| Yalıtılmış | isolated | Ayrılmış cron:<jobId> | Raporlar, arka plan işleri |
| Geçerli oturum | current | Oluşturulurken bağlanır | Bağlama duyarlı yinelenen işler |
| Özel oturum | session:custom-id | Kalıcı adlandırılmış oturum | Geçmiş üzerine inşa edilen iş akışları |
--wake now veya --wake next-heartbeat). Yalıtılmış işler, yeni bir oturumla ayrılmış bir aracı turu çalıştırır. Özel oturumlar (session:xxx) çalıştırmalar arasında bağlamı korur; bu da önceki özetler üzerine kurulan günlük durum toplantıları gibi iş akışlarını mümkün kılar.
Yalıtılmış işler için çalışma zamanı kapatma süreci artık bu cron oturumu için en iyi çabayla tarayıcı temizliğini de içerir. Temizleme hataları yok sayılır; böylece asıl cron sonucu öncelikli olur.
Yalıtılmış cron çalıştırmaları alt aracıları orkestre ettiğinde, teslimat eski üst aracının geçici metni yerine son alt sonuç çıktısını tercih eder. Alt çalıştırmalar hâlâ devam ediyorsa, OpenClaw bu kısmi üst güncellemeyi duyurmak yerine bastırır.
Yalıtılmış işler için yük seçenekleri
--message: istem metni (yalıtılmış için zorunlu)--model/--thinking: model ve düşünme düzeyi geçersiz kılmaları--light-context: çalışma alanı önyükleme dosyası eklemeyi atla--tools exec,read: işin hangi araçları kullanabileceğini kısıtla
--model, o iş için seçili izinli modeli kullanır. İstenen modele izin verilmiyorsa, cron bir uyarı günlüğe kaydeder ve bunun yerine işin aracı/varsayılan model seçimine geri döner. Yapılandırılmış geri dönüş zincirleri yine geçerlidir; ancak açık bir iş bazlı geri dönüş listesi olmayan düz bir model geçersiz kılması artık aracı birincil modelini gizli ek yeniden deneme hedefi olarak eklemez.
Yalıtılmış işler için model seçimi önceliği şöyledir:
- Gmail kancası model geçersiz kılması (çalıştırma Gmail’den geldiyse ve bu geçersiz kılmaya izin veriliyorsa)
- İş bazlı yükteki
model - Saklanan cron oturumu model geçersiz kılması
- Aracı/varsayılan model seçimi
params.fastMode varsa, yalıtılmış cron bunu varsayılan olarak kullanır. Saklanan bir oturum fastMode geçersiz kılması, her iki yönde de yapılandırmadan daha yüksek önceliğe sahiptir.
Yalıtılmış bir çalıştırma canlı bir model değiştirme devrine uğrarsa, cron değiştirilen sağlayıcı/model ile yeniden dener ve yeniden denemeden önce bu canlı seçimi kalıcı olarak saklar. Değişim yeni bir kimlik doğrulama profili de içeriyorsa, cron bu kimlik doğrulama profili geçersiz kılmasını da kalıcı olarak saklar. Yeniden denemeler sınırlıdır: ilk deneme artı 2 değiştirme yeniden denemesinden sonra cron sonsuza kadar döngüye girmek yerine durdurur.
Teslimat ve çıktı
| Mod | Ne olur |
|---|---|
announce | Özeti hedef kanala iletir (yalıtılmış için varsayılan) |
webhook | Tamamlanmış olay yükünü bir URL’ye POST eder |
none | Yalnızca dahili, teslimat yok |
--announce --channel telegram --to "-1001234567890" kullanın. Telegram forum konuları için -1001234567890:topic:123 kullanın. Slack/Discord/Mattermost hedefleri açık önekler kullanmalıdır (channel:<id>, user:<id>).
Cron’a ait yalıtılmış işler için son teslimat yolunun sahibi çalıştırıcıdır. Aracıdan düz metin bir özet döndürmesi istenir ve ardından bu özet announce, webhook yoluyla gönderilir veya none için dahili tutulur. --no-deliver, teslimatı aracıya geri vermez; çalıştırmayı dahili tutar.
Orijinal görev açıkça bazı harici alıcılara mesaj gönderilmesini söylüyorsa, aracı bunu doğrudan göndermeye çalışmak yerine çıktısında mesajın kime/nereye gitmesi gerektiğini belirtmelidir.
Başarısızlık bildirimleri ayrı bir hedef yol izler:
cron.failureDestination, başarısızlık bildirimleri için genel varsayılanı ayarlar.job.delivery.failureDestination, bunu iş bazında geçersiz kılar.- İkisi de ayarlanmamışsa ve iş zaten
announceile teslimat yapıyorsa, başarısızlık bildirimleri artık bu birincil duyuru hedefine geri düşer. delivery.failureDestination, yalnızcasessionTarget="isolated"olan işlerde desteklenir; birincil teslimat moduwebhookise istisnadır.
CLI örnekleri
Tek seferlik hatırlatıcı (ana oturum):Webhook’lar
Gateway, harici tetikleyiciler için HTTP webhook uç noktaları sunabilir. Yapılandırmada etkinleştirin:Kimlik doğrulama
Her istek, kanca belirtecini şu başlıklardan biriyle içermelidir:Authorization: Bearer <token>(önerilen)x-openclaw-token: <token>
POST /hooks/wake
Ana oturum için bir sistem olayını kuyruğa alır:text(zorunlu): olay açıklamasımode(isteğe bağlı):now(varsayılan) veyanext-heartbeat
POST /hooks/agent
Yalıtılmış bir aracı turu çalıştırır:message (zorunlu), name, agentId, wakeMode, deliver, channel, to, model, thinking, timeoutSeconds.
Eşlenmiş kancalar (POST /hooks/<name>)
Özel kanca adları, yapılandırmadakihooks.mappings üzerinden çözülür. Eşlemeler, şablonlar veya kod dönüşümleri kullanarak rastgele yükleri wake ya da agent eylemlerine dönüştürebilir.
Güvenlik
- Kanca uç noktalarını loopback, tailnet veya güvenilir bir ters proxy arkasında tutun.
- Ayrı bir kanca belirteci kullanın; gateway kimlik doğrulama belirteçlerini yeniden kullanmayın.
hooks.pathdeğerini ayrılmış bir alt yol üzerinde tutun;/reddedilir.- Açık
agentIdyönlendirmesini sınırlamak içinhooks.allowedAgentIdsayarlayın. - Arayanın oturum seçmesine ihtiyacınız yoksa
hooks.allowRequestSessionKey=falseolarak bırakın. hooks.allowRequestSessionKeyetkinse, izin verilen oturum anahtarı biçimlerini sınırlamak içinhooks.allowedSessionKeyPrefixesda ayarlayın.- Kanca yükleri varsayılan olarak güvenlik sınırlarıyla sarılır.
Gmail PubSub entegrasyonu
Gmail gelen kutusu tetikleyicilerini Google PubSub aracılığıyla OpenClaw’a bağlayın. Ön koşullar:gcloud CLI, gog (gogcli), etkin OpenClaw hooks, herkese açık HTTPS uç noktası için Tailscale.
Sihirbazla kurulum (önerilen)
hooks.gmail yapılandırmasını yazar, Gmail önayarını etkinleştirir ve push uç noktası için Tailscale Funnel kullanır.
Gateway otomatik başlatma
hooks.enabled=true ve hooks.gmail.account ayarlı olduğunda, Gateway önyüklemede gog gmail watch serve başlatır ve izlemeyi otomatik olarak yeniler. Devre dışı bırakmak için OPENCLAW_SKIP_GMAIL_WATCHER=1 ayarlayın.
Elle tek seferlik kurulum
gogtarafından kullanılan OAuth istemcisinin sahibi olan GCP projesini seçin:
- Konu oluşturun ve Gmail push erişimi verin:
- İzlemeyi başlatın:
Gmail model geçersiz kılması
İşleri yönetme
openclaw cron add|edit --model ..., işin seçili modelini değiştirir.- Modele izin veriliyorsa, tam olarak bu sağlayıcı/model yalıtılmış aracı çalıştırmasına ulaşır.
- İzin verilmiyorsa, cron bir uyarı verir ve işin aracı/varsayılan model seçimine geri düşer.
- Yapılandırılmış geri dönüş zincirleri yine geçerlidir; ancak açık bir iş bazlı geri dönüş listesi olmayan düz bir
--modelgeçersiz kılması artık aracı birinciline sessiz bir ek yeniden deneme hedefi olarak düşmez.
Yapılandırma
cron.enabled: false veya OPENCLAW_SKIP_CRON=1.
Tek seferlik yeniden deneme: geçici hatalar (oran sınırı, aşırı yük, ağ, sunucu hatası) artan geri çekilme ile en fazla 3 kez yeniden denenir. Kalıcı hatalar hemen devre dışı bırakılır.
Yinelenen yeniden deneme: yeniden denemeler arasında üstel geri çekilme (30 saniyeden 60 dakikaya). Sonraki başarılı çalıştırmadan sonra geri çekilme sıfırlanır.
Bakım: cron.sessionRetention (varsayılan 24h), yalıtılmış çalıştırma oturumu girdilerini budar. cron.runLog.maxBytes / cron.runLog.keepLines, çalıştırma günlüğü dosyalarını otomatik olarak budar.
Sorun giderme
Komut merdiveni
Cron tetiklenmiyor
cron.enabledveOPENCLAW_SKIP_CRONortam değişkenini kontrol edin.- Gateway’in kesintisiz çalıştığını doğrulayın.
cronzamanlamaları için saat dilimini (--tz) ana makine saat dilimine karşı doğrulayın.- Çalıştırma çıktısındaki
reason: not-due, el ile çalıştırmanınopenclaw cron run <jobId> --dueile kontrol edildiği ve işin zamanının henüz gelmediği anlamına gelir.
Cron tetiklendi ama teslimat yok
- Teslimat modu
noneise harici mesaj beklenmez. - Teslimat hedefi eksik/geçersizse (
channel/to), dışa gönderim atlanır. - Kanal kimlik doğrulama hataları (
unauthorized,Forbidden), teslimatın kimlik bilgileri nedeniyle engellendiği anlamına gelir. - Yalıtılmış çalıştırma yalnızca sessiz belirteci döndürürse (
NO_REPLY/no_reply), OpenClaw doğrudan dışa teslimatı da geri dönüş kuyruklu özet yolunu da bastırır; bu nedenle sohbete hiçbir şey gönderilmez. - Cron’a ait yalıtılmış işler için, aracının geri dönüş olarak message aracını kullanmasını beklemeyin. Son teslimatın sahibi çalıştırıcıdır;
--no-deliver, doğrudan gönderime izin vermek yerine bunu dahili tutar.
Saat dilimiyle ilgili dikkat edilmesi gerekenler
--tzolmayan cron, gateway ana makinesinin saat dilimini kullanır.- Saat dilimi olmayan
atzamanlamaları UTC olarak değerlendirilir. - Heartbeat
activeHours, yapılandırılmış saat dilimi çözümlemesini kullanır.
İlgili
- Otomasyon ve Görevler — tüm otomasyon mekanizmalarına genel bakış
- Arka Plan Görevleri — cron çalıştırmaları için görev kaydı
- Heartbeat — periyodik ana oturum turları
- Saat Dilimi — saat dilimi yapılandırması