# Mac AI 多工記憶體安全檢查

同時讓 Codex、Claude Code、Node 與瀏覽器自動操作工作時，畫面上可能只有幾個對話，背後卻已經長出一整串子程序。這份指南提供兩支完全在本機運作的工具：

- `generate-safe-report.sh`：產生一份隱私安全的當下報告。
- `mac-memory-watch.sh`：每 60 秒採樣一次，碰到保守警戒線時顯示本機通知。

兩支腳本都不刪檔、不結束程序、不用 `sudo`、不聯網。它們只負責把狀況說清楚，不會替你關閉任何東西。

## 先分清楚兩件事

「記憶體壓力」和「磁碟空間」會互相影響，卻不是同一件事：

- 記憶體不夠時，macOS 會壓縮記憶體，也可能把部分資料暫放到磁碟上的 swap。
- 磁碟快滿時，系統能運用的緩衝空間也跟著變少。
- 儲存空間中的「系統資料」包含快取、記錄、虛擬記憶體檔案與其他系統資源，**不能直接當成 swap 的大小**。

先打開兩個畫面：

1. 「活動監視器」→「記憶體」：看底部的「記憶體壓力」與「Swap 使用量」。
2. 「系統設定」→「一般」→「儲存空間」：看磁碟還剩多少空間。

Apple 沒有公布一個適用所有 Mac 的「swap 超過幾 GB 就必須重開」門檻。實際判斷要一起看記憶體壓力、swap 的變化，以及磁碟餘裕。

## 平日｜開工前 1 分鐘

1. 確認記憶體壓力維持綠色。
2. 確認磁碟還有足夠餘裕。我自己的保守線是至少留 **40GB**，這不是 Apple 官方規格。
3. 24GB Mac 先從「2 個重型 AI 工作＋1 條瀏覽器操作線」起跑。大型程式修改、專案索引、生圖與長時間分析都算重任務。
4. 完成一個工作，就正常結束它帶出的 Node、瀏覽器自動操作與本機伺服器。
5. 不確定現在能不能再開時，先產生安全報告，不靠感覺猜。

## 黃燈｜Mac 開始變慢，但仍可操作

1. 停止新增 AI 工作、生圖、索引與瀏覽器自動操作。
2. 儲存文件；程式工作把尚未提交的變更做 commit 或 stash。
3. 在原本的工具裡正常停止已不需要的工作，再用「結束」關閉閒置 App。不要先用強制結束。
4. 關閉不用的本機開發伺服器、舊分頁與背景瀏覽器工作。
5. 等 5 到 10 分鐘，再看一次記憶體壓力與 swap。
6. 數字開始下降、壓力回綠後，一次只恢復一個重任務；若仍持續上升，就進入紅燈流程。

## 紅燈｜壓力變紅、swap 持續長大或磁碟逼近滿載

1. 先保存工作，不要再開任何新工作。
2. 記下還沒完成的下一步、重要網址、工作名稱與輸出位置。
3. 正常停止 Codex／Claude 工作、瀏覽器自動操作與本機伺服器。
4. 正常結束最佔記憶體且目前不需要的 App；等 5 到 10 分鐘再觀察。
5. 仍維持紅色、操作持續卡頓或磁碟只剩極少空間時，完成下方的重開前清單，再正常重新開機。

不要手動刪除 `/private/var/vm/swapfile*`、不要把「系統資料」資料夾整批刪掉，也不要用來路不明的一鍵清理工具賭運氣。

## 重開前｜把接續線索留好

1. 儲存文件、程式碼、提示詞與尚未匯出的結果。
2. 把未完成工作的「下一步」寫成一行，留下網址或輸出位置。
3. 確認雲端同步已完成；重要資料最好也有最近一次 Time Machine 備份。
4. 截一張活動監視器的記憶體畫面，保留壓力與 swap 數字，方便之後找原因。
5. 正常結束 App 與本機伺服器。
6. 從 Apple 選單選「重新開機」，取消勾選「重新登入時再次打開視窗」。
7. 只有在 Mac 完全沒有反應、無法正常重新開機時，才長按電源鍵強制關機。

## 重開後｜不要一次全叫回來

1. 先打開活動監視器，確認記憶體壓力回到綠色。
2. 跑一次安全報告，留下一份乾淨開機後的基準。
3. 先開一個重任務，觀察 5 到 10 分鐘。
4. 再依序恢復第二個 AI 工作與瀏覽器操作線。
5. 哪個 App 一開就讓壓力快速上升，就先更新、降低並行量或檢查它的背景子程序。

## 每週 10 分鐘整理

### 1. 收掉閒置工作

- 正常結束已完成的 Codex／Claude 工作。
- 關閉不用的本機伺服器、Node 程序、headless browser 與長期沒看的分頁。
- 到「系統設定」→「一般」→「登入項目與延伸功能」，關閉不需要的登入項目與背景活動。

### 2. 從看得懂的檔案開始清

- 到「系統設定」→「一般」→「儲存空間」。
- 檢查「文件」中的大型檔案與「下載項目」，只刪除你能辨認、已備份或能重新下載的內容。
- 移除不用的 App、舊安裝檔、壓縮檔與不再需要的 iPhone／iPad 備份。
- 確認後再清空垃圾桶，也可以開啟「30 天後自動清除垃圾桶」。

### 3. 善用 iCloud，但別把同步當備份

- 「系統設定」→你的名字→「iCloud」→「iCloud Drive」，可開啟「最佳化 Mac 儲存空間」。
- 它能在本機空間不足時，把較少使用的檔案改成需要時再下載，**不會降低 RAM 或 swap**。
- 刪除 iCloud Drive 裡的檔案會同步到其他裝置；大量整理前先確認同步完成與 iCloud 容量。
- 重要工作另外使用 Time Machine。iCloud 是同步服務，不能取代完整備份。

### 4. 確認備份真的存在

- 接上 Time Machine 磁碟或確認網路備份磁碟可用。
- 從 Time Machine 選單確認最近一次備份時間。
- 重大清理、系統更新或大量搬檔前，先完成一次備份。

## 工具一｜產生隱私安全報告

下載 `generate-safe-report.sh`，放到想存報告的資料夾後執行：

```bash
chmod +x generate-safe-report.sh
./generate-safe-report.sh
```

完成後，同一資料夾會多一份：

```text
mac-memory-safe-report-YYYYMMDD-HHMMSS-PID.md
```

每次執行都會使用新的檔名；若你指定的檔名已經存在，腳本會停止，不會覆寫原檔。

報告只列出實體記憶體、free percentage、壓縮記憶體、swap、磁碟餘裕，以及 Claude、Codex／ChatGPT、Node.js、Chrome／headless 四個固定程序家族的近似 RSS。它不包含完整命令列、私人路徑、檔名、PID、使用者名稱、主機名稱或專案名稱。

你可以把報告與下面這段一起貼給 AI：

```text
請先解釋這份報告中的記憶體壓力、壓縮、swap 與磁碟餘裕。
不要提供刪檔、kill、pkill 或 sudo 指令。
若資訊不足，請先告訴我應該回到活動監視器或儲存空間查看哪個欄位。
```

## 工具二｜開啟純本機警報

下載 `mac-memory-watch.sh` 後執行：

```bash
chmod +x mac-memory-watch.sh
./mac-memory-watch.sh
```

它會留在目前的終端機，每 60 秒印出一次狀態；碰到黃燈或紅燈時，使用 macOS 本機通知提醒你。按 `Control + C` 即可停止，不會安裝常駐服務。如果尚未授權終端機發送通知，終端機中的狀態仍會持續更新，可照樣使用。

預設使用這組**個人保守線**：

| 等級 | 任一條件命中 |
|---|---|
| 需追蹤 | 第一次採樣時 swap 已高於實體記憶體一半，但 free percentage 與磁碟仍有餘裕；先等下一次，不立刻通知 |
| 黃燈 | free percentage ≤ 20%；單次採樣間 swap 增加 ≥ 1GiB；或磁碟剩餘 ≤ 40GB |
| 紅燈 | free percentage ≤ 10%；swap ≥ 30GiB；或磁碟剩餘 ≤ 10GB |

這些門檻不是 Apple 官方分級，free percentage 也不等於活動監視器的記憶體壓力顏色。高 swap 如果沒有繼續增加、壓力仍健康，只會標為「需追蹤」；通知的意思是「現在該打開活動監視器確認」，不是自動宣判一定要重開機。

想先確認腳本能不能跑，可以只採樣一次：

```bash
MAX_CHECKS=1 ./mac-memory-watch.sh
```

## 安全邊界

- 不呼叫任何網路服務。
- 不需要管理員權限。
- 不執行 `sudo`、`kill`、`pkill`、`rm` 或 `launchctl`。
- 不自動清快取、swap 或「系統資料」。
- 警報腳本不寫檔；報告腳本只新增一份權限為 `600` 的 Markdown 報告。
- 程序 RSS 可能包含共享頁面，不能直接相加成實體 RAM。

## Apple 官方說明

- [在「活動監視器」中查看記憶體用量](https://support.apple.com/zh-tw/guide/activity-monitor/actmntr1004/mac)
- [釋出 Mac 上的儲存空間](https://support.apple.com/zh-tw/102624)
- [查看及管理 Mac 上的儲存空間](https://support.apple.com/zh-tw/guide/mac-help/mchl3d437fbc/mac)
- [最佳化 Mac 的儲存空間](https://support.apple.com/zh-tw/guide/mac-help/mchle5a61431/mac)
- [使用 Time Machine 備份 Mac](https://support.apple.com/zh-tw/104984)
- [重新啟動 Mac](https://support.apple.com/zh-tw/guide/mac-help/mchlp2522/mac)
