vs code本地缓存不会自动清理,长期堆积可达数gb;可安全删除的目录包括cachedextensionvsixs、cache、service worker、logs、crashpad、cacheddata和cachedextensions,但extensions和user目录不可全删。

VSCode 本地缓存不会自动清理,放任不管几个月就能吃掉几个 GB —— 根本不是“缓存”,是缓存残留堆积成的垃圾山。
为什么.vscode/settings.json里的files.watcherExclude不生效
它只在项目根目录的 .vscode/settings.json 中起作用,用户级或全局设置(比如通过 Cmd+, 打开的 Settings UI)对文件监听器完全无效。VSCode 的 chokidar 监听器启动时就按该路径读取规则,错过就永远错过。
- 必须确保配置写在项目根目录下的
.vscode/settings.json,且格式严格为对象:"files.watcherExclude": { "**/node_modules/**": true, "**/dist/**": true, "**/.git/**": true } - 路径规则必须带双星号和尾部斜杠:
"**/node_modules/**"✅,"node_modules"或"**/node_modules"❌ - monorepo 项目要额外加:
"**/.pnpm/**": true、"**/.turbo/**": true、"**/packages/**/node_modules/**": true - Linux/macOS 用户还需检查系统 inotify 限额:
cat /proc/sys/fs/inotify/max_user_watches,低于524288就得用sudo sysctl fs.inotify.max_user_watches=524288临时提升
哪些缓存目录可安全定期删除
VSCode 不会自动清理旧扩展包、渲染缓存、Service Worker 数据等,这些全堆在 %APPDATA%\Code(Windows)、~/Library/Application Support/Code(macOS)或 ~/.config/Code(Linux)下,长期不碰就膨胀。
-
CachedExtensionVSIXs:已下载但未安装的插件安装包,可直接删 -
Cache和Code Cache:终端渲染、字体、Webview 缓存,删后首次打开稍慢,无功能影响 -
Service Worker:常达 1GB+,纯离线资源缓存,删了不影响编辑 -
logs和Crashpad:日志与崩溃报告,可清 -
CachedData和CachedExtensions:插件运行时生成的中间数据,重启后重建,可删
注意:extensions 目录不能删(那是已启用插件本体),User 目录也不能全删(含你的 settings.json)。
code --max-memory=4096 为什么桌面图标启动无效
--max-memory 是 Electron 主进程(即渲染器)的 V8 堆上限参数,单位 MB,但它只在命令行启动时生效,桌面快捷方式、Dock 图标、开始菜单项等所有图形化入口都绕过该参数,走的是默认无限堆大小策略。
- 必须用终端执行:
code --disable-extensions --disable-gpu --max-memory=4096 . - 该参数只管主窗口渲染进程,不影响 Extension Host、terminal 进程或 WSL2 里的
vscode-server - macOS 用户加
--disable-gpu可额外省 200–500MB,尤其外接显示器时;Windows 集成显卡用户也建议加 - 想永久生效?把
"disable-hardware-acceleration": true写进settings.json,再配合开机脚本或别名封装启动命令
WSL2 下 VSCode Remote 的缓存双倍膨胀问题
Remote-WSL 模式下,VSCode 会在 Windows 侧和 WSL2 侧各存一份缓存:Windows 侧存 Cache 和 Service Worker,WSL2 侧的 ~/.vscode-server 里还有独立的 data/CachedData、data/CachedExtensions,两者互不感知,也不共享清理逻辑。
- WSL2 侧缓存清理命令:
rm -rf ~/.vscode-server/data/Cached*(需先退出所有 Remote 窗口) - 限制 WSL2 总内存才治本:在 Windows 用户目录下建
.wslconfig,写入:[wsl2] memory=4GB swap=1GB
- 改完必须执行
wsl --shutdown,否则新配置不加载 - 避免用
code .打整个 Git 仓库根目录;改用code src/或code packages/foo,从源头减少监听范围
真正难处理的不是“怎么删”,而是“删完立刻又被同一批插件和监听器填满”——所以优先堵住源头,再定时清扫残余。











