改extensions.gallery.serviceurl能绕过卡顿,是因为它将默认直连境外marketplace.visualstudio.com的请求替换为国内镜像源(如vscode.cdn.azure.cn),缩短链路、就近接入、规避dns污染与tls握手失败,配合必需的cacheurl配置并彻底重启vscode后即可秒开。

为什么改 extensions.gallery.serviceUrl 就能绕过网络卡顿
VSCode 插件市场默认请求 marketplace.visualstudio.com,国内直连常卡在 TLS 握手或 DNS 解析阶段,Network 面板里看到一堆 pending 状态,不是没连上,而是连上了却等不到响应。镜像源本质是反向代理 + 缓存,把原始请求转发到微软源、缓存响应体,再返回给你——路径变短、节点就近、协议兼容,所以不改代码也能“秒开”。
settings.json 里必须配的两个字段
只配 extensions.gallery.serviceUrl 不够,cacheUrl 缺失会导致插件详情页空白、推荐列表加载失败:
-
"extensions.gallery.serviceUrl":指向插件元数据接口,必须以/_apis/public/gallery或/extensionGallery/extensionGallery/结尾(注意末尾斜杠) -
"extensions.gallery.cacheUrl":用于获取 publisher 信息和图标,路径通常为/_apis/public/gallery/publishers或/extensionGallery/extensionGallery/publishers - 两行必须在同一 JSON 对象内,且前面有逗号分隔(如果前面已有配置)
- 配完必须彻底退出 VSCode 进程:Windows 右键任务栏图标选「退出」,macOS 用 Activity Monitor 杀掉所有
Code进程
命令行安装仍失败?环境变量没生效或镜像未覆盖全链路
code --install-extension 默认不读 settings.json,它走的是启动时继承的环境变量。常见失效场景:
- 终端里没 source ~/.zshrc,
HTTP_PROXY没加载进来 - 用了
VSCODE_EXTENSIONS_MSA_URL但值写错了,比如漏了https://或多加了/api - 某些插件(如
ms-python.python)会额外请求语言服务器二进制包,这部分地址硬编码在插件代码里,镜像源对其无效 - 远程开发(SSH/WSL)下,命令在远端执行,本地
settings.json完全不生效,得在远端机器上配~/.config/Code/User/settings.json
抓包确认是否真走镜像、还是被安全软件劫持
打开 VSCode 开发者工具(Ctrl+Shift+I),切到 Network 标签,刷新插件市场。重点看:
- 所有请求域名是不是都变成
vscode.cdn.azure.cn或你配的镜像域名 - 有没有漏网的
vsextensions.blob.core.windows.net请求——那是插件本体下载地址,镜像源一般不代理它,得靠代理或手动下载 .vsix - 如果看到大量
net::ERR_CONNECTION_REFUSED或 TLS 相关错误,大概率是 360/火绒 拦截了 HTTPS 流量,临时禁用安全软件再试 - 公司内网若拦截非标准域名,可换阿里云镜像:
"extensions.gallery.serviceUrl": "https://vscode-extensions.oss-cn-hangzhou.aliyuncs.com/extensionGallery/extensionGallery/"
最易忽略的一点:VSCode 升级后,product.json 会被覆盖,里面控制自动更新的 extensionsGallery 字段就失效了——如果你依赖自动更新,每次升级后得重配一次。











