在使用 VSCode 进行远程开发时,Copilot 的 Claude 模型有时会出现突然不可用的情况。特别是当我们需要通过代理访问服务时,本地环境往往能正常调用,但一旦切换到 SSH 远程会话,Agent 模式就会报错提示工作区异常。
很多开发者会尝试在本地设置中强制将扩展运行在 UI 端,并配置本地代理地址。虽然这能让 Chat 功能恢复,但 Agent 编辑功能却会失效,报错信息通常是 copilotAllow edits to sensitive files?The model wants to edit files outside of your workspace。这并非真的文件敏感,而是因为强制本地运行导致远程路径无法被识别,从而判定工作区异常。
问题的核心在于:远程开发时,Copilot 应当跟随远程环境运行,而不是被锁定在本地。解决思路是将代理配置穿透到远程服务器,同时移除强制本地运行的限制。
首先,检查本地 settings.json,找到之前为了修复连接而添加的 remote.extensionKind 配置。如果其中包含 GitHub.copilot 或 GitHub.copilot-chat 强制指定为 ui 的内容,建议将其注释掉或删除。这一步是为了允许扩展在远程环境中加载。
接下来,重点在于远程端的网络配置。打开 SSH 远程连接的配置文件,确保代理端口能够正确映射。你需要在远程服务器的 VSCode 设置中(即 .vscode-server 目录下的 settings.json)添加代理配置。例如,如果你的本地代理端口是 1082,可以在远程设置中添加如下内容:
{
"http.proxy": "http://127.0.0.1:1082",
"http.proxyStrictSSL": false,
"remote.extensionKind": {
"pub.name": ["ui"]
}
}
注意这里保留 pub.name 仅作为占位示意,实际使用时请根据具体扩展 ID 调整,或者保持为空以让系统自动管理。关键是将 http.proxy 指向正确的本地代理地址,这样远程服务器就能通过你的本地代理访问外部服务了。
完成上述修改后,重启 VSCode 客户端。此时你会发现 Claude 模型重新出现,且 Agent 模式也能正常编辑文件,因为工作区路径现在是在远程上下文中被正确识别的。整个过程不需要复杂的网络工具,只需理清代理和扩展运行位置的关系即可。

