Gateway
Arka planda yürütme ve süreç aracı
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 albackground(bool): hemen arka plana altimeout(saniye, varsayılantools.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 üzeretimeout: 0ayarlayınelevated(bool): yükseltilmiş mod etkin/izinli ise sandbox dışında çalıştır (gatewayvarsayılandır veya exec hedefinodeolduğundanode)- Gerçek bir TTY mi gerekiyor?
pty: trueayarlayı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"+sessionIdve kısa bir son çıktı 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 yoklanana veya temizlenene kadar bellekte tutulur.
processaracına izin verilmiyorsa,execeşzamanlı çalışır veyieldMs/backgrounddeğerlerini yok sayar.- Başlatılan exec komutları, bağlama duyarlı shell/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ı 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
processkullanın. - Hatırlatıcıları veya gecikmeli takipleri
sleepdö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 oturumlarpoll: 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+limitdestekler)write: stdin gönder (data, isteğe bağlıeof)send-keys: PTY destekli bir oturuma açık anahtar belirteçleri veya baytlar göndersubmit: PTY destekli bir oturuma Enter / satır başı gönderpaste: düz metin gönder, isteğe bağlı olarak bracketed paste modunda sarılıkill: bir arka plan oturumunu sonlandırclear: tamamlanmış bir oturumu bellekten kaldırremove: ç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. processajan 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/logkullanın. - Etkileşimli bir CLI'ı kurtarmadan önce
logkullanı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/killkullanın. process list, hızlı taramalar için türetilmiş birname(komut fiili + hedef) içerir.process list,pollvelog,waitingForInputdeğ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/limitkullanır.- Hem
offsethemlimitatlandığı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ı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" }