先看network标签页中插件请求的status和time:pending或超30秒无响应说明dns/tls失败;请求发往marketplace.visualstudio.com则镜像未生效;若发往镜像域名但size为0或404,多因serviceurl与cacheurl配置不匹配、结尾多斜杠或域名不一致。

怎么看插件请求到底卡在哪一步
别猜,直接看网络请求。VSCode 内置开发者工具能暴露真实瓶颈:按 Ctrl+Shift+P → 输入并运行 Developer: Toggle Developer Tools → 切到 Network 标签页 → 在扩展面板搜索一个插件(比如 Python)→ 观察所有 GET 请求的 Status、Time 和 Size。
关键判断点:
- 如果大量请求状态是
pending或超 30 秒没响应,基本是 DNS 或 TLS 握手失败,不是下载慢,是连不上 - 如果请求发到了
marketplace.visualstudio.com或vscode.blob.core.windows.net,说明镜像源没生效 - 如果请求发到了镜像域名(如
vscode.cdn.azure.cn)但Size为 0 或返回 404,大概率是serviceUrl和cacheUrl没配对或路径结尾多了/
为什么改了 settings.json 还是直连境外服务器
因为 VSCode 1.83+ 要求两个配置必须同时存在、同域、无尾斜杠,缺一不可。只写 extensions.gallery.serviceUrl 就等于没写。
正确写法(以 vscode.cn 镜像为例):
{
"extensions.gallery.serviceUrl": "https://vscode.cdn.azure.cn/_apis/public/gallery",
"extensions.gallery.cacheUrl": "https://vscode.cdn.azure.cn/_apis/public/gallery/publishers"
}
常见错误:
-
serviceUrl结尾写了/,导致拼出/gallery//publishers而 404 - 把
cacheUrl写成https://marketplace.visualstudio.com.cn/...—— 域名不一致直接忽略整组配置 - 配置写在工作区
settings.json里,而 VSCode 只读用户级设置 - 改完没彻底退出 VSCode(右上角 × 不等于退出),必须用菜单
File → Exit或命令行code --quit
code --install-extension 命令为啥不走镜像配置
它压根不读 settings.json,走的是独立环境变量路径。所以你在设置里配了镜像,命令行照样直连微软源。
临时生效方式(终端中执行):
VSCODE_EXTENSIONS_MSA_URL=https://vscode.cdn.azure.cn code --install-extension esbenp.prettier-vscode
注意:
- Windows PowerShell 用户要用
$env:VSCODE_EXTENSIONS_MSA_URL="https://vscode.cdn.azure.cn"先设变量 - 如果仍报
ETIMEDOUT或卡在pending,检查是否后台开着 Clash/Surge —— 它们常默认启用系统代理但未全局,会干扰code命令的 DNS 解析 - 某些插件(如
ms-python.python)安装后还会额外拉取语言服务器二进制包,这部分完全绕过 gallery 协议,镜像对其无效
手动下载 .vsix 后双击没反应或报错怎么办
图形界面拖拽或“Install from VSIX”菜单容易静默失败,尤其大体积主题插件。优先用命令行验证:
先确保 code 命令可用:code --version;路径必须是绝对路径;Windows 含空格路径要加引号。
失败时终端会明确报错,典型情况:
-
Extension 'xxx' is not compatible with Code x.x.x→ 打开 .vsix 文件(用 7-Zip 或 The Unarchiver),检查extension/package.json中的engines.vscode字段是否匹配你当前 VSCode 版本 -
Failed to install extension且无更多提示 → 用 ZIP 工具打开 .vsix,确认根目录有extension/package.json,缺失说明文件损坏或非标准打包 - 安装成功但不生效 → 检查是否和其他插件冲突,或禁用所有插件后重试
最隐蔽的问题:某些插件(尤其是带 native binary 的)会在首次激活时联网下载额外组件,此时即使 .vsix 装上了,功能仍不可用——得单独配代理或离线补全。











