Zamanlanmış Görevler (Scheduled Tasks)
Claude Code içinde /loop ve cron zamanlama araçlarını kullanarak istemleri tekrarlamalı çalıştırabilir, durum sorgulaması yapabilir veya tek seferlik hatırlatıcılar ayarlayabilirsiniz.
Not: Zamanlanmış görevler Claude Code v2.1.72 veya üzerini gerektirir. Sürümünüzü claude --version ile kontrol edebilirsiniz.
Zamanlanmış görevler, Claude'un bir istemi belirli aralıklarla otomatik olarak yeniden çalıştırmasını sağlar. Bunları bir dağıtımı sorgulamak, bir PR'ı izlemek, uzun süren bir derlemeyi kontrol etmek veya oturum içinde kendinize bir şeyi hatırlatmak için kullanabilirsiniz.
Olaylara anında tepki vermek için polling yerine Kanallar (Channels) kullanılabilir — CI sisteminiz başarısızlığı doğrudan oturuma itebilir. Oturumu belirli bir koşul sağlanana kadar döngüde tutmak için /goal kullanılır.
Görevler oturum kapsamlıdır: mevcut konuşmada yaşarlar ve yeni bir oturum başlattığınızda dururlar. --resume veya --continue ile devam ettirmek, süresi dolmamış görevleri geri getirir: son 7 gün içinde oluşturulmuş tekrarlayan görevler veya zamanı henüz geçmemiş tek seferlik görevler.
Oturumdan bağımsız zamanlama için Routines, Desktop scheduled tasks veya GitHub Actions kullanılabilir.
Zamanlama seçeneklerini karşılaştırma (Compare scheduling options)
Claude Code, tekrarlayan veya tek seferlik işler için üç farklı zamanlama yöntemi sunar:
| Özellik | Cloud | Desktop | /loop |
|---|---|---|---|
| Anthropic bulutunda çalışır | Evet | Hayır | Hayır |
| Makine gerektirir | Hayır | Evet | Evet |
| Açık oturum gerektirir | Hayır | Hayır | Evet |
| Yeniden başlatmalarda kalıcıdır | Evet | Evet | --resume ile süresi dolmamışsa |
| Yerel dosyalara erişim | Hayır (yeni klon) | Evet | Evet |
| MCP sunucuları | Görev başına yapılandırılır | Yapılandırma dosyaları ve bağlayıcılar | Oturumdan devralır |
| İzin istemleri | Hayır (otonom çalışır) | Görev başına yapılandırılabilir | Oturumdan devralır |
| Özelleştirilebilir zamanlama | CLI'da /schedule ile |
Evet | Evet |
| Minimum aralık | 1 saat | 1 dakika | 1 dakika |
Cloud görevlerini makineniz olmadan güvenilir şekilde çalışması gereken işler için kullanın. Desktop görevlerini yerel dosyalara ve araçlara erişim gerektiğinde kullanın. /loop'u oturum sırasında hızlı sorgulamalar için kullanın.
/loop ile bir istemi tekrarlamalı çalıştırma (Run a prompt repeatedly with /loop)
/loop paketlenmiş becerisi, oturum açıkken bir istemi tekrarlamalı çalıştırmanın en hızlı yoludur. Hem aralık hem de istem isteğe bağlıdır ve sağladıklarınız döngünün davranışını belirler.
| Sağlanan | Örnek | Sonuç |
|---|---|---|
| Aralık ve istem | /loop 5m deploy'i kontrol et |
İstem sabit zamanlamayla çalışır |
| Sadece istem | /loop deploy'i kontrol et |
İstem Claude'un her yinelemede seçtiği aralıkta çalışır |
| Sadece aralık veya hiçbir şey | /loop |
Yerleşik bakım istemi veya varsa loop.md çalışır |
Ayrıca başka bir komutu istem olarak geçebilirsiniz, örneğin /loop 20m /review-pr 1234 ile paketlenmiş bir iş akışını her yinelemede yeniden çalıştırabilirsiniz.
Sabit aralıkta çalıştırma (Run on a fixed interval)
Bir aralık sağladığınızda Claude bunu bir cron ifadesine dönüştürür, işi zamanlar ve hızı ile iş kimliğini onaylar.
/loop 5m dağıtımın bitip bitmediğini kontrol et ve bana ne olduğunu söyle
Aralık, 30m gibi çıplak bir token olarak başta veya every 2 hours gibi bir ifade olarak sonda yer alabilir. Desteklenen birimler: s (saniye), m (dakika), h (saat), d (gün). Saniyeler en yakın dakikaya yuvarlanır çünkü cron dakika hassasiyetine sahiptir. Temiz bir cron adımına dönüşmeyen aralıklar (7m veya 90m gibi) en yakın uygun aralığa yuvarlanır ve Claude seçtiğini belirtir.
Claude'un aralığı seçmesine izin verme (Let Claude choose the interval)
Aralığı atladığınızda Claude sabit bir cron zamanlaması yerine dinamik olarak bir aralık seçer. Her yinelemeden sonra gözlemlerine dayanarak bir dakika ile bir saat arasında bir gecikme seçer: derleme bitiyorken veya PR aktifken kısa beklemeler, hiçbir şey beklemiyorken uzun beklemeler. Seçilen gecikme ve nedeni her yinelemenin sonunda yazdırılır.
/loop CI'nın geçip geçmediğini kontrol et ve yorumları ele al
Dinamik /loop zamanlaması istediğinizde Claude doğrudan Monitor aracını kullanabilir. Monitor, arka planda bir betik çalıştırır ve her çıktı satırını geri akışlar; bu, polling'i tamamen ortadan kaldırır ve genellikle bir istemi aralıklarla yeniden çalıştırmaktan daha token verimli ve duyarlıdır.
Dinamik zamanlanmış bir döngü, diğer görevler gibi zamanlanmış görev listenizde görünür, böylece aynı şekilde listeleyebilir veya iptal edebilirsiniz. Jitter kuralları buna uygulanmaz ancak yedi günlük süre sonu uygulanır: döngü başlattıktan yedi gün sonra otomatik olarak biter.
Not: Bedrock, Vertex AI ve Microsoft Foundry'de aralıksız bir istem, bunun yerine sabit 10 dakikalık bir zamanlamayla çalışır.
Yerleşik bakım istemini çalıştırma (Run the built-in maintenance prompt)
İstemi atladığınızda Claude sizin sağladığınız yerine yerleşik bir bakım istemi kullanır. Her yinelemede sırasıyla şunları yapar:
- konuşmadaki bitmemiş işleri devam ettirir
- mevcut branch'in pull request'iyle ilgilenir: yorumları, başarısız CI çalıştırmalarını, birleştirme çakışmalarını inceler
- bekleyen başka bir şey yoksa hata avı veya basitleştirme gibi temizlik geçişleri yapar
Claude bu kapsam dışında yeni girişimler başlatmaz ve itme veya silme gibi geri döndürülemez eylemler yalnızca transkriptin zaten yetkilendirdiği bir şeyi devam ettirdiğinde ilerler.
/loop
Çıplak /loop bu istemi dinamik olarak seçilen bir aralıkta çalıştırır. Sabit zamanlamada çalıştırmak için /loop 15m gibi bir aralık ekleyin.
Not: Bedrock, Vertex AI ve Microsoft Foundry'de istemsiz /loop, bakım döngüsünü başlatmak yerine kullanım mesajını yazdırır.
Varsayılan istemi loop.md ile özelleştirme (Customize the default prompt with loop.md)
Bir loop.md dosyası, yerleşik bakım istemini kendi talimatlarınızla değiştirir. Çıplak /loop için tek bir varsayılan istem tanımlar, ayrı zamanlanmış görevlerin bir listesini değil. Komut satırında bir istem sağladığınızda yok sayılır.
Claude dosyayı iki konumda arar ve bulduğu ilkini kullanır:
| Yol | Kapsam |
|---|---|
.claude/loop.md |
Proje düzeyinde. Her iki dosya da varsa önceliklidir. |
~/.claude/loop.md |
Kullanıcı düzeyinde. Kendi dosyasını tanımlamayan herhangi bir projede geçerlidir. |
Dosya düz Markdown'dır, gerekli bir yapısı yoktur. Doğrudan /loop istemini yazıyormuş gibi yazın. Aşağıdaki örnek bir release branch'ini sağlıklı tutar:
.claude/loop.md
Check the `release/next` PR. If CI is red, pull the failing job log, diagnose, and push a minimal fix. If new review comments have arrived, address each one and resolve the thread. If everything is green and quiet, say so in one line.
loop.md düzenlemeleri bir sonraki yinelemede etkili olur, böylece bir döngü çalışırken talimatları iyileştirebilirsiniz. Her iki konumda da loop.md yoksa döngü yerleşik bakım istemine geri döner. Dosyayı kısa tutun: 25.000 baytın üzerindeki içerik kesilir.
Döngüyü durdurma (Stop a loop)
Bir /loop bir sonraki yinelemeyi beklerken durdurmak için Esc tuşuna basın. Bu, bekleyen uyandırmayı temizler, böylece döngü tekrar ateşlenmez. Doğrudan Claude'a sorarak zamanladığınız görevler Esc'ten etkilenmez ve siz silene kadar yerinde kalır.
Kendi kendine hız modunda (self-paced mode), Claude görevin kanıtlanabilir şekilde tamamlandığını belirlediğinde bir sonraki uyandırmayı zamanlamayarak döngüyü kendi başına sonlandırabilir. Sabit aralıktaki döngüler siz durdurana veya yedi gün geçene kadar çalışmaya devam eder.
Tek seferlik hatırlatıcı ayarlama (Set a one-time reminder)
Tek seferlik hatırlatıcılar için /loop kullanmak yerine istediğinizi doğal dilde tanımlayın. Claude, çalıştıktan sonra kendini silen tek ateşlemeli bir görev zamanlar.
bana saat 3'te release branch'ini itmemi hatırlat
45 dakika içinde entegrasyon testlerinin geçip geçmediğini kontrol et
Claude, ateşleme zamanını bir cron ifadesi kullanarak belirli bir dakika ve saate sabitler ve ne zaman ateşleneceğini onaylar.
Zamanlanmış görevleri yönetme (Manage scheduled tasks)
Claude'a doğal dilde görevleri listelemesini veya iptal etmesini söyleyin veya altta yatan araçlara doğrudan başvurun.
hangi zamanlanmış görevlerim var?
deploy kontrol işini iptal et
Arka planda Claude şu araçları kullanır:
| Araç | Amaç |
|---|---|
CronCreate |
Yeni bir görev zamanlar. 5 alanlı cron ifadesi, çalıştırılacak istem ve tekrarlayıp tekrarlamadığını kabul eder. |
CronList |
Tüm zamanlanmış görevleri kimlikleri, zamanlamaları ve istemleriyle listeler. |
CronDelete |
Bir görevi kimliğine göre iptal eder. |
Her zamanlanmış görevin CronDelete'e iletebileceğiniz 8 karakterli bir kimliği vardır. Bir oturum aynı anda en fazla 50 zamanlanmış görev tutabilir.
Zamanlanmış görevler nasıl çalışır (How scheduled tasks run)
Zamanlayıcı, süresi gelen görevler için her saniye kontrol eder ve bunları düşük öncelikle kuyruğa alır. Zamanlanmış bir istem, sizin turlarınız arasında ateşlenir, Claude yanıt verirken değil. Claude bir görev süresi geldiğinde meşgulse, istem mevcut tur bitene kadar bekler.
Tüm zamanlar yerel saat diliminizde yorumlanır. 0 9 * * * gibi bir cron ifadesi, UTC değil, Claude Code'u çalıştırdığınız yerde saat 9 anlamına gelir.
Jitter (Jitter)
Her oturumun API'ye aynı duvar saati anında vurmasını önlemek için zamanlayıcı, ateşleme zamanlarına belirleyici bir ofset ekler:
- Tekrarlayan görevler: Zamanlanan zamandan en fazla 30 dakika sonra (veya saatte birden sık çalışan görevler için aralığın yarısı kadar) ateşlenir. Saat başı
:00için zamanlanmış bir iş:30'a kadar herhangi bir zamanda ateşlenebilir. - Tek seferlik görevler: Saat başı veya yarım saat başı için zamanlanmış görevler en fazla 90 saniye erken ateşlenir.
Ofset, görev kimliğinden türetilir, bu nedenle aynı görev her zaman aynı ofseti alır. Kesin zamanlama önemliyse :00 veya :30 olmayan bir dakika seçin, örneğin 0 9 * * * yerine 3 9 * * * ve tek seferlik jitter uygulanmaz.
Yedi günlük süre sonu (Seven-day expiry)
Tekrarlayan görevler oluşturulduktan 7 gün sonra otomatik olarak sona erer. Görev bir son kez ateşlenir, ardından kendini siler. Bu, unutulmuş bir döngünün ne kadar süre çalışabileceğini sınırlar. Daha uzun süreli tekrarlayan bir görev gerekiyorsa, süresi dolmadan iptal edip yeniden oluşturun veya kalıcı zamanlama için Routines veya Desktop scheduled tasks kullanın.
Cron ifadesi referansı (Cron expression reference)
CronCreate, standart 5 alanlı cron ifadelerini kabul eder: dakika saat gün ay haftanın_günü. Tüm alanlar joker karakterleri (*), tek değerleri (5), adımları (*/15), aralıkları (1-5) ve virgülle ayrılmış listeleri (1,15,30) destekler.
| Örnek | Anlamı |
|---|---|
*/5 * * * * |
Her 5 dakikada bir |
0 * * * * |
Her saat başı |
7 * * * * |
Her saat başını 7 dakika geçe |
0 9 * * * |
Her gün yerel saatle 9'da |
0 9 * * 1-5 |
Hafta içi her gün yerel saatle 9'da |
30 14 15 3 * |
15 Mart yerel saatle 14:30'da |
Haftanın gününde Pazar için 0 veya 7, Cumartesi için 6 kullanılır. L, W, ? gibi genişletilmiş sözdizimi ve MON veya JAN gibi ad takma adları desteklenmez. Hem gün hem de haftanın günü kısıtlandığında, her iki alandan biri eşleşirse tarih eşleşir. Bu, standart vixie-cron semantiğini izler.
Zamanlanmış görevleri devre dışı bırakma (Disable scheduled tasks)
Ortamınıza CLAUDE_CODE_DISABLE_CRON=1 ayarlayarak zamanlayıcıyı tamamen devre dışı bırakın. Cron araçları ve /loop kullanılamaz hale gelir ve önceden zamanlanmış görevler ateşlenmeyi durdurur. Tüm devre dışı bırakma bayraklarının listesi için Environment variables bölümüne bakın.
Sınırlamalar (Limitations)
Oturum kapsamlı zamanlamanın doğal kısıtlamaları vardır:
- Görevler yalnızca Claude Code çalışırken ve boştayken ateşlenir. Terminali kapatmak veya oturumun çıkmasına izin vermek ateşlenmeyi durdurur.
- Kaçırılan ateşlemeler için telafi yoktur. Bir görevin zamanlanmış zamanı Claude uzun süren bir istek üzerinde meşgulken geçerse, Claude boşaldığında bir kez ateşlenir, kaçırılan her aralık için bir kez değil.
- Yeni bir konuşma başlatmak tüm oturum kapsamlı görevleri temizler.
claude --resumeveyaclaude --continueile devam ettirmek, süresi dolmamış görevleri geri getirir: oluşturulduktan sonra yedi gün içindeki tekrarlayan görevler ve zamanlanmış zamanı henüz geçmemiş tek seferlik görevler.- Arka plan Bash ve monitor görevleri devam ettirmede asla geri yüklenmez.
Kesintisiz çalışması gereken cron tabanlı otomasyon için:
- Routines: Anthropic yönetimli altyapıda zamanlamayla, API çağrısıyla veya GitHub olaylarıyla çalışır
- GitHub Actions: CI'da zamanlama tetikleyicisi kullanır
- Desktop scheduled tasks: Makinenizde yerel olarak çalışır
Örnek kullanım senaryosu
Bir geliştirici, takımının CI hattında sık sık başarısız olan bir dağıtımı izlemek istiyor. Manuel olarak kontrol etmek yerine şu adımları izler:
Oturumu başlatır:
claudeİlk sorgulama döngüsünü oluşturur:
/loop 5m production dağıtımının durumunu kontrol et. CI geçtiyse "CI OK" yaz. Başarısız olduysa hangi testin kırıldığını ve log snippet'ini göster.Claude,
CronCreatearacını kullanarak*/5 * * * *cron ifadesiyle bir görev oluşturur ve 8 karakterli bir kimlik döndürür.Görevleri listeler:
hangi zamanlanmış görevlerim var?Claude,
CronListaracını çağırır ve tüm aktif görevleri kimlikleriyle gösterir.Dağıtım tamamlandığında döngüyü durdurur: Claude bir yinelemede "CI OK" bildirir. Geliştirici Esc tuşuna basarak döngüyü iptal eder.
Tek seferlik hatırlatıcı ayarlar:
bana 30 dakika sonra release notlarını yazmayı hatırlatClaude, 30 dakika sonra ateşlenecek tek seferlik bir görev oluşturur.
Gereksiz görevi temizler:
deploy kontrol işini iptal etClaude,
CronDeleteile ilgili görevi siler.
Bu senaryoda geliştirici, terminali açık tutarak CI durumunu pasif olarak izler, manuel sorgulama yapmaz. Dağıtım tamamlandığında döngüyü durdurur ve hatırlatıcı ile bir sonraki adımı unutmaz.