はじめに
OpenClaw インスタンスが複数のチャンネルに接続され、複数のユーザーにサービスを提供している場合、アクティブなユーザーが短時間で大量のメッセージを送信し、APIクォータが枯渇したり応答遅延が増加して、他のユーザーの体験に影響を与える可能性があります。本記事では、OpenClawの頻度制限と不正利用防止メカニズムの設定方法を詳しく解説し、リソースの公平な配分を確保します。
一、なぜ頻度制限が必要か
1.1 よくある問題シナリオ
- 単一ユーザーの連続送信:あるユーザーが数十件のメッセージを連続で高速に送信し、リクエストキューを占有
- グループメッセージの洪水:活発なグループで各メッセージがAI返信をトリガーし、短時間で大量のAPI呼び出しが発生
- 悪意ある不正利用:公開Botが悪意を持って頻繁に呼び出される
- APIクォータの保護:AIプロバイダーのRPM(1分あたりリクエスト数)制限の超過を防止
1.2 制限しない場合の影響
| 影響 | 説明 |
|---|---|
| API費用の暴走 | 1日で数百ドルの費用が発生する可能性 |
| 他のユーザーが利用不能 | リクエストキューが埋まり、通常のユーザーが返信を得られない |
| 上流のレート制限をトリガー | Claude/OpenAIのAPIレート制限に引っかかり、全リクエストが遅延 |
| サービスのクラッシュ | メモリとCPUリソースの枯渇 |
二、グローバル頻度制限
2.1 基本設定
// ~/.config/openclaw/openclaw.json5
{
"rateLimit": {
"enabled": true,
// グローバル制限:1分あたりの最大処理メッセージ数
"global": {
"maxRequests": 60,
"window": "1m"
}
}
}
2.2 モデルAPI呼び出し制限
APIプランに応じて上流の制限を設定します。
{
"rateLimit": {
"model": {
"rpm": 50,
"tpm": 100000,
"dailyLimit": 2000,
"dailyCostLimit": 10.00,
"onLimitReached": "queue" // "queue"=キュー待ち, "reject"=直接拒否
}
}
}
制限に達した場合、OpenClawはユーザーにプロンプトメッセージを送信します。
三、ユーザー別レート制限
3.1 ユーザーレベルの制限設定
{
"rateLimit": {
"perUser": {
"maxRequests": 10,
"window": "1m",
"maxRequestsPerHour": 100,
"dailyTokenLimit": 50000,
"cooldown": "30s"
}
}
}
3.2 VIPユーザーの免除
重要なユーザーや管理者には、より高い制限やレート制限の免除を設定できます。
{
"rateLimit": {
"whitelist": [
"+8113800138000",
"telegram:123456789",
"discord:987654321"
],
"customLimits": {
"telegram:123456789": {
"maxRequests": 30,
"window": "1m",
"dailyTokenLimit": 200000
}
}
}
}
3.3 ユーザーグループ管理
大量のユーザーに対して、グループごとにクォータを設定できます。
{
"rateLimit": {
"groups": {
"free": { "maxRequests": 5, "window": "1m", "dailyTokenLimit": 10000 },
"premium": { "maxRequests": 20, "window": "1m", "dailyTokenLimit": 100000 },
"admin": { "maxRequests": 60, "window": "1m", "dailyTokenLimit": 0 }
},
"defaultGroup": "free"
}
}
四、チャンネル別レート制限
異なるチャンネルには異なる使用パターンと優先度があります。
{
"rateLimit": {
"perChannel": {
"telegram": { "maxRequests": 30, "window": "1m" },
"discord": { "maxRequests": 20, "window": "1m" },
"whatsapp": { "maxRequests": 25, "window": "1m" }
}
}
}
グループチャットのメッセージ量は通常DMよりはるかに多いため、特別な戦略が必要です。mentionOnlyモードの有効化、応答確率の設定、連続メッセージのバッチ処理ウィンドウなどで制御できます。
五、不正利用防止メカニズム
5.1 メッセージ内容のフィルタリング
最大メッセージ長の制限、重複メッセージの拒否、キーワードブラックリストなどを設定できます。
5.2 一時的なBAN機制
ユーザーが継続的にレート制限ルールをトリガーした場合、自動的に一時BANを実行します。
# 現在のBANリストを表示
openclaw ban list
# 手動でユーザーをBAN
openclaw ban add "telegram:123456" --duration 24h --reason "不正利用"
# BANを解除
openclaw ban remove "telegram:123456"
六、レート制限状態の監視
openclaw stats --rate-limit
Prometheus指標と組み合わせて、レート制限されたリクエスト数、ユーザー統計、キュー長、日次費用の進捗などを監視できます。
七、ベストプラクティス
- 緩やかから厳格へ:最初は緩やかな制限を設定し、実際の使用データに基づいて徐々に厳しくする
- フレンドリーな通知:レート制限時にユーザーに明確な通知メッセージを提供し、いつ再び利用できるか伝える
- 優先キュー:VIPユーザーや管理者のリクエストを優先処理
- 段階的戦略:グループチャットはDMより厳格なレート制限が必要
- 費用のセーフティネット:常に日次費用上限を設定し、予期しない高額請求を防止
- 定期的な調整:毎月レート制限統計を確認し、ユーザー増加に応じて制限を調整
合理的な頻度制限はユーザー体験を制限するものではなく、すべてのユーザーが公平で安定したサービスを受けられることを保証するものです。適切に設定されたレート制限戦略は、OpenClawの大規模運用の基盤です。