CellSpec 配额声明(CellQuotas)
wesgine 通过 CellSpec.Quotas 声明每个 Cell 的资源使用上限。
配额维度
计算配额
| 字段 | 说明 | 超限行为 |
|---|---|---|
MaxConcurrentRuns | 同时运行的 Run 数 | 429 Too Many Requests |
TokensPerMinute | 每分钟 token 消耗上限 | 429 + Retry-After |
TokensPerDay | 每天 token 消耗上限 | 429 + 次日重置 |
存储配额
| 字段 | 说明 | 超限行为 |
|---|---|---|
MemoryMaxEntries | 记忆条目总数上限 | GC 触发 → 淘汰低分条目 |
KnowledgeMaxFiles | 知识库文件数上限 | 拒绝新文件上传 |
WorkspaceMaxBytes | workspace 总大小上限 | 拒绝新写入 |
外设配额
| 字段 | 说明 | 超限行为 |
|---|---|---|
MaxIMChannels | IM 渠道数上限 | 拒绝注册新渠道 |
MaxMCPServers | MCP Server 数上限 | 拒绝注册新 MCP |
MaxCronJobs | 定时任务数上限 | 拒绝添加新任务 |
MaxEmailAccounts | 邮箱账号数上限 | 拒绝添加新账号 |
MaxSkillsInstalled | 已安装 Skill 数上限 | 拒绝安装新 Skill |
MaxPlugins | Plugin 数上限 | 启动时截断 |
Exec 配额
| 字段 | 说明 |
|---|---|
ExecTimeoutSeconds | 前台 exec 超时 |
ExecMaxOutputBytes | exec 输出最大字节数 |
外设配额判定点(INV-QUOTA-05)
外设配额在唯一增长点判定,且与增长操作同临界区:
- 适配器不知道 cap 数值,只通过
QuotaFn(current, delta) error提问 - 每个子系统恰好一处能让集合变大
- 该处持有写锁跨越"问"和"长"
- 覆盖已有名字时
delta=0(upsert 是编辑,不消耗配额) current从权威处读取,不从缓存
运行时修改
配额可通过 SpecPatch 热更新:
PATCH /admin/cells/{id}
{
"quotas": {
"max_concurrent_runs": 5,
"memory_max_entries": 10000
}
}
也可通过 Cell Handle API:
GET /cells/{id}/quotas // 查询当前配额
PATCH /cells/{id}/quotas // 更新配额
相关文档
- Cell 配额系统 →
cell-quotas.md - 外设配额写入点 →
quota-writepoint.md - 记忆 GC 与配额联动 →
memory-gc-quota.md