vscode启动慢主因是文件监听和扩展激活失控:files.watcherexclude配错(如缺末尾/**)导致轮询模式、cpu飙升;extensions.experimental.affinity: 2可延迟加载高频插件;code --disable-extensions是验证扩展问题的最准方法。

VSCode启动慢,90%不是机器差,而是项目一打开就在后台疯狂扫描、监听、建索引——尤其当你用code .直接打开含node_modules或dist的目录时,它默认就准备“全盘接管”。
为什么files.watcherExclude配错等于没配
这个配置不是“隐藏文件”,而是告诉 VSCode 的底层监视器(chokidar / FSEvents):“别在这儿装监听器”。一旦路径写漏一个/,或 glob 模式不合法,监视器就会 fallback 到低效轮询模式,CPU 持续 30%+ 占用,保存卡顿、补全延迟全跟着来。
- 必须用双星号开头 + 末尾
/**:正确是"**/node_modules/**": true,错误是"node_modules"或"**/node_modules" - 必须写在工作区级
.vscode/settings.json里,用户级设置无效 - 改完后必须关闭并重新打开该工作区,热重载不生效
- 大型 monorepo 还要加:
"**/packages/**/node_modules/**": true、"**/yarn-cache/**": true
extensions.experimental.affinity设为2比禁用更稳
禁用插件只是关 UI 入口,它的activationEvents仍在 package.json 里注册着;而affinity: 2是 VSCode 1.86+ 提供的强制调度机制:跳过冷启动加载,只在你第一次调用命令、或打开匹配语言文件时才初始化。对 ESLint、YAML、Prettier 这类高频但非刚需的插件特别有效。
- 数字2 = 延迟加载;1 = 正常加载;0 = 禁用(不推荐)
- 配置必须写进
settings.json,UI 设置面板里找不到 - 不要全局一刀切:Python 插件若你每天写 Python,设为1反而更顺;Remote - SSH 这类才适合2
- 示例:
"extensions.experimental.affinity": { "esbenp.prettier-vscode": 2, "redhat.vscode-yaml": 2 }
启动卡住?先跑code --disable-extensions验证
别等加载动画转完。终端执行这条命令,如果秒开、语法高亮和跳转都正常,问题100%出在扩展上。这是最硬的判断依据,比看感觉准得多。
- 确认是扩展问题后,立刻运行
Developer: Show Running Extensions,重点看Activation Time (ms)列 - 超过1000ms 或状态长期显示
Activating的,基本就是抢资源的“头号嫌疑” - 再补一个
code --status,输出里Extensions区域会给出真实耗时,比 GUI 更准 - 常见高危项:
ms-python.python(旧版无条件初始化)、gitlens(默认全仓库扫描)、ms-vscode.js-debug(不调试也拉起服务)
真正拖慢启动的,往往不是插件数量,而是某个插件在activationEvents里写了"*"或"onStartupFinished",然后在后台默默建索引、连远程、扫node_modules——这些动作不会弹窗提醒,但会吃掉你第一分钟的所有响应速度。











