必须同时配置extensions.gallery.serviceurl和extensions.gallery.cacheurl且同域、结尾不带/,否则vscode 1.83+忽略配置;还需检查settings.json路径、进程重启、命令行安装需设vscode_extensions_msa_url环境变量。

VSCode 插件下载慢,根本不是 VSCode 本身卡顿,而是请求链路在境外服务器、CDN 调度、DNS 解析或代理配置上某处断了——99% 的“Installing…” 卡住,实际连第一个 HTTP 响应都没收到。
为什么改了 extensions.gallery.serviceUrl 还是卡在 loading?
VSCode 1.83+ 强制要求 extensions.gallery.serviceUrl 和 extensions.gallery.cacheUrl 必须同时存在、同域名、结尾不带 /,缺一不可。只配一个等于没配。
- 常见错误:写成
"https://vscode.cdn.azure.cn/_apis/public/gallery/"(末尾多斜杠),导致拼出/gallery//publishers返回 404 - 另一个坑:把配置写进工作区
settings.json,但 VSCode 只读用户级设置(路径:%APPDATA%\Code\User\settings.json或~/.config/Code/User/settings.json) - 验证是否生效:按
Ctrl+Shift+P→Developer: Toggle Developer Tools→ Console 标签页,搜索插件时看 GET 请求地址是否已变成镜像域名,而不是marketplace.visualstudio.com
code --install-extension 命令不走 settings.json 配置
命令行安装完全绕过 UI 层设置,它依赖环境变量 VSCODE_EXTENSIONS_MSA_URL,而不是 settings.json 里的字段。
- 临时生效:终端里先执行
VSCODE_EXTENSIONS_MSA_URL=https://vscode.cdn.azure.cn code --install-extension esbenp.prettier-vscode - CI/CD 或远程开发中,必须在脚本里显式
export VSCODE_EXTENSIONS_MSA_URL=... - 如果仍报
connect ETIMEDOUT,大概率是后台开着 Clash/Surge 但未开启「System Proxy」,导致code进程 DNS 解析失败
某些插件(如 ms-python.python)安装后还在下载,是因为镜像源不管用
镜像源只加速 Marketplace 主体协议(插件元数据 + .vsix 包),但像 Python、Rust、Go 这类插件,会在安装后额外拉取语言服务器二进制(pyright、rust-analyzer 等),这部分请求直连微软 Azure Blob(vsextensions.blob.core.windows.net),完全不走 gallery 配置。
- 这类下载卡住时,Network 面板会看到大量
GET https://vsextensions.blob.core.windows.net/...请求 pending - 解决方式只有两个:配系统级 HTTP 代理(确保
http.proxyStrictSSL设为false),或手动预下载对应语言服务器并放入插件目录的./dist或./server子目录 - 别信“一键安装推荐插件包”——并发触发多个语言服务器下载,极易触发本地带宽争抢和 CDN 限速
离线安装 .vsix 失败,问题往往不在网络
双击没反应、code --install-extension xxx.vsix 报错,大概率是文件损坏或版本不兼容,而非网络问题。
- 用 ZIP 工具打开
.vsix,确认根目录下有extension/package.json;没有说明下载不完整 - 检查
package.json中的engines.vscode字段,例如"^1.85.0",若你用的是 VSCode 1.82 就会静默失败,只卡在 “Installing…” - Windows 路径含空格必须加引号:
code --install-extension "C:\Users\Alice\Downloads\ms-python.python-2024.10.1.vsix" - 绝对避免用
code --install-extension安装从非官方渠道下载的.vsix—— 它会尝试联网校验签名,反而更慢
最常被忽略的一点:插件自动更新弹窗(比如右下角“Python 扩展有新版本”)根本不读 settings.json,它硬编码在 VSCode 安装目录下的 product.json 文件里。想让自动更新也走镜像,这个文件也得改。











