答案是插件engines.vscode字段与本地vscode版本不匹配,需拆包查看extension/package.json中"vscode"声明,并比对code --version前两位(如1.92.2→1.92),确保本地版本≥声明最低版本。

离线安装插件报“not compatible with VS Code”时,90% 不是插件坏了,而是 engines.vscode 字段和你本地 code --version 对不上——VSCode 静默拒绝,连错误弹窗都不给。
怎么看插件到底要求什么 VSCode 版本
别猜,直接拆包看 package.json 里的声明:
- 运行
unzip -p your-plugin.vsix extension/package.json | grep engines,找"vscode": "^1.85.0"这类字段 - 同时运行
code --version,取前两位(如1.92.2→1.92),不是四舍五入,是截断 - 比对规则:你本地版本必须 ≥ 插件声明的最低版本;
^1.93.0和1.92.2就不兼容,哪怕只差一个小版本 - Windows 下用 PowerShell,别用资源管理器右键重命名改后缀,容易破坏 ZIP 结构;Linux/macOS 用
unzip -t plugin.vsix先校验完整性
装不上旧版插件?去 Marketplace 手动选兼容版本
Marketplace 默认只显示匹配当前 VSCode 的版本,旧版被过滤掉了:
- 打开插件页面 URL,末尾加
?vscodeVersion=1.81.1(替换成你真实的code --version输出) - 刷新后点
Install Another Version下拉菜单,选带 ✅Compatible标记的版本 - 如果该版本没出现在下拉里,说明作者已从 Marketplace 彻底下架——只能回退到 GitHub Releases 或 open-vsx.org 找历史 vsix
- 注意 open-vsx 的下载链接格式:它不总是返回 vsix 文件,有时是 metadata JSON,要认准 URL 含
.vsix后缀
临时绕过版本检查(仅限调试/内网验证)
修改 package.json 是最后手段,不是推荐操作:
- 解压 vsix:
unzip your-plugin.vsix -d temp-plugin - 编辑
temp-plugin/extension/package.json,把"vscode": "^1.75.0"改成"vscode": ">=1.75.0 或更宽泛的范围 - 重新打包:
cd temp-plugin && zip -r ../fixed-plugin.vsix *(确保顶层是extension/目录) - 风险提示:签名失效后,部分插件(如 Python、Prettier)可能无法启动语言服务器,状态栏卡在 “Downloading…”
装上了但没反应?可能是语言服务器没带全
很多插件(如 ms-python.python、Vue Language Features (Volar))离线安装只是注册,首次启用才下载 LSP 二进制:
- 在有网机器上完整触发一次:打开一个
.py文件 → 等状态栏不再显示 “Downloading pyright” → 再去~/.vscode/extensions/ms-python.python-xxx/整个目录拷到内网机对应路径 - 不能只拷
.vsix,也不能只拷node_modules;native 二进制(如pyright-server)藏在子目录里,漏一个就功能缺失 - 复制完必须彻底退出 VSCode(包括托盘进程),否则扩展缓存不刷新
真正卡住人的从来不是“怎么点”,而是版本号、架构、LSP 三者之间那层看不见的依赖链。每次失败,先查 code --version、再解压看 engines.vscode、最后确认是不是少了个 pyright-server —— 这三步走完,80% 的“装不上”问题就定位清楚了。











