code --status可立即定位高CPU后台子进程,需重点检查Extension Host中ms-python.python等插件及语言服务器,禁用后必须关闭窗口并清理残留进程,同时正确配置files.watcherExclude和降级语言服务器。

VS Code插件引起CPU占用过高,基本不是“卡”,而是某个后台子进程在持续满载运行——code --status 一眼就能定位真凶,不用猜、不重装、不盲目禁用。
怎么看哪个插件/进程在疯跑
别信任务管理器里那个“Code Helper”——它只是壳。真正干活的是 Extension Host、tsserver、pyright、cpptools-srv 或 rg 这类子进程。
- 终端执行
code --status,重点关注 “CPU %” 列长期 >30% 的进程,记下 PID - 用
ps -p [PID] -o args=(macOS/Linux)或任务管理器“详细信息”页右键 → “打开文件位置”,确认命令行是否含ms-python.python、esbenp.prettier-vscode、gitlens.gitlens等关键词 - 顺手再开命令面板运行
Developer: Open Process Explorer,交叉验证 CPU 和内存占用趋势
禁用插件后 CPU 还高?因为你没关窗口
点“Disable”只是阻止下次加载,旧进程仍常驻内存。尤其 ms-python.python、dbaeumer.vscode-eslint 这类语言服务插件,一旦激活就注册了 onStartupFinished,不杀进程等于白禁。
- 先运行
Developer: Show Running Extensions,确认目标插件确实在运行中 - 右键插件 →
Disable (For All Folders)(注意不是仅当前工作区) - 必须完全关闭当前 VSCode 窗口(macOS 要退出菜单栏图标),再重新打开项目——
Developer: Reload Window不生效 - 对 Python/TS 项目,建议手动清理残留:
ps aux | grep -i "pyright\|tsserver\|python.*language",找到 PID 后kill -9 [PID]
files.watcherExclude 写错等于没配
VSCode 默认用 chokidar 递归监听整个工作区。遇到 node_modules(几万小文件)、.git、dist,内核级 inotify 事件爆炸式触发,Node.js 子进程直接 100% 满载——你什么都没干,CPU 就飙了。
- 配置必须写在项目根目录的
.vscode/settings.json中,不是用户级设置 - 通配符必须是
"**/node_modules/**": true,写成*node_modules*、/node_modules/或node_modules/**全无效 - 必加项:
"**/node_modules/**": true、"**/dist/**": true、"**/build/**": true、"**/.git/**": true、"**/*.log": true - 改完必须关闭并重新打开该工作区,仅保存文件不触发更新
- Linux 用户若仍卡顿,检查
cat /proc/sys/fs/inotify/max_user_watches,低于524288就要调高
降级语言服务器比禁用更实用
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) - C/C++:关掉
C_Cpp.intelliSenseCacheSize或设为0,禁用C_Cpp.autocomplete中非必要选项
最易被忽略的一点:很多问题插件本身没问题,但和另一个插件叠加就出事——比如 ESLint + Prettier 同时启用时,保存即触发双重格式化+校验,CPU 直接拉满。排查时得考虑组合效应,不是单点禁用就能解决。


















