CellSpec Inbox 容量配置

wesgine 的 CellSpec.InboxCap 控制 Cell 内部消息收件箱的容量上限。


设计目的

Cell 的 Inbox 是接收外部事件的入口:

当 Inbox 满时,新消息被拒绝(背压),防止 Cell 被消息洪流压垮。


配置方式

CellSpec{
    InboxCap: 100,  // 最大容纳 100 条待处理消息
}

Inbox 工作机制

外部事件 → Inbox(有界队列)→ Supervisor 分发 → 处理器

消息入队

  1. 外部事件到达(IM / Email / Webhook / Cron / API)
  2. 检查 Inbox 容量
  3. 未满 → 入队
  4. 已满 → 拒绝(返回 429 或丢弃,取决于来源)

消息出队

Supervisor goroutine 从 Inbox 取出消息并分发:


背压行为

来源Inbox 满时行为
HTTP API 请求429 Too Many Requests
IM 渠道消息消息丢弃 + 日志警告
Webhook 回调502 + 期望调用方重试
Cron 触发跳过本次执行 + 记录

容量选择建议

场景推荐 InboxCap
个人桌面(单用户)50-100
团队部署(多用户)200-500
高流量 IM 渠道500-1000

与其他配额的关系

配额控制目标
InboxCap待处理消息队列深度
MaxConcurrentRuns同时执行的 Run 数量
TokensPerMinuteLLM token 消耗速率

三者正交,各自独立限制。


监控

Inbox 当前深度可通过 Cell 状态观测:

GET /cells/{id}/state

响应中包含 Inbox 当前使用量和容量。


运行时修改

PATCH /admin/cells/{id}
{
  "inbox_cap": 200
}

修改后立即生效,无需重启 Cell。


相关文档