code --status 可立即定位后台高负载子进程,重点关注 Extension Host、pyright、tsserver、rg 等;禁用插件需关闭窗口再重开,配合 files.watcherExclude 和语言服务器降级(如 Pylance→Jedi)可显著缓解卡顿。

code --status 必须第一时间运行
VSCode 界面没卡但风扇狂转,说明问题在后台子进程,不是主 UI 线程。任务管理器里那个 Code Helper 进程只是壳,真正在疯跑的是 Extension Host、pyright、tsserver 或 rg 这类子进程。终端直接执行 code --status,它会立刻列出所有子进程的 PID、实时 CPU% 和内存占用。
重点关注以下几类:
-
Extension HostCPU > 60% 且不回落 → 某插件(如ms-python.python、esbenp.prettier-vscode)可能在 onSave 轮询、监听失败后卡死,或解析逻辑耗时过高 - 进程名含
pyright、tsserver、cpptools-srv→ 语言服务器正在全量索引依赖树,尤其遇到node_modules或@types目录时极易满载 -
rg内存 > 300MB 或 CPU 长期高 → 它可能在扫整个node_modules或符号链接目录,常见于search.followSymlinks为true且未配search.exclude
记下高占用进程的 PID,再用 ps -p [PID] -o args=(macOS/Linux)或任务管理器“详细信息”页右键 → “打开文件位置”,确认命令行是否含 pylance、codex、gitlens 等关键词。
禁用插件后 CPU 不降?旧进程根本没退出
点“Disable”只是阻止新加载,很多插件注册了 onStartupFinished 或 onLanguage:python 这类事件,一旦激活就常驻内存。旧进程不会因禁用自动释放。
正确操作必须包含三步:
- 先运行命令面板中的
Developer: Show Running Extensions,按 CPU% 排序,确认哪些插件真在跑 - 右键目标插件 →
Disable (For All Folders)(注意不是仅当前工作区) - 必须完全关闭当前 VSCode 窗口(不是
Developer: Reload Window),再重新打开工作区
对 Python/TS 项目,建议手动清理残留:ps aux | grep -i "pyright\|tsserver\|codex",找到 PID 后 kill -9 [PID]。Codex 插件 26.325+ 版本存在无限重试 bug,降级到 26.324 是最稳妥方案。
files.watcherExclude 写错等于白配
VSCode 默认用 chokidar 递归监听整个工作区。遇到 node_modules(几万小文件)、.git/objects、dist 就触发 inotify 事件风暴,Node.js 子进程满载——你什么都没干,CPU 就飙到 100%。
必须在项目根目录的 .vscode/settings.json 中添加(不是用户级配置):
{
"files.watcherExclude": {
"**/node_modules/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/.git/**": true,
"**/*.log": true
}
}
通配符必须是 **/xxx/**,写成 *node_modules*、/node_modules/ 或 node_modules 全无效;配置生效需关闭并重开工作区,仅保存文件不触发更新。
语言服务器降级比禁用更实用
Python 和 TypeScript 扩展不是“慢”,是默认太贪——试图把整个依赖树加载进内存做类型推导。一个含 50+ 包的项目,Extension Host 常驻内存轻松破 1.2GB,CPU 卡在 90%。
可针对性调整:
- Python:把
python.languageServer从Pylance改为Jedi(Jedi 不做全量语义分析,开销低得多) - TypeScript:设
typescript.preferences.includePackageJsonAutoImports为off,避免导入时反复解析node_modules/@types - ESLint:设
eslint.run为onType,并精简eslint.probe的文件类型(比如去掉.json) - GitLens:关掉
gitlens.codeLens.enabled和gitlens.hovers.enabled,能降 30%–50% 内存
这些配置改完后仍需关闭并重开工作区才真正生效。Linux 用户若还卡顿,检查 cat /proc/sys/fs/inotify/max_user_watches,低于 524288 就要调高。


















