本地 Codex 报错 stream disconnected before completion 的排查与修复记录

📅 2026/7/8 10:40:01
本地 Codex 报错 stream disconnected before completion 的排查与修复记录
摘要最近在本地使用 OpenAI Codex 时发送消息出现了如下报错stream disconnected before completion: error sending request for url (http://127.0.0.1:57321/v1/responses)一开始以为是 Codex 本身、模型或者网络问题后来排查发现真正原因是Codex 被配置成走本地自定义代理CodexPlusPlus请求地址指向了127.0.0.1:57321/v1/responses但本地 57321 端口没有服务在监听。最终解决方式是删除本地代理配置恢复 ChatGPT 账号登录模式并更换可正常访问 OpenAI 授权接口的代理。本文记录完整排查过程和后续遇到同类问题时的处理流程。一、问题现象本地 Codex 发送消息时报错stream disconnected before completion: error sending request for url (http://127.0.0.1:57321/v1/responses)关键信息是这段 URLhttp://127.0.0.1:57321/v1/responses这说明 Codex 并不是直接访问官方 OpenAI 服务而是在请求本机的一个本地服务或代理。二、第一步检查本地 57321 端口是否有服务在 Windows CMD 中执行netstat -ano | findstr 57321结果是C:\Users\Lenovonetstat -ano | findstr 57321 C:\Users\Lenovo没有任何输出。这说明本地 57321 端口没有服务在监听。也就是说Codex 试图访问http://127.0.0.1:57321/v1/responses但这个地址背后根本没有服务所以请求自然会失败。三、第二步排查环境变量继续检查是否是环境变量把 Codex 指向了本地代理echo %OPENAI_BASE_URL% echo %OPENAI_API_BASE%输出为C:\Users\Lenovoecho %OPENAI_BASE_URL% %OPENAI_BASE_URL% C:\Users\Lenovoecho %OPENAI_API_BASE% %OPENAI_API_BASE%这说明系统环境变量中没有设置OPENAI_BASE_URL OPENAI_API_BASE因此127.0.0.1:57321不是从环境变量来的。四、第三步检查 Codex 配置文件接下来查看 Codex 配置文件C:\Users\Lenovo\.codex\config.toml发现原配置里有如下内容model_provider CodexPlusPlus model deepseek-v4-flash [model_providers.CodexPlusPlus] name CodexPlusPlus wire_api responses requires_openai_auth true base_url http://127.0.0.1:57321/v1 experimental_bearer_token sk-xxx这就是问题根因。配置含义大概是Codex → CodexPlusPlus → http://127.0.0.1:57321/v1/responses其中wire_api responses表示 Codex 会走 Responses API。而base_url http://127.0.0.1:57321/v1表示 Codex 会请求本地 57321 端口。但实际情况是57321 端口没有服务因此就会报stream disconnected before completion五、修复方向这里有两种修复方式。方案一继续使用本地代理如果确实要继续用CodexPlusPlus或其他本地代理那就需要重新启动对应服务。启动后再次执行netstat -ano | findstr 57321正常应该看到类似TCP 127.0.0.1:57321 0.0.0.0:0 LISTENING xxxx然后还需要确认代理是否支持/v1/responses因为 Codex 当前请求的是 Responses API而很多本地模型代理只支持/v1/chat/completions如果本地代理不支持/v1/responses即使端口启动了也可能继续报错。方案二恢复 ChatGPT 账号登录模式如果不想走本地代理而是想用 ChatGPT 账号登录 Codex可以删除自定义 provider 配置。最终我采用的是方案二。六、修改后的 Codex 配置将config.toml顶部改成model gpt-5.5 forced_login_method chatgpt disable_response_storage true删除或注释掉这些内容model_provider CodexPlusPlus [model_providers.CodexPlusPlus] name CodexPlusPlus wire_api responses requires_openai_auth true base_url http://127.0.0.1:57321/v1 experimental_bearer_token sk-xxx需要注意的是不能只改模型model gpt-5.5如果还保留model_provider CodexPlusPlusCodex 仍然可能继续走自定义 provider。所以关键是删除model_provider CodexPlusPlus以及对应的[model_providers.CodexPlusPlus]配置块。七、重新登录 Codex修改配置后在 CMD 中执行codex logout codex login如果浏览器登录打不开可以使用设备码登录codex login --device-auth登录成功后检查状态codex login status正常结果Logged in using ChatGPT此时说明 Codex 已经切换为 ChatGPT 账号登录模式。八、登录过程中遇到 token exchange failed在恢复 ChatGPT 登录时我还遇到了另一个错误Sign-in could not be completed Token exchange failed: error sending request for url (https://auth.openai.com/oauth/token) Error code token_exchange_failed这个问题已经不是127.0.0.1:57321了而是 Codex 在登录最后一步访问https://auth.openai.com/oauth/token失败。这种情况一般和网络、代理、VPN 有关。我更换了一个代理后问题解决。可以用下面命令简单测试网络curl -I https://auth.openai.com/oauth/token curl -I https://api.openai.com curl -I https://chatgpt.com如果访问失败需要更换代理、节点或网络环境。九、最终启动成功重新登录后执行codex login status输出Logged in using ChatGPT然后启动 Codexcodex启动成功╭───────────────────────────────────────╮ │ _ OpenAI Codex (v0.142.0) │ │ │ │ model: gpt-5.5 /model to change │ │ directory: ~ │ ╰───────────────────────────────────────╯至此Codex 已经恢复正常。十、额外问题SKILL.md 警告启动后还看到一个黄色警告Skipped loading 1 skill(s) due to invalid SKILL.md files. C:\Users\Lenovo\.agents\skills\roadshow\SKILL.md: missing YAML frontmatter delimited by ---这个不是登录问题也不是模型调用问题。它的意思是某个本地 skill 文件格式不规范缺少 YAML frontmatter。解决方式是在文件顶部补上--- name: roadshow description: 用于生成、优化和审查路演脚本、路演方案、演示材料和客户沟通内容。 --- # 路演材料 Skill 这里保留原来的 skill 内容。保存后重启 Codex 即可。十一、后续再遇到同类问题怎么处理如果以后再次遇到stream disconnected before completion: error sending request for url (http://127.0.0.1:57321/v1/responses)可以按下面流程处理。1. 查端口netstat -ano | findstr 57321如果没有输出说明本地 57321 代理没启动。2. 查配置残留findstr /S /I /N 57321 CodexPlusPlus model_provider base_url %USERPROFILE%\.codex\*重点检查C:\Users\Lenovo\.codex\config.toml3. 删除本地代理配置删除model_provider CodexPlusPlus以及[model_providers.CodexPlusPlus] base_url http://127.0.0.1:57321/v14. 恢复最小可用配置model gpt-5.5 forced_login_method chatgpt disable_response_storage true5. 重新登录codex logout codex login codex login status如果登录报 token exchange failed优先换代理或网络。十二、总结这次问题的根因并不是模型不可用也不是账号密码错误而是 Codex 配置里残留了本地代理CodexPlusPlus → http://127.0.0.1:57321/v1/responses但本地 57321 端口没有服务在监听所以发送消息时报stream disconnected before completion最终解决路径是1. netstat 确认 57321 没有服务 2. 检查环境变量排除 OPENAI_BASE_URL / OPENAI_API_BASE 3. 检查 config.toml发现 CodexPlusPlus 本地代理配置 4. 删除 model_provider 和 base_url 5. 改回 ChatGPT 登录模式 6. 重新 codex logout / codex login 7. 更换可访问 OpenAI auth 的代理 8. codex login status 显示 Logged in using ChatGPT最终 Codex 成功恢复正常。十三、安全提醒如果配置文件里出现类似experimental_bearer_token sk-xxx不要把它原样发到公开平台、聊天记录或截图里。这类 token 应当按密钥处理。如果已经暴露建议尽快去对应平台重置或作废。