code --status可直接查vscode真实子进程;extension host、pyright、tsserver、rg等才是高负载元凶;需结合ps或任务管理器定位具体插件,禁用后必须完全重启vscode才能终止残留进程。

直接运行 code --status 查真实子进程
VSCode 界面没卡但风扇狂转,说明问题不在主进程,而在后台子进程。任务管理器里一堆 Code Helper 是障眼法,它们只是壳。真正干活的是 Extension Host、pyright、tsserver、rg 这类子进程。code --status 会立刻列出所有子进程的 PID、实时 CPU% 和内存占用,不用猜、不重装、不盲禁。
重点关注以下几类:
-
Extension HostCPU 长期 >60% → 某插件(如ms-python.python、esbenp.prettier-vscode)在轮询、监听失败后卡死,或 onSave 逻辑耗时过高 - 进程名含
pyright、tsserver、cpptools-srv→ 语言服务正在全量索引依赖树(比如扫node_modules/@types) -
rg进程 CPU 爆表 → VSCode 正在用 ripgrep 扫整个工作区,常见于打开家目录或未排除node_modules -
Shared Process占高 → 遥测、设置同步或自动更新在后台轮询
确认高占用进程到底跑的是谁
记下 code --status 中高 CPU 的 PID,再用系统命令查它实际在执行什么:
- macOS/Linux:
ps -p [PID] -o args=(看完整命令行),或ps -p [PID] -o comm=(看二进制名) - Windows:任务管理器 → “详细信息”页 → 右键该进程 → “打开文件所在位置”,看路径是否含
pylance、prettier、gitlens等
例如看到 /path/to/node /path/to/pyright/dist/server.js,就坐实是 Pylance/Pyright 在反复解析;看到 rg --files --hidden --follow,基本就是 files.watcherExclude 没配对或工作区过大。
Developer: Open Process Explorer 看扩展级资源分布
这个命令比 code --status 更细一层,能展开 Extension Host,看到每个已激活扩展的实时 CPU 占用率和内存用量。按 Ctrl+Shift+P 输入执行后,重点关注:
- 某扩展长期显示 >10% CPU 或内存持续上涨 → 它大概率在后台做同步阻塞操作
- 右键可直接禁用,但注意:仅禁用不重启,旧进程仍驻留内存
- 连续观察 10–20 秒,有些插件只在保存/补全瞬间爆发(比如
aaron-bond.better-comments在输入时拖慢编辑器)
别被 Developer: Show Running Extensions 带偏
这个命令只显示“哪些扩展注册了激活事件”,不反映真实资源消耗。它告诉你 ms-python.python 已启用,但不会告诉你当前 pyright 进程正占 85% CPU。更危险的是:点“Disable”只是阻止新加载,旧语言服务器进程照常运行——你关掉插件,CPU 依然满载。
正确做法必须三步闭环:
- 先用
code --status或Open Process Explorer确认哪个 PID 真在吃资源 - 右键对应扩展 →
Disable (For All Folders)(不是仅当前工作区) - 必须完全关闭当前 VSCode 窗口(不是重载),再重新打开工作区,否则残留进程不会退出
复杂点在于:很多高 CPU 场景是多个因素叠加——比如 rg 扫 node_modules + pyright 同时做类型推导 + GitLens 在后台解析历史。单禁一个插件可能无效,得配合 files.watcherExclude 和语言服务器降级一起调。











