“failed to fetch extensions”本质是vscode主进程向marketplace.visualstudio.com或open-vsx.org发起https请求后未获有效响应,不区分403、502、连接拒绝等具体错误;最快验证方式是打开开发者工具network标签页观察安装时的请求目标与状态。

VSCode 插件下载不了,90% 不是插件坏了,也不是你网络“完全断了”,而是 VSCode 在某个中间环节静默卡住——比如 DNS 解析失败后 fallback 到已停用的旧地址、签名校验强制联网、或远程环境根本没继承代理。
Failed to fetch extensions 是什么链路断了
这个提示本质是 VSCode 主进程(Electron)调用 fetch() 向 https://marketplace.visualstudio.com 或 https://open-vsx.org 发起 HTTPS 请求后,没收到有效响应。它不区分错误类型:403、502、net::err_connection_refused、net::err_cert_date_invalid 全部统一显示为 “Unable to fetch extensions”。
- 最快验证方式:按
Ctrl+Shift+P→ 输入Developer: Toggle Developer Tools→ 切到Network标签页 → 点一次安装 → 看请求发往哪个域名、是否 pending 或 status 为 0 - VSCode 1.85+ 默认优先连
open-vsx.org,但该域名在国内部分网络下 DNS 解析不稳定,且 fallback 逻辑会悄悄切到已停用的旧地址,导致静默 404 - 别信“系统代理已开”——VSCode 不自动继承
HTTP_PROXY环境变量,必须在设置里显式填http.proxy
手动安装 .vsix 却提示 Unable to load extension
这不是文件损坏,是 VSCode 加载前仍会强制联网校验签名。哪怕你断网拖进去了,它也会先发一个 HEAD 请求;失败后才退到本地加载,而这个“失败后”的流程可能被跳过或中断。
- 可靠做法:**先断网** → 完全退出 VSCode(Windows 要杀掉所有
Code.exe和Code Helper.exe)→ 再启动 → 拖入.vsix文件 - 临时调试可用:
settings.json加"extensions.installVerification": false(验证完务必删掉) - 检查
.vsix解压后的package.json中engines.vscode字段,例如你本地是1.92.0,插件写的是"^1.93.0",就真不兼容
Remote SSH 环境下插件装不上
Remote 插件安装走的是远程机器的网络路径,不是你本地的。你在本地能装的插件,远程很可能连 marketplace.visualstudio.com 都解析不了。
- 先在远程终端执行:
curl -I https://marketplace.visualstudio.com,卡住或报错说明网络不通 - VSCode Remote 不转发本地
HTTP_PROXY,得在远程 shell 配置文件(如~/.bashrc)里加:export HTTP_PROXY=http://x.x.x.x:port - 某些插件(如
ms-python.python)首次启用时会在远程后台下载语言服务器二进制包,若远程缺python3、make或磁盘满,也会静默失败——查Remote-SSH输出面板日志最直接
最容易被忽略的一点:改完 settings.json 里的镜像源或代理后,必须完全退出 VSCode 进程再重启,仅重载窗口(Developer: Reload Window)不生效;而 Windows 用户若路径含中文(如 C:\Users\张三),VSCode 启动时传给 Node.js 子进程的路径未转义,会直接崩,连错误都不报。











