Komut Kuyruğu (2026-01-16)¶
Gelen otomatik yanıt çalıştırmalarını (tüm kanallar) küçük, süreç içi bir kuyruk üzerinden seri hale getiririz; böylece birden fazla ajan çalıştırmasının çakışmasını önlerken, oturumlar arasında güvenli paralelliğe izin veririz.
Neden¶
- Otomatik yanıt çalıştırmaları pahalı olabilir (LLM çağrıları) ve birden fazla gelen mesaj kısa aralıklarla geldiğinde çakışabilir.
- Seri hale getirme, paylaşılan kaynaklar (oturum dosyaları, günlükler, CLI stdin) için rekabeti önler ve üst akış hız sınırlarına takılma olasılığını azaltır.
Nasıl çalışır¶
- Şerit (lane) farkındalıklı bir FIFO kuyruk, her şeridi yapılandırılabilir bir eşzamanlılık üst sınırıyla boşaltır (yapılandırılmamış şeritler için varsayılan 1; main varsayılan 4, subagent 8).
runEmbeddedPiAgent, oturum anahtarına göre (şeritsession:<key>) kuyruğa alır; böylece oturum başına yalnızca bir etkin çalıştırma garanti edilir.- Her oturum çalıştırması daha sonra küresel bir şerite (varsayılan olarak
main) alınır; böylece genel paralellikagents.defaults.maxConcurrentile sınırlandırılır. - Ayrıntılı günlükleme etkinleştirildiğinde, kuyruğa alınan çalıştırmalar başlatılmadan önce ~2 sn’den fazla bekledilerse kısa bir bildirim üretir.
- Yazma göstergeleri (kanal destekliyorsa) kuyruğa alma anında tetiklenmeye devam eder; bu sayede sıramızı beklerken kullanıcı deneyimi değişmez.
Kuyruk modları (kanal başına)¶
Gelen mesajlar, mevcut çalıştırmayı yönlendirebilir, bir takip turunu bekleyebilir veya her ikisini de yapabilir:
steer: mevcut çalıştırmaya hemen enjekte eder (bir sonraki araç sınırından sonra bekleyen araç çağrılarını iptal eder). Akış yoksa takip turuna geri düşer.followup: mevcut çalıştırma bittikten sonra bir sonraki ajan turu için kuyruğa alır.collect: kuyruğa alınmış tüm mesajları tek bir takip turunda birleştirir (varsayılan). Mesajlar farklı kanalları/iş parçacıklarını hedefliyorsa, yönlendirmeyi korumak için ayrı ayrı boşaltılır.steer-backlog(diğer adıylasteer+backlog): şimdi yönlendirir ve mesajı bir takip turu için korur.interrupt(eski): o oturum için etkin çalıştırmayı iptal eder, ardından en yeni mesajı çalıştırır.queue(eski takma ad):steerile aynıdır.
Steer-backlog, yönlendirilmiş çalıştırmadan sonra bir takip yanıtı alabileceğiniz anlamına gelir; bu nedenle
akış yüzeylerinde yinelenmiş gibi görünebilir. Gelen mesaj başına tek yanıt istiyorsanız
collect/steer’ü tercih edin.
/queue collect’i bağımsız bir komut olarak (oturum başına) gönderin veya messages.queue.byChannel.discord: "collect"’yı ayarlayın.
Varsayılanlar (yapılandırmada ayarlanmadığında):
- Tüm yüzeyler →
collect
messages.queue üzerinden genel olarak veya kanal başına yapılandırın:
{
messages: {
queue: {
mode: "collect",
debounceMs: 1000,
cap: 20,
drop: "summarize",
byChannel: { discord: "collect" },
},
},
}
Kuyruk seçenekleri¶
Seçenekler followup, collect ve steer-backlog için geçerlidir (ve takip turuna geri düştüğünde steer için):
debounceMs: bir takip turu başlatmadan önce sakinleşmeyi bekler (“devam et, devam et”i önler).cap: oturum başına en fazla kuyruğa alınan mesaj sayısı.drop: taşma politikası (old,new,summarize).
Summarize, düşürülen mesajların kısa bir madde işaretli listesini tutar ve bunu sentetik bir takip istemi olarak enjekte eder.
Varsayılanlar: debounceMs: 1000, cap: 20, drop: summarize.
Oturum bazlı geçersiz kılmalar¶
- Mevcut oturum için modu saklamak üzere
/queue <mode>’yi bağımsız bir komut olarak gönderin. - Seçenekler birleştirilebilir:
/queue collect debounce:2s cap:25 drop:summarize /queue defaultveya/queue resetoturum geçersiz kılmasını temizler.
Kapsam ve garantiler¶
- Gateway yanıt hattını kullanan tüm gelen kanallarda otomatik yanıt ajan çalıştırmalarına uygulanır (WhatsApp web, Telegram, Slack, Discord, Signal, iMessage, webchat vb.).
- Varsayılan şerit (
main), gelen + ana heartbeat’ler için süreç genelidir; birden fazla oturumun paralel çalışmasına izin vermek içinagents.defaults.maxConcurrent’yi ayarlayın. - Arka plan işlerinin gelen yanıtları engellemeden paralel çalışabilmesi için ek şeritler bulunabilir (ör.
cron,subagent). - Oturum başına şeritler, belirli bir oturuma aynı anda yalnızca bir ajan çalıştırmasının dokunmasını garanti eder.
- Harici bağımlılık veya arka plan worker iş parçacıkları yoktur; saf TypeScript + promise’ler.
Sorun Giderme¶
- Komutlar takılı gibi görünüyorsa, ayrıntılı günlükleri etkinleştirin ve kuyruğun boşaldığını doğrulamak için “queued for …ms” satırlarını arayın.
- Kuyruk derinliğine ihtiyaç duyuyorsanız, ayrıntılı günlükleri etkinleştirin ve kuyruk zamanlama satırlarını izleyin.