conversation: separate retry and loop budgets

This commit is contained in:
2026-08-05 12:41:13 +08:00
parent d140ba4fad
commit 1aa6939893
4 changed files with 88 additions and 27 deletions
+4 -3
View File
@@ -206,8 +206,8 @@ historyMessageLimit: 20
logPrompt: false
# 达到需要合并转发消息的阈值
messageMergeThreshold: 150
# 最大循环数,至少2
retryMax: 5
# 单次对话正常调用模型的最大循环数,至少2轮;失败重试不占用此轮数
retryMax: 10
# 关键字呼叫,支持正则表达式
callKeyword: '[小筱][林淋月玥]'
# 是否显示工具调用消息,默认是
@@ -457,7 +457,8 @@ fallbackCooldownMinutes: 5
### 工作机制
- 主接入点为列表首位,备用接入点按配置顺序排在其后。
- **单次对话内**某接入点流式调用失败时,经短暂指数退避后切换到下一个接入点重试,而非反复重试同一个故障点
- **单轮调用内**配置备用接入点时,每个接入点最多尝试一次,全部失败后立即结束;未配置备用接入点时,主接入点失败后只重试一次。每次重试前都会进行带抖动的指数退避
- **正常对话循环**:只有成功完成的模型调用才计入 `retryMax`,失败尝试不消耗正常循环轮数;默认最多 10 轮。
- **跨对话冷却**:失败的接入点进入冷却期(`fallbackCooldownMinutes` 分钟),冷却期内会被排到重试队尾。这样主接入点 key 到期后,后续消息会直接走健康的备用接入点,不必每条都先卡一次超时。调用成功或冷却到期后自动恢复。
- 仅在**LLM 调用本身失败**时才切换接入点,后续工具执行异常不会误判正常接入点为故障。
- 备用接入点切换只作用于聊天模型;推理模型和视觉模型仍使用各自接入点,其中视觉模型自身的失败重试也使用统一退避。