code --status是唯一能立刻定位单核跑满插件的命令,它直接读取子进程真实cpu%,重点关注extension host行cpu%是否持续>60%、对应pid及启动命令,结合files.watcherexclude配置和高频嫌疑插件验证。

code --status 是唯一能立刻告诉你哪个插件在单核跑满的命令——它不走 UI 渲染路径,直接读取子进程真实 CPU%,比任务管理器或活动监视器准得多。
怎么看 Extension Host 是否真在单核跑满
VSCode 界面没卡,但风扇狂转、某颗 CPU 核心持续 95%+?问题几乎一定出在 Extension Host 进程里。执行 code --status 后重点关注:
-
Extension Host行的 CPU%:长期 >60% 就异常,>90% 基本锁定是某个插件在死循环监听或反复解析 - 对应 PID:记下来,后续用
ps -p [PID] -o args=(macOS/Linux)或任务管理器“详细信息”页右键 → “打开文件位置”确认实际启动命令 - 别被
Code Helper迷惑:它只是壳,真正干活的是Extension Host或带插件名的 Node.js 子进程(比如node /Users/xxx/.vscode/extensions/esbenp.prettier-vscode-...)
禁用插件后 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\|python.*language",找到 PID 后kill -9 [PID]
files.watcherExclude 配错等于放任监听爆炸
VSCode 默认用 chokidar 递归监听整个工作区。一旦遇到 node_modules(几万小文件)、.git/objects,内核级 inotify 事件就会风暴式触发,Node.js 子进程单核跑满——你什么都没改,CPU 就飙到 100%。
- 必须写进项目根目录的
.vscode/settings.json,用户级配置无效 - 通配符必须是
"**/node_modules/**": true,写成"node_modules"、"*/node_modules/*"或"/node_modules/"全部不生效 - Linux/macOS 用户需检查
cat /proc/sys/fs/inotify/max_user_watches,低于524288就得调高,否则 watcher 会静默失败并反复重试 - 推荐完整排除项:
"**/node_modules/**"、"**/dist/**"、"**/build/**"、"**/.git/**"、"**/*.log"
高频嫌疑插件和语言服务器怎么快速验证
某些插件组合或语言服务默认行为极易引发单核满载,不用全禁,可针对性验证:
-
esbenp.prettier-vscode+dbaeumer.vscode-eslint:保存时双重格式化+校验,CPU 直接拉满;临时关掉editor.formatOnSave和eslint.autoFixOnSave看是否回落 -
ms-python.python或ms-python.pylance:检查python.defaultInterpreterPath和python.analysis.extraPaths是否指向过大虚拟环境或未排除的第三方包目录 -
gitlens.gitlens:关掉gitlens.advanced.messages和gitlens.codeLens.enabled,观察 CPU 是否立即下降 -
GitHub.copilot或alibaba.marscode:这类 AI 插件后台索引整个工作区时,lingma-server或copilot进程常单核跑满;临时设"telemetry.telemetryLevel": "off"并重启验证
最常被忽略的是:code --status 输出里多个 Extension Host 实例同时高占,往往意味着远程开发(SSH/WSL)或多窗口共用同一插件实例,此时需分别查 PID,不能只禁一个。











