Ana içeriğe atla
OpenClaw, shell komutlarını exec aracı üzerinden çalıştırır ve uzun süren görevleri bellekte tutar. process aracı bu arka plan oturumlarını yönetir.

exec aracı

Temel parametreler:
  • command (gerekli)
  • yieldMs (varsayılan 10000): bu gecikmeden sonra otomatik olarak arka plana al
  • background (bool): hemen arka plana al
  • timeout (saniye, varsayılan tools.exec.timeoutSec): bu zaman aşımından sonra süreci sonlandır; yalnızca o çağrı için exec süreç zaman aşımını devre dışı bırakmak üzere timeout: 0 ayarlayın
  • elevated (bool): yükseltilmiş mod etkin/izinli ise sandbox dışında çalıştır (gateway varsayılandır veya exec hedefi node olduğunda node)
  • Gerçek bir TTY mi gerekiyor? pty: true ayarlayın.
  • workdir, env
Davranış:
  • Ön plan çalıştırmaları çıktıyı doğrudan döndürür.
  • Arka plana alındığında (açıkça veya zaman aşımıyla), araç status: "running" + sessionId ve kısa bir son çıktı döndürür.
  • Arka plan ve yieldMs çalıştırmaları, çağrı açık bir timeout sağlamadığı sürece tools.exec.timeoutSec değerini devralır.
  • Çıktı, oturum yoklanana veya temizlenene kadar bellekte tutulur.
  • process aracına izin verilmiyorsa, exec eşzamanlı çalışır ve yieldMs/background değerlerini yok sayar.
  • Başlatılan exec komutları, bağlama duyarlı shell/profil kuralları için OPENCLAW_SHELL=exec alır.
  • Şimdi başlayan uzun süreli işler için işi bir kez başlatın ve etkin olduğunda komut çıktı ürettiğinde veya başarısız olduğunda otomatik tamamlanma uyandırmasına güvenin.
  • Otomatik tamamlanma uyandırması kullanılamıyorsa veya çıktı üretmeden temiz şekilde çıkan bir komut için sessiz başarı onayına ihtiyacınız varsa, tamamlanmayı doğrulamak için process kullanın.
  • Hatırlatıcıları veya gecikmeli takipleri sleep döngüleri ya da tekrarlı yoklamayla taklit etmeyin; gelecekteki işler için Cron kullanın.

Alt süreç köprüleme

exec/process araçları dışında uzun süreli alt süreçler başlatırken (örneğin, CLI yeniden başlatmaları veya Gateway yardımcıları), sonlandırma sinyallerinin iletilmesi ve dinleyicilerin çıkışta/hatada ayrılması için alt süreç köprü yardımcısını ekleyin. Bu, systemd üzerinde yetim süreçleri önler ve kapatma davranışını platformlar arasında tutarlı tutar. Ortam geçersiz kılmaları:
  • OPENCLAW_BASH_YIELD_MS: varsayılan bekleme (ms)
  • OPENCLAW_BASH_MAX_OUTPUT_CHARS: bellek içi çıktı sınırı (karakter)
  • OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS: akış başına bekleyen stdout/stderr sınırı (karakter)
  • OPENCLAW_BASH_JOB_TTL_MS: tamamlanan oturumlar için TTL (ms, 1 dk-3 sa ile sınırlı)
  • OPENCLAW_PROCESS_INPUT_WAIT_IDLE_MS: yazılabilir arka plan oturumları büyük olasılıkla girdi bekliyor olarak işaretlenmeden önceki boşta çıktı eşiği (varsayılan 15000 ms)
Yapılandırma (tercih edilen):
  • tools.exec.backgroundMs (varsayılan 10000)
  • tools.exec.timeoutSec (varsayılan 1800)
  • tools.exec.cleanupMs (varsayılan 1800000)
  • tools.exec.notifyOnExit (varsayılan true): arka plana alınmış bir exec çıktığında bir sistem olayını kuyruğa alır + heartbeat ister.
  • tools.exec.notifyOnExitEmptySuccess (varsayılan false): true olduğunda, çıktı üretmeyen başarılı arka plan çalıştırmaları için de tamamlanma olaylarını kuyruğa alır.

process aracı

Eylemler:
  • list: çalışan + tamamlanan oturumlar
  • poll: bir oturum için yeni çıktıyı boşalt (çıkış durumunu da bildirir)
  • log: birleştirilmiş çıktıyı oku ve girdi kurtarma ipuçlarını göster (offset + limit destekler)
  • write: stdin gönder (data, isteğe bağlı eof)
  • send-keys: PTY destekli bir oturuma açık anahtar belirteçleri veya baytlar gönder
  • submit: PTY destekli bir oturuma Enter / satır başı gönder
  • paste: düz metin gönder, isteğe bağlı olarak bracketed paste modunda sarılı
  • kill: bir arka plan oturumunu sonlandır
  • clear: tamamlanmış bir oturumu bellekten kaldır
  • remove: çalışıyorsa sonlandır, aksi halde tamamlandıysa temizle
Notlar:
  • Yalnızca arka plana alınmış oturumlar listelenir/bellekte kalıcı tutulur.
  • Oturumlar süreç yeniden başlatıldığında kaybolur (disk kalıcılığı yoktur).
  • Oturum günlükleri yalnızca process poll/log çalıştırırsanız ve araç sonucu kaydedilirse sohbet geçmişine kaydedilir.
  • process ajan başına kapsamlanır; yalnızca o ajan tarafından başlatılan oturumları görür.
  • Durum, günlükler, sessiz başarı onayı veya otomatik tamamlanma uyandırması kullanılamadığında tamamlanma onayı için poll / log kullanın.
  • Etkileşimli bir CLI’ı kurtarmadan önce log kullanın; böylece mevcut döküm, stdin durumu ve girdi bekleme ipucu birlikte görünür.
  • Girdi veya müdahale gerektiğinde write / send-keys / submit / paste / kill kullanın.
  • process list, hızlı taramalar için türetilmiş bir name (komut fiili + hedef) içerir.
  • process list, poll ve log, waitingForInput değerini yalnızca oturumun hâlâ yazılabilir stdin’i olduğunda ve girdi bekleme eşiğinden daha uzun süre boşta kaldığında bildirir.
  • process log, satır tabanlı offset/limit kullanır.
  • Hem offset hem limit atlandığında, son 200 satırı döndürür ve bir sayfalama ipucu içerir.
  • offset sağlanıp limit atlandığında, offset değerinden sona kadar döndürür (200 ile sınırlandırılmaz).
  • Yoklama isteğe bağlı durum içindir, bekleme döngüsü zamanlama için değildir. İş daha sonra gerçekleşmeliyse bunun yerine Cron kullanın.

Örnekler

Uzun bir görev çalıştırın ve daha sonra yoklayın:
{ "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000 }
{ "tool": "process", "action": "poll", "sessionId": "<id>" }
Girdi göndermeden önce etkileşimli bir oturumu inceleyin:
{ "tool": "process", "action": "log", "sessionId": "<id>" }
Hemen arka planda başlatın:
{ "tool": "exec", "command": "npm run build", "background": true }
stdin gönderin:
{ "tool": "process", "action": "write", "sessionId": "<id>", "data": "y\n" }
PTY tuşları gönderin:
{ "tool": "process", "action": "send-keys", "sessionId": "<id>", "keys": ["C-c"] }
Geçerli satırı gönderin:
{ "tool": "process", "action": "submit", "sessionId": "<id>" }
Düz metin yapıştırın:
{ "tool": "process", "action": "paste", "sessionId": "<id>", "text": "line1\nline2\n" }

İlgili