# 在 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，它會分組停用擴充功能，再問你問題是否還在，定位到一個擴充功能後，按它自己的文件執行重設或重建，沒有一個清快取操作能安全重設所有擴充功能自行寫入的資料。

## 先量大小，再移動資料夾

在 Finder 按 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. 在 Finder 開啟 `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/tested-apps/vscode)另講移除清單。

如果要移除編輯器，見[在 Mac 上移除 VS Code](https://mole.fit/tw/blog/how-to-uninstall-vscode-mac)，套件管理器和專案建置快取則放在[開發快取指南](https://mole.fit/tw/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/tw/blog/clear-vscode-cache-mac
Blog index for agents: https://mole.fit/tw/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
