refactor: 自适应 RPM 从边界记忆改为多次观察确认 + 置信度衰减

将自适应 RPM 限制算法从"单次 429 即设限"重构为基于置信度的学习机制:

- 收到 429 时仅记录观察(本地 RPM + 上游 header 限制值),不立即设限
- 有 header 的观察需 2 次一致确认,无 header 需 3 次一致确认
- confidence 随时间自然衰减,确保限制永远不会固化
- confidence 低于阈值时停止本地 RPM 限制,429 直接透传客户端
- 统一 get_effective_limit 入口,消除多处重复的限制获取逻辑
- Admin API 增加置信度、观察数量等诊断字段
This commit is contained in:
fawney19
2026-02-10 14:58:15 +08:00
parent fc1ad44346
commit 4276e7835c
6 changed files with 388 additions and 282 deletions
+16
View File
@@ -137,6 +137,22 @@ class RPMDefaults:
# 探测性扩容最小请求数 - 在探测间隔内至少需要这么多请求
PROBE_INCREASE_MIN_REQUESTS = 10
# === 置信度学习参数 ===
# 无 header 时,需要多少次一致的 429 观察才确认限制
MIN_CONSISTENT_OBSERVATIONS = 3
# 有 header 时,需要多少次一致的 header 观察才确认限制
MIN_HEADER_CONFIRMATIONS = 2
# 观察值之间的最大允许偏差比例(30% 以内视为一致)
OBSERVATION_CONSISTENCY_THRESHOLD = 0.3
# header 声明限制的安全边际(使用 95%)
HEADER_LIMIT_SAFETY_MARGIN = 0.95
# 纯观察限制的安全边际(使用 90%)
OBSERVATION_LIMIT_SAFETY_MARGIN = 0.90
# confidence 低于此阈值时不执行本地 RPM 限制(透传上游 429)
ENFORCEMENT_CONFIDENCE_THRESHOLD = 0.6
# confidence 自然衰减速率:每分钟衰减的比例
CONFIDENCE_DECAY_PER_MINUTE = 0.005 # 每分钟 -0.5%,约 200 分钟(~3.3h)从 1.0 衰减到 0
# 向后兼容别名
ConcurrencyDefaults = RPMDefaults