ChatGPT 流式输出半句话卡住

回复流到半句话就突然不动了。多半是 SSE 连接被掐、标签页被挂起、或者后端打嗝。诊断 + 恢复。

你问了个问题,回复开始正常流出来,流到一半突然就停了。没报错、没 spinner、也没”继续”按钮,就半段话挂在那。刷新一下,有时能看到服务端其实把完整回答存好了,有时就只剩你看到的那半段。ChatGPT 的回答是走 SSE 流式连接的,连接一断,UI 只能显示掐断之前那部分内容。原因多半在网络、浏览器、或者后端瞬时打嗝,修法看是哪一类。

常见原因

按命中率从高到低。

1. SSE 连接中途被掐

ChatGPT 用 Server-Sent Events 流式吐 token。Wi-Fi 抖一下、公司代理把空闲连接关掉、VPN 重连一次,这条流都会断。浏览器并不会自动重试。

怎么判断:打开 DevTools → Network → 过滤 conversation。停顿时间点附近有一条红色或 canceled 的 SSE 请求,就是它。

2. 浏览器标签页被切到后台

Chrome 和 Safari 对后台标签页限速很狠。流到一半你切走了,连接可能被挂起后直接关掉。切回来也不会续上。

怎么判断:想想流断的那一刻你是不是切了 tab 或切了 app。每次切走就刚好断,几乎都是这个。

3. 后端瞬时打嗝或软限速

后端到容量、或者你账号撞到软限速时,流可能直接 token 流到一半就断。完整答案有时会被保存、有时丢掉。

怎么判断:看 status.openai.com 有没有降级标识。或者在新对话里发同一个 prompt,如果也断了,多半是后端压力。

4. 浏览器扩展干扰响应

广告拦截、隐私扩展、或者那些挂在 ChatGPT 页面里的”AI 助手”扩展,可能会污染 SSE 流或注入错误让它中断。

怎么判断:在不带扩展的隐身窗口里打开 ChatGPT 测一次。流正常 = 扩展的锅。

5. 公司网络或 VPN 有空闲超时

有些公司防火墙和 VPN 会把空闲超过 30-60 秒的 TCP 连接掐掉。长回答超出这个窗口就会被掐在中间。

怎么判断:断开 VPN 或换个家庭网络再测。长回答能正常跑完,就是网络在掐 SSE。

6. 手机 app 切到后台或丢了信号

iOS 和 Android 上切 app 或者丢信号都会断流式连接。半段回复留在界面上,但不会自己续上。

怎么判断:流断的那段时间,屏幕是不是亮的、app 是不是在前台。不是的话就是这个。

开始前

  • 决定一下:你是马上就要这个答案,还是可以重试,重试通常都行。
  • 如果 prompt 很贵(token 多),刷新前先把那段半截答案复制下来。
  • 记一下你现在是 Wi-Fi、移动数据、还是 VPN,诊断路径不一样。

要收集的信息

  • 浏览器和版本号,或者手机 app 版本号。
  • 网络类型(家里 Wi-Fi / 公司网络 / 移动数据 / VPN)。
  • 流断的时候你有没有切 tab 或切 app。
  • 那段半截回复的长度(短 = 早断 / 长 = 晚断)。
  • 是每次回复都断,还是只长回复才断。
  • 装了哪些扩展,特别是广告拦截和 AI 助手类的。

一步步修

Step 1: 刷新页面,捞完整回复

很多时候服务端其实已经生成完了,只是部分 token 没流到你这边。刷新对话,如果完整答案出现在那一轮里,那就是生成 OK、只是直播断了。

Step 2: 答案真断了,让它接着写

在同一个对话里发:

从你上一条回复停止的地方接着写:
「……你最后流出来的那几个字……」

模型一般能干净接上。引用最后几个字能帮它对齐位置。

Step 3: 用隐身窗口 + 关扩展测试

开 Chrome 隐身窗口,登录,重试。流能跑完 = 扩展在污染 SSE。回到普通窗口里逐个关扩展定位元凶。

Step 4: 换网络或断 VPN

公司 Wi-Fi 或 VPN 上,临时切到手机热点测一次。长回答在热点上能跑完,就是公司代理在掐。让 IT 给 chat.openai.comchatgpt.com 加白名单、不要掐长连接 SSE。

Step 5: 长回复期间标签页保持在前台

长回答(1000+ 字、deep research、代码),把 ChatGPT 标签页保持可见、笔记本别睡眠。后台限速是长流的隐形杀手。

Step 6: 把请求拆短,避开超时窗

不要一上来就「写一篇 3000 字的文章」,先「先给大纲,每节再展开」。每次流都短,远不容易撞超时。

Step 7: 从网页切到桌面或手机 app

某些场景下,原生 app 对流中断的处理比浏览器稍微好一点,特别是 Wi-Fi 不稳的时候。网页流总是断,可以拿桌面 app 当备用方案。

Verify

  • 发一个中等长度的 prompt(「用 500 字解释 X」)。从头流到尾不断 = 干净。
  • 跑一次长生成(大纲 + 完整草稿),标签页保持前台,能完整跑完。
  • 如果是关扩展修好的,把扩展逐个开回来再测,定位是哪一个。

长期预防

  • 长生成期间 ChatGPT 标签页保持在前台。
  • 公司网络上,让 IT 把 OpenAI 域名加白名单、关掉 SSE 超时。
  • 超长输出拆成多块,不要一个超大 prompt。
  • 远离会挂在 ChatGPT DOM 上的 AI 助手类扩展,它们很常断流。
  • 备一个桌面或手机 app 当 fallback。

常见坑

  • 立刻刷新就以为半截内容丢了——其实完整答案常常已经存好了。
  • 让它「continue」却不引用最后几个字,模型会重新开始而不是接续。
  • 责怪 GPT-5「早早就停了」——其实是网络把流掐了。
  • 在睡眠中的笔记本上跑长生成,macOS 会挂起网络。
  • 以为隐身模式自动 = 关扩展,并不是,隐身不会屏蔽所有扩展。

FAQ

  • 为什么刷新后答案又出现了? 服务端生成完并保存了消息,只是你这边的直播流断了。刷新读的是保存版本。
  • 能让 ChatGPT 自动重试断掉的流吗? 不行,网页客户端不会自动重试 SSE。要么刷新、要么让它接着写。
  • 这是 GPT-5 的问题吗? 不是,模型已经写完了。问题在服务端到你浏览器之间的传输。
  • API 上会这样吗? API 把原始 SSE 暴露给你,断了你可以在自己代码里检测并重试。自己的 client 控制权更大。
  • Plus 或 Team 能避免吗? 流式管道是同一条。高档套餐撞限速类的截断会少一点,但 SSE 本身一样。
  • 为什么长回答更容易遇到? 长回答在线路上时间更久,途中任何空闲超时都有更多机会触发。

标签: #ChatGPT #排查 #web #排查