Messages and delivery
Komut kuyruğu
OpenClaw, oturumlar arasında güvenli paralelliğe izin vermeye devam ederken birden fazla ajan çalıştırmasının çakışmasını önlemek için gelen otomatik yanıt çalıştırmalarını (tüm kanallar) küçük bir işlem içi kuyruk üzerinden serileştirir.
Neden
- Otomatik yanıt çalıştırmaları maliyetli olabilir (LLM çağrıları) ve birden fazla gelen ileti birbirine yakın zamanlarda ulaştığında çakışabilir.
- Serileştirme, paylaşılan kaynaklar (oturum dosyaları, günlükler, CLI standart girdisi) için rekabeti önler ve yukarı akış hız sınırlarına takılma olasılığını azaltır.
Nasıl çalışır
- Hat duyarlı bir FIFO kuyruğu, her hattı yapılandırılabilir bir eşzamanlılık sınırıyla boşaltır (yapılandırılmamış hatlar için varsayılan 1;
mainvarsayılan olarak 4,subagentise 8). runEmbeddedAgent, oturum başına yalnızca bir etkin çalıştırmayı garanti etmek için oturum anahtarına göre (hatsession:<key>) kuyruğa ekler.- Ardından her oturum çalıştırması bir genel hatta (varsayılan olarak
main) kuyruğa alınır; böylece genel paralellikagents.defaults.maxConcurrentile sınırlandırılır. - Ayrıntılı günlük kaydı etkinleştirildiğinde, kuyruğa alınan çalıştırmalar başlamadan önce ~2s'den uzun beklediyse kısa bir bildirim oluşturur.
- Yazıyor göstergeleri kuyruğa ekleme sırasında hemen tetiklenmeye devam eder (kanal destekliyorsa); böylece çalıştırma sırasını beklerken kullanıcı deneyimi değişmez.
Varsayılanlar
Ayarlanmadığında tüm gelen kanal yüzeyleri şunları kullanır:
mode: "steer"debounceMs: 500cap: 20drop: "summarize"
Aynı turda yönlendirme varsayılandır. Çalıştırma sürerken gelen bir istem, çalıştırma yönlendirmeyi kabul edebiliyorsa etkin çalışma zamanına enjekte edilir; böylece ikinci bir oturum çalıştırması başlatılmaz. Etkin çalıştırma yönlendirmeyi kabul edemiyorsa OpenClaw, istemi başlatmadan önce etkin çalıştırmanın tamamlanmasını bekler.
Kuyruk modları
/queue, bir oturumda zaten etkin bir çalıştırma varken normal gelen iletilerin ne yapacağını denetler:
steer: iletileri etkin çalışma zamanına enjekte eder. OpenClaw, bekleyen tüm yönlendirme iletilerini mevcut asistan turu araç çağrılarını yürütmeyi tamamladıktan sonra, bir sonraki LLM çağrısından önce teslim eder; Codex app-server, toplu tek birturn/steeralır. Çalıştırma etkin biçimde akış yapmıyorsa veya yönlendirme kullanılamıyorsa OpenClaw, istemi başlatmadan önce etkin çalıştırmanın sona ermesini bekler.followup: yönlendirme yapmaz. Her iletiyi mevcut çalıştırma sona erdikten sonraki bir ajan turu için kuyruğa ekler.collect: yönlendirme yapmaz. Kuyruğa alınmış iletileri sessizlik penceresinden sonra tek bir takip turunda birleştirir. İletiler farklı kanalları/iş parçacıklarını hedefliyorsa yönlendirmeyi korumak için ayrı ayrı boşaltılır.interrupt: söz konusu oturumun etkin çalıştırmasını iptal eder, ardından en yeni iletiyi çalıştırır.
Çalışma zamanına özgü zamanlama ve bağımlılık davranışı için Yönlendirme kuyruğu bölümüne bakın. Açık /steer <message> komutu için Yönlendir bölümüne bakın.
messages.queue üzerinden genel olarak veya kanal başına yapılandırın:
{ messages: { queue: { mode: "steer", debounceMs: 500, cap: 20, drop: "summarize", byChannel: { discord: "collect" }, }, },}Kuyruk seçenekleri
Seçenekler kuyruğa alınmış teslimata uygulanır. debounceMs, steer modunda Codex yönlendirme sessizlik penceresini de ayarlar:
debounceMs: kuyruğa alınmış takipleri veya toplama gruplarını boşaltmadan önceki sessizlik penceresi; Codexsteermodunda, topluturn/steergönderilmeden önceki sessizlik penceresi. Birimsiz sayılar milisaniyedir;/queueseçeneklerims,s,m,hvedbirimlerini kabul eder.cap: oturum başına kuyruğa alınabilecek azami ileti sayısı.1altındaki değerler yok sayılır.drop: "summarize"(varsayılan): gerektiğinde kuyruğa en önce eklenen girdileri kaldırır, kısa özetleri korur ve bunları yapay bir takip istemi olarak enjekte eder.drop: "old": özetleri korumadan, gerektiğinde kuyruğa en önce eklenen girdileri kaldırır.drop: "new": kuyruk zaten doluyken en yeni iletiyi reddeder.
Varsayılanlar: debounceMs: 500, cap: 20, drop: summarize.
Yönlendirme ve akış
Kanal akışı partial veya block olduğunda, etkin çalıştırma çalışma zamanı sınırlarına ulaşırken yönlendirme kısa ve görünür birkaç yanıt gibi görünebilir:
partial: önizleme erken sonlandırılabilir, ardından yönlendirme kabul edildikten sonra yeni bir önizleme başlar.block: taslak boyutundaki bloklar aynı sıralı görünümü oluşturabilir.- Akış olmadan, çalışma zamanı aynı turda yönlendirmeyi kabul edemediğinde yönlendirme etkin çalıştırmadan sonraki bir takibe geri döner.
steer, devam eden araçları iptal etmez. En yeni iletinin mevcut çalıştırmayı iptal etmesi gerekiyorsa /queue interrupt kullanın.
Öncelik
OpenClaw, mod seçimi için şu sırayı uygular:
- Satır içi veya kayıtlı oturum başına
/queuegeçersiz kılması. messages.queue.byChannel.<channel>.messages.queue.mode.- Varsayılan
steer.
Seçeneklerde, satır içi veya kayıtlı /queue seçenekleri yapılandırmaya göre önceliklidir. Ardından sırasıyla kanala özgü gecikme (messages.queue.debounceMsByChannel), Plugin gecikme varsayılanları, genel messages.queue seçenekleri ve yerleşik varsayılanlar uygulanır. cap ve drop, kanal başına yapılandırma anahtarları değil, genel/oturum seçenekleridir.
Oturum başına geçersiz kılmalar
- Mevcut oturumun kuyruk modunu kaydetmek için
/queue <steer|followup|collect|interrupt>komutunu bağımsız bir komut olarak gönderin. - Seçenekler birleştirilebilir:
/queue collect debounce:0.5s cap:25 drop:summarize /queue defaultveya/queue reset, oturum geçersiz kılmasını temizler.
Kuyruğa alınmış turu iptal etme
Bir istem takip/toplama kuyruğunda beklerken (örneğin başka bir tur etkinken gelen bir TUI veya
web sohbeti chat.send), Gateway, kuyruğa alınmış
içerik çalıştırılana veya kaldırılana kadar söz konusu istemci runId için
Gateway'e ait bir iptal kimliği tutar. Kimlik, taşma
özetinde birleştirilen içeriği izler.
- Belirli bir
runIdiçerenchat.abort, istekte bulunan yetkiliyse (etkin çalıştırmalarla aynı sahiplik kuralları) bu turu hâlâ kuyruktayken iptal eder. runIdiçermeyen bir oturum içinchat.abort, önce yetkilendirilmiş kuyruğa alınmış turları iptal eder, ardından yetkilendirilmiş etkin çalıştırmaları iptal eder. Bu sıra, kuyruğun boşaltılmasıyla işlerin yarı durdurulmuş bir oturuma yükseltilmesini önler.- İstek sahibi başına denetim yapmadan tüm oturum kuyruğunu temizlemek, çok sahipli oturumlar için durdurma yolu değildir.
- Kuyruktaki beklemeler
sessions.listiçin etkin ajan çalıştırmaları olarak yansıtılmaz ve etkin çalıştırma zaman aşımı anlamlarına sahip değildir; bunlar yalnızca etkin aşamaya aittir.
Gateway destekli istemciler (openclaw tui dâhil), çalıştırma ortasında gelen istemleri iletir ve
kuyruk modunu Gateway'in uygulamasına izin verir. Esc//stop, kaybolan yerel tanıtıcıların hâlâ kuyruğa alınmış bir istemi çalışır durumda bırakamaması için oturum kapsamlı bir iptal
kullanır.
openclaw chat ve openclaw tui --local, gömülü çalışma zamanında aynı dört modu
uygular. Yerel steer, çalışma zamanı yönlendirmeyi kabul ettiğinde etkin bir gömülü çalıştırmaya enjekte edilir,
aksi hâlde bir takibe dönüşür; followup ve
collect yerel bekleyen işler olarak kalır; interrupt, en yeni iletiyi
başlatmadan önce etkin yerel çalıştırmayı iptal eder. Açık /steer <message> komutu
yerel mod komutu değildir.
Kapsam ve garantiler
- Gateway yanıt işlem hattını kullanan tüm gelen kanallardaki otomatik yanıt ajan çalıştırmalarına uygulanır (WhatsApp web, Telegram, Slack, Discord, Signal, iMessage, web sohbeti vb.).
- Varsayılan hat (
main), gelen iletiler + ana Heartbeat'ler için işlem genelindedir; birden fazla oturumun paralel çalışmasına izin vermek içinagents.defaults.maxConcurrentayarlayın. - Arka plan işlerinin gelen yanıtları engellemeden paralel çalışabilmesi için ek hatlar (ör.
cron,cron-nested,nested,subagent) bulunabilir. Yalıtılmış Cron ajan turları, iç ajan yürütmelericron-nestedkullanırken bircronyuvasını tutar. Paylaşılan Cron dışınestedakışları kendi hat davranışlarını korur. Bu ayrılmış çalıştırmalar arka plan görevleri olarak izlenir. - Oturum başına hatlar, belirli bir oturuma aynı anda yalnızca bir ajan çalıştırmasının erişmesini garanti eder.
- Harici bağımlılık veya arka plan çalışan iş parçacığı yoktur; yalnızca TypeScript + promise'lar kullanılır.
Sorun giderme
- Komutlar takılmış görünüyorsa ayrıntılı günlükleri etkinleştirin ve kuyruğun boşaltıldığını doğrulamak için "queued for ...ms" satırlarını arayın.
- Bir turu kabul edip ardından ilerleme bildirmeyi durduran Codex app-server çalıştırmaları, etkin oturum hattının dış çalıştırma zaman aşımını beklemek yerine serbest bırakılabilmesi için Codex bağdaştırıcısı tarafından kesintiye uğratılır.
- Tanılama etkinleştirildiğinde yerleşik uyarı eşiğini geçecek kadar
processingdurumunda kalan ve gözlemlenmiş yanıt, araç, durum, blok veya ACP ilerlemesi bulunmayan oturumlar mevcut etkinliğe göre sınıflandırılır:- Yakın zamanda ilerleme kaydedilmiş etkin çalışma
session.long_runningolarak günlüğe kaydedilir. Sahibi olan sessiz model çağrıları da yavaş veya akışsız sağlayıcıların gereğinden erken takılmış olarak bildirilmemesi için yerleşik iptal eşiğine kadarsession.long_runningdurumunda kalır. - Yakın zamanda ilerleme kaydı bulunmayan etkin çalışma
session.stalledolarak günlüğe kaydedilir; sahibi olan model çağrıları, engellenmiş araç çağrıları ve takılmış gömülü çalıştırmalar iptal eşiğinde veya sonrasındasession.stalleddurumuna geçer. Sahipsiz ve eskimiş model/araç etkinliği uzun süredir devam ediyormuş gibi gizlenmez. session.stuck, sahipsiz ve eskimiş model/araç etkinliğine sahip boşta kuyruğa alınmış oturumlar dâhil olmak üzere kurtarılabilir eskimiş oturum kayıtları için ayrılmıştır.session.stuck, etkilenen oturum hattını serbest bırakabilen kurtarmayı her zaman tetikler. İptal eşiğini geçen birsession.stalledsınıflandırması (engellenmiş araç çağrısı, takılmış model çağrısı veya takılmış gömülü çalıştırma) da etkin iptal kurtarmasını tetikleyebilir; dolayısıyla yalnızcasession.stuckdeğil, her iki sınıflandırma da kuyruğun takılmasını giderebilir.- Yinelenen
session.stuckvesession.long_runninguyarı günlüğü satırları, oturum değişmeden kaldığı sürece üstel olarak seyrekleşir; kurtarma girişimleri bu seyrekleşmeden bağımsız olarak her Heartbeat döngüsünde çalışmaya devam eder.
- Yakın zamanda ilerleme kaydedilmiş etkin çalışma