Notifications: Toasts 必须设为 off 才能关闭标准 API 弹窗,静默模式无效;需同时禁用 extensions.autoCheckUpdates 和 autoUpdate;插件专属通知需单独配置;残留通知需手动清除。

Notifications: Toasts 必须设为 off,不是静默模式
右下角一闪而过的弹窗(比如 Extension updated、Task completed)由 VSCode 的 toast 通知通道控制,唯一有效的全局开关是 Notifications: Toasts。设为 off 后,所有走标准 API(vscode.window.showInformationMessage 等)的弹窗立即消失。误点右下角带斜杠的 ? 图标只是进入「静默模式」,它只临时屏蔽部分 API 调用,重启即失效,且对任务栏闪烁、插件自定义弹窗完全无效。
操作路径:按 Ctrl + ,(Windows/Linux)或 Cmd + ,(macOS)打开设置 → 搜索 notifications → 找到 Notifications: Toasts → 下拉选 off。若该选项灰色不可调,说明你正处在静默模式,先点击右下角 ? 退出再试。
extensions.autoCheckUpdates 和 autoUpdate 都得关
插件更新弹窗不会因 Notifications: Toasts 关闭就消失——因为很多插件(如 ms-python.python、esbenp.prettier-vscode)在检测到新版本后,会自行触发 toast,而这个行为依赖后台轮询和自动安装逻辑。只关其中一个,通知照弹。
-
"extensions.autoCheckUpdates": false—— 停止每小时一次的后台扫描 -
"extensions.autoUpdate": false—— 阻止检测到更新后自动下载安装
这两个字段必须同时写入 settings.json,缺一不可。GUI 设置界面可能不显示它们,建议直接打开 Preferences: Open Settings (JSON) 手动添加。
插件专属通知开关藏得深,得逐个搜
GitLens、CodeGeeX、ESP-IDF 等插件不走通用通知管道,而是硬编码调用弹窗 API。它们的通知开关命名不统一,也无法被 Notifications: Toasts 拦截。
实操建议:
- 在设置中搜索插件名(如
gitlens),找含notification、update、telemetry的配置项;常见例子:gitlens.advanced.messages设为[],codegeex.notification.enableNotification设为false,IDF: Notification Mode设为output - 如果 GUI 搜不到,打开
settings.json全局搜索关键词,比如notification或插件缩写(如liveServer) - 部分插件把开关藏在注释行后,或文档里才提——没找到就查其 GitHub issues 或 README
残留通知不会自动消失,必须手动清
即使所有设置都改对了,之前积压的待更新提示仍“钉”在右下角,点 × 也不消失。这不是 bug,是 VSCode 通知队列缓存未刷新。
清除方法:
- 按
Ctrl + Shift + P(或Cmd + Shift + P)→ 输入并执行Notifications: Clear All Notifications - 若命令搜不到(旧版 VSCode),打开开发者工具(
Ctrl + Shift + I)→ Console 标签页 → 粘贴notifications.clearAll()回车 - 顺手检查工作区
.vscode/settings.json是否覆盖了用户设置——局部配置优先级更高,可能悄悄开了"notifications.toasts": true
真正麻烦的是那些绕过 toast 通道的底层行为:比如 git.autofetch 弹窗、语言服务器卡住时的无限转圈、甚至 update.mode 没设成 "none" 导致主程序自己弹「有新版本」——这些都不归 Notifications: Toasts 管,得单独处理。











