vscode启动卡在“activating extensions”或冷启动超2秒,主因是扩展同步激活与文件监视器全盘扫描;需用developer: show running extensions定位长期显示activating…的插件(如gitlens、python、eslint等),配合files.watcherexclude配置排除node_modules等目录,并设置extensions.experimental.affinity为2实现延迟加载。

VSCode启动卡在“Activating Extensions”或冷启动超过2秒,基本可以确定是扩展同步激活 + 文件监视器全盘扫描导致的,不是电脑性能问题。
怎么快速定位启动慢的扩展
启动后立刻按 Cmd+Shift+P(macOS)或 Ctrl+Shift+P(Windows/Linux),输入并执行 Developer: Show Running Extensions。列表里长期显示 Activating… 的就是真凶。
- 重点关注
gitlens、ms-python.python、esbenp.prettier-vscode、dbaeumer.vscode-eslint、ms-vscode-remote.remote-ssh - 禁用后必须完全退出 VSCode(macOS 用
Cmd+Q,不能只关窗口),否则旧进程残留,效果不显 - 若禁用
Remote - SSH后明显变快,说明阻塞来自远程连接初始化,不是本地配置问题
files.watcherExclude 配置为什么必须写对
VSCode 默认用 chokidar 监视整个工作区;一旦打开含 node_modules 或 dist 的目录,它会尝试注册数万级 inotify 句柄(Linux)或反复轮询(macOS),直接拖垮启动和响应速度。
- 必须写进项目根目录的
.vscode/settings.json,不是用户设置界面(界面加引号会导致解析失败) - 路径必须带
**/前缀和/**后缀,例如"**/node_modules/**": true;写成"node_modules/": true无效 - 推荐完整配置:
"**/node_modules/**"、"**/dist/**"、"**/.git/**"、"**/build/**"、"**/__pycache__/**"、"**/venv/**" - macOS 用户若仍卡顿,可临时加一行:
"files.useExperimentalFileWatcher": false
extensions.experimental.affinity 怎么设才真正延迟加载
像 ms-python.python 或 esbenp.prettier-vscode 这类扩展,默认声明 onStartup 或通配符 * 激活事件,一启动就强制初始化语言服务器——但你可能只在打开 .py 文件时才需要它。
- 在用户级
settings.json(不是工作区)中添加:"extensions.experimental.affinity": { "ms-python.python": 2, "esbenp.prettier-vscode": 2 } - 数字
2表示“仅在关联文件打开或命令触发时加载”,不是启动即载入 - 该配置对旧版扩展无效,需确认扩展页的
Activation Events字段是否支持条件触发(2026 年主流扩展已适配) - 别把磁盘根目录或用户主目录当工作区打开——这等于让 VSCode 扫描整个系统
命令行参数能绕过 GUI 层直接干预启动链路
设置界面改不动底层行为,命令行才是硬核入口。比如禁用 GPU 加速这种影响渲染线程的行为,只能靠参数验证:
- 先完全退出 VSCode,在终端运行
code --disable-gpu启动,观察内存峰值是否下降 - 若有效,把
"disable-hardware-acceleration": true写进用户settings.json - 若更卡,尝试
code --enable-gpu --enable-gpu-rasterization,并确保"workbench.enableExperiments"为false -
--prof-startup可捕获冷启动热点,但需配合 Chrome DevTools 分析,日常优化中优先级低于前三个动作
最常被忽略的是:修改 files.watcherExclude 后必须关闭并重新打开当前工作区,否则设置不生效;而 extensions.experimental.affinity 的数字 2 对部分老扩展根本不起作用——得看它有没有声明 onLanguage:python 这类细粒度激活事件。











