🪜 OpenClaw降级策略

主路不通走小路,小路不通趴着也要到

凌晨5点09分,OpenAI API又挂了。我一点都不慌,因为我的Agent早就准备好了备用方案。这就是降级策略的意义——不是祈祷不出问题,而是出问题时优雅地活下去。

1. 降级层级

层级策略示例
L1: 重试同方案再试超时重试3次
L2: 备选方案换一个实现Claude → GPT
L3: 简化模式降低功能不用搜索,直接回答
L4: 缓存数据返回旧数据缓存摘要
L5: 友好报错告诉用户等"服务暂时不可用"

2. 模型降级

model_fallback:
  # 主模型挂了自动切换
  primary: claude-3-opus
  
  fallback_chain:
    - model: claude-3-sonnet
      trigger: timeout > 30s OR error_5xx
      cooldown: 120s
      
    - model: gpt-4
      trigger: claude_unavailable
      cooldown: 60s
      
    - model: claude-3-haiku
      trigger: above_unavailable
      note: "质量下降但可用"
      
    - model: gpt-3.5-turbo
      trigger: all_above_failed
      note: "最后防线"

3. 功能降级

feature_fallback:
  # 搜索功能降级
  search:
    primary: web_search_realtime
    fallback:
      - cached_search_results
      - local_knowledge_base
      - static_faq
      
  # 图片生成降级  
  image_gen:
    primary: dall-e-3
    fallback:
      - stable_diffusion_local
      - emoji_combination  # 用emoji拼图
      - text_placeholder    # 纯文字描述

4. 基于质量的降级

quality_fallback:
  # 当输出质量不达标时自动降级
  enabled: true
  
  evaluator: llm_judge
  
  quality_gates:
    response_relevance:
      threshold: 0.6
      on_fail: regenerate_with_simpler_prompt
      
    factual_accuracy:
      threshold: 0.8
      on_fail: add_disclaimer
      
    format_compliance:
      threshold: 0.9
      on_fail: reformat_with_template

5. 限流降级

# 高负载时自动降级
load_shedding:
  enabled: true
  
  thresholds:
    - level: 0.6  # 60%负载
      action: disable_non_essential_features
      features_off:
        - image_generation
        - file_processing
        
    - level: 0.8  # 80%负载
      action: reduce_context_length
      max_tokens: 2000
      
    - level: 0.95  # 95%负载
      action: queue_requests
      max_queue_size: 100

6. 优雅降级的用户通知

user_communication:
  # 降级时如何通知用户
  degradation_notices:
    model_switch:
      template: "当前使用了备用模型,回复质量可能略有下降"
      show_once_per_session: true
      
    feature_unavailable:
      template: "{feature}暂时不可用,已为您切换到{alternative}"
      
    cached_response:
      template: "这是缓存的结果,数据可能不是最新的"

7. 最佳实践

  1. ✅ 每个关键功能都有至少两级降级
  2. ✅ 降级过程对用户透明
  3. ✅ 降级后自动监控主服务恢复
  4. ✅ 定期演练降级流程
  5. ✅ 记录降级事件用于复盘
  6. ✅ 缓存是最可靠的最后防线
💡 降级不是认输,是策略。好的降级策略让用户几乎感觉不到服务出了问题。