VS Code + WSL 下 GitHub 访问不稳定 & Copilot/Codex 一直 Thinking 的完整解决方案(国内平台安全版)
VS Code + WSL 下 GitHub 访问不稳定 & Copilot/Codex 一直 Thinking 的完整解决方案(国内平台安全版)
本文记录一次开发环境排查过程:
从 VS Code + WSL 环境下 GitHub 克隆失败,到 Copilot/Codex 长时间停在 “Thinking…” 的完整解决步骤。
特别说明:
文中提到的 “网络辅助工具”“连接加速端口”“外网连通性优化” 都指代常见的 网络优化方式,用于解决访问境外开发资源时的稳定性问题(GitHub、Copilot 等)。
📌 一、问题概述
使用 VS Code + WSL 进行开发时可能遇到以下问题:
❌ 1. Git clone 失败
fatal: unable to access 'https://github.com/...': Failed to connect to 172.xx.xx.xx port xxxx ❌ 2. VS Code Copilot / Codex 一直 “Thinking…”
- 无法生成补全
- 长时间转圈
- VS Code 日志提示连接境外服务失败
🔍 二、核心原因(理解网络结构非常重要)
WSL 的网络结构分为 3 层:
| 层级 | 属于哪里 | 特点 |
|---|---|---|
| Windows 主机 | VS Code 本体运行、网络辅助软件运行 | 使用主机网络 |
| WSL Linux | Git、curl、Copilot 后台运行 | 127.0.0.1 指的是 WSL 自身 |
| Remote WSL 扩展 | VS Code 与 WSL 的桥梁 | 同时依赖两端的网络配置 |
❗关键点:
WSL 中的 127.0.0.1 不是 Windows,而是 Linux 自身。
当需要访问境外服务(如 GitHub、Copilot)时,WSL 必须正确访问到主机的网络出口。
主机出口地址可通过 WSL 查询:
cat /etc/resolv.conf |grep nameserver 示例:
nameserver 172.25.176.1 这个地址每次重启电脑可能变化,因此很多网络相关设置会失效。
⚙️ 三、Git clone 不稳定的解决方案
1️⃣ 清理错误的网络配置
git config --unset http.proxy git config --unset https.proxy git config --global --unset http.proxy git config --global --unset https.proxy unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy ALL_PROXY all_proxy 2️⃣ 测试 WSL 是否能直连 GitHub
curl -I https://github.com 返回 HTTP/2 200 说明已能正常访问。
3️⃣ 如果你使用了“网络辅助工具”
则需要在 WSL 中写入对应的 主机出口地址:
exportHTTP_PROXY="http://172.25.176.1:xxxx"exportHTTPS_PROXY="http://172.25.176.1:xxxx"git config --global http.proxy http://172.25.176.1:xxxx git config --global https.proxy http://172.25.176.1:xxxx 注意:
此处的 xxxx 代表你的“连接中转端口”(常见为 7890/10809 等)。
💡 四、VS Code Copilot/Codex 一直 Thinking 的解决步骤
1️⃣ 修改 VS Code 配置(安全版)
Ctrl + Shift + P → Preferences: Open Settings (JSON) 写入:
{"http.proxySupport":"on","http.systemProxy":false,"http.proxyStrictSSL":false,"terminal.integrated.env.linux":{"NO_PROXY":"localhost,127.0.0.1,::1,.local"}}⚠️ 不要在这里写死 "http.proxy",因为主机出口 IP 是会变化的。VS Code 会自动继承 WSL 环境变量。
🚀 五、永久解决:自动检测并更新 WSL 的网络出口(脚本版)
将下面的脚本保存为:
~/fix_vscode_wsl_proxy.sh ▶️ 脚本内容(国内安全版,已完全脱敏)
#!/usr/bin/env bashset -e # ==============================# VS Code + WSL 外网连通性一键修复脚本# 可在访问境外开发资源(如 GitHub、Copilot)异常时使用# ==============================PORT="${PORT:-7890}"echo"🔍 正在读取主机出口 IP ..."HOST_IP=$(awk'/^nameserver/ {print $2; exit}' /etc/resolv.conf ||true)if[ -z "$HOST_IP"];thenecho"❌ 未找到 nameserver,请手动检查 /etc/resolv.conf"exit1fiecho"✅ 主机出口 IP: ${HOST_IP}"echo" 使用端口: ${PORT}"exportHTTP_PROXY="http://${HOST_IP}:${PORT}"exportHTTPS_PROXY="http://${HOST_IP}:${PORT}"echoecho"🧪 正在测试 Copilot 连接 ..."set +e curl -I --max-time 5 --proxy "http://${HOST_IP}:${PORT}" https://api.githubcopilot.com set -e echoecho"📝 写入 ~/.bashrc 自动配置 ..."BASHRC="${HOME}/.bashrc"MARK="WSL auto network config"if!grep -q "${MARK}""$BASHRC"2>/dev/null;thencat>>"$BASHRC"<<EOF # === ${MARK} === HOST_IP=\$(awk'/^nameserver/ {print \$2; exit}' /etc/resolv.conf) if [ -n "\$HOST_IP" ]; then export HTTP_PROXY="http://\${HOST_IP}:${PORT}" export HTTPS_PROXY="http://\${HOST_IP}:${PORT}" fi # === End of ${MARK} === EOFecho"✅ 已写入 ~/.bashrc"elseecho"ℹ️ 自动配置已存在"fiecho"🎉 完成,重启 VS Code (Remote WSL) 可立即生效。"▶️ 使用方法
nano ~/fix_vscode_wsl_proxy.sh chmod +x ~/fix_vscode_wsl_proxy.sh ~/fix_vscode_wsl_proxy.sh source ~/.bashrc 🧪 六、检查是否成功
- Git 能正常 clone
- curl 可以正常访问 GitHub
- Copilot 能正常返回 200
- VS Code 不再卡 “Thinking…”
- 重启电脑后依旧不用手动配置
📦 七、总结
| 问题 | 根因 | 解决方案 |
|---|---|---|
| Git clone 失败 | 出口 IP 变化、未正确连接外部服务 | 在 WSL 中更新主机出口 IP |
| Copilot 卡住 | VS Code 未继承正确的网络代理 | VS Code 使用 WSL 环境变量 |
| 每次重启都要重新设置 | 主机 IP 每次变化 | 使用自动修复脚本 |