GitHub Copilot 在 WSL 中无法工作——VS Code Remote 代理设置
问题表现
如果你有以下问题之一:
![图片:Copilot 错误提示]
- 对话没有输出
![图片:无输出]
- 显示 fetch failed
![图片:Fetch Failed]
- 模型名称不显示
![图片:模型名称缺失]
问题分析
查看 Copilot Chat 的 output 显示:
![图片:Output 日志]
![图片:Proxies 错误]
如果显示 proxies 相关问题,可以确定是 WSL 中运行的 VS Code 调用了宿主机的 proxy 设置的问题。
![图片:代理设置]
该选项默认开启,会在 VS Code 远程连接 WSL 开发中继承宿主机的 proxy 本地设置。问题就出在这里,如果你使用的是宿主机本机运行的代理程序,那么 proxy 的 ip 就会设置为 127.0.0.1,但是在 WSL 中想要访问宿主机的代理端口,ip 并不是 127.0.0.1(这会访问到 WSL 自己),而是需要通过如下方式查询宿主机 IP,然后访问到宿主机上的代理端口:
hostip=$(ip route show | grep -i default | awk '{ print $3}')
echo $hostip
我的输出:
172.25.48.1
因此 WSL 中要通过 172.25.48.1 IP 来访问宿主机上的端口。
| 组件 | 监听端口 | 说明 |
|---|---|---|
| WSL 2 | - | - |
| VS Code Remote | - | - |
| Windows Host | 监听端口 X | 返回 172.25.48.1 |
| Default Proxy | 127.0.0.1 | X 连接被拒绝 (Self) |
| Correct Proxy | 172.25.48.1:Port X | 流量转发 |
Loopback: 127.0.0.1
Query: ip route show | awk '{ print $3}'
Proxy App Host IP: 172.25.48.1
Loopback: 127.0.0.1
问题解决
- 如果可以通过网络直连,直接关闭
http: Use Local Proxy Configuration。 - 如果依然需要设置代理,完成 1 后,修改如下设置:
![图片:设置界面]
注意:部分社区方案建议将 Copilot 完全工作在宿主机上(即设置 ),但这会导致 Copilot 无法修改 WSL 中的文件,Agent 模式将形同虚设。


