VSCode启动卡在“Activating Extensions”或冷启动超2秒,主因是扩展同步激活与文件监视器全盘扫描;需用Developer: Show Running Extensions定位Activation Time超1000ms或长期显示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。这个面板只显示当前真正在后台加载的扩展,比“已启用”列表靠谱得多。
- 重点关注
Activation Time列:超过 1000ms 的基本就是冷启动主力“抢跑者” - 状态长期显示
Activating…的,大概率是罪魁祸首,比如gitlens、ms-python.python、esbenp.prettier-vscode、dbaeumer.vscode-eslint、ms-vscode-remote.remote-ssh - 右键插件 →
Extension Details→ 点齿轮图标 → 展开When字段,就能看到它声明的activationEvents值;若为"*"或"onStartup",说明它一开就强制加载 - 禁用后必须完全退出 VSCode(macOS 用
Cmd+Q,不能只关窗口),否则旧进程残留,优化效果不显
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 年主流扩展已适配) - 不要给所有插件都设
2——像 Python 扩展若你每天写 Python,设为1(正常加载)反而更稳;而Remote - SSH这类非日常插件才适合2
最容易被忽略的是:把磁盘根目录或用户主目录当工作区打开——这等于让 VSCode 扫描整个系统;还有 files.watcherExclude 配错一个斜杠,监听就退化成轮询,性能断崖式下跌。


















