在 VSCode 中使用 remote SSH 远程工作时使用 GitHub Copilot
目录
自读研以来一直使用 VSCode 的 remote SSH 功能连接到实验室的服务器或其他服务器上进行远程工作,时常使用 GitHub Copilot 来提高效率。然而近日发现,在使用 remote SSH 远程工作时,GitHub Copilot 的自动补全和对话功能都无法正常工作。尝试若干方法后得以解决,写下这篇博客作为记录和参考。
问题发现与报错信息
最近某次需要使用对话功能时,Copilot 显示请求失败:

报错信息
在 VSCode 的输出面板中查看 GitHub Copilot 的日志,发现有如下错误信息:
2025-06-01 11:22:13.198 [info] activationBlocker from 'languageModelAccess' took for 8016ms
2025-06-01 11:22:29.969 [error] TypeError: fetch failed
at node:internal/deps/undici/undici:13502:13
at processTicksAndRejections
与此同时,在本地 VSCode 中使用 Copilot 一切正常,说明问题大概是出在 remote SSH 的配置或网络连接上。
解决方法
经过查询和尝试,最终的解决方法是在 VSCode 中打开 settings.json
文件,添加以下内容:
"remote.extensionKind": {
"GitHub.copilot": ["ui"],
"GitHub.copilot-chat": ["ui"],
},
添加后的 settings.json
应如:
{
// 其他设置...
"remote.extensionKind": {
"GitHub.copilot": ["ui"],
"GitHub.copilot-chat": ["ui"]
}
}
重新启动远程连接,GitHub Copilot 的自动补全和对话功能就可以正常使用了。
原理探究
从问题描述中可推测,Copilot 可以在本地 VSCode 中正常工作,但在 remote SSH 环境下无法正常使用。这可能是因为 Copilot 在远程环境中需要访问一些网络资源或服务,而这些资源在远程服务器上不可用或配置不当。
根据 VSCode 官方文档 ,extensionKind 用于指定扩展的运行环境。将 GitHub.copilot
和 GitHub.copilot-chat
设置为 ["ui"]
,表示这些扩展只在 UI 线程中运行,而不是在远程服务器上运行。这可以避免一些网络请求和资源访问的问题,从而使 Copilot 在 remote SSH 环境下正常工作。