根本原因是插件更新采用“先解压新版本→覆盖旧目录→异步清理”机制,中间态导致Cache、CachedData和extensions目录同时存多份副本,瞬时占用达2–3倍;需彻底退出VSCode后清空三目录,并用--user-data-dir参数将全部用户数据重定向至非C盘。

VSCode插件更新后临时盘(通常是C盘)空间瞬间告急,根本原因不是“更新本身大”,而是更新过程会**先解压新版本到临时位置、再覆盖旧目录、最后才清理残留**——中间阶段可能产生 2–3 倍瞬时占用。尤其 Python、Java、Remote-SSH 这类带语言服务器的插件,更新时会在 %APPDATA%\Code\Cache、%APPDATA%\Code\CachedData 和 %USERPROFILE%\.vscode\extensions 下同时写入多份副本。
为什么插件更新会触发临时盘爆满
VSCode 的扩展更新机制不支持原地增量更新,它必须:下载 .vsix 包 → 解压到临时缓存区 → 验证签名 → 拷贝进 extensions 目录 → 删除旧版本 → 最后才异步清理临时文件。这个“中间态”往往卡在磁盘已满时无法完成清理,导致残留堆积。
-
%APPDATA%\Code\Cache:Chromium 渲染层缓存,更新期间大量重复index.html、worker.js文件涌入 -
%APPDATA%\Code\CachedData:语法分析、语义高亮等运行时产物,每次更新语言服务器都会重建整套索引 -
%USERPROFILE%\.vscode\extensions:新旧插件目录并存,例如ms-python.python-2023.8.0和ms-python.python-2024.2.0同时存在数分钟
快速释放空间的三步操作(必须按顺序)
别直接删文件夹——先确保 VSCode 完全退出,否则可能损坏扩展状态或触发下次启动异常重建。
- 打开任务管理器(
Ctrl+Shift+Esc),结束所有Code.exe、Code Helper.exe、Code Helper (Renderer).exe进程(包括后台静默进程) - 手动清空三个关键路径(Windows PowerShell 粘贴执行):
Get-ChildItem "$env:APPDATA\Code\Cache" -Recurse | Remove-Item -Force -Recurse Get-ChildItem "$env:APPDATA\Code\CachedData" -Recurse | Remove-Item -Force -Recurse Get-ChildItem "$env:APPDATA\Code\User\workspaceStorage" -Recurse | Remove-Item -Force -Recurse
- 检查
%USERPROFILE%\.vscode\extensions,删除明显是“旧版本号”的文件夹(如带-2023.x后缀的),但**不要删正在用的版本**(可对比 VSCode 设置里显示的已启用插件版本)
--user-data-dir 是唯一治本方案
靠清理只能救急,不能防复发。真正解决问题,必须让 VSCode **从启动那一刻起就不往 C 盘写任何用户数据**。环境变量 VSCODE_EXTENSIONS 只控制插件路径,而 --user-data-dir 参数能一并接管插件、配置、缓存、工作区存储全部内容。
- 修改 VSCode 快捷方式「目标」字段,在原路径后加空格 +
--user-data-dir "D:\VSCodeData"(路径必须用英文双引号包裹) - 如果使用命令行启动,每次都要加该参数;想全局生效,就设系统环境变量
CODE_USER_DATA_DIR(注意:这是 VSCode 1.85+ 支持的官方变量,优先级高于--user-data-dir) - 首次用新路径启动后,VSCode 会自动迁移当前配置和已启用插件,但不会动旧路径下的文件——你可以确认一切正常后再手动删掉
%APPDATA%\Code和%USERPROFILE%\.vscode
哪些插件更新最危险,建议提前禁用
不是所有插件更新都平等。以下几类在磁盘紧张时极易引发 ENOSPC 错误,更新前建议临时禁用:
-
ms-python.python:每次更新会拉取完整 PyLSP 或 Pylance 二进制,单次写入常超 500MB -
ms-vscode-remote.remote-ssh:更新时在%APPDATA%\Code\Remote\ssh下缓存整套远程适配器,且不自动清理 -
eamodio.gitlens:后台持续扫描 Git 历史并写入.gitlens子目录,更新期间并发写入加剧压力 -
esbenp.prettier-vscode:对大文件格式化时生成中间缓存,磁盘满时容易卡死在写入环节
这些插件的缓存行为无法通过设置完全关闭,临时禁用比硬扛更新更稳妥。真正要长期解决,还是得把 --user-data-dir 落到每次启动里——否则哪怕你清了十次缓存,下一次 Python 插件更新,C 盘又会突然红起来。


















