Codex 报 stream ended before terminal event,通常意味着什么
这类错误通常表示客户端期待收到完整的流式事件序列,但连接在最终完成事件之前结束。根因可能是上游断线、Nginx timeout、HTTP/2 重置,或者第三方兼容层只实现了“能流文字”,没有完整实现 Codex 需要的事件。
这类错误通常表示客户端期待收到完整的流式事件序列,但连接在最终完成事件之前结束。根因可能是上游断线、Nginx timeout、HTTP/2 重置,或者第三方兼容层只实现了“能流文字”,没有完整实现 Codex 需要的事件。
一、为什么会出现这个问题

- 错误可能由 Nginx、Cloudflare、应用网关、第三方平台或真正的模型上游任意一层返回。
- 代理 read timeout、buffering、连接复用等默认值并不适合 AI 长请求。
- 流式 SSE 在中间层被缓存、提前关闭或事件格式被改写。
- 只看客户端最后一行错误,无法判断真正的故障来源。
二、推荐的排查顺序
1. 确认错误来自哪一层
保留响应头、request id、Cloudflare Ray ID、Nginx access/error log 和应用日志,同一时间点对齐分析。
2. AI 路由单独配置
SSE、长文本、Agent、视频任务不要直接套普通网站的 timeout 和 buffering。对 /v1/ 等接口单独设置更容易维护。
3. 只对暂时性错误重试
502/503 等可以有限重试;401、403、参数错误等确定性问题不应该盲目重试。
三、可以直接复制的排查示例
location /v1/ {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
proxy_set_header Connection "";
}
四、使用建议
如果普通非流式请求稳定、只有流式失败,就优先排查 SSE 事件和中间代理,而不是模型本身。
原创文章,作者:Codex中文网,如若转载,请注明出处:https://codex-zh.com/posts/codex-stream-ended-before-terminal-event/
相关文章
Codex 如何固定版本?避免升级导致配置突然失效
围绕「Codex 如何固定版本」给出面向 Codex 用户的原理、配置、操作步骤、排查方法与常见问题,适合新手直接照着实践。
Codex 如何关闭或减少遥测?隐私相关配置说明
围绕「Codex 如何关闭或减少遥测」给出面向 Codex 用户的原理、配置、操作步骤、排查方法与常见问题,适合新手直接照着实践。
Codex 额度消耗太快怎么办
Codex 的使用量并不是简单按“发了几条消息”计算。任务规模、模型、上下文长度、推理强度、工具调用以及任务运行方式都会影响实际消耗。一个大型仓库里的长任务,可能明显高于一个简单脚本。
ChatGPT 对话越来越长,为什么回答开始跑偏
长对话并不等于上下文越多越聪明。旧代码、旧报错、旧需求和新状态混在一起时,模型可能继续基于已经过时的信息回答。编程问题尤其容易出现这种“上下文污染”。