跳到內容

斷路器與故障轉移

Claudex 為每個提供商 profile 內建斷路器,在偵測到故障時自動轉移到備用提供商。

success
┌──────────────┐
│ │
▼ failure │
Closed ────────► Open
▲ │
│ timeout │
│ expired ▼
└─────────── HalfOpen
failure → back to Open
狀態行為
Closed正常運作。請求通過。計算失敗次數。
Open請求被封鎖。觸發故障轉移到備用提供商。
HalfOpen復原逾時後,允許一個探測請求通過。成功則回到 Closed;失敗則回到 Open。
參數
失敗閾值連續 3 次失敗
復原逾時30 秒

在你的 profile 中定義備用提供商以啟用自動故障轉移:

[[profiles]]
name = "grok"
provider_type = "OpenAICompatible"
base_url = "https://api.x.ai/v1"
api_key = "xai-..."
default_model = "grok-3-beta"
backup_providers = ["deepseek", "chatgpt"] # 故障轉移鏈

grok 連續失敗 3 次時:

  1. grok 的斷路器開啟
  2. 請求改用 deepseek 重試
  3. deepseek 也失敗,改試 chatgpt
  4. 每個備用提供商都有自己獨立的斷路器

OAuth profile 的 HTTP 401 回應會有特殊處理:

  1. 代理使當前 OAuth token 失效
  2. 嘗試從憑證鏈重新載入新 token
  3. 使用新 token 重試請求
  4. 只有在重試也失敗時才計為斷路器失敗

這可防止暫時性 token 過期觸發不必要的故障轉移。

背景健康檢查器每約 30 秒運行一次,向所有已啟用的 profile 發送輕量探測請求。健康狀態在 TUI 儀表板中以顏色標示:

  • 綠色:正常
  • 黃色:降級(最近有失敗)
  • 紅色:斷路器開啟