快速定位“activating extensions”卡顿需启动后立即执行developer: show running extensions,重点关注activation events含onstartup或*、activation time超200ms的扩展(如gitlens、python扩展),右键禁用后彻底重启vscode;同时确保files.watcherexclude和search.exclude在工作区.vscode/settings.json中按规范配置双星号路径,并设置extensions.experimental.affinity为2以实现按需加载。

启动卡在“Activating Extensions”怎么快速定位
这不是加载慢,是某个扩展正在同步阻塞主线程。启动后立刻按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入并执行 Developer: Show Running Extensions。这个列表只显示真正在后台干活的扩展,不是“已启用”列表。
- 重点关注 “Activation Events” 列含
onStartup或*的扩展,比如gitlens、ms-python.python、dbaeumer.vscode-eslint - “启动耗时”列超过 200ms 的,基本就是首屏延迟的直接原因
- 右键禁用(选
Disable (Workspace)更安全),**不要卸载**;改完必须完全退出 VSCode(macOS 用Cmd+Q,不能只关窗口)再重开
files.watcherExclude 配不生效的常见写法错误
这个配置是性能拐点,但写错反而更卡。它必须放在工作区根目录的 .vscode/settings.json 中,用户级设置对当前项目无效。
- 路径必须带双星号前缀和双星号后缀:
"**/node_modules/**": true,写成"node_modules/**"或"**/node_modules"都会触发无效遍历 - 必须同时配
search.exclude,否则 watcher 仍会监听,只是搜索时不扫——启动卡顿照旧 - 推荐组合(复制粘贴即可):
{ "files.watcherExclude": { "**/node_modules/**": true, "**/.git/**": true, "**/dist/**": true, "**/build/**": true, "**/__pycache__/**": true, "**/venv/**": true, "**/*.log": true }, "search.exclude": { "**/node_modules/**": true, "**/.git/**": true, "**/dist/**": true, "**/build/**": true, "**/__pycache__/**": true, "**/venv/**": true, "**/*.log": true } }
extensions.experimental.affinity 怎么设才真正延迟加载
像 ms-python.python 这类扩展,默认一启动就拉起语言服务器,哪怕你没打开一个 .py 文件。数字 2 表示“仅在打开关联文件或执行命令时加载”,不是启动即载入。
- 加到工作区
.vscode/settings.json中(不是用户 settings):"extensions.experimental.affinity": { "ms-python.python": 2, "esbenp.prettier-vscode": 2, "dbaeumer.vscode-eslint": 2 } - 该配置对旧版扩展无效,需确认扩展页的
Activation Events字段是否支持条件触发(2026 年主流扩展已适配) - 禁用 Remote - SSH 后明显变快,说明问题不在本地,而是远程连接阻塞 UI 线程
冷启动优化后仍卡顿?检查是否误开超大工作区
把整个 /Users/xxx 或磁盘根目录作为工作区打开,等于让 VSCode 扫描整个系统。即使配了 watcherExclude,初始路径遍历阶段也早已卡死。
- 启动后看左下角状态栏:如果显示路径是
/、/home或/Users,立刻关掉,重新从具体项目目录打开 - Linux 用户额外检查:
cat /proc/sys/fs/inotify/max_user_watches,若低于524288,运行echo 524288 | sudo tee /proc/sys/fs/inotify/max_user_watches - macOS 用户若仍卡,临时加一行:
"files.useExperimentalFileWatcher": false
真正卡住的地方往往不是“哪里都慢”,而是某一个扩展同步初始化、某一层级的路径匹配规则写错、或者工作区路径本身越界。改完配置不重启、配在错误位置、漏掉 search.exclude —— 这三处最容易白忙活。











