AI 工具 编程助手

Cursor、GitHub Copilot 网络配置指南:编辑器与终端代理设置、连接超时排查

浏览器能上网不代表编辑器能上网。VS Code、Cursor 和终端里的 git、npm、pip 各自有一套代理读取逻辑,配漏一处就会出现「网页正常、补全卡死」的怪现象。

发布: 更新: 审阅: 约 5 分钟阅读

Cursor 和 GitHub Copilot 的网络问题,九成不是节点选得不对,而是代理没有被对应的进程读到,或者 TLS 链路被中间设备拦截。典型症状就是那句经典的矛盾:浏览器打得开 GitHub,编辑器里的补全一直转圈。

原因在于,桌面编辑器里其实同时跑着好几个独立的网络主体:编辑器主进程、扩展宿主进程、内置终端里的 Shell、以及你在终端里调用的 git / npm / pip。它们各有一套读取代理的规则,配漏一处就出问题。

这类工具对网络有什么要求?

延迟敏感,带宽不敏感

代码补全是典型的高频小请求,每次只有几 KB,但一天可能发起上千次。端到端延迟每增加 100 ms 都能明显感觉到「跟不上手速」。所以选节点时应该优先看延迟和抖动,不必追求大带宽,也不需要家宽 IP。

需要稳定的长连接

对话式的代码生成同样走流式返回,中转线路如果对空闲连接设置了较短的超时,会表现为生成到一半停住。这与 Claude 的断流问题 是同一类原因。

域名分散,规则要写后缀

认证、遥测、模型接口、扩展市场往往分布在不同子域上。只放行主站域名,很容易出现「登录成功但补全无响应」的半通状态。

对出口地区不挑剔

和 ChatGPT、Gemini 不同,这类开发工具通常不做地区封锁,日本、新加坡、美国西海岸都可以,选延迟最低的即可。各地区参考延迟见 机场节点延迟多少算正常。

常见报错与原因对照表

报错或现象出问题的环节最可能的原因处理方向
扩展提示无法连接到服务器扩展宿主进程扩展未读取到代理设置配置编辑器的 http.proxy 或启用 TUN
ETIMEDOUT / ECONNRESET传输层出口被阻断,或代理未覆盖该域名用域名后缀规则重写分流
无法验证首个证书 / 证书链自签名TLS 握手中间人解密设备、杀毒软件、自签根证书未受信把根证书加入系统信任库
代理隧道建立失败,状态码 407代理认证上游代理需要用户名密码在代理地址里带上认证信息
登录成功但补全无响应部分域名漏配认证域名走了代理、接口域名没走检查规则是否覆盖全部子域
补全有响应但很慢线路节点延迟高或抖动大换低延迟节点,关闭自动切换
本地开发服务器打不开排除列表localhost 被送进了代理配置 NO_PROXY / http.noProxy
终端里 git 超时但网页正常工具级配置git 未配置代理,或走的是 SSH 端口单独给 git 配代理或改用 HTTPS
扩展市场加载失败编辑器主进程主进程未走代理在设置中显式指定代理地址

编辑器侧怎么配?

VS Code 和 Cursor 共用同一套设置项。打开命令面板搜索 Preferences: Open User Settings (JSON),加入:

{
  "http.proxy": "http://127.0.0.1:7890",
  "http.proxySupport": "on",
  "http.proxyStrictSSL": true,
  "http.noProxy": [
    "localhost",
    "127.0.0.1",
    "::1",
    "192.168.0.0/16",
    "*.internal.company.com"
  ]
}

几个字段的含义:

  • http.proxy:编辑器主进程和大部分扩展使用的代理地址,改完需要完全退出重启。
  • http.proxySupport:设为 on 时让扩展也走这个代理;设为 override 会强制覆盖扩展自身的代理逻辑,个别扩展不兼容时改回 on。
  • http.proxyStrictSSL:保持 true。设为 false 会关闭证书校验,是很多教程里的错误建议。
  • http.noProxy:本地和内网地址一定要排除,否则本地调试会全线失败。

如果代理需要认证,地址写成 http://用户名:密码@127.0.0.1:7890 的形式。

更省事的方案与其逐个进程配代理,不如在客户端里开启 TUN / 虚拟网卡模式,由客户端在网络层接管所有流量。编辑器、终端、Docker 都不用再单独配置。开启方式见 Clash Verge 使用教程。

终端侧怎么配?

通用环境变量

大多数命令行工具会读取这三个变量,写进 ~/.zshrc 或 ~/.bashrc:

export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export ALL_PROXY=socks5://127.0.0.1:7891
export NO_PROXY=localhost,127.0.0.1,::1,192.168.0.0/16,*.local

需要随手开关的话,定义两个函数更方便:

proxy_on() {
  export HTTP_PROXY=http://127.0.0.1:7890
  export HTTPS_PROXY=$HTTP_PROXY
  export NO_PROXY=localhost,127.0.0.1,::1
  echo "proxy on"
}
proxy_off() {
  unset HTTP_PROXY HTTPS_PROXY ALL_PROXY NO_PROXY
  echo "proxy off"
}

Windows PowerShell 下对应写法:

$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"

各工具的独立配置

环境变量管不到的部分,需要单独设置:

# Git(只对 HTTPS 方式的仓库生效)
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890
# 只给 GitHub 走代理,国内镜像保持直连
git config --global http.https://github.com.proxy http://127.0.0.1:7890

# npm / pnpm
npm config set proxy http://127.0.0.1:7890
npm config set https-proxy http://127.0.0.1:7890

# pip(写进 ~/.pip/pip.conf 或命令行临时指定)
pip install --proxy http://127.0.0.1:7890 包名

# Go
go env -w GOPROXY=https://proxy.golang.org,direct

SSH 方式克隆仓库走的是 22 端口,普通 HTTP 代理管不到,需要在 ~/.ssh/config 里指定:

Host github.com
  HostName github.com
  User git
  ProxyCommand nc -X connect -x 127.0.0.1:7890 %h %p

GitHub 本身访问慢、克隆速度低的问题另有一套优化方法,见 GitHub 访问慢怎么解决。

证书错误怎么处理?

出现「无法验证首个证书」时,按这个顺序排查:

  1. 确认是否处于被解密的网络。公司、学校网络常部署 HTTPS 中间人设备,此时所有站点的证书颁发者都会变成该机构的根证书。
  2. 把根证书加入系统信任库。macOS 用钥匙串访问导入并设为始终信任;Windows 导入到「受信任的根证书颁发机构」。
  3. 给 Node 单独指定。编辑器内置 Node 有时不读系统库:
export NODE_EXTRA_CA_CERTS=/path/to/corp-root-ca.pem
  1. 检查客户端的自签证书。开启 MITM 或 HTTPS 解析功能的代理客户端会生成自己的根证书,同样需要安装并信任。
不要用关闭校验来「解决」问题把 http.proxyStrictSSL 设为 false,或者设置 NODE_TLS_REJECT_UNAUTHORIZED=0,确实能让报错消失,但同时也让所有 HTTPS 连接失去身份验证,处于中间人网络中时风险很高。这类开关只适合临时定位问题,用完立即改回。

逐项排查流程

按顺序做,每步只改一处:

  1. 确认基础连通。终端里 curl -I https://github.com 能否返回,不能就先解决代理本身,参考 Clash 开启后无法上网。
  2. 确认编辑器是否走代理。开发者工具的网络面板或扩展日志里看请求是否发出、卡在哪一步。
  3. 区分主进程和扩展进程。扩展市场能加载但补全不行,说明是扩展宿主的代理没生效,重点检查 http.proxySupport。
  4. 检查排除列表。本地服务同时挂掉就是 NO_PROXY 配漏了。
  5. 检查证书链。有证书类报错优先处理证书,其他配置再对也没用。
  6. 最后再换节点。确认配置无误后,如果只是慢,换低延迟节点;如果频繁重置,换线路类型。

使用习惯上的几点建议

  • 给开发工具单独一个策略组,固定节点,关闭自动切换,避免长请求中途换出口。
  • 公司设备遵守公司策略。企业网络里的中间人设备和访问限制是管理要求,绕过它可能违反内部规定,遇到限制应走 IT 支持渠道。
  • 把代理配置写进 dotfiles,换机器时不用重新摸索一遍。
  • 区分开发代理和日常代理。日常浏览可以用自动选择,开发工具用固定节点,两者互不干扰。

常见问题

浏览器能正常访问,为什么编辑器里的补全一直连不上?
因为两者读取代理设置的方式不同。浏览器默认跟随系统代理,而 VS Code 和 Cursor 内置的 Node 运行时以及扩展进程不一定跟随,某些扩展只认 HTTPS_PROXY 环境变量,某些只认编辑器自己的 http.proxy 配置。最稳妥的做法是三处都配上:系统代理、编辑器设置、以及启动编辑器的那个 Shell 的环境变量,或者干脆开启 TUN 模式由客户端在网络层接管。
报错提示无法验证证书,是节点的问题吗?
通常不是。这类错误说明 TLS 握手时拿到的证书不受信任,常见来源有三个:公司或校园网络部署了中间人解密设备、本机装了会拦截 HTTPS 的杀毒软件、以及代理客户端开启了自签根证书但系统没有信任它。解决方向是把对应的根证书加入系统信任库,或者通过 NODE_EXTRA_CA_CERTS 指给编辑器,而不是去关闭证书校验。
关闭证书校验能解决问题吗?
能让报错消失,但代价是所有 HTTPS 流量都不再验证对端身份,等于把中间人攻击的大门打开。只有在明确知道链路可信、且仅用于临时定位问题时才可以短暂使用,定位完必须改回来。长期方案永远是把正确的根证书装进信任库。
补全能用但很慢,换更快的节点有用吗?
有用,而且是这类工具里延迟收益最明显的场景。代码补全是高频小请求,端到端每多 100 ms 都能被感知。把节点从美东换到日本或美西,往返时间可能从 250 ms 降到 120 ms,体感差别很大。相比之下带宽几乎不重要,补全请求的数据量很小。
为什么开了全局模式之后本地开发服务器打不开了?
因为 localhost 和内网地址也被送进了代理。代理服务器当然连不到你本机的 127.0.0.1,于是本地调试全线失败。解决办法是配置 NO_PROXY 排除本地地址段,编辑器里对应的是 http.noProxy 设置。养成习惯永远把本地回环、内网段和公司域名写进排除列表。
终端里 git clone 超时,但 npm install 正常,是怎么回事?
说明代理只配到了一部分工具。npm 有自己的 proxy 配置项,git 有自己的 http.proxy,两者互不影响,而 HTTPS_PROXY 环境变量只对读取它的程序生效。另外 git 走 SSH 协议时用的是 22 端口,普通 HTTP 代理根本管不到,需要单独在 SSH 配置里指定代理命令,或者改用 HTTPS 方式克隆。

↑ 返回顶部