// dokumentacja openclaw

Kolejka poleceń w OpenClaw — serializacja i współbieżność

Przegląd

System kolejki poleceń (Command Queue) serializuje przychodzące uruchomienia auto-reply ze wszystkich kanałów poprzez kolejkę procesową. Zapobiega to kolizjom, jednocześnie umożliwiając bezpieczną współbieżność między sesjami.

Cel kolejki

  • Zapobiega rywalizacji wielu uruchomień agenta o wspólne zasoby, gdy wiadomości docierają jednocześnie
  • Redukuje kolizje wywołań LLM i problemy z rate-limitingiem upstreamowym
  • Utrzymuje responsywność UX dzięki natychmiastowym wskaźnikom pisania

Mechanizm

Kolejka FIFO ze świadomością pasów (lane-aware) zarządza współbieżnym wykonaniem:

  • Pasy sesji — gwarantują jedno aktywne uruchomienie per sesja (format session:<key>)
  • Pasy globalne — ograniczają ogólną współbieżność (domyślnie 4 równoległe dla głównego pasa, 8 dla subagentów)
  • Logowanie szczegółowe — pokazuje czasy oczekiwania w kolejce przekraczające ok. 2 sekundy

Tryby kolejki (per kanał)

  • steer — wstrzyknij natychmiast; anuluj oczekujące wywołania narzędzi
  • followup — zakolejkuj do następnej tury po bieżącym uruchomieniu
  • collect — scal kolejkowane wiadomości w jeden followup (domyślne)
  • steer-backlog — steruj teraz I zachowaj do followupu
  • interrupt — przerwij aktywne uruchomienie; wykonaj najnowszą wiadomość

Konfiguracja

{
  "messages": {
    "queue": {
      "mode": "collect",
      "debounceMs": 1000,
      "cap": 20,
      "drop": "summarize",
      "byChannel": { "discord": "collect" }
    }
  }
}

Kluczowe parametry:

  • debounceMs — opóźnienie przed rozpoczęciem followupu (zapobiega szybkim łańcuchom „kontynuuj")
  • cap — maksymalna liczba wiadomości w kolejce per sesja (domyślnie 20)
  • drop — polityka przepełnienia: summarize tworzy podsumowanie porzuconych wiadomości

Nadpisania per sesja

Składnia polecenia: /queue <mode> [opcje]

/queue collect debounce:2s cap:25 drop:summarize
/queue default   # wyczyść nadpisanie

Zakres i gwarancje

  • Dotyczy uruchomień auto-reply na: WhatsApp, Telegram, Slack, Discord, Signal, iMessage, WebChat
  • Zero zależności zewnętrznych — czysta implementacja TypeScript
  • Pasy per-sesja zapewniają izolację; dodatkowe pasy (cron, subagent) umożliwiają współbieżność zadań w tle