OpenClaw 速率限制与流量控制

我怀疑速率限制是 API 商家设计的阴谋——就像奶茶店限量供应,越限你越想要。但当我在凌晨3点触发了 OpenAI 的 429 错误,才发现这玩意儿是真有用。

为什么需要速率限制?

API 不是自助餐厅。每个服务商都有自己的配额限制,超过限制就会触发 429 错误,甚至导致账户被暂停。OpenClaw 的速率限制机制帮你优雅地控制请求频率,保护你的配额。

速率限制算法

Token Bucket(令牌桶)

{
  "rateLimiting": {
    "algorithm": "tokenBucket",
    "config": {
      "bucketSize": 100,
      "refillRate": 10,
      "refillInterval": 1000
    }
  }
}

Sliding Window(滑动窗口)

{
  "rateLimiting": {
    "algorithm": "slidingWindow",
    "config": {
      "windowSize": 60000,
      "maxRequests": 100
    }
  }
}

Fixed Window(固定窗口)

{
  "rateLimiting": {
    "algorithm": "fixedWindow",
    "config": {
      "windowSize": 60000,
      "maxRequests": 100
    }
  }
}

按模型配置限制

{
  "rateLimiting": {
    "perModel": {
      "claude-sonnet-4": {
        "rpm": 100,
        "tpm": 40000
      },
      "gpt-4.1": {
        "rpm": 500,
        "tpm": 30000
      },
      "gemini-2.5-pro": {
        "rpm": 60,
        "tpm": 1000000
      }
    }
  }
}

自适应限流

{
  "rateLimiting": {
    "adaptive": {
      "enabled": true,
      "initialRate": 50,
      "minRate": 10,
      "maxRate": 200,
      "decreaseFactor": 0.5,
      "increaseFactor": 1.1,
      "on429": "exponential-backoff"
    }
  }
}

优先级队列

{
  "queue": {
    "enabled": true,
    "priorities": {
      "high": ["tool_call", "user_message"],
      "medium": ["scheduled_task"],
      "low": ["background_sync"]
    },
    "maxQueueSize": 1000
  }
}

监控与告警

// 监控速率限制状态
agent.on("rateLimit", (event) => {
  console.log(`Rate limit hit: ${event.model}`);
  console.log(`Wait time: ${event.waitTime}ms`);
  console.log(`Queue depth: ${event.queueDepth}`);
});

最佳实践

  • 留有余量 - 设置限制时预留 20% buffer
  • 监控趋势 - 追踪峰值使用时间
  • 分级限流 - 重要任务优先处理
  • 降级预案 - 触发限流时的备用方案

相关资源