必须同时禁用extensions.autoUpdate、extensions.autoCheckUpdates和workbench.enableExperiments三个配置项,并单独配置GitLens(gitlens.advanced.messages: [])、ESLint(eslint.packageManager: null)和Prettier(prettier.enableUpdateCheck: false)的专属静音设置。

只关 extensions.autoUpdate 没用,GitLens、ESLint、Prettier 这类插件照旧弹「New release available」——必须同步关掉三个配置项,并单独压制插件自己的通知逻辑。
必须同时禁用的三个配置项
VSCode 插件更新有三层独立机制,缺一不可:
-
extensions.autoUpdate: 设为false才真正阻止下载和安装,设成manual仍会静默拉包并弹窗 -
extensions.autoCheckUpdates: 设为false才停掉每小时一次的后台 HTTP 轮询,否则日志里能看到Checking for extension updates -
workbench.enableExperiments: 设为false才禁用新版通知框架,否则 GitLens 等插件仍走vscode.window.showInformationMessage弹右下角气泡
全部写进用户级 settings.json(路径:Ctrl+Shift+P → Preferences: Open User Settings (JSON)),别依赖 GUI 设置——它常不同步,尤其用了 Settings Sync 或团队模板时。
GitLens / ESLint / Prettier 这些插件怎么单独静音
它们不读 VSCode 的全局开关,只认自己家的字段:
- GitLens:搜
gitlens.advanced.messages,设为[];顺手关掉gitlens.telemetry.enabled(部分版本借遥测反向触发提示) - ESLint:关
eslint.packageManager自动检测(某些版本靠它触发升级检查);确认没误配eslint.options导致插件反复崩溃重载 - Prettier:目前无官方静音开关,但可设
prettier.enableUpdateCheck为false(v9.13.0+ 支持);若无效,直接走本地安装路线
搜不到对应设置?直接打开 settings.json 手动加一行,保存后重启 VSCode 生效。
怎么真正锁定某个插件版本(比如 Prettier v3.4.1)
VSCode 原生不支持语义化版本锁定(如 prettier@3.4.1),但能通过“本地安装 + 文件权限”实现事实冻结:
- 先卸载当前版本(Extensions 视图右键 → Uninstall)
- 去 marketplace 页面点「Download Extension」,手动下载对应
.vsix文件(注意核对发布时间和版本号) - 运行命令
Extensions: Install from VSIX安装该文件 - 安装完成后,进入插件目录:
Windows:%USERPROFILE%\.vscode\extensions\
macOS/Linux:$HOME/.vscode/extensions/
找到对应文件夹(如esbenp.prettier-vscode-3.4.1),设为只读(Windows 右键属性勾选“只读”,Linux 执行chmod 444 "esbenp.prettier-vscode-3.4.1")
VSCode 对本地安装的插件默认跳过所有版本检查,加上文件只读,连手动点击「Update」都会失败——这才是真锁定。
容易被忽略的覆盖点和反弹风险
改完设置还弹窗?大概率是这些地方在偷偷覆盖:
- 项目根目录存在
.vscode/settings.json,且写了"extensions.autoUpdate": true—— 工作区配置优先级高于用户设置 - 你正在用 Remote-SSH 或 Dev Container,而远程环境的
settings.json没同步禁用 - Windows 快捷方式勾选了「以管理员身份运行」,部分配置写入被拦截,看似保存成功实则未生效
- 某些 CI 脚本或脚手架(如 create-react-app 模板)自带启用自动更新的配置,别盲目信任“刚初始化的项目”
最稳妥的做法:每次改完配置,都执行 Notifications: Clear All Notifications 清掉积压气泡,再重启 VSCode,盯着右下角看是否真安静了。











