feat: 自适应 RPM 未学习时不限制,改为碰壁学习策略

- 移除自适应模式的默认初始限制(RPMDefaults.INITIAL_LIMIT)
- 未学习到边界前不限制 RPM,让系统自由运行直到遇到 429
- 前端自适应 Key 显示学习到的值或"探测中"状态
- 批量余额查询改为并行执行,提升性能
This commit is contained in:
fawney19
2026-01-17 23:44:53 +08:00
parent f002f8de03
commit b98fc8497f
8 changed files with 38 additions and 25 deletions

View File

@@ -156,8 +156,8 @@ export interface EndpointAPIKey {
updated_at: string
// 自适应 RPM 字段
is_adaptive?: boolean // 是否为自适应模式rpm_limit=NULL
effective_limit?: number // 当前有效 RPM 限制(自适应使用学习值,固定使用配置值)
learned_rpm_limit?: number // 学习到的 RPM 限制
effective_limit?: number | null // 当前有效 RPM 限制(自适应使用学习值,固定使用配置值,未学习时为 null
learned_rpm_limit?: number | null // 学习到的 RPM 限制
// 滑动窗口利用率采样
utilization_samples?: Array<{ ts: number; util: number }> // 利用率采样窗口
last_probe_increase_at?: string // 上次探测性扩容时间

View File

@@ -323,7 +323,11 @@
<!-- RPM 限制信息第二位 -->
<template v-if="key.rpm_limit || key.is_adaptive">
<span class="text-muted-foreground/40">|</span>
<span>{{ key.is_adaptive ? '自适应' : key.rpm_limit }} RPM</span>
<span v-if="key.is_adaptive">
{{ key.learned_rpm_limit != null ? `${key.learned_rpm_limit}` : '探测中' }} RPM
<span class="text-muted-foreground/60">(自适应)</span>
</span>
<span v-else>{{ key.rpm_limit }} RPM</span>
</template>
<span class="text-muted-foreground/40">|</span>
<!-- API 格式展开显示每个格式倍率熔断状态 -->