mirror of
https://github.com/zyycn/codex-proxy-rs.git
synced 2026-11-06 16:06:08 +00:00
codex 的 WS 客户端(codex-api/src/endpoint/responses_websocket.rs)只消费 两类 error 帧:带非 2xx HTTP status 的包装错误,以及 websocket_connection_limit_reached / previous_response_not_found 内置可重 试错误码。OpenAI 上游的中流错误帧(如 server_is_overloaded)没有 status 字段,map_wrapped_websocket_error_event 返回 None,落回 process_responses_event 也没有 error 分支——整帧被静默忽略。 客户端收不到可识别的终态,只能空等到自身 300s stream_idle_timeout 超时 再重连,5 次重连累计 20-30 分钟"正在思考",最后才把失败呈现出来。CPA 等实现之所以秒级报错,正是因为它把错误负载重写成 codex 可消费的终态。 #90 已在 SSE 边界做了同样的投影,但客户端 WS 边界(push_websocket)仍原 样转发;使用 WS transport 的 codex 桌面端不受 #90 保护。本提交在该边界 对不可消费的错误帧投影成 response.failed(消息 JSON 自带 type 字段,经 process_responses_event 的 response.failed 分支映射为可重试错误并立即重 试);带非 2xx status 或特殊错误码的可消费形状原样透传,保持 deliverable_business_failures_are_not_rewritten... 既有契约。