租用远程 Mac跑 OpenClaw 且多项目技能包共网关时,单技能易把模型或工具 HTTP 打到账单失控。本文给出多租户预算、令牌、熔断、审计在网关与最小权限下的可复现顺序:计数维度表、环境模板、熔断矩阵、CI 协同与超限 FAQ。部署见 Docker 加固,沙箱见 出站白名单。
三类典型痛点:
- 计数键混乱 — 团队密钥与技能包共用一把 API Key,超限后无法判断是哪一个项目在烧额度。
- 租用面缺「计费护栏」 — 机器能 7×24 在线,但网关若不做硬顶,等于把信用卡交给代理循环。
- CI 与人工会话争桶 — 夜间批跑重试风暴与白天对话共用租户桶,尖峰误伤交互式任务,且难以从账单反推责任项目。
预算模型与计数维度
鉴权后、转发前写入 tenant_id、project_id 与网关注入的技能标签(勿信客户端自报)。计数用滑动 RPS 加日 token 或内部点数硬顶;Redis 或网关存储按复合键分片,避免热点键拖垮整租户。
| 方案 | 适合 | 风险 |
|---|---|---|
| 网关统一计数 + 令牌最小权限 | 多技能、多项目、需审计 | 需维护头部约定与 Redis 高可用 |
| 直连模型供应商限流 | 单项目、简单 PoC | 技能工具链绕开供应商 SDK 时失控 |
可引用阈值:CI 与交互式分桶;先限 RPS 再放开日 token,防长上下文单发打穿。
配置文件与环境变量模板
写入 Compose 或机密管理;变更导出脱敏快照进工单。
BUDGET_STORE_URL=redis://127.0.0.1:6379/1
TENANT_ID_HEADER=X-Tenant-Id
PROJECT_ID_HEADER=X-Project-Id
SKILL_PACK_HEADER=X-Skill-Pack-Id
RATE_LIMIT_WINDOW_SECONDS=60
RATE_LIMIT_RPS_PER_PROJECT=24
TOKEN_DAILY_CAP_PER_TENANT=2000000
CONCURRENT_SLOTS_PER_PROJECT=4
CIRCUIT_ERROR_RATIO_OPEN=0.45
CIRCUIT_MIN_SAMPLES=25
CIRCUIT_COOL_DOWN_SECONDS=90
CIRCUIT_HALF_OPEN_MAX_CALLS=5
AUDIT_REDACT_HEADERS=authorization,x-api-key
AUDIT_INCLUDE_LIMITER_REASON=true
落地:① 存储探活 ② 灰度扣量 ③ 开审计 ④ 压测 429 ⑤ 半开演练。
熔断与降级策略表
限流管公平,熔断管故障风暴;降级须可观测,并返回明确错误码便于编排器退避。
| 状态 | 进入条件(示例) | 网关行为 | 推荐降级 |
|---|---|---|---|
| 关闭 | 错误率低于阈值 | 正常转发 | 无 |
| 打开 | 窗口内 5xx/超时占比过高 | 503 + Retry-After | 队列或轻模型 |
| 半开 | 冷却结束 | 放行探针若干次 | 缩小上下文再试 |
与 CI 调用频率协同
CI 独立桶与幂等 job id,防重试风暴重复扣日帽;夜跑前预读配额不足则 fail-fast。本机推理回环不占外网预算但仍要限并发,见 Ollama 批推理。
常见超限 FAQ
429 而上游绿? 查 limiter_reason 与租户/项目键。
A 拖慢 B? 拆 project_id 或子密钥。
熔断一键复位? 先排因再半开;复位写审计。
全文 prompt? 共享机默认哈希与长度;全文仅自有 SIEM 且合规时。