Skip to content

feat: per-channel debounce/cap/drop queue options (mode already supported) #55858

@cwil2072

Description

@cwil2072

Feature Request

Different chat interfaces have fundamentally different input patterns, making a single global queue config a poor fit for all channels simultaneously.

Problem

Currently queue settings (mode, debounce, cap, drop) are global. This means you're always picking the least-bad tradeoff across all channels at once.

Channel differences:

  • Telegram/mobile: Users type in bursts (3-4 short messages instead of one long one). Needs higher debounce (2-3s) + collect to batch thoughts together.
  • TUI: Deliberate input, user can see the agent working in real time. Lower debounce (500ms) preferred. steer or interrupt are viable.
  • Slack: Mix of quick reactions and longer thoughts. Medium debounce (1-2s) + collect or followup.

Proposed Solution

Allow queue settings to be overridden per-channel in config, falling back to global defaults. Example config shape:

agent:
  queue:
    mode: collect
    debounceMs: 1000
    cap: 20
    drop: summarize
    channels:
      telegram:
        debounceMs: 2000
      webchat:
        debounceMs: 500
        mode: steer
      slack:
        debounceMs: 1500
        mode: followup

Expected Behavior

Each channel uses its own queue settings where specified, falling back to global defaults for unspecified channels/settings.

Environment

  • macOS Darwin 25.3.0 arm64
  • OpenClaw 2026.3.13

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Normal backlog priority with limited blast radius.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.staleMarked as stale due to inactivity

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions