背景
流内重试(withStreamRetry)目前由全局常量 DEFAULT_STREAM_RETRY_MAX_ATTEMPTS 统一决定,用户无法按供应商调整。不同中转/官方端点的稳定性差异很大:不稳定的中转可能需要更多重试,而本地代理失败通常是永久性的,重试只会拖慢 failover。
目标
把流式重试策略的归属权反转到供应商配置(DSH 风格 per-provider retry policy,stack 第 3 层):
CustomProvider.retryPolicy?:off | custom(maxRetries 1..10,不含首次请求);未配置 = default,行为与现状严格等价
- 旧配置零迁移:非法/缺省一律落 default 且不落字段
- 运行时经
ProviderRuntimeConfig 唯一构造点透传,resolveStreamRetryConfig 解析为 withStreamRetry 选项;failover 逐候选使用各自供应商的策略
streamRetry.ts 重试机制本体与协议适配器零改动
- 设置 UI(GUI 与 WebUI 镜像同源)提供 默认/关闭/自定义次数 三态控件
验收标准
- 未配置任何 retryPolicy 时行为与 main 逐字节等价(golden + 既有 stream-retry 套件零修改通过)
- 自定义 n 次时重试提示显示 (1/n)..(n/n),共 n+1 次请求
- 关闭时连接失败直接报错(不影响跨供应商 failover)
- 配置持久化且 default 态不落字段
背景
流内重试(
withStreamRetry)目前由全局常量DEFAULT_STREAM_RETRY_MAX_ATTEMPTS统一决定,用户无法按供应商调整。不同中转/官方端点的稳定性差异很大:不稳定的中转可能需要更多重试,而本地代理失败通常是永久性的,重试只会拖慢 failover。目标
把流式重试策略的归属权反转到供应商配置(DSH 风格 per-provider retry policy,stack 第 3 层):
CustomProvider.retryPolicy?:off|custom(maxRetries1..10,不含首次请求);未配置 = default,行为与现状严格等价ProviderRuntimeConfig唯一构造点透传,resolveStreamRetryConfig解析为withStreamRetry选项;failover 逐候选使用各自供应商的策略streamRetry.ts重试机制本体与协议适配器零改动验收标准