Skip to content

[Idea] WebSocket 模式增加上游错误隐藏与静默重试设置 #195

@OneAHPro

Description

@OneAHPro

提交前我已确认

我的想法

希望在 Codex 上游 WebSocket 设置里增加一个开关:隐藏上游错误并静默重试。

现在 WebSocket 模式下,如果上游返回错误,客户端会直接看到类似:

  • The usage limit has been reached
  • websocket read error
  • i/o timeout
  • unexpected EOF
  • message too big
  • 429 / 5xx

我希望这个开关开启后:

  1. WebSocket 上游出现 usage_limit / 429 / read error / timeout / EOF 等错误时,不要立刻通过 SSE response.failed 返回给客户端。
  2. codex2api 在服务端自动切换账号、重新创建 WebSocket 连接、重新请求。
  3. 客户端连接保持住,看起来就像模型还在正常思考/等待。
  4. 如果重试成功,用户端无感,继续正常返回内容。
  5. 如果所有账号/重试都失败,才返回统一提示,例如:上游服务临时繁忙,请稍后重试
  6. 原始上游错误仍然记录在后台日志/管理端,方便排查。

建议增加设置项:

  • WebSocket 隐藏上游错误:开启/关闭
  • WebSocket 上游错误静默重试:开启/关闭
  • WebSocket 最大静默重试次数或时间:可配置

我想解决什么问题 / 用在什么场景?(可选)

我的使用场景是:开启 Codex 上游 WebSocket 后,codex2api 后面还会接 NewAPI 给终端用户使用。

现在上游 WebSocket 一旦出现 usage_limit、429、read error、timeout、EOF 等错误,终端用户会直接看到这些上游原始错误。用户看不懂,也容易误以为平台账号没额度或者服务坏了。

我希望这些 WebSocket 上游异常由 codex2api 在服务端自动处理:

  • 自动换账号
  • 自动重建 WebSocket
  • 自动重试
  • 客户端保持等待状态
  • 后台日志保留完整错误

这样上游短暂异常时,用户端可以无感;只有确实全部重试失败时,才显示统一的友好提示。

对我来说有多重要?(随手选)

强烈想要,目前是个明显痛点

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions