一、先恢复任务:保住现场再谈排查
遇到 Claude Code API Error: Connection closed mid-response,或回答写到一半突然断开,第一步不是急着找根因,而是先把当前任务救回来。恢复成功只说明任务续上了,并不等于问题已经排除。
- 核对现场:查看屏幕上保留的输出内容,确认文件修改和已完成的工具操作是否已经落盘。
- 要求继续:在原会话中发送指令,让模型检查已完成的文件修改与工具操作,说明剩余任务,并从最后完成的位置继续,避免重复执行。
- 重启客户端进程:如果反复失败,记录版本号后退出并重启 Claude Code 客户端或进程,不需要关闭所有终端;同时顺手升级到最新版,重启后确认启动版本。
- 查服务状态:如果大面积同时报错,可能是服务端事故,保留现场等待恢复。
需要提醒的是,续接并不等于修复,有些情况下只能恢复几分钟。终端明确报认证错误时才需要重新登录,这不是本报错的常规动作。
二、closed、lost、stalled:先分清报错类型
closed 与 lost 是同一报错的新旧名称,stalled 则是另一类现象。选对分支比记住名称更重要。
- Connection closed mid-response:原报错名,指回答中途连接被关闭。
- Connection lost mid-response:同一报错的新名称,从 v2.1.227 起使用,处理方式一致。
- Response stalled mid-stream(已更名 The response stopped arriving):连接还在,但数据停止到达,排查方向不同。
按现象对号入座即可:
- 原网络失败、手机热点正常 → 检查网络路径与代理。
- 长时间无输出,且只在网关下失败 → 检查网关超时与流式转发。
- 同网络其他设备正常,仅本机失败 → 检查本机组件与过滤。
- 大请求明显更易失败 → 有条件验证 MTU。
- 日志出现明确证书错误码 → 检查证书配置。
- 多网络都失败、重启仅暂时有效 → 检查日志与版本。
名称决定是不是同一报错,现象决定走哪一节;如果提示的是“数据停止到达”,不要照搬 closed 分支。
三、换网络后恢复:代理与网络路径检查
原网络失败、热点正常,或怀疑链路问题时,走这一节。每次只改一个变量,每条结论都要复测。
- 对照两条路径:同设备、同版本、同模型、相似任务,分别走原网络与手机热点,重复几次,记录成败、中断时间与报错。
- 核对客户端代理配置:用代理时,核对 Claude Code 实际加载的代理配置。环境变量、配置文件与命令行参数存在优先级差异,浏览器走代理不代表客户端也走代理;改后重启再测。
- 看状态与调试日志:交互会话中查 /status;需要细节时用 claude --debug 启动复现并保存输出。
- 周期断线分支:如果不同项目总在同一时刻断开(如每 300 秒),查路由器 WAN 日志是否周期断线,处理接入链路,不要盲目调整 API 超时。
路径表现持续不同时,可以评估代理配置、线路稳定性与接入方式。IPxSS 海外AI网络立足海外 AI 使用特性,直连 ChatGPT/Gemini/Claude 等海外 AI 当地服务器,对话与生成可达毫秒级响应。若对照排查出线路问题,可将固定归属出口、多线路资源纳入同条件对照,小批量验收后再放量,效果以实测为准。
四、仅自建网关失败:超时、缓冲与长输出
这一节仅适用于自建或企业网关;直连官方接口可跳过。能实际修改的有四处:
- 对照失败时间与网关日志,确认网关是否提前关闭响应;
- 查反向代理、负载均衡与网关自身超时,找到最先截断的一层;
- 查 SSE 是否及时透传、有无整段缓冲;
- 仅写大文件失败时,拆小段写入最后合并,作为临时绕过。
Nginx 示例(在已有 API 代理 location 内按需调整,示例值并非通用推荐):
proxy_buffering off;
proxy_read_timeout 600s;
proxy_read_timeout 衡量的是两次读取之间的等待时间,不是任务总时长;如果上游更早超时,只改 Nginx 无效。改后重新加载配置,再跑同类任务验证。
已有对照结果显示:提高网关超时后问题显著减少但未消失,大文件分段写入后可以绕过。这说明网关层确实是真实病因之一,但各有边界。
五、仅本机失败:Windows 组件、MTU 与证书分支
三个分支各有适用条件,按现象进入,不要全部做一遍。
Windows:查旧加速器或代理软件残留
执行 netsh winsock show catalog,核对提供者与软件来源,优先按软件官方卸载或修复方式处理;确认残留后,进阶可用 netsh winsock reset(需管理员权限并重启,可能影响其他网络软件)。旧加速器残留 Winsock LSP 清理后恢复、代理客户端组件与特定版本组合失败注销后恢复,均有个案;也有人重置后仍无改善,因此不要见到第三方项就重置。
macOS:大请求失败时有条件验证 MTU
流程是读取、验证、恢复三步:
# 确认设备与网络服务
networksetup -listallhardwareports
# 记录原值(Wi-Fi 仅为示例)
networksetup -getMTU "Wi-Fi"
# 符合“热点正常、原网络失败、大请求更易失败”时临时验证
sudo networksetup -setMTU "Wi-Fi" 1400
复测无改善就恢复到记录的原值,不要默认原值都是 1500。两个个案有效,其中一人同网络另一台 Mac 1500 正常,说明这是条件性方案,不是通用处方。
证书:仅日志明确报错时处理
只有日志明确证书验证失败才展开:企业 TLS 检查环境向管理员取得 CA,按官方文档配置 NODE_EXTRA_CA_CERTS,启动后查日志确认加载;不要关闭证书校验。
如果 Claude Code 换网络就好、原网络必断,说明应通过路径对照定位中间层问题。固定归属线路可纳入对照,以实际任务验证效果。
六、仍然中断:日志、版本与复现报告
如果各分支都没解决,就需要收尾整理材料,方便官方定位,也利于自己复盘。随报告附上:
- 版本、操作系统、CLI/插件/桌面端形态;
- 官方接口或第三方网关;
- 中断前处于思考、文本输出还是工具调用阶段;
- 两条路径对照结果;
- 报错时间、请求 ID 与脱敏日志。
“首错后长会话恶化、重启缓解”有调查记录,未确认为通病,可作为线索附上。CI 重试参数也在此层:只影响等待与恢复,不修复网络,不能无条件重复有副作用的工具调用。
账号层面的风险预防,包括登录环境固定、席位与组织权限管理、风控敏感操作,可对照 Claude 账号风险专题自查。
常见问题 FAQ
Claude Code 会自动重试吗?
按响应完成阶段处理:收到字节前断开自动重试(默认 10 次指数退避);思考完、正文未开始快速重发(至多 2 次);已产出内容后不重发原请求,防止副作用工具重复执行;满足模式、版本与内容条件时,以续接代替重试。
Connection closed mid-response 和 Connection lost mid-response 有什么区别?
同一报错的新旧名称,v2.1.227 起 closed 改为 lost,处理一致;stalled 系列(已更名 The response stopped arriving)指连接还在但数据停止到达,方向不同。
要求继续会丢内容吗?
官方保留已完成块,最后一块可能不完整。继续前核对文件修改与工具操作,必要时让模型汇报状态,确认无误后再续作。
CI 无人值守怎么配置重试?
CLAUDE_CODE_MAX_RETRIES 上限 15,API_TIMEOUT_MS 控制单次等待;watchdog 机制提高默认重试上限。只影响等待与恢复策略,不修复网络,不能无条件重复有副作用的工具调用。
降级 Claude Code 版本有用吗?
仅特定个案,例如 Windows 第三方 Winsock LSP 残留导致 2.1.221+ 全挂。优先对照排查,降级只作个案手段。
总结
处理 Claude Code API Error: Connection closed mid-response 的顺序是:先恢复任务保住现场,再按症状选分支排查——路径做对照、网关查超时与缓冲、本机分组件,最后以日志和版本收尾。IPxSS 海外AI网络立足海外 AI 使用特性,直连 ChatGPT/Gemini/Claude 等海外 AI 当地服务器,提供通用的代理配置,方便植入 agent 供 skill 调用,兼顾稳定、安全与便捷。更多信息可访问 https://www.ipxss.com/ 。