AI 流式输出中断怎么办:SSE 与 WebSocket 长连接超时排查
ChatGPT、Claude、Gemini 的回答输出到一半停住,Codex 或 Claude Code 跑长任务时报 Network error,本质是 SSE 或 WebSocket 长连接被中途切断。本文解释长连接为什么比普通网页脆弱,给出五个常见断点的判断方法,以及固定节点、调策略组、排除代理缓冲的处理步骤。

直接答案
AI 流式输出中断,是 SSE 或 WebSocket 长连接在几十秒到几分钟的保持期内被某个环节切断,而不是连不上。五个常见断点按出现频率排序:策略组自动切换导致出口 IP 变化、节点丢包触发超时、节点或中间设备的空闲连接超时、代理层对响应做了缓冲、浏览器扩展或安全软件干预。处理顺序是把 AI 域名固定到单一节点、关闭自动切换、换丢包更低的线路,最后才排查本地软件。
AI 工具的典型故障不是「打不开」,而是「说到一半没了」:ChatGPT 的回答停在半句,Claude 页面弹出 Something went wrong,Gemini 显示 Network error,Codex 或 Claude Code 在执行到第十分钟时报 fetch failed。普通网页请求几百毫秒就结束,而 AI 回答是一条持续几十秒到几分钟的长连接,任何一个环节在这段时间内出问题,输出就会中断。本文先讲清楚这条长连接长什么样,再逐个找断点。
SSE 与 WebSocket:AI 工具的两种长连接
大多数 AI 聊天产品用 SSE(Server-Sent Events)推送回答:客户端发一个 HTTP 请求,服务端保持连接不关闭,持续以 text/event-stream 格式一小段一小段地写回内容。语音模式、实时协作和部分 CLI 工具则用 WebSocket:握手后升级为双向通道,连接持续到会话结束。
两者的共同点是「一条连接要活很久」,这带来三个脆弱点:
- 连接期间出口 IP 不能变,变了服务端会认为是另一个客户端。
- 中途任何一次丢包都要靠重传补上,重传超时就断。
- 路径上的每个设备(节点、代理、防火墙)都有自己的空闲超时,谁先到期谁先切断。
ℹ️ 说明
流式中断和连接超时是两回事。连接超时是请求发出后没有响应,流式中断是响应已经开始、中途停止。前者的排查见连接超时的常见原因,本文只处理后者。
五个常见断点
| 断点 | 发生位置 | 表现 | 判断方法 | 处理 |
|---|---|---|---|---|
| 策略组自动切换 | 客户端 | 输出停止的同时客户端节点名变了 | 看客户端日志里的节点切换记录 | AI 域名固定到单一节点 |
| 丢包触发重传超时 | 线路 | 晚高峰更频繁,输出先变慢再停 | mtr 看最后几跳丢包 | 换丢包更低的线路 |
| 空闲连接超时 | 节点或中间设备 | 长时间思考或工具调用时断开 | 固定在某个秒数附近断 | 换节点,或开启 keepalive |
| 代理层缓冲 | 本地代理或浏览器扩展 | 不是逐字输出而是一次性蹦出来,或干脆空白 | 关闭扩展对比 | 排除缓冲的软件 |
| 本地软件干预 | 安全软件、广告拦截 | 只在某台设备上出问题 | 换设备或换浏览器对比 | 加白名单 |
怎么看到中断发生在哪一秒
浏览器开发者工具可以直接观察 SSE。打开网页版 AI 工具,按 F12 进入 Network 面板,发送一条提问,找到类型为 eventsource 或响应头含 text/event-stream 的请求,点进 EventStream 标签页:能看到每一条事件的到达时间。输出中断时,最后一条事件的时间戳就是断点时间。
也可以在终端用 curl 模拟一条流式请求,-N 关闭缓冲,观察数据是否逐段到达。这里以一个通用的测试端点为例:
Windows PowerShell:
# -N 禁用缓冲,观察流式数据是否持续到达;替换为你要测试的流式 URL
curl.exe -N -x http://127.0.0.1:7890 -H "Accept: text/event-stream" https://example.com/stream
macOS / Linux:
curl -N -x http://127.0.0.1:7890 -H "Accept: text/event-stream" https://example.com/stream
# 同时在另一个终端观察线路丢包
sudo mtr -r -c 60 节点入口域名
如果数据在固定的秒数(例如 60 秒或 120 秒)附近停止,几乎可以确定是某一环的空闲超时;如果停止时间随机且晚高峰更多,是丢包;如果一开始就没有逐段输出,是缓冲。
处理步骤
- 把 AI 域名固定到一个节点。 新建一个 select 类型的策略组,手动选定一个节点,把 AI 服务相关域名的规则指向它。这一步解决的是出口 IP 变化导致的中断,也是最常见的断点。
proxy-groups:
- name: AI
type: select
proxies:
- 日本-IEPL-01
rules:
- DOMAIN-SUFFIX,openai.com,AI
- DOMAIN-SUFFIX,chatgpt.com,AI
- DOMAIN-SUFFIX,anthropic.com,AI
- DOMAIN-SUFFIX,claude.ai,AI
- DOMAIN-SUFFIX,google.com,AI
- DOMAIN-SUFFIX,gemini.google.com,AI
- 关闭自动选择与故障转移。 url-test 和 fallback 组在延迟波动时会切换节点,流式连接随之断开。白天表现正常、晚上频繁中断的,优先怀疑这一点,调整方法见晚高峰卡顿的处理。
- 换丢包更低的线路。 mtr 最后几跳丢包超过 2% 的节点不适合流式输出。专线节点通常是最稳的选择,丢包与延迟对 AI 工具的影响在 AI 工具网络延迟与稳定性分析里有数据对比。
- 处理空闲超时。 终端工具(Codex CLI、Claude Code)在等待模型思考或执行工具时,连接可能几十秒没有数据。换一个空闲超时更宽松的节点;系统代理模式下仍断开,可以试 TUN 模式,让 TCP keepalive 由系统接管。
- 排除本地缓冲与干预。 关闭浏览器扩展(尤其是广告拦截、隐私类)、安全软件的 HTTPS 扫描功能,用隐身窗口对比。只在某台设备上中断,问题就在这台设备上。
💡 提示
终端工具的长任务请把 HTTPS_PROXY 指向客户端端口,或者直接开 TUN,两者只选一个。同时开会让部分连接走系统代理、部分走 TUN,表现为随机断开。
不同工具的侧重点
| 工具 | 常见提示 | 最先检查 |
|---|---|---|
| ChatGPT 网页 | Something went wrong、Network error | 策略组是否自动切换 |
| Claude 网页 / 桌面 | Something went wrong、App unavailable | IP 一致性,固定节点 |
| Gemini | Network error、地区不可用 | 出口地区与 DNS |
| Codex CLI / Claude Code | fetch failed、ECONNRESET、超时 | 终端代理与空闲超时 |
Claude 的具体错误对照见 Claude 无法连接的排查,各工具的专题页见 AI 工具专题。
预防:为 AI 工具单独规划线路
- 为 AI 工具单独建一个策略组、单独固定一个节点,不与下载、视频共用。
- 优先选择标注了 AI 适配、晚高峰丢包数据公开的机场。ChatGPT 机场推荐与 AI 稳定机场的评估指标见 AI 稳定机场和 ChatGPT 机场推荐栏目。
- 长任务前先用 mtr 看一眼当前节点的丢包,高于 2% 就换。
- 客户端内核保持更新,旧版本对 WebSocket 与 HTTP/2 的处理可能有已修复的问题。
小结
AI 工具连接超时与 AI 工具网络异常里的大多数,其实是 SSE 或 WebSocket 长连接在保持期内被切断。按固定节点、关闭自动切换、换低丢包线路、处理空闲超时、排除本地软件的顺序处理,绝大多数中断会消失。更多 AI 访问类问题见 AI 服务访问异常栏目。
总结
- 流式输出用的是长连接,几十秒内任何一次出口变化或丢包超时都会让它断掉
- 最常见的断点是策略组自动切换节点,把 AI 域名固定到一个节点能解决一半问题
- 浏览器开发者工具里的 EventStream 面板和 curl -N 可以直接看到中断发生在第几秒
常见问题
Q机场为什么有些节点不能用 AI 工具?
原因有两类:一是节点的出口 IP 被 AI 服务限制或判定为高风险,表现为打不开或反复验证;二是节点线路丢包高、不支持长时间空闲连接,表现为能打开但输出中断。前者换地区或换信誉更好的节点,后者换丢包更低、支持长连接的线路。
Q机场能用 ChatGPT 吗?
可以,前提是节点出口位于 ChatGPT 支持的地区且 IP 信誉正常。流式输出稳定还需要线路丢包低、节点不限制长连接。选择时优先看机场是否提供 AI 适配标注的节点,以及晚高峰的丢包数据。
Q机场能用 Claude 吗?
可以。Claude 对 IP 一致性要求更高,频繁切换出口会触发重新验证甚至中断会话。把 claude.ai 与 anthropic.com 固定到同一个节点,关闭自动选择,长任务用 Claude Code 时尤其要这样设置。
Q机场能用 Gemini 吗?
可以,但 Gemini 对地区的限制比较严格,部分出口地区会直接提示不可用。选择美国、日本、新加坡等支持地区的节点,并确保 DNS 走代理侧解析,避免解析到不支持的区域节点。
Q机场延迟低就一定快吗?
不一定。延迟衡量的是一次往返的时间,流式输出更在意的是丢包率和连接保持能力。一个延迟 40ms 但丢包 3% 的节点,输出中断的概率远高于延迟 120ms 但零丢包的专线节点。
参考资料与信息来源
- MDN Web Docs:Server-sent events · EventSource 与 text/event-stream 的工作方式
- RFC 6455:The WebSocket Protocol · WebSocket 握手、帧与关闭流程

