storage-analyzerlisted
Install: claude install-skill mi4646/my-skills
# Storage Analyzer
对 macOS 做一次只读存储分析,产出交互式 HTML 报告。流程:扫描 → 分析分级 → 生成网页 → 打开。
## 铁律
- **全程只读。** 只能跑扫描/统计/列目录/读元信息(df、du、diskutil、stat、ls)。绝对禁止 rm、mv、rmdir、清空回收站、改权限等任何写操作。
- **删除命令只展示,不执行。** 报告里给出的清理命令是供用户自己在终端确认后运行的。即使用户在对话里说"帮我删",也要先停下确认(命中全局红线:删除文件必须先问),不要直接代跑。
- **估算标注清楚。** 涉及"可释放空间"一律说明是估算值。
- **路径、命令保留原文不翻译。**
## 执行流程
### Step 1 扫描(只读)
```bash
python3 scripts/scan.py > /tmp/storage_scan.json
```
`scan.py` 自动识别系统(`sys.platform`):
- **macOS**:扫 home、library、caches、containers、group_containers、app_support、applications、downloads、dev_caches,用 `du` 算大小。
- **Windows**:扫 user_profile、appdata_local、appdata_roaming、temp、downloads、program_files(_x86)、dev_caches,用 `os.scandir` 算大小;`system.disks` 含所有盘符。
输出 JSON:`system`(系统/磁盘信息,含 `disk_name` 主盘名 + `disks` 全部盘)+ `groups`(各组子目录大小,已降序、过滤 50MB 以下)。扫描较慢,耐心等。读不到的目录标 `denied`,需在报告里列出并提示遗漏体量。
### Step 2 分析与分级
先看 `system.os` 判断系统,读对应的数据布局参考:macOS 读 [references/macos.md](references/macos.md),Windows 读 [references/windows.md](references/windows.md)(讲该系统东西存哪、怎么辨认、归哪一级)。然后读 `/tmp/storage_scan.json` 做这几件事:
1. **挑 Top 5** 占用大户,判定类型(系统资产/应用本体/应用数据/应用缓存/开发缓存/用户文件/媒体内容/下载内容/虚拟机镜像/回收站/其他)。
2. **识别"神秘大目录"**:UUID 命名的 Container、不明的隐藏目录,要追查它属于哪个 App、装的是什么(例如某 97GB 的 UUID Container 实为 Bilibili 离线视频缓存)。必要时 `ls`/`du` 深入一层看清楚,但仍只读。
3. **三级分类 = 清理决策清单,不是全盘点。** 只把"存在'要不要动它'这个决策"的项放进三灯;日常在用的正常应用、操作系统本身、海量零碎小文件没有清理决策,不进三灯,它们落在磁盘条的蓝色"系统及其他"里。判定标准:
- 🟢 **可自动清理**:纯缓存、临时文件、安装包残留、明确可再生且不影响功能、不丢用户数据(pip/uv/npm/Xcode DerivedData 等开发缓存、浏览器缓存)。
- 🟡 **需人工判