🚦 OpenClaw限流与节流教程

API额度像钱包里的钱——用完了就得等下个月,所以要学会精打细算

📖 功能介绍

凌晨3点27分,我看了一眼账单:OpenAI API花了847美元。我问自己:这些钱都花哪了?是不是有Agent偷偷加班了?是不是有请求被浪费了?

限流不是限制能力,而是限制浪费。它让API调用变得可控可预测,就像给Agent装了个"钱包管家"——每次花钱都要记账,每月预算不能超。这不是吝啬,这是成熟。

为什么需要限流?

原因 后果 限流的作用
API配额限制 超配额被拒绝服务 主动控制,避免被动限流
成本控制 月底账单超标 预算管理,成本可见
并发过载 系统崩溃 保护系统稳定性
用户公平 某些用户独占资源 资源公平分配

🚀 使用方法

1. 基础限流配置

🚦 请求速率限制

# OpenClaw 限流配置
rate_limiting:
  enabled: true
  
  # 全局限流
  global:
    requests_per_second: 100
    burst: 20  # 允许短时突发
    
  # 按用户限流
  per_user:
    requests_per_minute: 60
    requests_per_hour: 500
    requests_per_day: 2000
    
  # 按Agent限流
  per_agent:
    requests_per_minute: 30
    
  # 按模型限流(更贵的模型更严格)
  per_model:
    claude-opus-4:
      requests_per_minute: 10
    gpt-4o:
      requests_per_minute: 20
    gpt-4o-mini:
      requests_per_minute: 50

2. 限流算法选择

不同的算法适合不同的场景,选择合适的算法事半功倍。

令牌桶算法(Token Bucket)
┌──────────────────┐
│ 🔵🔵🔵🔵🔵 (5 tokens) │ → 每秒补充1个
└──────────────────┘
每次请求消耗1个,桶空则拒绝
# 令牌桶算法配置
algorithm:
  type: "token_bucket"
  
  # 桶容量
  bucket_size: 100
  
  # 补充速率
  refill_rate: 10  # 每秒补充10个
  
  # 突发允许
  burst_allowed: true
  max_burst: 50
漏桶算法(Leaky Bucket)
水滴 → ┌────┐ → 匀速流出
│ 🪣 │ → 每秒固定速率
└────┘
强制匀速,无突发
# 漏桶算法配置(适合需要稳定输出的场景)
algorithm:
  type: "leaky_bucket"
  bucket_size: 50
  drain_rate: 5  # 每秒处理5个请求

3. 成本配额管理

💰 成本控制配置

# 成本配额配置
quota:
  enabled: true
  
  # 每日预算
  daily_budget:
    amount: 50  # 美元
    hard_limit: true  # 超额直接拒绝
    soft_limit_warning: 40  # 40美元时告警
    
  # 每月预算  
  monthly_budget:
    amount: 1000
    hard_limit: true
    
  # 按模型分配
  model_allocation:
    claude-opus-4: 30%  # 高质量但贵
    gpt-4o: 40%
    gpt-4o-mini: 30%  # 简单任务用便宜模型
    
  # 超额处理
  overflow:
    action: "reject"  # reject/queue/fallback
    fallback_model: "gpt-4o-mini"  # 降级模型

4. 并发控制

# 并发限制配置
concurrency:
  enabled: true
  
  # 最大并发请求
  max_concurrent: 50
  
  # 按类型分配
  allocation:
    chat: 30
    search: 10
    analysis: 10
    
  # 排队策略
  queue:
    enabled: true
    max_size: 100
    timeout: 30s  # 排队超时
    
  # 优先级队列
  priority:
    levels:
      - name: "critical"
        weight: 3
      - name: "normal"
        weight: 2
      - name: "low"
        weight: 1

💡 最佳实践

🎯 限流设计原则:
  • 分级限流:全局→用户→Agent→模型,层层细化
  • 软硬结合:软限制告警,硬限制拒绝
  • 突发容忍:允许短暂突发,但要有上限
  • 降级备用:超限时有备用方案,别直接拒绝

限流响应处理

# 限流响应配置
response:
  # 被限流时的返回
  on_limit:
    status_code: 429
    message: "请求过于频繁,请稍后重试"
    
    # 告知用户何时可以重试
    headers:
      Retry-After: 60  # 60秒后重试
      X-RateLimit-Limit: 100
      X-RateLimit-Remaining: 0
      
  # 超额时的返回
  on_quota_exceeded:
    status_code: 402
    message: "API配额已用尽"
    fallback: "gpt-4o-mini"  # 自动降级
❌ 绝对不要做的事:
  • 不要把硬限制设得太高,否则等于没设
  • 不要没有降级方案,直接拒绝用户体验很差
  • 不要忽略API厂商的限流,他们的限制比你更硬
  • 不要让用户等待太久,排队超时要有上限

🔧 完整配置示例

# OpenClaw 限流完整配置
rate_control:
  # 速率限制
  rate_limiting:
    enabled: true
    algorithm: "token_bucket"
    global:
      rps: 100
      burst: 30
    per_user:
      rpm: 60
      rph: 500
      rpd: 2000
      
  # 并发限制
  concurrency:
    enabled: true
    max_concurrent: 50
    queue:
      enabled: true
      max_size: 100
      timeout: 30s
      
  # 成本配额
  quota:
    enabled: true
    daily_budget: 50
    monthly_budget: 1000
    model_allocation:
      claude-opus-4: 30%
      gpt-4o: 40%
      gpt-4o-mini: 30%
    overflow:
      action: "fallback"
      fallback_model: "gpt-4o-mini"
      
  # 监控和告警
  monitoring:
    enabled: true
    metrics:
      - rate_limit_rejections
      - quota_usage
      - queue_length
    alerts:
      - condition: "quota_usage > 80%"
        severity: "warning"
      - condition: "quota_usage > 95%"
        severity: "critical"

🔗 相关链接