Zamanlanmış Görevler (Cron)
Cron, Gateway’in yerleşik zamanlayıcısıdır. İşleri kalıcı olarak saklar, doğru zamanda agent’ı 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ürecinin içinde çalışır.
- Yeniden başlatmalarda zamanlamaların kaybolmaması için işler
~/.openclaw/cron/jobs.jsoniçinde 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ılı olduktan 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 arkasında 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 agent çalıştırması sorumlu değilse, OpenClaw teslimattan önce gerçek sonuç için bir kez daha yeniden istemde bulunur.
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 artışlarını azaltmak için otomatik olarak 5 dakikaya kadar kademelendirilir. Kesin zamanlama zorlamak için --exact, açık bir pencere belirtmek için --stagger 30s kullanın.
Yürütme stilleri
| Stil | --session değeri | Çalıştığı yer | En uygun olduğu durumlar |
|---|---|---|---|
| Ana oturum | main | Bir sonraki heartbeat dönüşü | Hatırlatıcılar, sistem olayları |
| Yalıtılmış | isolated | Ayrılmış cron:<jobId> | Raporlar, arka plan işleri |
| Geçerli oturum | current | Oluşturma sırasında bağlanır | Bağlama duyarlı yinelenen işler |
| Özel oturum | session:custom-id | Kalıcı adlandırılmış oturum | Geçmiş üzerine kurulan iş akışları |
--wake now veya --wake next-heartbeat). Yalıtılmış işler yeni bir oturumla ayrılmış bir agent dönüşü çalıştırır. Özel oturumlar (session:xxx), çalıştırmalar arasında bağlamı korur; bu da önceki özetler üzerine inşa edilen günlük standup’lar gibi iş akışlarını mümkün kılar.
Yalıtılmış işler için çalışma zamanı kapatma işlemi artık bu cron oturumu için en iyi çaba tarayıcı temizliğini de içerir. Temizleme hataları yok sayılır; böylece gerçek cron sonucu yine öncelikli olur.
Yalıtılmış cron çalıştırmaları alt agent’ları orkestre ettiğinde, teslimat da eski üst agent geçici metni yerine son alt çıktı sonucunu tercih eder. Alt agent’lar hâlâ çalışıyorsa, OpenClaw bu kısmi üst agent güncellemesini duyurmak yerine bastırır.
Yalıtılmış işler için payload 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 sınırla
--model, o iş için seçilen izinli modeli kullanır. İstenen modele izin verilmiyorsa cron bir uyarı kaydeder ve bunun yerine işin agent/varsayılan model seçimine geri döner. Yapılandırılmış fallback zincirleri yine uygulanır, ancak açık bir iş başına fallback listesi olmayan düz bir model geçersiz kılması artık gizli ek yeniden deneme hedefi olarak agent birincil modelini eklemez.
Yalıtılmış işler için model seçimi önceliği şöyledir:
- Gmail hook model geçersiz kılması (çalıştırma Gmail’den geldiyse ve bu geçersiz kılmaya izin veriliyorsa)
- İş başına payload
model - Saklanan cron oturumu model geçersiz kılması
- Agent/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ırmanın önüne geçer.
Bir yalıtılmış çalıştırma canlı 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şiklik yeni bir kimlik doğrulama profili de taşıyorsa 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 iptal eder.
Teslimat ve çıktı
| Mod | Ne olur |
|---|---|
announce | Özeti hedef kanala iletir (yalıtılmış için varsayılan) |
webhook | Tamamlanan olay payload’unu 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 hedeflerinde açık önekler kullanılmalıdır (channel:<id>, user:<id>).
Cron tarafından sahip olunan yalıtılmış işler için son teslimat yolunun sahibi çalıştırıcıdır. Agent’dan düz metin bir özet döndürmesi istenir ve bu özet sonra announce, webhook üzerinden gönderilir veya none için dahili tutulur. --no-deliver, teslimatı yeniden agent’a vermez; çalıştırmayı dahili tutar.
Orijinal görev açıkça bir harici alıcıya mesaj gönderilmesini söylüyorsa, agent 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 yolunu izler:
cron.failureDestination, başarısızlık bildirimleri için genel bir varsayılan ayarlar.job.delivery.failureDestination, bunu iş başına geçersiz kılar.- Hiçbiri ayarlanmamışsa ve iş zaten
announceile teslim ediliyorsa, başarısızlık bildirimleri artık bu birincil duyuru hedefine geri döner. delivery.failureDestination, yalnızca birincil teslimat moduwebhookolmadıkçasessionTarget="isolated"işleri için desteklenir.
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 istekte hook belirteci şu başlıklardan biriyle bulunmalıdır:Authorization: Bearer <token>(önerilir)x-openclaw-token: <token>
POST /hooks/wake
Ana oturum için bir sistem olayı kuyruğa ekleyin:text(zorunlu): olay açıklamasımode(isteğe bağlı):now(varsayılan) veyanext-heartbeat
POST /hooks/agent
Yalıtılmış bir agent dönüşü çalıştırın:message (zorunlu), name, agentId, wakeMode, deliver, channel, to, model, thinking, timeoutSeconds.
Eşlenmiş hook’lar (POST /hooks/<name>)
Özel hook adları yapılandırmadakihooks.mappings üzerinden çözülür. Eşlemeler, şablonlar veya kod dönüştürmeleriyle rastgele payload’ları wake ya da agent eylemlerine dönüştürebilir.
Güvenlik
- Hook uç noktalarını loopback, tailnet veya güvenilen ters proxy arkasında tutun.
- Ayrı bir hook 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. - Çağıranın seçtiği oturumlar gerekmiyorsa
hooks.allowRequestSessionKey=falsebırakın. hooks.allowRequestSessionKeyetkinleştirirseniz, izin verilen oturum anahtarı şekillerini sınırlandırmak içinhooks.allowedSessionKeyPrefixesde ayarlayın.- Hook payload’ları varsayılan olarak güvenlik sınırlarıyla sarılır.
Gmail PubSub entegrasyonu
Gmail gelen kutusu tetikleyicilerini Google PubSub üzerinden OpenClaw’a bağlayın. Önkoşullar:gcloud CLI, gog (gogcli), etkin OpenClaw hook’ları, genel HTTPS uç noktası için Tailscale.
Sihirbazla kurulum (önerilir)
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 ayarlandığında Gateway, açılışta 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.
El ile tek seferlik kurulum
gogtarafından kullanılan OAuth istemcisinin sahibi olan GCP projesini seçin:
- Konuyu 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 bu tam sağlayıcı/model yalıtılmış agent çalıştırmasına ulaşır.
- İzin verilmiyorsa cron bir uyarı verir ve işin agent/varsayılan model seçimine geri döner.
- Yapılandırılmış fallback zincirleri yine uygulanır, ancak açık bir iş başına fallback listesi olmayan düz bir
--modelgeçersiz kılması artık sessiz ek bir yeniden deneme hedefi olarak agent birincil modeline 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ı) üstel 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 uygulanır (30 saniyeden 60 dakikaya). Geri çekilme, bir sonraki başarılı çalıştırmadan sonra 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ük dosyalarını otomatik olarak budar.
Sorun giderme
Komut sıralaması
Cron tetiklenmiyor
cron.enabledveOPENCLAW_SKIP_CRONortam değişkenini kontrol edin.- Gateway’in sürekli çalıştığını doğrulayın.
cronzamanlamaları için saat dilimini (--tz) ana makinenin saat dilimiyle karşılaştırarak 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ş zamanının henüz gelmediği anlamına gelir.
Cron tetiklendi ama teslimat yok
- Teslimat modu
noneise herhangi bir harici mesaj beklenmez. - Teslimat hedefi eksik/geçersizse (
channel/to) giden 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 (
NO_REPLY/no_reply) döndürürse, OpenClaw doğrudan giden teslimatı da geri dönüş kuyruklu özet yolunu da bastırır; bu yüzden sohbete hiçbir şey geri gönderilmez. - Cron tarafından sahip olunan yalıtılmış işler için, agent’ın yedek olarak mesaj aracını kullanmasını beklemeyin. Son teslimatın sahibi çalıştırıcıdır;
--no-deliver, doğrudan göndermeye izin vermek yerine bunu dahili tutar.
Saat dilimi tuzakları
--tzolmadan 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 defteri
- Heartbeat — periyodik ana oturum dönüşleri
- Saat Dilimi — saat dilimi yapılandırması