Ana içeriğe atla

Arka Plan Exec + Process Aracı

OpenClaw, exec aracı üzerinden kabuk komutlarını çalıştırır ve uzun süre çalışan 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 1800): bu zaman aşımından sonra süreci sonlandır
  • elevated (bool): yükseltilmiş mod etkin/izinliyse ana makinede çalıştır
  • Gerçek bir TTY mi gerekiyor? pty: true ayarlayın.
  • workdir, env
Davranış:
  • Ön planda çalışanlar çı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 kuyruk döndürür.
  • Çıktı, oturum yoklanana veya temizlenene kadar bellekte tutulur.
  • process aracı izinli değilse, exec eşzamanlı çalışır ve yieldMs/background yok sayılır.

Child process bridging

exec/process araçları dışında uzun süre çalışan alt süreçler oluşturulurken (örneğin CLI yeniden başlatmaları veya gateway yardımcıları), sonlandırma sinyallerinin iletilmesi ve çıkış/hata durumunda dinleyicilerin ayrılması için alt süreç köprü yardımcısını ekleyin. Bu, systemd üzerinde yetim süreçleri önler ve platformlar arasında kapatma davranışını tutarlı kılar. Environment overrides:
  • PI_BASH_YIELD_MS: varsayılan yield (ms)
  • PI_BASH_MAX_OUTPUT_CHARS: bellek içi çıktı üst sınırı (karakter)
  • OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS: akış başına bekleyen stdout/stderr üst sınırı (karakter)
  • PI_BASH_JOB_TTL_MS: tamamlanan oturumlar için TTL (ms, 1 dk–3 sa ile sınırlı)
Yapılandırma (tercih edilir):
  • 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ı kuyruğa al ve istek heartbeat’i talep et.
  • 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 ekler.

process aracı

Eylemler:
  • list: çalışan + tamamlanan oturumlar
  • poll: bir oturum için yeni çıktıyı boşalt (çıkış durumunu da bildirir)
  • log: birikmiş çıktıyı oku (offset + limit desteklenir)
  • write: stdin gönder (data, isteğe bağlı eof)
  • kill: bir arka plan oturumunu sonlandır
  • clear: tamamlanan bir oturumu bellekten kaldır
  • remove: çalışıyorsa öldür, aksi halde tamamlandıysa temizle
Notlar:
  • Yalnızca arka plana alınmış oturumlar listelenir/bellekte tutulur.
  • Süreç yeniden başlatıldığında oturumlar kaybolur (diskte kalıcılık yoktur).
  • Oturum günlükleri yalnızca process poll/log çalıştırılır ve araç sonucu kaydedilirse sohbet geçmişine kaydedilir.
  • process ajan başına kapsamlıdır; yalnızca o ajan tarafından başlatılan oturumları görür.
  • process list, hızlı taramalar için türetilmiş bir name (komut fiili + hedef) içerir.
  • process log, satır tabanlı offset/limit kullanır (son N satırı almak için offset’yı atlayın).
  • Hem offset hem de limit belirtilmezse, son 200 satırı döndürür ve bir sayfalama ipucu içerir.
  • offset belirtilip limit belirtilmezse, offset değerinden sona kadar döndürür (200 ile sınırlandırılmaz).

Örnekler

Uzun bir görevi çalıştırın ve daha sonra yoklayın:
{ "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000 }
{ "tool": "process", "action": "poll", "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" }