扩展层队列¶
各渠道独立实现的并发控制队列,不依赖核心队列。
Discord¶
源文件:
extensions/discord/src/internal/event-queue.ts
class DiscordEventQueue {
// maxQueueSize=10000, maxConcurrency=50
// listenerTimeout=120s(超时不抛,只记 timeoutCount)
// slowListenerThreshold=30s(超时打 warn)
enqueue({ eventType, listenerName, run }): Promise<void>
}
- 满队直接
droppedCount++并 reject,不 block 调用方 - 并发 50,超时 120s
QQ Bot¶
源文件:
extensions/qqbot/src/engine/gateway/message-queue.ts
- per-peer 队列:DM/guild/group 各自独立
- 消息合并:group peer 支持 burst 期间多条普通消息合并为一次 turn
- bot 消息优先驱逐:group 满队时优先丢弃 bot 消息
- 容量:全局上限 1000 条,per-peer 20条(group 50条),最大并发 10 个 peer
飞书¶
源文件:
extensions/feishu/src/sequential-queue.ts
通用 KeyedAsyncQueue¶
源文件:
src/plugin-sdk/keyed-async-queue.ts
// 每个 key 维护一个 promise 链(tail)
// 新任务追加在当前 tail 之后,保证同 key 任务串行
class KeyedAsyncQueue {
private tails = new Map<string, Promise<void>>();
enqueue<T>(key, task, hooks?): Promise<T>;
}
被 SessionActorQueue(src/acp/control-plane/session-actor-queue.ts)使用,额外维护 pendingBySession 计数。