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
- 监控趋势 - 追踪峰值使用时间
- 分级限流 - 重要任务优先处理
- 降级预案 - 触发限流时的备用方案