VSCode CPU过高主因是后台进程异常,应先运行code --status定位Extension Host、tsserver等高占用子进程,再配置files.watcherExclude排除node_modules等目录、降级语言服务、禁用高开销插件并彻底重启窗口。

VSCode CPU 过高,90% 以上不是编辑器本身的问题,而是某个后台进程在“疯跑”——code --status 一眼就能定位真凶,不用猜、不重装、不盲禁扩展。
怎么看哪个进程在吃 CPU
别只盯着任务管理器里那个 Code Helper 进程——它只是壳。真正干活的是子进程,code --status 才是真相入口:
-
Extension HostCPU% 长期 >60% → 某个扩展(比如esbenp.prettier-vscode或gitlens.gitlens)在反复解析、监听失败后卡死 -
tsserver或pyright占高 → 不是 TypeScript/Python 本身慢,是它正在全量加载node_modules/@types做类型推导 -
rg(RipGrep)内存 >300MB → 正在扫node_modules或符号链接目录 -
Shared Process占高 → 遥测、设置同步或自动更新在后台轮询;可临时加"telemetry.telemetryLevel": "off"验证
记下高占用进程的 PID,再用 ps -p [pid] -o args=(macOS/Linux)或任务管理器“详细信息”页右键 → “打开文件位置”,确认是不是来自某个扩展。
为什么禁用插件后 CPU 还不降
禁用操作只是阻止新加载,旧进程根本没退出。很多插件注册了 onStartupFinished 或 onLanguage:python 这类激活事件,一旦触发就会常驻内存。
- 先运行命令面板中的
Developer: Show Running Extensions,按 CPU% 排序,确认哪些插件真在跑 - 右键目标插件 →
Disable (For All Folders)(注意不是仅限当前工作区) - 必须完全关闭当前 VSCode 窗口(不是
Developer: Reload Window),再重新打开工作区 - 对 Python/TS 项目,可手动清理残留:
ps aux | grep -i "pyright\|tsserver\|python.*language",找到 PID 后kill -9 [PID]
files.watcherExclude 配错等于白配
VSCode 默认用 chokidar 递归监听整个工作区,遇到 node_modules(几万小文件)、dist、.git 时,inotify 事件爆炸式触发,Node.js 子进程直接满载。
- 通配符必须是
"**/node_modules/**": true,写成*node_modules*、/node_modules/或*/node_modules/*全无效 - 配置必须加在项目根目录的
.vscode/settings.json中,不是用户级settings.json - 改完必须关闭并重新打开该工作区,仅保存配置不生效
- Linux 用户若仍卡顿,检查
cat /proc/sys/fs/inotify/max_user_watches,低于524288就要调高
语言服务器不是慢,是默认太“贪”
Python 和 TypeScript 的语言服务不是“卡”,是设计为深度语义分析,中大型项目下内存驻留轻松破 1.2GB,CPU 持续拉高是必然结果。
- Python:把
python.languageServer从Pylance改为Jedi(Jedi不加载全部依赖,只做基础补全) - TypeScript:关掉
typescript.preferences.includePackageJsonAutoImports,避免 npm 包导入时反复解析 - ESLint:设
eslint.run为onType,并精简eslint.probe的文件类型(比如去掉.json) - GitLens:关掉
gitlens.codeLens.enabled和gitlens.hovers.enabled,能降 30%–50% 内存
最常被忽略的点是:改完语言服务配置后,旧 pyright 或 tsserver 进程不会自动退出,得手动 kill 或彻底重启窗口。还有,search.exclude 和 files.watcherExclude 完全是两回事——后者管 CPU,前者只过滤搜索结果。



















