macos-cleaner

分析并通过智能清理建议回收 macOS 磁盘空间。当用户报告磁盘空间问题、需要清理 Mac 或想了解什么占用了存储空间时,应使用此技能。专注于安全的交互式分析,在执行任何删除操作前需要用户确认。

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "macos-cleaner" with this command: npx skills add evanfang0054/cc-system-creator-scripts/evanfang0054-cc-system-creator-scripts-macos-cleaner

macOS 清理工具

概述

智能分析 macOS 磁盘使用情况并提供可执行的清理建议以回收存储空间。此技能遵循安全第一的原则:彻底分析,呈现清晰的发现,并在执行任何删除操作前要求明确的用户确认。

目标用户:具有基本技术知识的用户,了解文件系统但需要指导哪些内容在 macOS 上可以安全删除。

核心原则

  1. 安全第一,绝不绕过:在没有明确用户确认的情况下,绝不执行危险命令(rm -rfmo clean 等)。没有捷径,没有变通方法。
  2. 价值优于虚荣:您的目标不是最大化清理空间。您的目标是识别什么是真正无用的 vs 有价值的缓存。为了显示大数字而清除 50GB 有用缓存是有害的。
  3. 网络环境意识:许多用户(尤其是中国)的网络缓慢/不可靠。重新下载缓存可能需要数小时。一个节省 30 分钟下载时间的缓存是值得保留的。
  4. 必须进行影响分析:每个清理建议必须包含"删除后会发生什么"列。绝不要在不解释后果的情况下仅列出项目。
  5. 耐心优于速度:磁盘扫描可能需要 5-10 分钟。绝不中断或跳过慢速操作。定期向用户报告进度。
  6. 用户执行清理:分析完成后,提供清理命令让用户自己运行。不要自动执行清理。
  7. 保守默认:如有疑问,不要删除。倾向于谨慎。

绝对禁止:

  • ❌ 绝不自动在用户目录上运行 rm -rf
  • ❌ 绝不在没有预览试运行的情况下运行 mo clean
  • ❌ 绝不使用 docker volume prune -fdocker system prune -a --volumes
  • ❌ 绝不为节省时间跳过分析步骤
  • ❌ 绝不在 Mole 命令后附加 --help(除了 mo --help
  • ❌ 绝不建议删除有用的缓存只是为了夸大清理数字

工作流决策树

用户报告磁盘空间问题
           ↓
    快速诊断
           ↓
    ┌──────┴──────┐
    │             │
立即清理     深度分析
    │             (继续下方)
    │             │
    └──────┬──────┘
           ↓
  呈现发现
           ↓
   用户确认
           ↓
   执行清理
           ↓
  验证结果

第一步:使用 Mole 进行快速诊断

主要工具:使用 Mole 进行磁盘分析。它提供全面的、分类的结果。

1.1 预检检查

# 检查 Mole 安装和版本
which mo && mo --version

# 如果未安装
brew install tw93/tap/mole

# 检查更新(Mole 经常更新)
brew info tw93/tap/mole | head -5

# 如果过时则升级
brew upgrade tw93/tap/mole

1.2 选择分析方法

重要:使用 mo analyze 作为主要分析工具,而不是 mo clean --dry-run

命令目的使用时机
mo analyze交互式磁盘使用浏览器(TUI 树视图)主要:了解什么占用了空间
mo clean --dry-run预览清理类别次要:仅在 mo analyze 之后查看清理预览

为什么优先使用 mo analyze

  • 专用的磁盘分析工具,具有交互式树导航
  • 允许深入到特定目录
  • 显示实际的磁盘使用细分,而不仅仅是清理类别
  • 对于理解存储消耗更有信息量

1.3 通过 tmux 运行分析

重要:Mole 需要 TTY。从 Claude Code 使用时始终使用 tmux。

关键时间说明:主目录扫描很慢(对于大目录需要 5-10 分钟或更长时间)。提前告知用户并耐心等待。

# 创建 tmux 会话
tmux new-session -d -s mole -x 120 -y 40

# 运行磁盘分析(主要工具 - 交互式 TUI)
tmux send-keys -t mole 'mo analyze' Enter

# 等待扫描 - 耐心等待!
# 主目录扫描通常需要 5-10 分钟
# 定期向用户报告进度
sleep 60 && tmux capture-pane -t mole -p

# 使用箭头键导航 TUI
tmux send-keys -t mole Down    # 移动到下一项
tmux send-keys -t mole Enter   # 展开/选择项目
tmux send-keys -t mole 'q'     # 完成后退出

替代方案:清理预览(在 mo analyze 之后使用)

# 运行试运行预览(安全 - 无删除)
tmux send-keys -t mole 'mo clean --dry-run' Enter

# 等待扫描(每 30 秒向用户报告进度)
# 耐心等待!大目录需要 5-10 分钟
sleep 30 && tmux capture-pane -t mole -p

1.4 进度报告

定期向用户报告扫描进度:

📊 磁盘分析进行中...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⏱️ 已用时间:2 分钟

当前状态:
✅ 应用程序:49.5 GB(完成)
✅ 系统库:10.3 GB(完成)
⏳ 主目录:扫描中...(这可能需要 5-10 分钟)
⏳ 应用库:待处理

我正在耐心等待扫描完成。
将在 30 秒后再次报告...

1.5 呈现最终发现

扫描完成后,呈现结构化结果:

📊 磁盘空间分析(通过 Mole)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
可用空间:27 GB

🧹 可恢复空间(试运行预览):

➤ 用户必备项
  • 用户应用缓存:     16.67 GB
  • 用户应用日志:      102.3 MB
  • 废纸篓:              642.9 MB

➤ 浏览器缓存
  • Chrome 缓存:       1.90 GB
  • Safari 缓存:       4 KB

➤ 开发工具
  • uv 缓存:           9.96 GB
  • npm 缓存:          (已检测)
  • Docker 缓存:       (已检测)
  • Homebrew 缓存:     (已检测)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
总可恢复:~30 GB

⚠️ 这是试运行预览。未删除任何文件。

第二步:深度分析类别

系统地扫描以下类别。参考 references/cleanup_targets.md 获取详细说明。

类别 1:系统和应用缓存

要分析的位置:

  • ~/Library/Caches/* - 用户应用缓存
  • /Library/Caches/* - 系统范围缓存(需要 sudo)
  • ~/Library/Logs/* - 应用日志
  • /var/log/* - 系统日志(需要 sudo)

分析脚本:

scripts/analyze_caches.py --user-only

安全级别:🟢 通常可以安全删除(应用会重新生成缓存)

要保留的例外:

  • 浏览器运行时的浏览器缓存
  • IDE 缓存(可能会减慢下次启动)
  • 包管理器缓存(Homebrew、pip、npm)

类别 2:应用残留

要分析的位置:

  • ~/Library/Application Support/* - 应用数据
  • ~/Library/Preferences/* - 偏好设置文件
  • ~/Library/Containers/* - 沙盒应用数据

分析方法:

  1. 列出 /Applications 中已安装的应用
  2. ~/Library/Application Support 交叉引用
  3. 识别孤立项(应用已卸载但数据保留)

分析脚本:

scripts/find_app_remnants.py

安全级别:🟡 需要谨慎

  • ✅ 安全:明确已卸载应用的文件夹
  • ⚠️ 先检查:您很少使用的应用的文件夹
  • ❌ 保留:活动应用数据

类别 3:大文件和重复项

分析脚本:

scripts/analyze_large_files.py --threshold 100MB --path ~

查找重复项(可选,资源密集型):

# 如果安装了 fdupes 则使用
if command -v fdupes &> /dev/null; then
  fdupes -r ~/Documents ~/Downloads
fi

呈现发现:

📦 大文件(>100MB):
━━━━━━━━━━━━━━━━━━━━━━━━
1. movie.mp4                    4.2 GB  ~/Downloads
2. dataset.csv                  1.8 GB  ~/Documents/data
3. old_backup.zip               1.5 GB  ~/Desktop
...

🔁 重复文件:
- screenshot.png(3 个副本)     每个 15 MB
- document_v1.docx(2 个副本)   每个 8 MB

安全级别:🟡 需要用户判断

类别 4:开发环境清理

目标:

  • Docker:镜像、容器、卷、构建缓存
  • Homebrew:缓存、旧版本
  • Node.js:node_modules、npm 缓存
  • Python:pip 缓存、__pycache__、venv
  • Git:存档项目中的 .git 文件夹

分析脚本:

scripts/analyze_dev_env.py

示例发现:

🐳 Docker 资源:
- 未使用的镜像:      12 GB
- 已停止的容器:  2 GB
- 构建缓存:         8 GB
- 孤立的卷:    3 GB
总潜在:      25 GB

📦 包管理器:
- Homebrew 缓存:      5 GB
- npm 缓存:           3 GB
- pip 缓存:           1 GB
总潜在:       9 GB

🗂️  旧项目:
- archived-project-2022/.git  500 MB
- old-prototype/.git          300 MB

清理命令(需要确认):

# Homebrew 清理(安全)
brew cleanup -s

# npm _npx 仅限(安全 - 临时包)
rm -rf ~/.npm/_npx

# pip 缓存(谨慎使用)
pip cache purge

Docker 清理 - 需要特殊处理:

⚠️ 绝不使用这些命令:

# ❌ 危险 - 无确认删除所有卷
docker volume prune -f
docker system prune -a --volumes

正确方法 - 逐卷确认:

# 1. 列出所有卷
docker volume ls

# 2. 确定每个卷属于哪个项目
docker volume inspect <volume_name>

# 3. 要求用户确认要删除的每个项目
# 示例:"您想删除 'ragflow' 项目的所有卷吗?"

# 4. 仅在确认后删除特定卷
docker volume rm ragflow_mysql_data ragflow_redis_data

安全级别:🟢 Homebrew/npm 清理,🔴 Docker 卷需要按项目确认

第三步:与 Mole 集成

Molehttps://github.com/tw93/Mole)是一个用于全面 macOS 清理的**命令行界面(CLI)**工具。它为缓存、日志、开发工具等提供基于交互式终端的分析和清理。

关键要求:

  1. TTY 环境:Mole 需要 TTY 进行交互式命令。从 Claude Code 或脚本运行时使用 tmux
  2. 版本检查:使用前始终验证 Mole 是最新的。
  3. 安全的帮助命令:只有 mo --help 是安全的。不要在其他命令后附加 --help

安装检查和升级:

# 检查是否安装并获取版本
which mo && mo --version

# 如果未安装
brew install tw93/tap/mole

# 检查更新
brew info tw93/tap/mole | head -5

# 如果需要则升级
brew upgrade tw93/tap/mole

使用 tmux 与 Mole 一起使用(Claude Code 必需):

# 创建 tmux 会话以获得 TTY 环境
tmux new-session -d -s mole -x 120 -y 40

# 运行分析(安全,只读)
tmux send-keys -t mole 'mo analyze' Enter

# 等待扫描(耐心 - 大目录可能需要 5-10 分钟)
sleep 60

# 捕获结果
tmux capture-pane -t mole -p

# 完成后清理
tmux kill-session -t mole

可用命令(来自 mo --help):

命令安全性说明
mo --help✅ 安全查看所有命令(唯一安全的帮助)
mo analyze✅ 安全磁盘使用浏览器(只读)
mo status✅ 安全系统健康监控
mo clean --dry-run✅ 安全预览清理(无删除)
mo clean⚠️ 危险实际删除文件
mo purge⚠️ 危险删除项目工件
mo uninstall⚠️ 危险删除应用程序

参考指南: 详见 references/mole_integration.md 获取详细的 tmux 工作流程和故障排除。

使用 Mole 进行多层深度探索

关键:为了全面分析,您必须执行多层探索,而不仅仅是顶层扫描。本节记录了导航 Mole TUI 的经过验证的工作流程。

导航命令

# 创建会话
tmux new-session -d -s mole -x 120 -y 40

# 开始分析
tmux send-keys -t mole 'mo analyze' Enter

# 等待初始扫描
sleep 8 && tmux capture-pane -t mole -p

# 导航键(通过 tmux 发送)
tmux send-keys -t mole Enter    # 进入/展开选定目录
tmux send-keys -t mole Left     # 返回父目录
tmux send-keys -t mole Down     # 移动到下一项
tmux send-keys -t mole Up       # 移动到上一项
tmux send-keys -t mole 'q'      # 退出 TUI

# 捕获当前视图
tmux capture-pane -t mole -p

多层探索工作流程

步骤 1:顶层概览

# 启动 mo analyze,等待初始菜单
tmux send-keys -t mole 'mo analyze' Enter
sleep 8 && tmux capture-pane -t mole -p

# 示例输出:
# 1. 主目录           289.4 GB (58.5%)
# 2. 应用库    145.2 GB (29.4%)
# 3. 应用程序    49.5 GB (10.0%)
# 4. 系统库  10.3 GB (2.1%)

步骤 2:进入最大目录(主目录)

tmux send-keys -t mole Enter
sleep 10 && tmux capture-pane -t mole -p

# 示例输出:
# 1. 库       144.4 GB (49.9%)
# 2. 工作区      52.0 GB (18.0%)
# 3. .cache         19.3 GB (6.7%)
# 4. 应用程序   17.0 GB (5.9%)
# ...

步骤 3:深入特定目录

# 进入 .cache(第 3 项:Down Down Enter)
tmux send-keys -t mole Down Down Enter
sleep 5 && tmux capture-pane -t mole -p

# 示例输出:
# 1. uv           10.3 GB (55.6%)
# 2. modelscope    5.5 GB (29.5%)
# 3. huggingface   887.8 MB (4.7%)

步骤 4:返回并探索另一个分支

# 返回父目录
tmux send-keys -t mole Left
sleep 2

# 导航到不同目录
tmux send-keys -t mole Down Down Down Down Enter  # 进入 .npm
sleep 5 && tmux capture-pane -t mole -p

步骤 5:深入库

# 返回主目录,然后进入库
tmux send-keys -t mole Left
tmux send-keys -t mole Up Up Up Up Up Up Enter  # 进入库
sleep 10 && tmux capture-pane -t mole -p

# 示例输出:
# 1. 应用支持  37.1 GB
# 2. 容器          35.4 GB
# 3. 开发者           17.8 GB  ← Xcode 在这里
# 4. 缓存               8.2 GB

推荐的探索路径

为了全面分析,请遵循此探索树:

mo analyze
├── 主目录(进入)
│   ├── 库(进入)
│   │   ├── 开发者(进入) → Xcode/DerivedData、iOS DeviceSupport
│   │   ├── 缓存(进入) → Playwright、JetBrains 等
│   │   └── 应用支持(进入) → 应用数据
│   ├── .cache(进入) → uv、modelscope、huggingface
│   ├── .npm(进入) → _cacache、_npx
│   ├── 下载(进入) → 待审查的大文件
│   ├── .Trash(进入) → 确认废纸篓内容
│   └── miniconda3/其他开发工具(进入) → 检查最后使用时间
├── 应用库 → 通常与 ~/Library 重叠
└── 应用程序 → 已安装的应用

时间预期

目录扫描时间说明
顶层菜单5-8 秒快速
主目录5-10 分钟大型,请耐心
~/Library3-5 分钟许多小文件
子目录2-30 秒根据大小变化

完整会话示例

# 1. 创建会话
tmux new-session -d -s mole -x 120 -y 40

# 2. 开始分析并获取概览
tmux send-keys -t mole 'mo analyze' Enter
sleep 8 && tmux capture-pane -t mole -p

# 3. 进入主目录
tmux send-keys -t mole Enter
sleep 10 && tmux capture-pane -t mole -p

# 4. 进入 .cache 查看开发缓存
tmux send-keys -t mole Down Down Enter
sleep 5 && tmux capture-pane -t mole -p

# 5. 返回主目录,然后到 .npm
tmux send-keys -t mole Left
sleep 2
tmux send-keys -t mole Down Down Down Down Enter
sleep 5 && tmux capture-pane -t mole -p

# 6. 返回主目录,进入库
tmux send-keys -t mole Left
sleep 2
tmux send-keys -t mole Up Up Up Up Up Up Enter
sleep 10 && tmux capture-pane -t mole -p

# 7. 进入开发者查看 Xcode
tmux send-keys -t mole Down Down Down Enter
sleep 5 && tmux capture-pane -t mole -p

# 8. 进入 Xcode
tmux send-keys -t mole Enter
sleep 5 && tmux capture-pane -t mole -p

# 9. 进入 DerivedData 查看项目
tmux send-keys -t mole Enter
sleep 5 && tmux capture-pane -t mole -p

# 10. 清理
tmux kill-session -t mole

探索的关键见解

经过多层探索后,您将发现:

  1. 哪些项目正在使用 DerivedData - 具体项目名称
  2. 哪些缓存实际上很大 - uv vs npm vs 其他
  3. 文件年龄 - Mole 显示">3mo"、">7mo"、">1yr"标记
  4. 特定卷及其用途 - Docker 项目数据
  5. 可以清理的下载 - 旧的 dmgs、重复文件

反模式:不应删除的内容

关键:以下项目通常建议清理,但在大多数情况下不应删除。它们提供的显著价值超过了它们占用的空间。

要保留的项目(反模式)

项目大小为什么不删除删除的实际影响
Xcode DerivedData10+ GB构建缓存每次完整重新构建节省 10-30 分钟下次构建需要额外 10-30 分钟
npm _cacache5+ GB下载的包在本地缓存npm install 重新下载所有内容(中国 30分钟-2小时)
~/.cache/uv10+ GBPython 包缓存每个 Python 项目从 PyPI 重新安装依赖
Playwright 浏览器3-4 GB自动化测试的浏览器二进制文件每次重新下载 2GB+(30分钟-1小时)
iOS DeviceSupport2-3 GB设备调试所需连接设备时从 Apple 重新下载
Docker 已停止的容器<500 MB可能随时使用 docker start 重新启动丢失容器状态,需要重新创建
~/.cache/huggingface变化AI 模型缓存重新下载大模型(数小时)
~/.cache/modelscope变化AI 模型缓存(中国)同上
JetBrains 缓存1+ GBIDE 索引和缓存IDE 需要 5-10 分钟重新索引

为什么这很重要

虚荣陷阱:显示"清理了 50GB!"感觉很爽,但:

  • 用户接下来花费 2 小时重新下载 npm 包
  • 下次 Xcode 构建需要 30 分钟而不是 30 秒
  • AI 项目失败因为模型需要重新下载

正确心态:"我发现了 50GB 缓存。以下是为什么其中大部分实际上有价值应该保留..."

什么实际上可以安全删除

项目为什么安全影响
废纸篓用户已删除这些文件无 - 用户的决定
Homebrew 旧版本被新版本替换罕见:无法回滚到旧版本
npm _npx临时 npx 执行轻微:npx 下次使用时重新下载
孤立应用残留应用已卸载无 - 应用不存在
特定未使用的 Docker 卷项目确认已放弃无 - 如果真的已放弃

报告格式要求

每个清理报告必须遵循此格式并包含影响分析:

## 磁盘分析报告

### 分类图例
| 符号 | 含义 |
|--------|---------|
| 🟢 | **绝对安全** - 无负面影响,真正未使用 |
| 🟡 | **需要权衡** - 有用缓存,删除有成本 |
| 🔴 | **不要删除** - 包含有价值的数据或正在使用 |

### 发现

| 项目 | 大小 | 分类 | 是什么 | 删除后影响 |
|------|------|----------------|------------|-------------------|
| 废纸篓 | 643 MB | 🟢 | 您删除的文件 | 无 |
| npm _npx | 2.1 GB | 🟢 | 临时 npx 包 | 轻微重新下载 |
| npm _cacache | 5 GB | 🟡 | 包缓存 | 30分钟-2小时重新下载 |
| DerivedData | 10 GB | 🟡 | Xcode 构建缓存 | 10-30分钟重新构建 |
| Docker 卷 | 11 GB | 🔴 | 项目数据库 | **数据丢失** |

### 建议
仅标记为 🟢 的项目建议清理。
标记为 🟡 的项目需要您根据使用模式进行判断。
标记为 🔴 的项目需要每项明确确认。

高质量报告模板

经过多层探索后,使用此经过验证的模板呈现发现:

## 📊 磁盘空间深度分析报告

**分析日期**:YYYY-MM-DD
**使用工具**:Mole CLI + 多层目录探索
**分析原则**:安全第一,价值优于虚荣

---

### 总览

| 区域 | 总占用 | 关键发现 |
|------|--------|----------|
| **主目录** | XXX GB | 库占一半(XXX GB) |
| **应用库** | XXX GB | 与主目录/库重叠统计 |
| **应用程序** | XXX GB | 应用本体 |

---

### 🟢 绝对安全可删除(约 X.X GB)

| 项目 | 大小 | 位置 | 删除后影响 | 清理命令 |
|------|------|------|-----------|---------|
| **废纸篓** | XXX MB | ~/.Trash | 无 - 您已决定删除的文件 | 清空废纸篓 |
| **npm _npx** | X.X GB | ~/.npm/_npx | 下次 npx 命令重新下载 | `rm -rf ~/.npm/_npx` |
| **Homebrew 旧版本** | XX MB | /opt/homebrew | 无 - 已被新版本替代 | `brew cleanup --prune=0` |

**废纸篓内容预览**:
- [列出主要文件]

---

### 🟡 需要您确认的项目

#### 1. [项目名] (X.X GB) - [状态描述]

| 子目录 | 大小 | 最后使用 |
|--------|------|----------|
| [子目录1] | X.X GB | >X个月 |
| [子目录2] | X.X GB | >X个月 |

**问题**:[需要用户回答的问题]

---

#### 2. Downloads 中的旧文件 (X.X GB)

| 文件/目录 | 大小 | 年龄 | 建议 |
|-----------|------|------|------|
| [文件1] | X.X GB | - | [建议] |
| [文件2] | XXX MB | >X个月 | [建议] |

**建议**:手动检查 Downloads,删除已不需要的文件。

---

#### 3. 停用的 Docker 项目 Volumes

| 项目前缀 | 可能包含的数据 | 需要您确认 |
|---------|--------------|-----------|
| `project1_*` | MySQL、Redis | 还在用吗? |
| `project2_*` | Postgres | 还在用吗? |

**注意**:我不会使用 `docker volume prune -f`,只会在您确认后删除特定项目的 volumes。

---

### 🔴 不建议删除的项目(有价值的缓存)

| 项目 | 大小 | 为什么要保留 |
|------|------|-------------|
| **Xcode DerivedData** | XX GB | [项目名]的编译缓存,删除后下次构建需要X分钟 |
| **npm _cacache** | X.X GB | 所有下载过的 npm 包,删除后需要重新下载 |
| **~/.cache/uv** | XX GB | Python 包缓存,重新下载在中国网络下很慢 |
| [其他有价值的缓存] | X.X GB | [保留原因] |

---

### 📋 其他发现

| 项目 | 大小 | 说明 |
|------|------|------|
| **OrbStack/Docker** | XX GB | 正常的 VM/容器占用 |
| [其他发现] | X.X GB | [说明] |

---

### 推荐操作

**立即可执行**(无需确认):
```bash
# 1. 清空废纸篓 (XXX MB)
# 手动:Finder → 清空废纸篓

# 2. npm _npx (X.X GB)
rm -rf ~/.npm/_npx

# 3. Homebrew 旧版本 (XX MB)
brew cleanup --prune=0

预计释放:~X.X GB


需要您确认后执行

  1. [项目1] - [确认问题]
  2. [项目2] - [确认问题]
  3. Docker 项目 - 告诉我哪些项目确定不用了

### 报告质量检查清单

在呈现报告之前,验证:

- [ ] 每个项目都有"删除后影响"说明
- [ ] 🟢 项目真正安全(废纸篓、_npx、旧版本)
- [ ] 🟡 项目需要用户决定(年龄信息、使用模式)
- [ ] 🔴 项目解释为什么要保留
- [ ] Docker 卷按项目列出,而不是全面清理
- [ ] 考虑网络环境(中国 = 重新下载慢)
- [ ] 没有建议删除有用的缓存只是为了夸大数字
- [ ] 清晰的操作项和确切的命令

## 第四步:呈现建议

将发现格式化为具有风险级别的可执行建议:

```markdown
# macOS 清理建议

## 摘要
总可恢复空间:~XX GB
当前使用率:XX%

## 推荐操作

### 🟢 可以安全执行(低风险)
这些可以安全删除,将根据需要重新生成:

1. **清空废纸篓**(~12 GB)
   - 位置:~/.Trash
   - 命令:`rm -rf ~/.Trash/*`

2. **清除系统缓存**(~45 GB)
   - 位置:~/Library/Caches
   - 命令:`rm -rf ~/Library/Caches/*`
   - 注意:应用下次启动可能会稍微慢一些

3. **删除 Homebrew 缓存**(~5 GB)
   - 命令:`brew cleanup -s`

### 🟡 建议审查(中等风险)
删除前审查这些项目:

1. **大文件下载**(~38 GB)
   - 位置:~/Downloads
   - 操作:手动审查并删除不需要的文件
   - 文件:[列出前 10 个最大文件]

2. **应用残留**(~8 GB)
   - 应用:[列出检测到的已卸载应用]
   - 位置:[列出路径]
   - 操作:在删除数据前确认应用真的已卸载

### 🔴 除非确定否则保留(高风险)
仅在您知道自己在做什么时才删除:

1. **Docker 卷**(~3 GB)
   - 可能包含重要数据
   - 使用以下命令审查:`docker volume ls`

2. **Time Machine 本地快照**(~XX GB)
   - 自动备份,需要空间时将删除
   - 检查命令:`tmutil listlocalsnapshots /`

第五步:确认后执行

关键:没有明确的用户确认绝不执行删除操作。

交互式确认流程:

# 来自 scripts/safe_delete.py 的示例
def confirm_delete(path: str, size: str, description: str) -> bool:
    """
    请求用户确认删除。

    参数:
        path:文件/目录路径
        size:人类可读的大小
        description:此文件/目录是什么

    返回:
        如果用户确认则为 True,否则为 False
    """
    print(f"\n🗑️  确认删除")
    print(f"━━━━━━━━━━━━━━━━━━")
    print(f"路径:        {path}")
    print(f"大小:        {size}")
    print(f"说明:{description}")

    response = input("\n删除此项目?[y/N]:").strip().lower()
    return response == 'y'

对于批量操作:

def batch_confirm(items: list) -> list:
    """
    显示所有项目,请求批量确认。

    返回用户批准的项目列表。
    """
    print("\n📋 要删除的项目:")
    print("━━━━━━━━━━━━━━━━━━")
    for i, item in enumerate(items, 1):
        print(f"{i}. {item['path']} ({item['size']})")

    print("\n选项:")
    print("  'all'    - 删除所有项目")
    print("  '1,3,5'  - 按编号删除特定项目")
    print("  'none'   - 取消")

    response = input("\n您的选择:").strip().lower()

    if response == 'none':
        return []
    elif response == 'all':
        return items
    else:
        # 解析数字
        indices = [int(x.strip()) - 1 for x in response.split(',')]
        return [items[i] for i in indices if 0 <= i < len(items)]

第六步:验证结果

清理后,验证结果并报告:

# 比较之前/之后
df -h /

# 计算恢复的空间
#(由 scripts/cleanup_report.py 处理)

报告格式:

✅ 清理完成!

之前:已使用 450 GB(90%)
之后:  已使用 385 GB(77%)
━━━━━━━━━━━━━━━━━━━━━━━━
已恢复:65 GB

细分:
- 系统缓存:        45 GB
- 下载:            12 GB
- Homebrew 缓存:        5 GB
- 应用残留:  3 GB

⚠️ 注意:
- 某些应用首次启动可能需要更长时间
- 除非您有 Time Machine 备份,否则无法恢复已删除的项目
- 建议每月运行此清理一次

💡 维护提示:
- 设置自动 Homebrew 清理:每周 `brew cleanup`
- 每月审查 Downloads 文件夹
- 在 Finder 偏好设置中启用"自动清空废纸篓"

安全指南

始终保留

没有明确的用户指示绝不删除这些:

  • ~/Documents~/Desktop~/Pictures 内容
  • 活动项目目录
  • 数据库文件(.db、.sqlite)
  • 活动应用的配置文件
  • SSH 密钥、凭据、证书
  • Time Machine 备份

需要 Sudo 确认

这些操作需要提升的权限。要求用户手动运行命令:

  • 清除 /Library/Caches(系统范围)
  • 清除 /var/log(系统日志)
  • 清除 /private/var/folders(系统临时)

示例提示:

⚠️ 此操作需要管理员权限。

请手动运行此命令:
  sudo rm -rf /Library/Caches/*

⚠️ 您将被要求输入密码。

备份建议

在执行任何 >10GB 的清理之前,建议:

💡 安全提示:
在清理 XX GB 之前,考虑创建 Time Machine 备份。

快速备份检查:
  tmutil latestbackup

如果没有最近备份,运行:
  tmutil startbackup

故障排除

"Operation not permitted"错误

macOS 可能由于 SIP(系统完整性保护)而阻止删除某些系统文件。

解决方案:不要强制操作。这些保护是为了安全而存在的。

缓存删除后应用崩溃

罕见但可能。解决方案:重新启动应用,它将重新生成必要的缓存。

Docker 清理删除重要数据

预防:清理前始终列出 Docker 卷:

docker volume ls
docker volume inspect <volume_name>

资源

scripts/

  • analyze_caches.py - 扫描和分类缓存目录
  • find_app_remnants.py - 检测孤立的应用数据
  • analyze_large_files.py - 使用智能过滤查找大文件
  • analyze_dev_env.py - 扫描开发环境资源
  • safe_delete.py - 带确认的交互式删除
  • cleanup_report.py - 生成之前/之后报告

references/

  • cleanup_targets.md - 每个清理目标的详细说明
  • mole_integration.md - 如何与此技能一起使用 Mole
  • safety_rules.md - 绝不删除的内容的综合列表

使用示例

示例 1:快速缓存清理

用户请求:"我的 Mac 空间不足,你能帮助吗?"

工作流程:

  1. 运行快速诊断
  2. 将系统缓存识别为快速胜利
  3. 呈现发现:"~/Library/Caches 中有 45 GB"
  4. 解释:"这些可以安全删除,应用会重新生成它们"
  5. 请求确认
  6. 执行:rm -rf ~/Library/Caches/*
  7. 报告:"已恢复 45 GB"

示例 2:开发环境清理

用户请求:"我是开发人员,我的磁盘满了"

工作流程:

  1. 运行 scripts/analyze_dev_env.py
  2. 呈现 Docker + npm + Homebrew 发现
  3. 解释每个类别
  4. 提供清理命令和说明
  5. 让用户执行(不要自动执行 Docker 清理)
  6. 验证结果

示例 3:查找大文件

用户请求:"什么占用了这么多空间?"

工作流程:

  1. 运行 scripts/analyze_large_files.py --threshold 100MB
  2. 呈现前 20 个大文件及其上下文
  3. 分类:视频、数据集、档案、磁盘映像
  4. 让用户决定删除什么
  5. 执行已确认的删除
  6. 建议存档到外部驱动器

最佳实践

  1. 从保守开始:从明显安全的目标(缓存、废纸篓)开始
  2. 解释一切:用户应该了解他们正在删除的内容
  3. 显示示例:列出每个类别的 3-5 个示例文件
  4. 尊重用户节奏:不要匆忙进行确认
  5. 记录结果:始终显示之前/之后的磁盘使用情况
  6. 教育:在最终报告中包含维护提示
  7. 集成工具:为更喜欢 GUI 的用户建议 Mole

何时不使用此技能

  • 用户想要自动/静默清理(违反安全第一原则)
  • 用户需要 Windows/Linux 清理(macOS 特定技能)
  • 用户磁盘使用率 <10%(无需清理)
  • 用户想要清理需要禁用 SIP 的系统文件(安全风险)

在这些情况下,解释局限性并建议替代方案。

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

planning-with-files

No summary provided by upstream source.

Repository SourceNeeds Review
General

doc-coauthoring

No summary provided by upstream source.

Repository SourceNeeds Review
General

skill-creator

No summary provided by upstream source.

Repository SourceNeeds Review