直接查看 VSCode 诊断数据定位冷启动抢资源插件:运行 Developer: Show Running Extensions 查 Activation Time>1000ms 或状态为 Activating/Activation failed 的插件;执行 code --status 验证真实激活耗时;禁用无效时检查 activationEvents 和 extensions.experimental.affinity 配置,精准设置按需加载;注意 files.watcherExclude 必须用正确 glob 语法(如 "/node_modules/": true)避免轮询导致卡顿。

怎么看哪个插件在冷启动时抢资源
别靠猜,直接看 VSCode 自己的诊断数据。启动后立刻按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入并运行 Developer: Show Running Extensions。重点关注两列:
-
Activation Time (ms)超过 1000 的插件,基本等于一开编辑器就抢 CPU - 状态长期显示
Activating或Activation failed的,说明它卡住了,但还在后台占着线程
再补一个验证:终端执行 code --status,输出里 Extensions 区域会标出每个插件的真实激活耗时,比 GUI 更准。如果 code --disable-extensions 启动秒开,那问题 100% 出在扩展上。
怎么让插件真正“按需加载”,而不是一哄而上
关键不在“禁不禁用”,而在 activationEvents 和 extensions.experimental.affinity 这两个配置。很多插件默认声明 "*" 或 "onStartupFinished",哪怕你只打开一个 .txt 文件,它也照常加载。
- 优先检查插件详情页里的 “When” 字段,确认它是否真的支持
onLanguage:python这类精准触发 - 对老旧或不规范的插件(比如
esbenp.prettier-vscode、redhat.vscode-yaml),直接在settings.json里加:"extensions.experimental.affinity": { "esbenp.prettier-vscode": 2 }数字2表示“仅在首次调用命令或打开匹配语言文件时才激活” - 别给所有插件都设
2——像ms-python.python如果你每天写 Python,设为1(正常加载)反而更稳;而ms-vscode-remote.remote-ssh这类非日常插件才适合2
为什么禁用了插件,启动还是慢
禁用(Disable)只是隐藏 UI 和命令入口,package.json 仍会被读取,监听器可能已注册。真正决定“是否加载”的是 activationEvents 字段。尤其要注意那些被其他插件“连带唤醒”的情况——比如 GitLens 激活时顺带拉起了 ESLint,你在 Developer: Show Running Extensions 里看到某插件状态是 activated by another extension,就得顺藤摸瓜查源头。
- 禁用粒度选错等于白操作:
Disable (For All Folders)是最常用也最稳妥的选择;Disable (Workspace)只对当前项目生效;Uninstall卸载后可能残留用户设置,导致保存时不格式化却找不到原因 - 某些插件即使禁用,也会在后台注册文件监听器。典型如
ms-vscode.js-debug,即使你从不调试 JS,它也会初始化完整调试服务
files.watcherExclude 配错,插件再轻也白搭
files.watcherExclude 不是“隐藏文件”,而是告诉 VSCode “别监听这些路径的变更”。一旦漏配或路径写错(比如写成 "**/node_modules" 少了末尾 /),系统级文件监视器会 fallback 到低效的轮询模式,CPU 持续 30%+ 占用,保存卡顿、补全延迟全跟着来。
- 必须用 glob 语法,且路径末尾带
/:正确是"**/node_modules/**": true,错误是"**/node_modules": true - 常见必配项:
"**/node_modules/**"、"**/dist/**"、"**/build/**"、"**/.git/**" - 这个配置影响所有插件的响应速度——因为它们的触发逻辑(比如自动格式化、语法检查)都依赖文件变更事件
activationEvents 里写了 *,又没关掉自己的缓存或监听开关。优化时盯着 Activation Time 和 files.watcherExclude 这两个点,比盲目删插件有效得多。


















