问题描述
在 Visual Studio 2022 中使用 Copilot 时,一直显示'完成你的请求时出现了问题。请重试'。
点击'显示输出日志'发现可能是网络原因,但在浏览器打开显示的是 404,说明可以正常连接。
尝试过多种 AI 建议的排查方向,包括设置代理、防火墙和网络原因。经过排查,防火墙已关闭,未设置全局代理(仅使用浏览器插件),且网络环境在其他编辑器(如 VSCode)中正常。
解决方案
通过 AI 助手获取了一系列测试命令来进一步诊断环境配置。
首先检查环境变量和 WinHTTP 代理状态:
$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
结果显示可以正常连接到 Copilot 的域名。
接着检查具体的代理注册表项:
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
确认代理未设置。DNS 解析也是正常的。
然而,执行 curl 命令时发现无法访问到模型列表:
curl.exe -I https://api.githubcopilot.com/models
curl.exe -vk https://api.githubcopilot.com/models
这表明很可能是网络被墙。加上代理后测试:
curl.exe -x http://127.0.0.1:10809 -vk https://api.githubcopilot.com/models
看来就是域名被墙了,国内网络无法正常访问,那么加上代理应该就可以了。为了让代理不影响到其他应用,我们可以只给命令行设置代理,然后从命令行启动 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"
终于能愉快地使用 Copilot 写代码了。之前也试过设置全局代理,原来还需要添加 COPILOT_USE_DEFAULTPROXY 变量才会生效。


