Claude Code · 网络排查

Claude Code 代理后一直 Reconnecting 或 ECONNRESET 怎么办?

Claude Code 的网络不只有一条:模型 API 请求要访问远端服务,IDE 集成却通过本机 loopback WebSocket 通信。代理配置错误时,远端请求可能出不去,本地连接也可能被误送进代理。先确认断在哪一段,再修改环境变量。

更新日期:2026-09-24·作者:island AI Coding 技术团队·主词:Claude Code 代理
常见错误ECONNRESET / ETIMEDOUT
本地连接localhost / 127.0.0.1
核心变量HTTPS_PROXY / NO_PROXY

1. Claude Code 网络问题先分三层

链路用途常见表现
Claude Code → API/Base URL发送模型请求和接收流式响应ECONNRESET、ETIMEDOUT、fetch failed、401/5xx
Claude Code → 登录或连接预检OAuth、服务可达性和启动检查Checking connectivity、ERR_SOCKET_CLOSED
Claude Code → 本机 IDE连接 VS Code 等本地扩展Failed to connect to IDE、本地 WebSocket 断开

这三条链路不能使用同一个结论。API 请求需要代理时,本地 ws://127.0.0.1:PORT 仍应绕过代理;预检失败也不一定等于实际 API 不可达。

直连首页 200 与无监听代理端口连接失败的终端对照证据
代理路径对照:直连 `www.codex789.com` 返回 200;指定 127.0.0.1:1 代理时返回 curl 7,故障可在代理层独立复现。

2. Reconnecting、ECONNRESET 与 ERR_SOCKET_CLOSED 的区别

  • Reconnecting 后自动恢复:流式连接中途断开,客户端重试成功。记录频率和发生时间,偶发不等于配置错误。
  • ECONNRESET 持续出现:连接被对端或中间网络重置。代理、TLS 检查、网络波动和服务端都可能触发。
  • ETIMEDOUT / fetch failed:目标地址或代理在超时内没有建立连接,先检查 Base URL、DNS 和代理端口。
  • Checking connectivity → ERR_SOCKET_CLOSED:可能是启动预检与企业 TLS 代理不兼容,需与实际 API 请求结果对照。
  • IDE 连接失败:优先检查 loopback 是否被 HTTP_PROXY/HTTPS_PROXY 接管。
ECONNRESET 不是“代理错误码”公开 issue 中存在 Windows 11、无代理且跨不同网络仍频繁重置的报告。没有代理证据时,应同时查看服务状态、客户端版本和中途断流日志。

3. HTTP_PROXY、HTTPS_PROXY 与 NO_PROXY 怎么配

如果当前网络需要本地代理访问 API,可使用实际 HTTP 或 mixed 端口。不要照抄示例端口,也不要在文章、日志或工单中暴露带用户名密码的企业代理 URL。

macOS / Linux(示意)
export HTTP_PROXY="http://127.0.0.1:PORT"
export HTTPS_PROXY="http://127.0.0.1:PORT"
export NO_PROXY="localhost,127.0.0.1,::1"
export no_proxy="localhost,127.0.0.1,::1"
Windows PowerShell(当前会话)
$env:HTTP_PROXY = "http://127.0.0.1:PORT"
$env:HTTPS_PROXY = "http://127.0.0.1:PORT"
$env:NO_PROXY = "localhost,127.0.0.1,::1"
$env:no_proxy = "localhost,127.0.0.1,::1"
  1. 确认代理软件实际监听协议和端口。
  2. 检查是否同时存在大小写两套变量,避免旧值覆盖。
  3. 保证 NO_PROXY 与 no_proxy 都包含 loopback。
  4. 完全退出 Claude Code 和编辑器,再启动新会话。
  5. 先验证短文本 API 请求,再执行 /ide 或工具调用。

NODE_USE_ENV_PROXY=1会启用 Node 的原生环境代理行为,只应在确认当前 Node/CLI 版本和部署方式需要时设置。不要为了“试试看”同时开启多个代理机制。

4. 为什么大写 NO_PROXY 正确,IDE 仍连接失败

Claude Code issue #79545记录了一种大小写优先级问题:在 NODE_USE_ENV_PROXY=1 下,如果小写 no_proxy 存在但没有 loopback,它可能优先于正确的大写 NO_PROXY。结果是本地 IDE WebSocket 被送入 HTTP/HTTPS 代理。

检查代理变量(不要输出代理密码)
# macOS / Linux
env | grep -i proxy

# PowerShell
Get-ChildItem Env: | Where-Object Name -Match 'proxy'

修复重点不是删除所有代理,而是让本机地址始终绕过代理。保存当前值后,把两种大小写都统一为包含 localhost,127.0.0.1,::1 的列表。重启后再次连接 IDE,并检查企业代理日志中是否还出现本机 loopback 端口。

5. 企业 HTTPS 代理下卡在 Checking connectivity

公开 issue #81611记录过 Claude Code 2.1.220 的启动预检在企业 HTTPS 代理下返回 ERR_SOCKET_CLOSED,但同一代理上的 curl 与实际 SDK 请求可达。这个案例说明:预检使用的网络客户端与模型请求路径可能不同。

  1. 使用同一代理对当前 API/Base URL 做最小可达性测试。
  2. 用无效测试密钥得到明确 401,也能证明网络已经到达 API;不要使用生产密钥做公开诊断。
  3. 记录 Claude Code 版本,优先升级到当前稳定版本后复测。
  4. 如果问题明确由版本回归引起,可在隔离测试环境临时固定已知可用版本,同时保留升级计划。
  5. 不要关闭 TLS 验证来绕过企业证书问题;应安装组织提供的可信 CA,并按官方方式配置证书链。
不要把 issue 中的旧版本号当作长期方案版本回退只用于确认回归和临时恢复。修复发布后应恢复受支持版本,并重新验证代理和证书设置。

6. Claude Code 中转 API 的分层验证

结果判断
控制台没有任何请求记录请求尚未到达 Base URL,检查环境变量、DNS、代理和客户端读取路径
控制台记录 401/403网络已到达网关,转查 API Key、密钥分组和模型权限
短请求成功,长任务中途 ECONNRESET检查流式持续时间、网络切换、上游中断和代理空闲超时
API 请求成功,只有 /ide 失败检查 NO_PROXY/no_proxy 和本地 WebSocket
多个网络都高频重置记录请求 ID、时间和版本,排查客户端或服务端问题

Claude Code 中转配置见Claude Code API 配置教程。提交客服时提供脱敏时间、模型、错误码、请求 ID、版本和复现步骤,不要发送完整密钥。

7. 修改后的验证与回滚

  1. 备份修改前的代理变量和值,代理密码必须脱敏。
  2. 新开终端,发送一个短文本请求。
  3. 连接 IDE,确认本地 WebSocket 不经过代理。
  4. 运行一个持续时间稍长但只读的任务,观察是否中途重连。
  5. 恢复原配置重复测试,确认问题确实由本次修改解决。

Tool Use 截断与重连要分开排查

工具调用中途没有结束,不一定是代理断线。先保存原始响应中的 tool call、停止原因、流式事件顺序和请求 ID,再按下面顺序定位:

  1. 响应完整性:确认 JSON 或参数片段是否在传输层被截断;若网关日志已收到完整响应,转查客户端解析。
  2. 上下文与输出预算:记录输入/输出 tokens、工具结果长度和最大输出设置,避免把预算不足误判为 ECONNRESET。
  3. 代理空闲超时:长时间没有增量事件时,检查代理和网关 idle timeout;用短工具结果复现并对照直连路径。
  4. 回归验证:分别运行纯文本、单工具、连续工具三组任务;只有第三组失败时,优先检查工具结果拼接和重试逻辑。

该清单用于区分协议/解析、上下文预算和网络重连,不对未测量的成功率或稳定性作承诺。

8. 常见问题

? ECONNRESET 一定是代理问题吗?

不一定。它只表示连接被重置;无代理环境也可能出现。结合代理变量、请求记录、客户端版本和是否跨网络复现判断。

? NO_PROXY 应该写什么?

至少写入 localhost、127.0.0.1 和 ::1,并同步检查小写 no_proxy,避免本地 IDE WebSocket 被送进代理。

? 卡在 Checking connectivity 怎么办?

用同一代理测试 API 实际可达性并记录版本。若实际请求可达而预检失败,优先升级;确认版本回归后才临时回退。

? 配置代理后需要重启吗?

需要。旧的 Claude Code 和编辑器进程不会自动继承新环境变量,应完全退出后重新打开。

* 本文为 island AI Coding 技术团队原创整理。网络分层参考 Claude Code 官方错误参考和公开 issue;issue 行为可能随版本变化,不能把特定旧版本回退当作永久配置。更新时间:2026-09-24。

参考:Claude Code 官方错误参考 · NO_PROXY 与 IDE WebSocket · 企业 HTTPS 代理预检 · Windows ECONNRESET