code --status是vscode性能诊断第一入口,需先执行定位extension host、tsserver/pyright等高占用进程,再配置files.watcherexclude排除node_modules等目录、降级语言服务、关闭遥测与ai索引。

code --status 是诊断起点,不是可选项
VSCode 代码检查高 CPU 占用,90% 以上不是“检查本身慢”,而是某个语言服务进程在后台持续满载运行。不先看 code --status 就调配置,等于蒙眼修车。执行后重点关注三类进程:
-
Extension Host:CPU% >60%,说明某扩展(如esbenp.prettier-vscode或ms-python.python)在反复解析或监听失败后卡死 -
tsserver/pyright/cpptools-srv:单独占高,不是语言本身问题,是它正在全量加载node_modules/@types或整个依赖树做类型推导 -
Search进程内存 >300MB:大概率是rg.exe(RipGrep)在扫node_modules或符号链接目录
记下高占用进程的 PID,再用 ps -p [PID] -o args=(macOS/Linux)或任务管理器“详细信息”页确认命令行,才能知道到底是谁在跑。
files.watcherExclude 配错等于没配
VSCode 默认用 chokidar 监听整个工作区,node_modules 这种几万小文件的目录一进来,inotify 事件就爆炸式触发,Node.js 子进程直接 100%——你什么都没干,CPU 就稳在 70%+。
- 必须写在项目根目录的
.vscode/settings.json中,用户级设置对多项目不生效 - 通配符只认
"**/node_modules/**": true,写成"node_modules/**"、"*/node_modules/*"或"node_modules"全无效 - 必加项建议:
"**/dist/**": true、"**/build/**": true、"**/.git/**": true、"**/__pycache__/**": true、"**/*.log": true - 改完必须关闭并重新打开该工作区,仅保存或重载窗口不生效
Linux 用户还需检查 cat /proc/sys/fs/inotify/max_user_watches,若低于 524288,需临时调高,否则 watcher 会静默失败再重试。
语言服务降级比禁用扩展更有效
Python 和 TypeScript 的语言服务不是“卡”,是默认设计为深度语义分析。中大型项目下,Extension Host 内存驻留轻松破 1.2GB,CPU 持续拉高是必然结果。
- Python:把
python.languageServer从Pylance改为Jedi(Jedi 不加载全部依赖,只做基础补全),改完执行Python: Restart Language Server - TypeScript:设
typescript.preferences.includePackageJsonAutoImports为off,避免 npm 包导入时反复解析@types - ESLint:设
eslint.run为onSave,并精简eslint.probe的文件类型(比如去掉.json) - C/C++:在
.vscode/c_cpp_properties.json中启用"limitSymbolsToIncludedHeaders": true,并严格限定includePath和browse.path范围
GitLens、Prettier 等插件默认太莽
很多“重”不是插件不行,而是默认开启了全量扫描、实时索引等激进策略。禁用前先调配置:
- GitLens:关掉
gitlens.codeLens.enabled和gitlens.hovers.enabled,能降 30%–50% 内存;设gitlens.advanced.caching.enabled为false,避免全仓库历史扫描 - Prettier:设
prettier.requireConfig为true,避免无配置时强制尝试加载;禁用prettier.autoFormatOnSave,改用editor.formatOnSave+ 项目级.prettierrc - Shared Process 占高:大概率是遥测、同步或自动更新在轮询,可临时加
"telemetry.telemetryLevel": "off"验证
禁用扩展后必须彻底关闭 VSCode 窗口再重开,Developer: Reload Window 不会杀死旧子进程,ps aux | grep -i "pyright\|tsserver" 能验证是否残留。











