- 直观的可视化 - 左右分屏布局,气泡图展示空间占用
- 精美的设计 - 深紫色渐变背景 + 磨砂玻璃效果
- 流畅动画 - 悬停缩放、选中发光效果
- 智能过滤 - 自动跳过 node_modules、.git 等冗余目录,速度提升 3-5 倍
- 动态线程池 - 根据 CPU 核心数自动优化并行度
- 优先级扫描 - Downloads、Documents 等常用目录优先显示
- Rayon 并行扫描 - 多核 CPU 并行计算
- 智能缓存 - 24 小时缓存,预缓存前 5 个最大目录
- 流畅体验 - 异步非阻塞,UI 永不卡顿
- 大文件扫描 - 快速定位 > 100MB 的文件
- 旧文件扫描 - 清理 30 天以上未修改的文件
- 重复文件扫描 - 通过部分哈希识别重复文件
- 首次启动引导 - 自动显示 4 步权限设置说明
- 一键跳转 - 直接打开系统设置页面
- 帮助按钮 - 右上角"?"随时查看引导
- 移到废纸篓 - 使用 macOS Finder API
- 删除历史 - 自动记录删除操作,可追溯
- 可恢复 - 误删可从废纸篓恢复
- 友好提示 - 显示选中数量和大小
- 错误分类 - 细化权限、路径、I/O 错误提示
- 硬链接去重 - 通过 inode 避免重复统计
- 缓存校验 - 24 小时自动过期
- macOS 10.15 (Catalina) 或更高版本
- 支持 Apple Silicon (M1/M2/M3) 和 Intel 芯片
从 Releases 下载对应版本:
- Apple Silicon (M1/M2/M3):
CleanDir-v1.4.0-macOS-aarch64.dmg - Intel:
CleanDir-v1.4.0-macOS-x86_64.dmg - 通用版本:
CleanDir-v1.4.0-macOS-universal.dmg(同时支持 Apple Silicon 和 Intel)
# 克隆项目
git clone https://github.com/cxapython/CleanDir.git
cd CleanDir
# 安装依赖
npm install
# 开发模式
npm run tauri dev
# 构建 DMG
npm run tauri build- 打开应用 - 会自动显示权限引导
- 点击"打开系统设置" - 自动跳转
- 添加权限:
- 系统设置 → 隐私与安全性
- 完全磁盘访问权限
- 添加"空间透视.app"
- 重启应用 - 完成设置
- 选择目录: 点击"选择目录"按钮或使用快捷按钮 (根目录/Users/我的)
- 选择扫描模式:
- ⚡ 快速扫描 (默认)
- 📦 大文件扫描 (可设置大小阈值)
- 📅 旧文件扫描 (可设置天数阈值)
- 🔄 重复文件扫描
- 开始扫描: 点击"🔄 扫描"按钮
- 查看结果: 左侧列表 + 右侧气泡可视化
- 进入子目录: 双击文件夹
- 删除文件: 选中后点击"🗑️ 删除"
- 查看删除历史: 点击右上角 🗑️ 图标
- 前端: React 18 + Vite + Tailwind CSS
- 后端: Rust + Tauri 1.5
- 并行计算: Rayon
- 文件系统: walkdir
- 打包: DMG (2.6 MB)
[dependencies]
tauri = "1.5"
serde = "1.0"
rayon = "1.8" # 并行计算
walkdir = "2.4" # 文件遍历
regex = "1.10" # 智能过滤
num_cpus = "1.16" # CPU 检测- ✅ 开源免费 - MIT 许可证,完全免费使用
- ✅ 轻量高效 - 仅 2.6MB,启动快速,扫描速度提升 30-50%
- ✅ 现代技术栈 - Tauri + React + Rust 构建
- ✅ 安全可靠 - 删除的文件移到废纸篓,可恢复
- ✅ 隐私保护 - 本地运行,不上传任何数据
- ✅ 多架构支持 - 同时支持 Apple Silicon 和 Intel
- 日常清理: 使用"快速扫描" → 智能过滤自动跳过开发目录
- 深度清理: 使用"大文件扫描" (阈值 500MB) → 找出大视频和镜像文件
- 定期维护: 使用"旧文件扫描" (90 天) → 清理下载目录和文档
- 空间优化: 使用"重复文件扫描" → 删除重复的照片和文件
~/Downloads- 下载文件~/Library/Caches- 应用缓存~/Documents- 文档目录~/Movies- 视频文件
可以删除:
- ✅ 旧的下载文件
- ✅ 应用缓存
- ✅ 重复文件
- ✅ 临时文件
不要删除:
- ⛔
/System- 系统文件 - ⛔
/Library- 系统库 - ⛔
~/Library/Preferences- 应用设置 - ⛔ 正在使用的文件
# 打开废纸篓
open ~/.Trash
# 右键文件 → "放回原处"或者在应用中点击右上角 🗑️ 查看删除历史。
A: 需要授予"完全磁盘访问权限"
- 系统设置 → 隐私与安全性
- 完全磁盘访问权限
- 添加"空间透视.app"
- 重启应用
A:
sudo xattr -r -d com.apple.quarantine /Applications/空间透视.appA:
- 使用"快速模式"(默认)
- 启用智能过滤(默认开启)
- 不要扫描整个磁盘
- 针对具体目录扫描
A: 在废纸篓中(~/.Trash/),可以恢复。点击右上角 🗑️ 查看删除历史。
A: 某些系统目录需要完全磁盘访问权限。如果已授权仍有问题,尝试:
- 移除并重新添加权限
- 重启应用
# 安装依赖
npm install
# 开发模式
npm run tauri dev
# 构建 DMG (当前架构)
npm run tauri build
# 构建通用版本 (Apple Silicon + Intel)
./build-universal.sh- Node.js 16+
- Rust 1.70+
- Xcode Command Line Tools
CleanDir/
├── src/ # React 前端
│ ├── App.jsx # 主界面(气泡视图 + 扫描模式)
│ ├── PermissionGuide.jsx # 权限引导
│ └── index.css # 样式
├── src-tauri/ # Rust 后端
│ ├── src/main.rs # 核心逻辑(优化后 793 行)
│ ├── Cargo.toml # Rust 配置
│ └── tauri.conf.json # Tauri 配置
├── package.json # Node 依赖
└── README.md # 本文件
MIT License - 自由使用和修改
- 🚀 智能过滤规则: 默认跳过 node_modules、.git 等 13 种冗余目录,包含 node_modules 的项目扫描速度提升 3-5 倍
- 🔧 动态线程池: 根据 CPU 核心数自动调整并行度 (SSD: 1.5x, HDD: 0.5x)
- 🎯 优先级扫描: Downloads/Documents 等常用目录优先显示,减少等待感知时间 40-60%
- 📉 内存优化: 扫描 10GB 目录内存占用从 120MB 降至 85MB (-29%)
- ⏱️ 进度增强: 显示剩余时间预估 (基于实时速度) 和已耗时
- 🔐 权限优化: 超时保护 (3秒) 和悬浮提示,避免阻塞
- 🎨 错误可视化: 文件列表中显示
⚠️ 图标和错误详情
- 📦 大文件扫描: 快速定位 > 100MB 的文件 (可自定义阈值)
- 📅 旧文件扫描: 清理 30 天以上未修改的文件 (可自定义天数)
- 🔄 重复文件扫描: 通过"大小 + 部分哈希"识别重复文件
- 🗑️ 删除历史: 自动记录删除操作 (最多 100 条),可追溯和查看
⚠️ 错误分类: 细化权限/路径/磁盘 I/O 错误提示- ⏰ 缓存校验: 24 小时自动过期,避免过期数据
- 🔗 硬链接去重: 通过 inode 避免重复统计 (Time Machine 备份统计更准确)
- 新增依赖:
regex(智能过滤),lazy_static(静态变量),num_cpus(CPU 检测) - 代码优化: Rust 后端从 175 行扩展至 793 行,增加了 618 行核心功能代码
| 测试场景 | v1.3.0 | v1.4.0 | 提升 |
|---|---|---|---|
| 含 node_modules 的项目 | 45 秒 | 12 秒 | ↑ 73% |
| Downloads (1000 文件) | 3.2 秒 | 2.1 秒 | ↑ 34% |
| 内存占用 (10GB 目录) | 120MB | 85MB | ↓ 29% |
- 🚀 Rayon 并行计算 - 多核并行扫描,速度提升 5-8 倍
- 📊 真实进度推送 - 后端实时推送扫描进度到前端
- ⚡️ 智能预缓存 - 自动缓存前 5 个最大目录
- 🎯 精准大小计算 - 修复 walkdir 单线程问题
- 🔧 IPC 优化 - 每 3 项或 100ms 发送一次
- ✅ 安全删除(移到废纸篓)
- ✅ 权限引导(首次启动)
- ✅ 气泡可视化界面
- ✅ 快速扫描模式
- ✅ 气泡可视化
- ✅ 性能优化
- ✅ 基础功能
- ✅ 列表视图
欢迎提交 Issue 和 Pull Request!
# 克隆项目
git clone https://github.com/cxapython/CleanDir.git
cd CleanDir
# 安装依赖
npm install
# 开发模式
npm run tauri dev
# 构建
npm run tauri build
# 构建通用版本
./build-universal.sh有问题或建议?欢迎通过以下方式联系:
- 🐛 提交 Issue
- 💡 提交 Pull Request
如果这个项目对你有帮助,请给我们一个 Star ⭐️
让磁盘空间管理变得简单高效! 🎊✨