Gateway
Arka plan exec ve işlem aracı
OpenClaw, kabuk komutlarını exec aracı üzerinden ç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(zorunlu)yieldMs(varsayılan 10000): bu gecikmeden sonra otomatik olarak arka plana albackground(bool): hemen arka plana altimeout(saniye, varsayılantools.exec.timeoutSec): bu zaman aşımından sonra süreci sonlandırır;timeout: 0yalnızca o çağrı için exec süreç zaman aşımını devre dışı bırakmak üzere ayarlanmalıdırelevated(bool): yükseltilmiş mod etkin/izinli ise sandbox dışında çalıştır (gatewayvarsayılan, exec hedefinodeolduğundanode)- Gerçek bir TTY mi gerekiyor?
pty: trueayarlayı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"+sessionIdve kısa bir son bölüm döndürür. - Arka plan ve
yieldMsçalıştırmaları, çağrı açık birtimeoutsağlamadığı sürecetools.exec.timeoutSecdeğerini devralır. - Çıktı, oturum sorgulanana veya temizlenene kadar bellekte tutulur.
processaracına izin verilmezse,execeşzamanlı çalışır veyieldMs/backgrounddeğerlerini yok sayar.- Başlatılan exec komutları, bağlama duyarlı kabuk/profil kuralları için
OPENCLAW_SHELL=execalı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ı yoksa veya çıktısız temiz şekilde çıkan bir komut için sessiz başarı onayı gerekiyorsa, tamamlanmayı doğrulamak için
processkullanın. - Hatırlatıcıları veya gecikmeli takipleri
sleepdöngüleri ya da tekrarlı sorgulama ile taklit etmeyin; gelecekteki işler için cron kullanın.
Alt süreç köprüleme
exec/process araçları dışında uzun süre çalışan 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ış/hata sırasında ayrılması için alt süreç köprü yardımcısını bağlayın. Bu, systemd üzerinde yetim süreçleri önler ve kapatma davranışını platformlar arasında tutarlı tutar.
Ortam geçersiz kılmaları:
PI_BASH_YIELD_MS: varsayılan bekletme (ms)PI_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)PI_BASH_JOB_TTL_MS: tamamlanmış oturumlar için TTL (ms, 1 dk-3 sa ile sınırlı)
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 + tamamlanmış oturumlarpoll: bir oturum için yeni çıktıyı boşaltır (çıkış durumunu da bildirir)log: birleştirilmiş çıktıyı okur (offset+limitdestekler)write: stdin gönderir (data, isteğe bağlıeof)send-keys: PTY destekli bir oturuma açık anahtar belirteçleri veya baytlar gönderirsubmit: PTY destekli bir oturuma Enter / carriage return gönderirpaste: değişmez metin gönderir, isteğe bağlı olarak bracketed paste moduna sararkill: bir arka plan oturumunu sonlandırırclear: tamamlanmış bir oturumu bellekten kaldırırremove: çalışıyorsa sonlandırır, aksi halde tamamlanmışsa temizler
Notlar:
- Yalnızca arka plana alınmış oturumlar listelenir/bellekte kalıcı tutulur.
- Süreç yeniden başlatıldığında oturumlar 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. processher agent için kapsamlanmıştır; yalnızca o agent 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/logkullanın. - Girdi veya müdahale gerektiğinde
write/send-keys/submit/paste/killkullanın. process list, hızlı taramalar için türetilmiş birname(komut fiili + hedef) içerir.process log, satır tabanlıoffset/limitkullanır.- Hem
offsethem delimitatlandığında, son 200 satırı döndürür ve bir sayfalama ipucu içerir. offsetsağlanıplimitatlandığında,offsetdeğerinden sona kadar döndürür (200 ile sınırlanmaz).- Sorgulama, isteğe bağlı durum içindir; bekleme döngüsü zamanlaması 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 sorgulayı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" }
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>" }
Değişmez metin yapıştırın:
{ "tool": "process", "action": "paste", "sessionId": "<id>", "text": "line1\nline2\n" }