# 在 Mac 上清理 VS Code 缓存，保留设置和扩展

> 分清 VS Code 的缓存、安装包和工作区状态，先用编辑器排障，再清理确认可重建的部分，保留设置和扩展。

Published: 2026-10-28

VS Code 占空间或反复出问题，不一定要把整套配置重置，Mac 上的 `Code` 文件夹把可重建的缓存、设置、工作区状态和扩展数据放在一起，整目录删掉比清缓存影响大得多。先重新加载窗口或排查扩展，再处理已经确认的缓存。

## 先分清 Code 文件夹里的内容

Microsoft 标准发行版把用户数据放在 `~/Library/Application Support/Code`，默认配置的设置和状态在 `User` 下，安装好的扩展通常另放在 `~/.vscode/extensions`，自定义启动参数可以改变这些位置。微软的[设置文档](https://code.visualstudio.com/docs/configure/settings)写明了设置文件的位置，[环境实现](https://github.com/microsoft/vscode/blob/main/src/vs/platform/environment/common/environmentService.ts)则把工作区存储、日志和下载的扩展安装包分开。

下表第一列除了最后一行，都是 `~/Library/Application Support/Code` 下面的相对路径。

| 位置 | 存的是什么 | 怎么处理 |
| --- | --- | --- |
| `Cache`、`Code Cache`、`GPUCache` | Chromium 的资源、编译代码和图形缓存 | 可以重建，退出后再清 |
| `CachedData` | 按构建版本分开的 VS Code 启动代码缓存 | 可以重建，下次启动可能变慢 |
| `CachedExtensionVSIXs` | 下载的扩展安装包 | 可以移除，以后安装或更新可能重新下载 |
| `User/workspaceStorage` | 各工作区的编辑器和扩展状态 | 默认保留，逐项查看 |
| `User/globalStorage` | 持久化的编辑器和扩展数据，可能有登录相关状态 | 保留，不是通用缓存 |
| `logs` | 过去会话的诊断记录 | 问题排查完后再删旧会话 |
| `User` | 设置、快捷键、代码片段、配置文件及其他状态 | 保留，本地历史记录也在其中 |
| `~/.vscode/extensions` | 安装好的扩展 | 保留，通过编辑器管理 |

Electron 的[用户数据存储说明](https://www.electronjs.org/docs/latest/api/app#appgetpathname)写明，Chromium 的缓存会和 Cookie、本地存储放在同一区域，旁边的文件夹长得像缓存，不代表也能删。这些都是实现上的细节，不是每个版本都会把表里的文件夹建齐。

## 先用 VS Code 自己的排障入口

保存文件，按 Shift + Command + P 打开命令面板，运行 Developer: Reload Window，它只是重新加载窗口，文档没说它会清磁盘缓存，界面没刷新这类问题先用它更合适。它的[实现](https://github.com/microsoft/vscode/blob/main/src/vs/workbench/browser/actions/windowActions.ts)调用的就是窗口重新加载操作。

如果问题从某次扩展变动后开始，先禁用那个扩展，不要直接删它的数据。微软的[性能排障文档](https://github.com/microsoft/vscode/wiki/Performance-Issues)里有 Help: Start Extension Bisect，它会一组一组地禁用扩展，每次问你问题还在不在，定位到是哪个扩展后，按那个扩展自己的文档去重置或重建，没有哪个清缓存操作能把所有扩展各自写的数据都安全重置掉。

## 先量大小，再移动文件夹

在访达按 Shift + Command + G，输入 `~/Library/Application Support/Code`，逐个看文件夹大小，不要把父目录总量都算成可清理空间，也可以在终端用下面两条只读命令查看。

```sh
du -sh "$HOME/Library/Application Support/Code"/*
du -sh "$HOME/Library/Application Support/Code/User"/* "$HOME/.vscode/extensions"
```

第一行把顶层缓存和 `User` 分开，第二行可以看工作区存储或全局存储是不是占了大头，父目录和子目录的数字不要相加。提示路径不存在，就是这里没有那个文件夹，提示权限错误则说明这次没统计全。

这些路径对应标准稳定版，如果用 `--user-data-dir` 或 `--extensions-dir` 启动，就去看参数指定的位置，微软的[命令行参考](https://code.visualstudio.com/docs/configure/command-line)记录了这两个参数。远程开发环境要单独查，它的数据不一定在本机这个文件夹里。

## 只清已经确认可重建的部分

1. 保存工作，结束集成终端里的任务，用 Command + Q 彻底退出 VS Code，关掉一个窗口不等于退出应用。
2. 任何涉及状态的尝试之前，先备份 `User`，扩展无法重建的内容另外留一份，项目文件夹和项目自己的 `.vscode` 配置继续保留。
3. 在访达打开 `Code`，只把已经确认的 `Cache`、`Code Cache`、`GPUCache` 或 `CachedData` 移到废纸篓，先处理相关的一个再测试，不要把旁边的文件夹一起删掉。
4. 如果空间花在下载上，单独查看 `CachedExtensionVSIXs`，里面是安装包，不是安装好的扩展，如果里面有再也下载不到的离线安装包，先另存一份。[扩展下载器](https://github.com/microsoft/vscode/blob/main/src/vs/platform/extensionManagement/node/extensionDownloader.ts)会复用已有安装包，缺少时再下载。
5. 排障用不上了，可以删掉 `logs` 下的旧会话，以后的会话会写新日志，但删掉的旧日志是找不回来的。

重新打开同一个项目，看原来的问题解决没有，再考虑清空废纸篓，用到的资源会重新生成缓存，第一次启动也可能慢一点，这是在正常重建，不代表清理失败了。

## 工作区存储要当成状态来处理

`User/workspaceStorage` 下按工作区 ID 分文件夹，微软的[工作区存储实现](https://github.com/microsoft/vscode/blob/main/src/vs/platform/storage/electron-main/storageMain.ts)会写入 `state.vscdb` 和 `workspace.json`，扩展也可以在这里保存工作区专用文件，一个很大的条目可能放着有用的本地状态，包括扩展里的对话，不一定只是索引。

读取某个条目的 `workspace.json`，确认它对应哪个文件夹或工作区，项目删除或移动后条目可能还在，但找不到文件夹也可能只是外置磁盘没挂载。确认是哪种情况，备份该条目，退出 VS Code，再考虑只移走这一个，项目文件虽然在别处，丢掉的工作区或扩展状态不会因为重新打开项目就回来，远程的和认不出来的条目都先留着。

`User/globalStorage` 不动，重置它可能删掉扩展的持久数据、让你重新登录，具体影响取决于扩展和 VS Code 版本，只备份 `settings.json` 是保不住这些状态的。

## 核对空间，再排查剩下的问题

重新打开并使用项目后，用同一组命令再量一次，废纸篓里的文件仍占磁盘空间，所以 `Code` 变小不代表可用空间立刻增加，确认设置、扩展和原来的问题之前，先保留恢复的余地。

问题仍在的话，可以指定两个全新、未使用过的目录启动隔离实例。

```sh
code --user-data-dir "$HOME/vscode-cache-test-data" --extensions-dir "$HOME/vscode-cache-test-extensions"
```

这会创建测试数据，不重置平时的配置，找不到 `code` 时按命令行参考链接的 macOS 安装步骤设置。第一次对比前不要启用 Settings Sync，也不要装扩展，干净实例里一切正常，只能说明问题可能出在平时的配置或扩展上，不能就此认定是缓存坏了。如果清理后登录没了，先别再删，看看移走过哪些状态文件夹，需要恢复时，先退出 VS Code 再从备份放回去。

## Mole 在其中的位置

Mole Mac 的**清理**会列出 `CachedData`、`Code Cache`、`GPUCache` 和已有的 `WebStorage/<id>/CacheStorage` 叶目录，可清理时默认勾选，Application Support 下的条目需要完全磁盘访问权限，VS Code 运行时相关行暂不可清理。对应本地文件夹已不存在的 `User/workspaceStorage` 条目只列出来供你检查，默认不勾选，点**永不清理此类**会排除这条 VS Code 规则，以后再出现的同类条目也不再列出。这些行不包括设置、全局存储和在用的扩展，**缓存删除方式**默认是**永久删除**，工作区条目也一样，不会自动进废纸篓，想留个恢复的余地，就在**缓存删除方式**里选**放入废纸篓**。[VS Code 已测应用指南](https://mole.fit/zh/tested-apps/vscode)另讲卸载清单。

如果要移除编辑器，见[在 Mac 上卸载 VS Code](https://mole.fit/zh/blog/how-to-uninstall-vscode-mac)，包管理器和项目构建缓存则放在[开发缓存指南](https://mole.fit/zh/blog/how-to-clear-dev-caches-mac)里。

## 常见问题

### 会删掉我的设置或扩展吗？

按上面的步骤只清缓存，`User` 和 `~/.vscode/extensions` 都还在，删掉整个 `Code` 文件夹则是把用户数据重置了，是两回事，微软的[卸载文档](https://code.visualstudio.com/docs/setup/uninstall)有说明。

### 为什么缓存又长回来了？

使用时 VS Code 会重建代码和图形缓存，以后安装或更新扩展时也可能重新下载缺失的安装包，反复删除解决不了某个扩展持续生成过多数据的问题。

### 能把工作区存储全删掉吗？

这样会丢掉所有工作区的本地状态，还是逐个看、留好备份，启动时重新建出了文件夹，不代表原来的内容回来了。

---

Canonical HTML page: https://mole.fit/zh/blog/clear-vscode-cache-mac
Blog index for agents: https://mole.fit/zh/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
