Claude Code 和 Cursor 长任务断线,一个常见原因是请求根本没走你以为的那条代理。Claude Code 只读 HTTPS_PROXY / HTTP_PROXY 这类环境变量,且官方文档写明不支持 SOCKS 代理;Cursor 基于 Electron,不会自动读取系统代理,要用它自己的网络设置。逐项检查这几处,查不清或配不全时,再用 TUN 模式在系统层统一接管。
先判断:断在哪一类场景
不同症状指向不同位置,先对号入座,免得一上来就全部重配:
| 症状 | 更可能的位置 | 先查哪一节 |
|---|---|---|
| Claude Code 启动就连不上,或首次请求超时 | 代理变量没设或格式不对 | Claude Code 的代理变量 |
| 配了 SOCKS 端口,Claude Code 仍然不通 | Claude Code 不支持 SOCKS | Claude Code 的代理变量 |
| Cursor 对话时报连接失败,或流式输出到一半停 | HTTP/2 被网络设备处理不好,或代理设置没生效 | Cursor 网络设置 |
| 终端能用,从图标启动的 IDE 不行(或反过来) | 环境变量没有继承到该进程 | 子进程与 MCP |
| 设置都对了,长任务仍然间歇性中断 | 线路本身抖动,或中途切换了出口 | 最后两节 |
Claude Code:代理变量、SOCKS 与启动时机
以下均依据 Claude Code 官方文档的网络配置说明,版本更新后以官方为准。
Claude Code 读哪些变量,优先级是什么
Claude Code 遵循标准代理环境变量:HTTPS_PROXY、HTTP_PROXY,以及指定哪些地址不经过代理的 NO_PROXY。小写形式同样有效,读取顺序依次是 https_proxy、HTTPS_PROXY、http_proxy、HTTP_PROXY,取第一个已设置的。变量的值要带协议头,例如 http://127.0.0.1:7890,缺少协议头会导致启动时报错并指出是哪个变量。
为什么本地只有 SOCKS 端口就连不上
官方文档明确写着 Claude Code 不支持 SOCKS 代理。很多代理软件同时给出 HTTP 端口和 SOCKS 端口,Claude Code 要填的是 HTTP 那个端口。只开了 SOCKS 端口、又填到 HTTPS_PROXY 里,是一个常见的失败原因。
改了变量为什么没有生效
变量是在启动时读取一次的,已经在运行的会话不会感知后来的修改。改完要重新启动 Claude Code。确认是否生效,可以在会话里执行 /status,查看 Proxy 一行显示的地址;也可以用 claude --debug 启动,日志写在 ~/.claude/debug/ 目录下。如果使用后台会话(claude agents 或 --bg),它们由一个独立的常驻进程托管,只在 shell 里 export 不一定传得进去,官方建议把变量写进 ~/.claude/settings.json 的 env 字段。
「断线」有时是超时机制在起作用
Claude Code 自带流式响应的空闲监测:直连 Anthropic API 时,如果长时间没有收到任何字节(官方默认值为 180 秒),会主动中止这次请求并重试。链路中间出现长时间停顿,在你看来就是「断了」。这也解释了为什么线路的抖动和卡死比单纯的低速更伤长任务。开发者视角的超时与流式排查,可以看 Claude API 总超时、流式输出中断?开发者连接稳定性排查指南。
Cursor:它有自己的网络设置
Cursor 基于 Electron,不会自动沿用系统代理。可以检查的位置(界面名称以当前版本为准):
- 设置里搜索
proxy,查看http.proxy是否已填;http.proxySupport可以选择是否使用系统代理。 - 从终端执行
cursor命令启动时,会继承当前终端里的HTTP_PROXY等变量;从桌面图标启动则不会。 - 打开设置里的 Network 部分,点击运行诊断(Run Diagnostics),看哪一项检查没通过。
- 如果诊断或日志指向 HTTP/2,可以尝试勾选 Disable HTTP/2,或把 HTTP 兼容模式改为 HTTP/1.1,然后完全退出再重新打开 Cursor。部分网络设备对 HTTP/2 流式传输处理不好,会造成响应被截断或卡住。
索引卡住重建时,先看诊断结果,再决定是网络问题还是项目本身(文件太多、忽略规则没配)的问题,不要默认都是代理造成的。
终端子进程与 MCP Server:变量能不能传到
MCP Server 通常以子进程方式被 Claude Code 或 Cursor 拉起,它继承的是启动它的那个进程的环境变量。几个容易漏掉的点:
- 从图标启动的 IDE,读不到你在 shell 配置文件里写的变量。需要在 IDE 或工具自身的配置里单独设置,或改用终端命令启动。
- 有些工具只认自己的配置项,不读
HTTP_PROXY。例如 Node.js 内置的 fetch 在较早版本中会忽略代理变量,较新版本需要显式开启NODE_USE_ENV_PROXY=1(Node 24 起,部分 22.x 版本也支持),具体以所用版本的 Node.js 文档为准。 - Git、包管理器(npm、pip 等)各有自己的代理配置,不会自动跟随。
工具一多,逐个配置就容易漏。这正是需要系统层统一接管的场景。
TUN 模式:什么时候值得开
TUN 模式在系统网络层接管流量,不依赖每个工具自己去读代理变量,终端里的命令行工具、IDE 后台请求、MCP 子进程的流量都会走同一条通道。TonBoVPN 客户端内置 TUN 模式;它和系统代理的完整区别、适用场景,见 TUN 模式 VPN 是什么 和 系统代理 vs TUN 模式。
| 方案 | 覆盖范围 | 配置成本 | 局限 |
|---|---|---|---|
| 环境变量(HTTPS_PROXY 等) | 读取该变量的命令行工具 | 每个工具、每个终端各设一次 | 漏配即直连;Claude Code 不支持 SOCKS;GUI 启动的进程不继承 |
| IDE 自带代理设置 | 该 IDE 自己的请求 | 每个 IDE 配一次 | 子进程、终端里的工具不一定跟随 |
| TUN 模式 | 系统内所有 IP 流量 | 开启一次,不必逐个工具配置 | 不能修复线路本身的抖动;中途切换出口仍会断开长连接 |
开了 TUN 之后,长任务仍断线要查什么
TUN 解决的是「该走通道的流量有没有全走」,不是线路质量问题。仍然断线时,可以查三点:任务过程中有没有切换过线路或节点;线路的首字节时间是否忽高忽低(做法见 claude.ai 打开慢、一直转圈的四条自测命令);是否有多个任务同时占用同一条线路的带宽。
一份跑长任务前的检查清单
- Claude Code:
/status看 Proxy 行是否是你要的地址,填的是 HTTP 端口而不是 SOCKS 端口。 - Cursor:运行一次网络诊断,必要时关闭 HTTP/2 并完全重启。
- 从哪里启动进程,就确认变量设在哪里;拿不准时统一从终端启动。
- 任务开始前确认线路稳定,任务进行中不要切换节点。
- TonBoVPN 新用户注册即送 1GB 流量,长时间大量调用模型时流量消耗较快,请按自己的使用量评估,用完后可按周、月、季、年选购流量包,价格以官网说明为准。
常见问题
Claude Code 要不要把 NO_PROXY 设成 *?
不要。设成 * 表示所有请求都不经过代理,等于没配。只有访问内网地址或不需要走代理的主机时,才把它们列进 NO_PROXY。
开了 TUN 还需要设环境变量吗?
通常不需要。TUN 在系统层接管流量,工具不读变量也一样走通道。个别场景可以保留变量作为补充,两者不冲突,但要避免两层代理叠加造成混乱。
Cursor 索引卡住一定是网络问题吗?
不一定。先跑网络诊断,诊断通过的话,再检查项目文件规模和忽略规则。
环境变量改了之后,已经开着的终端会生效吗?
只对在设置之后新启动的进程生效,已经运行的进程不会重新读取。改完变量后,重启对应的工具或新开终端。









