code --disable-extensions是唯一能100%跳过所有插件加载流程的方式,不读取settings.json、不扫描.extensions.json、不触发任何activate()函数;而“禁用全部扩展”仅写入配置,无法阻止启动早期注入、工作区推荐或语言服务器残留导致的崩溃。

直接用 code --disable-extensions 启动,是唯一能 100% 跳过所有插件加载流程的方式。它不读取 settings.json、不扫描 .vscode/extensions.json、不触发任何插件的 activate() 函数——这才是排查崩溃的干净起点。
为什么不能只点“禁用全部扩展”按钮
那个按钮只是把插件 ID 写进 extensions.disabledExtensions 配置项,但以下情况仍会出问题:
- 某些插件(如
ms-python.python)在启动早期就注入代码,禁用配置还没来得及生效 - 工作区推荐插件(
.vscode/extensions.json)可能绕过用户级禁用设置 - 插件即使被“禁用”,其语言服务器进程(如
pylance)仍可能残留并监听事件 - 报错仍显示
Extension host terminated unexpectedly,说明崩溃发生在禁用逻辑执行之前
如何用 code --disable-extension 精准隔离崩溃源
当确认是插件导致崩溃后,别全关再一个个开——用命令行逐个排除更可靠,尤其适合连插件面板都打不开的情况:
- 先列出所有已装插件:
code --list-extensions - 优先试近期更新或高危类型:比如
ms-python.python、esbenp.prettier-vscode、bradlc.vscode-tailwindcss - 禁用单个测试:
code --disable-extension ms-python.python - 若还不行,可一次禁用多个:
code --disable-extension esbenp.prettier-vscode --disable-extension dbaeumer.vscode-eslint -
注意:
--disable-extension只对本次启动生效,不影响插件文件本身
日志和运行时状态比 UI 更可信
崩溃往往发生在日志写入前,所以得交叉验证:
- 运行
Developer: Open Extension Host Log,看末尾 ERROR 行里的插件 ID 和路径(如ms-python.python-2026.3.1/dist/extension.js) - 若日志为空,说明崩溃太早,必须退回命令行阶段用
--disable-extension排查 - 运行
Developer: Show Running Extensions,重点关注Activation Time> 1000ms 或Status为Activation failed的插件 - 打开任务管理器,筛选
Code Helper (Renderer)或exthost进程,观察哪个插件启用后 CPU / 内存突增或进程消失
真正麻烦的不是插件多,而是某些插件(比如旧版 Python、SFTP、AI 补全类)会在启动时尝试 spawn 外部进程,而路径含空格、中文或权限不足会导致静默失败——这种错误不会出现在 UI 提示里,只藏在 exthost 日志末尾或系统级进程退出码中。











