VSCode 1.83+ 版本要求必须同时配置 extensions.gallery.serviceUrl 和 extensions.gallery.cacheUrl,且需同域名、结尾不带/,否则配置被忽略;常见错误包括单配其一、URL 多斜杠、域名不一致或配置位置错误。

为什么配了 extensions.gallery.serviceUrl 还是卡住
因为 VSCode 1.83+ 要求 extensions.gallery.serviceUrl 和 extensions.gallery.cacheUrl 必须同时存在、同域名、结尾不带 /,缺一不可。只改一个等于没改。
常见错误包括:
-
serviceUrl写成"https://vscode.cdn.azure.cn/api/gallery/"(末尾多了一个/),导致请求路径变成/gallery//publishers返回 404 - 两个 URL 域名不一致,比如
serviceUrl用vscode.cdn.azure.cn,cacheUrl却写成marketplace.visualstudio.com.cn - 配置写在工作区
settings.json里,而 VSCode 只读用户级设置(即~/.vscode/settings.json或%APPDATA%\Code\User\settings.json)
如何验证镜像源是否真生效
别信“看起来快了”,直接看网络请求:
- 按
Ctrl+Shift+P→ 输入并运行Developer: Toggle Developer Tools - 切换到 Console 标签页
- 在扩展面板搜索任意插件(如
Python),观察控制台发出的GET请求
成功时应看到类似:GET https://vscode.cdn.azure.cn/api/gallery/publishers/ms-python/vsextensions/python/;如果仍出现 marketplace.visualstudio.com 或 vscode.blob.core.windows.net,说明配置未加载,或被系统代理劫持。
code --install-extension 命令不走 settings.json 配置
命令行安装完全绕过 settings.json,它依赖环境变量 VSCODE_EXTENSIONS_MSA_URL:
- 临时生效:在终端中先执行
VSCODE_EXTENSIONS_MSA_URL=https://vscode.cdn.azure.cn code --install-extension esbenp.prettier-vscode - CI/CD 或远程开发中,需在构建脚本里显式导出该变量
- 若仍报
ETIMEDOUT或卡在pending,检查是否后台开着 Clash/Surge 等代理工具——它们常默认启用系统代理但未全局,会干扰code命令的 DNS 解析
自动更新插件失败?product.json 得动
插件自动更新(比如弹窗提示“有新版本”)不读 settings.json,它硬编码在 VSCode 安装目录下的 product.json 文件里:
- Windows 示例路径:
C:\Users\<username>\AppData\Local\Programs\Microsoft VS Code\resources\app\product.json</username> - macOS 示例路径:
/Applications/Visual Studio Code.app/Contents/Resources/app/product.json - Linux 示例路径:
/usr/share/code/resources/app/product.json
需要手动编辑该文件,找到 extensionsGallery 对象,把 serviceUrl 和 cacheUrl 改成镜像地址,并确保两者严格一致、无尾斜杠——改完必须彻底退出所有 VSCode 进程再重启,否则无效。


















