vs2022无法正常使用copilot的解决方案

52 阅读2分钟

问题描述

不知道从什么时候开始,在visual studio2022中用copilot一直显示完成你的请求时出现了问题。请重试

a290e26658f360a83f3c57af1a7b36c1.png

点开显示输出日志发现可能是网络原因,但是我在浏览器打开显示的是404,那就是可以正常连接。

6e3ef7c323c664cce22c60514ffdfd72.png

试过很多AI得到的回答无非以下几种:

  • • 设置了代理
  • • 防火墙
  • • 网络原因

但是经过排查防火墙我早就关闭了,代理我也没有设置过全局,都是使用的浏览器插件。而网络原因更不太可能了,因为我在vscode中是能正常使用copilot的。

解决方案

今天想再试试AI,我又把上面那一大串的错误复制发给了GPT5.2,然后他给出一系列的测试命令(因为使用的vscode里的copilot,所以只需要一直点允许它就能执行命令并获取执行结果了)。

$ErrorActionPreference='Continue'; Write-Host '=== Env Proxy Vars ==='; gci env: | ? { $_.Name -match 'PROXY|COPILOT' } | sort Name | ft -AutoSize; Write-Host '=== WinHTTP Proxy ==='; netsh winhttp show proxy; Write-Host '=== DNS ==='; Resolve-DnsName api.githubcopilot.com | select -First 5 | ft -AutoSize; Write-Host '=== TCP 443 ==='; Test-NetConnection api.githubcopilot.com -Port 443 | fl

28ae4c829690414181af71da9993f358.png

说明是可以正常连接到copilot的域名

$ErrorActionPreference='Continue'; '=== Env Proxy Vars ==='; Get-ChildItem env: | Where-Object { $_.Name -match 'PROXY|COPILOT' } | Sort-Object Name | Format-Table -AutoSize

netsh winhttp show proxy

5b2b00867668770647fadc4085b1542e.png

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable ; reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer ; reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL

34e62216f9bd4d76a14451c5213ff1c1.png

代理也没有设置

Resolve-DnsName api.githubcopilot.com | Select-Object -First 5 | Format-Table -AutoSize

Test-NetConnection api.githubcopilot.com -Port 443 | Format-List

53a1093878d9a5fbddb7469e693faed2.png

DNS解析也是正常的

curl.exe -I https://api.githubcopilot.com/models

curl.exe -vk https://api.githubcopilot.com/models

7ca16df320283038a19e7d24a6f3d230.png

这里出现了一些端倪,curl居然无法访问到模型列表,那很可能还是网络原因了,可能是被墙了,加上代理试试

curl.exe -x http://127.0.0.1:10809 -vk https://api.githubcopilot.com/models

d57a098d62a8103b07c5a29917ce6879.png

那看来就是域名被墙了,国内网络无法正常访问,那么加上代理应该就可以了。为了让代理不影响到其他应用,我们可以只给命令行设置代理,然后从命令行启动vs,为了方便可以写成bat文件

set HTTP_PROXY=http://127.0.0.1:10809
set HTTPS_PROXY=http://127.0.0.1:10809
set NO_PROXY=localhost,127.0.0.1
set COPILOT_USE_DEFAULTPROXY=1

start "" "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.exe"

bf3726329c9f442e70a8490380ba3820.png

终于能愉快的使用copilot写代码了。之前也试过设置全局代理,原来还需要添加COPILOT_USE_DEFAULTPROXY变量才会生效。