code --status是VSCode性能诊断第一入口,可立即定位Extension Host、tsserver等高占用子进程;需据此配置files.watcherExclude(如"/node_modules/": true)、调整extensions.experimental.affinity及语言服务器模式。

code --status 必须先跑,别猜哪个插件在疯跑
VSCode 插件导致 CPU 持续 >70%,真凶几乎从来不是 Code Helper 进程本身,而是它拉起的子进程。直接在终端运行 code --status,你会立刻看到带 PID 的真实负载源:Extension Host、tsserver、pyright、prettier 或 gitlens 等——这些才是实际吃 CPU 的角色。
重点关注 Extension Host 的 CPU%:长期 >60% 基本可断定是某个插件监听失败后卡死,或反复解析大目录;若 Search 进程内存 >300MB,八成是 rg.exe 正在扫 node_modules。
拿到高占用 PID 后,用 ps -p [PID] -o args=(macOS/Linux)或任务管理器“详细信息”页右键 → “打开文件位置”,确认命令行是否含 pylance、tsserver 等关键词,才能精准下手。
files.watcherExclude 配错等于没配,通配符必须是 **/node_modules/**
VSCode 默认用 chokidar 递归监听整个工作区,node_modules 这种几万小文件的目录一进来,inotify/FSEvents 就会爆炸式触发事件,Node.js 子进程直接满载——你什么都没干,CPU 就稳在 70%+。
- 必须写在项目根目录的
.vscode/settings.json中(不是用户级设置) - 通配符必须是
"**/node_modules/**": true,写成"node_modules/**"、"*/node_modules/*"或"node_modules"全无效 - 常见必加项:
"**/dist/**": true、"**/build/**": true、"**/.git/**": true、"**/*.log": true - 改完必须完全关闭当前 VSCode 窗口(不是重载),再重新打开该工作区才生效
- Linux 用户若仍卡顿,运行
cat /proc/sys/fs/inotify/max_user_watches,低于524288就要调高
extensions.experimental.affinity 控制插件运行位置,避免远程爆 CPU
Remote-SSH 场景下插件 CPU 狂飙,根本原因是 VSCode 默认把所有插件(尤其 LSP 类)全拉到远程服务器上运行。此时不能只禁插件,得用 extensions.experimental.affinity 显式控制执行位置。
配置必须写在远程服务器的 ~/.vscode-server/data/Machine/settings.json 中(不是本地设置):
-
{"extensions.experimental.affinity": {"*": 0}}:强制所有插件在本地运行(仅限支持 UI 扩展的插件),大幅降低远程负载 -
{"extensions.experimental.affinity": {"ms-python.python": 1, "esbenp.prettier-vscode": 0}}:指定 Python 插件仅远程,Prettier 仅本地 - 数值
1= 仅远程,0= 仅本地;通配符*优先级最高,会覆盖后面的具体条目 - 改完必须关闭并重新打开远程窗口,且检查状态栏图标是否还在(比如 Python 解释器选择、Prettier 格式化按钮)
语言服务降级比禁用插件更有效,Jedi 和 off 选项是关键
Python 和 TypeScript 的高 CPU 不是插件“慢”,是默认做深度语义分析:一个含 50+ 包的项目,Extension Host 内存轻松破 1.2GB,CPU 持续拉高是必然结果。
- Python:把
python.languageServer从Pylance改为Jedi(Jedi不加载全部依赖,只做基础补全) - TypeScript:设
typescript.preferences.includePackageJsonAutoImports为off,避免导入时反复解析node_modules/@types - ESLint:设
eslint.run为onSave,并精简eslint.probe的文件类型(比如去掉.json) - GitLens:关掉
gitlens.codeLens.enabled和gitlens.hovers.enabled,能降 30%–50% 内存
真正容易被忽略的是:很多插件的“重”来自默认开启的实时扫描策略,关掉 gitlens.advanced.caching.enabled 或 codegeex.contextAnalysis,比直接禁用更能保功能、压资源。


















