ホーム チュートリアル カテゴリ Skills サイトについて
ZH EN JA KO
運用監視

OpenClawリクエスト頻度制限と不正利用防止の設定

· 9 分で読了

はじめに

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指標と組み合わせて、レート制限されたリクエスト数、ユーザー統計、キュー長、日次費用の進捗などを監視できます。

七、ベストプラクティス

  1. 緩やかから厳格へ:最初は緩やかな制限を設定し、実際の使用データに基づいて徐々に厳しくする
  2. フレンドリーな通知:レート制限時にユーザーに明確な通知メッセージを提供し、いつ再び利用できるか伝える
  3. 優先キュー:VIPユーザーや管理者のリクエストを優先処理
  4. 段階的戦略:グループチャットはDMより厳格なレート制限が必要
  5. 費用のセーフティネット:常に日次費用上限を設定し、予期しない高額請求を防止
  6. 定期的な調整:毎月レート制限統計を確認し、ユーザー増加に応じて制限を調整

合理的な頻度制限はユーザー体験を制限するものではなく、すべてのユーザーが公平で安定したサービスを受けられることを保証するものです。適切に設定されたレート制限戦略は、OpenClawの大規模運用の基盤です。

OpenClawは無料のオープンソースAIアシスタント。WhatsApp、Telegram、Discordなど多数のプラットフォームに対応