🎉 新版站点已上线 — 新用户请在 v2.cloudmist.cloud 注册使用,本站教程均以新站地址为准 · 老用户账号已迁移完成,用原用户名/邮箱 + 原密码可直接登录 新站(登不上请在用户名后加 _82350),原站余额可继续在 api.cloudmist.cloud 用完,新站需重建令牌并改用新站 base_url
首页 › 排错 · 文章 › Codex 流式中断怎么排查?stream disconnected 分场景诊断

Codex 流式中断怎么排查?stream disconnected 分场景诊断

云岚API · 排错 · 更新于 2026-10-26

stream disconnected before completion 表示 Codex 未能正常完成这段响应流,单凭这句话不能确定是网络、账号、客户端还是模型服务出了问题。先确认用什么客户端、哪种登录方式、请求发到哪里、在哪个阶段中断,再按下文分支检查。不要一开始就反复重试、删除凭证或换服务;工具可能已经执行,新增请求也可能产生用量。

核对日期:2026-10-26。本文依据当前官方文档整理诊断步骤,未在读者环境中复现,也未执行真实 API 调用。下面的通过判据用于记录测试结果,不代表本站已修复或验证这些故障。

需要边查边记,可先下载Codex 脱敏诊断记录与支持交接模板。若程序还没启动或登录未完成,先看Codex 打不开的分阶段排查;提供方配置见Codex CLI 接入教程。本文集中处理请求连接与响应中断。

先确认:是哪一个 Codex、哪一种认证?

把以下信息填好,再修改配置。不知道的项目写“未知”,不要凭界面上的模型名推断。

记录项 需要确认的内容 为什么影响排查
客户端 CLI、IDE 扩展、桌面应用或云端任务,以及版本和操作系统 不同入口可能读取不同配置、使用不同网络路径
认证 ChatGPT 登录、OpenAI API Key、第三方提供方 Key,或组织管理的认证 会员账号、API 账户和第三方余额不能混用
请求目标 错误或日志里的实际 host、路径类型;删除查询参数、个人和项目标识 配置里写的地址不一定是当前进程实际使用的地址
失败阶段 连接前、首段输出前、输出途中、工具执行前后、上下文压缩时 同一句流断提示可能出现在不同环节
错误信息 脱敏后的错误类别、HTTP 状态、error.code、时间和时区 “流断”前后的错误信息通常比重试次数更有定位价值

OpenAI 官方将 ChatGPT 订阅登录与 API Key 按量使用区分开;自定义提供方还可以从指定环境变量读取自己的凭证。CLI 可运行 codex login status 查看登录状态,但自定义 provider 的配置仍需一并核对。只记录认证类别,不复制凭证或整个配置文件。官方认证文档

目标域名也要与认证结合判断:看到 api.openai.com,不自动证明配置错误;看到第三方域名,也不代表所有请求和功能都由它处理。若目标确实是本站新系统 v2.cloudmist.cloud,再去云岚API 控制台按时间和请求 ID 核对。没有日志还可能与失败发生在鉴权之前、筛选条件或显示延迟有关,不能单凭缺记录下结论。

connection failed: error sending request:先看是否拿到 HTTP 响应

这段错误表示请求发送过程失败,不能单凭它判断 Key 错误、模型下线或某一方网络故障。先记录实际目标 host、失败时间,以及可见的最内层错误;没有 HTTP 状态时写“未取得”,不要补成 401 或 429。

能观察到的线索 下一项检查 何时换分支
DNS、TLS、连接重置或超时文字,没有 HTTP 状态 核对当前客户端与请求路径;在允许的网络设置内一次只改一个条件,对同一无敏感短任务作对照 一旦取得 HTTP 状态,按实际错误体处理
已收到 401/429 等 API 错误 核对所属服务、认证方式、限流或账单信息 转认证与限流排查,不要继续只换网络
请求开始后缺少结束事件 记录最后事件、工具状态及连接持续时间 转下方 Responses、WebSocket 或压缩分支

通过判据:同一客户端、认证和模型在记录的路径下完成短任务;一次成功不能证明长期网络稳定,只有网页可访问也不算该 API 路径通过。若继续失败,提交脱敏记录,不关闭证书验证或放宽组织策略。

OpenAI 官方将连接类错误与 HTTP 认证、限流、服务错误分别列出;第三方服务需结合自身日志解释。官方错误说明 上述单变量对照是本文的排查设计,不是“某条命令能修好”的厂商承诺。

四类错误应该先查哪一项?

以下是错误原文的定位片段。它们帮助选择检查方向,不是四个已经确定的根因。

错误片段 先区分的阶段 第一个检查动作
stream closed before response.completed 响应流关闭,未观察到预期完成事件;不一定已有文本输出 记录最后可见事件与是否已执行工具,再核对 Responses 流完整性
error running remote compact task,随后 error decoding response body 上下文压缩相关操作 核对失败前是否发生压缩,以及错误响应的状态和格式
failed to send websocket request,随后 os error 10054 WebSocket 连接或传输 记录断开发生时刻、目标 host 与代理路径,再做一次单变量网络对照
upstream service temporarily unavailable 服务端或上游返回的不可用提示 查实际 HTTP 状态、错误代码和对应服务的状态公告

如果错误体已经明确是 401 认证失败或 429,先转到认证、限流与额度排查。429 可能涉及速率、预算或余额,不能统一解释为“充值即可解决”;会员使用上限也不是本站 API 余额。OpenAI 错误码说明

stream closed before response.completed:输出了一半,为什么还算失败?

stream disconnected before completion: stream closed before response.completed

Responses API 以带类型的事件传输结果,文本增量与完成事件承担不同角色。已经看到文字,不等于该响应成功结束;Chat Completions 的流式格式也不能直接替代 Responses。当前 Codex 自定义 provider 的 wire_api 使用 responses。流式响应说明、Codex 配置参考

下一项检查:

  1. 先看当前任务状态和文件变更,确认是否有命令、写文件或其他操作已经完成。不要把整段任务重新提交来“试一下”。
  2. 在能够查看协议事件的环境中,只记录事件类型、时间与结束状态,不记录文本内容。若客户端没有展示这些信息,填“未取得”,不要把最后一句文字当作完成事件。
  3. 自定义 API 提供方需核对是否支持当前模型的 Responses 流式接口。先完成一个无工具、无敏感输入的短请求,再单独检查流式结束;不要拿 /chat/completions 的成功证明 /responses 完整可用。

通过判据:短请求收到预期结果,协议层显示成功完成、无错误状态,客户端也正常结束这一轮。若只能看到客户端成功提示,只能记录“客户端层通过”。一个响应完成仍不等于多轮工具任务全部完成,工具结果需要另验收。

停止重试条件:相同条件下再次缺少完成事件,或工具是否已经执行仍不清楚。保留记录,请对应服务方检查流式事件、连接超时与转发行为;不要把增加重连次数当成接口兼容性证明。

remote compact task / error decoding response body:先查压缩阶段

完整错误可能是:

error running remote compact task: stream disconnected before completion: transport error: network error: error decoding response body

这条信息把失败定位到一次压缩相关操作,但不能单凭它认定“上下文太长”或“模型不支持”。OpenAI 的 compaction 文档说明了压缩上下文的 API 机制;它不能证明某个 Codex 版本、账号或第三方服务此刻采用了哪条路径。官方 compaction 文档

下一项检查:记录失败前是否出现压缩提示、是否刚收到很长的工具输出,以及是否仅原会话失败。能查看响应元信息时,检查 HTTP 状态、内容类型与错误代码:例如返回 HTML 错误页与返回 API 错误对象,是不同线索;不要把 HTML 或业务正文整段贴进公开工单。

保存已有文件改动与必要的任务摘要后,可在新会话做一个不含工具的短任务对照。保持客户端、认证和提供方不变,只比较会话;没有必要为了复现故意塞满上下文。

通过判据:若新会话成功,只能说明短任务路径可用,不能写成原压缩问题已解决。原问题恢复还需要观察原场景中的压缩完成、后续请求成功与任务状态连续性;未观察到就记“压缩未复测”。

停止重试条件:原会话每次都在同一压缩阶段失败,或已经返回认证、额度、格式不兼容等明确错误。不要无限重放整段历史,也不要按网上旧帖直接关闭压缩或修改不明功能开关。向当前认证或 API 所属服务提交脱敏记录。

WebSocket 10054:连接重置不等于已经找到责任方

对应错误可能是:

stream disconnected before completion: failed to send websocket request: io error: 远程主机强迫关闭了一个现有的连接。 (os error 10054)

Microsoft 将 Windows 的 10054 定义为连接被对端重置。这个代码本身不能告诉你,是应用服务、网关还是连接路径中的其他环节造成了中断。Microsoft Winsock 错误码

下一项检查:先记录它发生在连接建立时、已有输出后,还是空闲了一段时间后。核对实际 host、网络类型以及是否经过代理;在你有权使用的网络设置内,一次只改变一个因素,对同一个无敏感内容的短任务做对照。不要同时换账号、模型、网络和客户端,否则无法判断哪项变化有关。

如果同机 CLI 正常而桌面或 IDE 失败,继续核对两端版本、认证与代理设置,不直接判定某一端存在通用 bug。自定义 provider 还需确认其 Responses WebSocket 支持情况;配置中的 supports_websockets 描述支持能力,不会使本来不支持的服务自动具备该能力。Codex 配置参考

通过判据:同一测试任务在已记录的路径下连接、接收结果并正常结束。一次成功只能记为一次成功;若问题原本发生在长时间空闲后,短请求通过还没有覆盖原场景。

停止重试条件:受控对照后仍重复重置,或进一步测试需要关闭安全软件、跳过证书验证、绕过组织网络策略。此时应把脱敏记录交给网络管理员或对应服务方,不继续放宽安全设置。

upstream service temporarily unavailable:先核对状态,再决定是否重试

stream disconnected before completion: upstream service temporarily unavailable

这句话说明调用链报告了上游不可用,但“上游”是谁要结合请求目标与服务日志确认。不能只凭文案就断定 OpenAI 全站宕机,也不能直接证明你的 Key 或余额有问题。

下一项检查:查看实际状态码、error.code、Retry-After 与请求时间。若请求属于 OpenAI,检查官方状态页及历史事件对应时间和组件;第三方服务则同时核对其公告与日志。状态页是汇总信息,绿色也不能排除某个用户、模型或功能的问题。

OpenAI 对其 API 的暂时性服务错误提供等待与重试建议;例如模型过载时,应遵守返回的等待提示。其他服务的代码含义需要看各自文档,不能只根据英文短句照搬。OpenAI 错误码说明

通过判据:等待后,同一服务和模型的短任务正常完成,且原错误不再出现;随后再检查原任务是否适合继续。换一个模型成功,只能说明另一路径可用,不能认定原模型已恢复。

停止重试条件:状态公告仍显示相关故障;等待后错误持续出现;错误体实际指向认证、预算或不支持的接口;或已有任务的执行状态不明。不要让多个客户端同时反复重发。

要不要直接调大重试次数和超时?

先记录现有值和故障证据,再考虑调整。当前官方配置分别列出 request_max_retries、stream_max_retries 和 stream_idle_timeout_ms;其中流重试与空闲超时的说明针对 SSE,不能无条件套到所有 WebSocket、桌面端或云端故障。Codex 配置参考

只有证据指向可恢复的短暂断开或空闲超时,且当前客户端和 provider 确实读取该设置时,才按对应版本文档修改一个参数并复测。本文不提供“一律增大到某个值”的修复配方。认证、额度、缺失端点和格式不兼容,不会因为等待更久而自动修好。

本文建议的停止规则是:原因没有变化、重复一次受控对照仍失败,就先整理记录,而不是继续扩大重试。 这是排查建议,不是厂商规定的固定次数。

怎样确认恢复,而不是只看到一次回复?

按顺序记录下面三个层级,不能跳级写“全部正常”。涉及调用的检查可能产生用量,应使用自己的测试预算。

验证层级 要观察的结果 尚不能证明什么
1. 短请求 目标 host、认证、模型与协议一致,返回预期结果 长流、工具调用、压缩和长期稳定性
2. 完整响应流 能观察到成功结束;未暴露事件时记录客户端完成状态与信息缺口 多轮工具任务全部完成
3. 小型工具任务 在测试目录中读取一个无敏感文件、执行一个可核对的小任务,检查输出、文件差异与工具结果 其他模型、不同网络和更长任务同样正常

测试失败也要保留。比较不同客户端时,一次只改一个条件;接入设置见Codex 配置教程,协议与路径见Base URL 对照。

给技术支持哪些信息,才便于继续查?

使用诊断记录模板,提交客户端版本、认证类别、脱敏 host/路径类型、时间与时区、错误类别、已做对照和结果。请求 ID 只交给对应服务的授权支持渠道;公开讨论时用占位值替换。

不要发送 Key、Cookie、Authorization 头、auth.json、登录验证码、完整环境变量或业务输入输出。官方认证文档也明确要求把 auth.json 当作密码保护,不粘贴到工单或聊天。凭证保护说明

ChatGPT 登录问题优先通过对应产品的帮助入口联系官方支持。请求确实指向云岚API 新站的已有用户,可先查控制台,再将脱敏记录交给本站客服支持。更换中转服务不是这些错误的统一解决办法,排障也不需要先重新注册。

常见问题

网页能打开、ChatGPT 能聊天,能证明 Codex 网络正常吗?

不能。网页、模型请求和长连接可能走不同路径。记录真正失败的 host、客户端和阶段,比单独测试首页更有针对性。

新开会话成功,说明旧会话太长吗?

只能说明当前短任务成功。它为会话相关问题提供线索,但没有排除压缩、客户端状态、输入或间歇服务错误;应继续按压缩分支记录。

没有完整协议日志,还能求助吗?

可以。模板允许填“未取得”。保留脱敏错误类别、发生时间、版本和你能观察到的阶段,不为凑齐表格去复制凭证或整段业务内容。

为什么没有直接给“换 Key、关代理、加重试”的统一命令?

这些动作针对不同原因,还可能改变原有环境。先确定分支,再做一次有记录的改变,才能知道是否有效并保留回退依据。

注册后查看试用额度与领取条件

按当前模型列表选择服务,先核对令牌分组、接口协议与价格,再用自己的任务验证。

注册并查看试用条件 →已有账号?进入控制台创建令牌 · 调用报错先排查
注册、充值和调用均在云岚API 新业务站完成
相关内容
本站为云岚API 注册、登录与充值入口站点 · 模型与价格以控制台实时数据为准 · 更新于 2026-10-26
Claude、GPT、Gemini 等名称为各自权利人商标,本站为独立第三方 API 中转/聚合服务,与上述厂商无隶属或授权关系。