Claude Code · 开发者

Claude Code 频繁断连、SSE 中断?终端网络环境排查指南

Claude Code 输出到一半突然停掉、打字速度忽快忽慢、频繁提示 connection error?你遇到的不是 AI 不稳定,而是终端网络环境没有针对长连接做适配。

关键词:Claude Code 断连、SSE 中断、Claude CLI 网络、Anthropic API 排查

先讲结论:Claude Code(CLI 编程工具)走的是 api.anthropic.com 的 SSE(Server-Sent Events)长连接流式输出,和 claude.ai 网页端的 HTTP 短连接完全不一个量级的网络要求。网页端能打开不代表 CLI 环境稳定。导致断连的根因大多在 IP 类型 + DNS + 中转链路 + MTU 这四层。下面从最常见到最隐蔽,一层一层排查。

第一层:确认网络环境基准(10 秒自查)

Claude Code 的 CLI 本质是一个 HTTP 客户端,它通过你在终端或系统代理设置里配的 HTTP(S)_PROXY 访问外部 API。第一步是确认出口 IP 的"身份"是否干净:

如果基础网络不通或不干净,后面的排查可以跳过——直接换个干净的美国住宅 IP 是最快见效的办法。

第二层:DNS 配置 —— 最容易忽略的瓶颈

很多 CLI 用户的终端继承了系统 DNS 设置,而系统 DNS 往往走的是本地运营商。这导致 api.anthropic.com 被解析到离你很远、甚至和出口 IP 地理矛盾的节点。对 Claude Code 的 SSE 流来说,DNS 解析慢 = 首包延迟高,而「IP 在美国、DNS 在国内」的地理矛盾也是 Anthropic 风控信号。

排查:

修复:在代理客户端的 DNS 设置中切换为远程解析(Remote DNS)。如果你用的是系统代理 + HTTP_PROXY 环境变量,在 ~/.zshrc 或 ~/.bashrc 里补充 export no_proxy=localhost,127.0.0.1 避免 DNS 查询回退本地。

第三层:中转链路 —— 跳数多、抖动大

从中国大陆到 api.anthropic.com 不可能直连(GFW 会 reset)。所有请求都必须经过中转。而中转的质量差异极大:有些便宜机房中转的中间跳数超过 15 跳、丢包率 5% 以上,对普通网页浏览可能没感觉,但对 SSE 长连接的破坏是致命的——每一次丢包都可能导致流中断或重新 connect。

怎么排查链路质量:

如果链路质量差到丢包明显、延迟高且波动大,你需要在「链路更稳的中转」和「换一个更近的出口」之间选择。一般情况下,经香港中转的美国住宅 IP 对大陆用户的链路最均衡(HK 段短 + 美国段直连 Anthropic)。

第四层:MTU 与本地网络栈

MTU(最大传输单元)是特别隐蔽的一个坑。如果你的本地网络 MTU 偏大(比如 1500),但中转加密隧道有额外报头占用,产生的包超过链路最大尺寸,就会被中间路由器静默丢弃——你的 SSH/CLI 不报错,但 Claude Code 的输出就是会突然停住。

排查:

第五层:代理客户端的连接保持

Claude Code 的 SSE 长连接在"思考"和"生成"两阶段都可能持续几十秒甚至几分钟。如果你的代理客户端或系统防火墙把长连接判定为"空闲连接"并自动切断,就会出现「明明 API 没问题但 Claude Code 说 connection closed」的情况。

排查:

动手顺序:一个拿到就做、越做越排查的路

  1. 先去 AI IP 检测页 看 IP 类型和 DNS
  2. curl -v https://api.anthropic.com/v1/messages 做 TLS 基准
  3. 接上代理后重复 TLS 检测,对比延迟和成功率
  4. 改 DNS 为远程解析
  5. 测 MTR / ping 丢包,判断链路是否需要更换
  6. 调 MTU 到 1300-1400
  7. 确保代理客户端 keepalive ≥ 300s

如果前三点做完已有明显改善,后面可以先不做。反之,越往下走越接近真因。

大多数 Claude Code 的"不稳定",本质是机房 IP + 本地 DNS + 劣质中转链路三者叠加。解决这三个,剩下的调 MTU / keepalive 属于锦上添花。第一步——确认出口 IP 是干净的住宅 IP——是所有优化的前提。