必须同时关闭extensions.autoupdate、extensions.autocheckupdates和workbench.enableexperiments三项配置,并处理插件专属开关(如gitlens.advanced.messages=[])、工作区覆盖及远程环境设置,否则gitlens等插件仍会弹窗或静默预加载。

extensions.autoUpdate 和 extensions.autoCheckUpdates 必须同时设为 false
只关 extensions.autoUpdate 会导致插件每小时仍发起 HTTP 请求查新版本,右下角持续显示 “Update available”,甚至静默下载完卡住;只关 extensions.autoCheckUpdates 则检测不到更新,但已有缓存的升级包仍可能被触发安装。两者是 VSCode 扩展更新链路中解耦的两个阶段:前者控制“是否安装”,后者控制“是否轮询”。
必须在用户级 settings.json(路径:Ctrl+Shift+P → Preferences: Open User Settings (JSON))里显式写入:
{
"extensions.autoUpdate": false,
"extensions.autoCheckUpdates": false
}
GUI 设置常不同步,尤其启用 Settings Sync 或团队模板时,别依赖界面上的勾选状态。
workbench.enableExperiments 关闭才能压制 GitLens/ESLint 等插件弹窗
GitLens、ESLint、Prettier 这类插件不走 VSCode 的通用更新通道,而是直接调用 vscode.window.showInformationMessage() 弹右下角气泡。即使前两项全关,只要 workbench.enableExperiments 为 true,它们照样刷通知。
这不是 UI 动画开关,而是新版通知框架的底层开关。加一行即可:
"workbench.enableExperiments": false
该配置对编辑、调试、终端等主流程无影响,仅禁用非核心实验功能(如测试面板预览)。若某插件明确要求启用实验功能(极少见),可在工作区设置中单独覆盖,而非全局放开。
插件专属静音字段必须手动补全
VSCode 全局开关对这些字段无效:
-
gitlens.advanced.messages:设为[]才真正禁用所有消息弹窗;顺带关掉gitlens.telemetry.enabled(部分版本借遥测反向触发检查) -
eslint.packageManager:若指向不存在的 npm/yarn/pnpm,ESLint 插件会反复崩溃重载,连带触发 “Extension host terminated unexpectedly” 错误,看起来像更新提醒 -
prettier.enableUpdateCheck:v9.13.0+ 支持设为false;旧版无效时,需走本地安装 + 目录只读锁定
搜不到对应设置?直接在 settings.json 里手写一行,保存后重启生效。
工作区 .vscode/settings.json 会覆盖用户设置
你全局设好 "extensions.autoUpdate": false,一打开某个仓库插件又开始升级——大概率是项目根目录的 .vscode/settings.json 里写了 "extensions.autoUpdate": true。VSCode 配置优先级是:工作区 > 用户 > 默认。
排查方法:
- 执行
Ctrl+Shift+P → Preferences: Open Workspace Settings (JSON) - 检查是否存在冲突项;CI 脚本或脚手架(如 create-react-app 模板)常自带这类配置
- 若确认要统一禁用,可在工作区设置中显式写入
"extensions.autoUpdate": false覆盖父级
远程开发(Remote-SSH / Dev Container)场景下,远程环境的 settings.json 可能未同步禁用,也要单独检查。











