必须同时禁用extensions.autoupdate和extensions.autocheckupdates,并配置插件专属静音项(如gitlens.advanced.messages=[]),否则gitlens等插件仍会弹“new release available”提示。

VSCode 的 extensions.autoUpdate 只控制插件是否自动下载并安装新版本,它不干预语言包、不屏蔽弹窗提示、也不影响插件内部逻辑——关掉它,GitLens 仍会刷“New release available”,中文界面照常更新,代码生成行为也不会变。
为什么关了 extensions.autoUpdate 还有更新提示?
因为很多插件(如 gitlens、esbenp.prettier-vscode)不走 VS Code 的通用更新通道,而是自己调用 vscode.window.showInformationMessage 主动弹窗。这类提示与 extensions.autoUpdate 完全无关。
-
gitlens.advanced.messages设为空数组[]才能关 GitLens 更新弹窗 -
eslint.lintTask.enable关闭可减少 ESLint 的触发频次,但无静音开关 - Prettier 截至 2026 年 8 月仍无官方静音选项,临时解法是手动安装旧版后,在扩展页点「禁用自动更新」
extensions.autoUpdate 和 extensions.autoCheckUpdates 是两回事
前者决定“是否自动安装”,后者决定“是否每小时发起一次 HTTP 轮询检查更新”。只关 autoUpdate,VS Code 仍会悄悄连 marketplace.visualstudio.com 查版本号,只是不装而已——右下角可能仍显示 “Update available” 小图标。
- 必须同时设
"extensions.autoUpdate": false和"extensions.autoCheckUpdates": false才真正静默 - 工作区级设置(
.vscode/settings.json)会覆盖用户级设置,CI 脚本或脚手架常默认开启,别信“初始化时干净” - macOS 上 snap 安装的 VS Code 无法修改
product.json,语言包更新完全不可控,只能接受
如何只为某个插件关闭自动更新?
直接在插件设置页关最稳妥,比写 JSON 更可靠——VS Code 会把配置存到对应作用域,且优先级高于全局 autoUpdate 开关。
- 按
Ctrl+Shift+X打开扩展视图 → 搜索插件名(如codegeex.codegeex)→ 点齿轮图标 → “Extension Settings” → 关闭Auto Update - 若需配置同步,可在
settings.json中加:"extensions.autoUpdateExceptions": ["codegeex.codegeex"],但注意该字段仅在autoUpdate: true时生效 - 插件 ID 必须严格匹配,大小写敏感;查法:打开扩展详情页 URL,或看插件目录下
package.json中的publisher和name字段拼接
真正容易被忽略的细节
语言包(如 vscode-language-pack-zh-hans)根本不受 extensions.autoUpdate 控制,它是主程序通过 product.json 和微软 CDN 静默同步的。你看到的“重启后中文变了”,不是插件更新,是本地化资源刷新——想拦住它,唯一办法是改安装目录下的 resources/app/product.json,加 "enableLanguagePacks": false,但代价是回退英文界面,且 VS Code 升级时大概率被覆盖。











