16 KiB
Note
本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
English | العربية | Español | 日本語 | 简体中文 | 繁體中文
PureMac
夺回你的 Mac。
免费、开源的 macOS 卸载与清理工具。无订阅、无遥测、无推销。
安装 - 为何存在 - 对比 - 我们的承诺 - 功能 - 权限 - 贡献
想要更多开源软件?试试 Pesty — 一款免费、原生的 macOS 剪贴板管理器。
安装
brew install --cask puremac
或从 Releases) 下载已签名、已公证的 .dmg,将 PureMac 拖入 /Applications。无 Gatekeeper 警告,无需隔离属性变通。
从源码构建
brew install xcodegen
git clone https://github.com/momenbasel/PureMac.git
cd PureMac
xcodegen generate
xcodebuild -project PureMac.xcodeproj -scheme PureMac -configuration Release \
-derivedDataPath build build
open build/Build/Products/Release/PureMac.app
对比
| PureMac | CleanMyMac | Pearcleaner | Mole | OnyX | |
|---|---|---|---|---|---|
| 价格 | 免费 | $40+/yr | 免费 | CLI 免费 / GUI 付费 | 免费 |
| 开源 | 是(MIT) | 否 | 源码可用¹ | 仅 CLI | 否 |
| 原生 Mac GUI | 是 | 是 | 是 | 以终端为主 | 是 |
| 无遥测 | 是 | 否 | 是 | 是 | 是 |
| 无订阅 | 是 | 否 | 是 | — | 是 |
| 签名 + 公证 | 是 | 是 | 是 | — | 是 |
| 应用卸载器 + 孤儿文件 | 是 | 是 | 是 | 部分 | 否 |
| 仅移至废纸篓(可恢复) | 是 | 部分 | 是 | 部分 | 否 |
| 如实说明可清除空间 | 是 | 否 | n/a | n/a | n/a |
¹ Pearcleaner 采用 Apache 2.0 + Commons Clause — 源码可用但未经 OSI 批准(不得出售)。PureMac 为真正的 MIT。对比反映截至 2026 年公开记录的功能;欢迎通过 PR 更正。
我们的承诺
Mac 清理工具会请求 macOS 授予的最高权限 — 完全磁盘访问权限(Full Disk Access)— 然后删除你的文件。这要求一种信任,而该品类二十年来一直在消耗这种信任。以下是 PureMac 对自身恪守的契约,你可以在源码中逐行验证:
- 废纸篓,绝不
rm。 PureMac 移除的一切均通过FileManager.trashItem进入废纸篓。若误删,拖回来即可。不会粉碎或 unlink。 - 永不遥测。 无分析、无崩溃上报、无「匿名使用统计」、不向我们的服务器发起网络请求。应用不知道你的存在。
- 不搞虚假紧迫感。 不会 dramatize「检测到 47 GB 垃圾!」徽章、红色警报计数或「你的 Mac 处于风险中」。我们展示中性事实,由你决定。
- 不过度承诺。 我们不声称能「回收可清除空间」「提升 RAM」或「加速你的 Mac」— 这些没有应用能可靠做到。见下方可清除空间说明。
- 删除前由你审阅。 不会自动删除。每项显示真实路径并支持在 Finder 中显示(Reveal-in-Finder),高风险系统路径在代码中硬排除。
- 可审计。 MIT 许可。决定删除内容的代码位于
PureMac/Services与PureMac/Logic/Scanning。阅读它。Fork 它。发布你自己的版本。
若 PureMac 日后增加遥测、对核心功能设付费墙或进行基于恐惧的扫描,它将成为它所要取代的那种东西。请监督我们恪守此承诺。
为何存在
Apple 销售基础款 Mac,配备 256 GB SSD 且无法升级。Mac mini、Air、每一款入门 MacBook Pro — 硬盘焊死。下一档存储价格比中端 Windows 笔记本还贵。一旦付费,你已购买的每一 GB 都弥足珍贵。
多数 Mac 清理工具是订阅应用,将磁盘占用藏在付费墙后,默认携带遥测,并靠 FUD(恐惧、不确定、怀疑)交易(「检测到 47 GB 垃圾!」)。PureMac 相反:
- 一次安装。 无订阅、无试用、无账户。
- 无遥测。 从不回传数据。甚至不知道你的存在。
- MIT 开源。 阅读代码、Fork、审计。
- 诚实扫描。 「垃圾」指真正的垃圾:OS 本身会清除的缓存目录、你已删除应用遗留的孤儿文件、损坏的安装收据、2023 年那个 4 GB 的 Xcode DerivedData 块。
- 真正卸载。 拖入一个应用,查看它在你资料库中留下的每个偏好 plist、缓存文件夹、容器、启动代理与日志文件,一次性全部移除。
功能
应用卸载器
发现 /Applications 与 ~/Applications 中的一切,然后使用 10 级匹配引擎(bundle ID、团队标识符、entitlements、Spotlight 元数据、容器发现、公司名启发式、部分路径匹配)查找应用在磁盘上留下的每个文件。三种敏感度档位 — Strict、Enhanced、Deep — 让你选择匹配的激进程度。Apple 系统应用自动从卸载列表排除。你也可在 Finder 中右键任意应用,选择 Services → Uninstall with PureMac 直接进入相关文件扫描。
孤儿文件查找器
遍历 ~/Library 并列出磁盘上已不存在应用遗留的文件。匹配器对照每个已安装应用的 bundle 标识符与规范化名称比对,因此你 2022 年删除某应用后遗留的 ~/Library/Containers/com.foo.bar 会清晰显示。
系统清理器
智能扫描(Smart Scan)并行运行每个类别。每个类别均为独立、审慎的扫描器:
- 系统垃圾 — 系统缓存、日志、临时文件
- 用户缓存 — 动态发现,无硬编码应用列表
- AI 应用 — Ollama 与 LM Studio 日志、缓存,可选历史清理
- 邮件文件 — 已下载的邮件附件
- 废纸篓 — 清空所有废纸篓,包括外置卷
- 大文件与旧文件 — >100 MB 或超过 1 年(永不自动选中)
- Xcode 垃圾 — DerivedData、Archives、模拟器缓存
- Brew 缓存 — 尊重自定义
HOMEBREW_CACHE - Node 缓存 — npm、yarn classic、pnpm 内容寻址存储
- Docker 缓存 — 镜像、容器、构建缓存
关于「可清除空间」: PureMac 在存储分解中显示你的 APFS 可清除空间(purgeable space)以保持透明,但刻意不将其列为待删垃圾。可清除空间由 macOS 自身保留与回收 — 第三方应用无法可靠释放,连 Finder 的可清除数字也已知不准确。声称能「回收可清除空间」的清理工具属于过度承诺。我们宁愿诚实,也不愿显得厉害。
定时清理
可选。可配置间隔(从每小时到每月),并设有自动清理阈值,因此后台任务仅在有值得移除的内容时才会触发。
权限
PureMac 需要**完全磁盘访问(Full Disk Access)**权限,才能读取 macOS 默认对所有应用隐藏的目录——邮件下载、Safari 数据、TCC 数据库、受保护的应用容器。没有该权限时,清理类别大约只能发现其可能找到内容的 70%,应用卸载后也会将 ~/Library/Containers 中的内容全部遗留。
首次启动引导会通过动画预览,逐步引导你授予该权限,并展示你需要拨动的确切开关。如果跳过,仪表盘会显示一键式「Set up」药丸按钮。如果因权限问题导致清理失败,PureMac 会打开系统设置,在 Finder 中显示其 bundle,以便你将其拖入 FDA 列表,每秒轮询权限状态,并在你授予访问权限的瞬间自动重试失败的批次。你无需重新选择任何内容。
PureMac 不会做的事:
- 不收集遥测数据、崩溃报告或使用分析。
- 运行不需要网络连接。
- 除废纸篓外,不会将数据移动到任何其他地方。
故障排除
Launchpad / Dock 显示陈旧或发暗的 PureMac 图标
macOS 会在 LaunchServices 中积极缓存应用图标。Homebrew 重新安装或升级后,Dock 和 Launchpad 可能仍显示旧的缓存图标。PureMac 的 cask 现在在安装时会运行 lsregister -f 以自动刷新,但如果陈旧图标仍然存在,请手动重置缓存:
# Clear the icon caches and rebuild the LaunchServices database
sudo rm -rfv /Library/Caches/com.apple.iconservices.store
sudo find /private/var/folders/ \( -name com.apple.dock.iconcache -or -name com.apple.iconservices \) -exec rm -rfv {} \; 2>/dev/null
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister \
-kill -r -domain local -domain user -domain system
killall Dock; killall Finder
给它一分钟重新播种,然后打开一次 PureMac。如果仍然卡住,重启(或安全模式启动)会强制完整重建。
截图
| 引导 | 应用卸载器 |
|---|---|
![]() |
![]() |
| 系统垃圾 | Xcode 垃圾 |
|---|---|
![]() |
![]() |
| 用户缓存 |
|---|
![]() |
架构
PureMac/
Logic/Scanning/ - Heuristic scan engine, locations database, conditions
Logic/Utilities/ - Structured logging
Models/ - Data models, typed errors
Services/ - Scan engine, cleaning engine, permission coordinator, scheduler
ViewModels/ - Centralized app state
Views/ - Native SwiftUI views
Apps/ - App uninstaller views
Components/ - Shared components (FDA demo, permission sheet, theme)
Orphans/ - Orphan finder
Settings/ - Native Form-based settings
关键组件:
- AppPathFinder - 10 级启发式匹配引擎,用于发现与应用相关的文件
- Locations - 120+ 个 macOS 文件系统搜索路径
- Conditions - 25 条按应用划分的匹配规则,用于处理边缘情况(Xcode、Chrome、VS Code 等)
- PermissionCoordinator - FDA 提示、轮询以及授权后重试的单一事实来源
- FullDiskAccessManager - TCC 探测 + 注册;广泛的探测路径(Mail、Safari、Messages、AddressBook、Calendars),以便 macOS 可靠地编目 bundle
- CleaningEngine - 抗符号链接删除,带允许列表;对 root 拥有的项目通过基于 NSAppleScript 的管理员提权;为 xargs 使用 NUL 分隔的路径暂存
安全
- 符号链接攻击防护:路径在验证前解析,在 unlink 前立即重新解析,以关闭 TOCTOU 窗口。
- 允许列表清理:不在显式安全根目录内的路径会被拒绝,即使用户级清理也不例外。
- 管理员提权由更窄的允许列表(应用 bundle、package receipts、launch plists)把关,比普通清理器更严格——root 拥有的项目只能在这些根目录内移除。
- 系统应用保护:无论是否选中,Apple 的 bundle 都无法卸载。
- 所有破坏性操作默认需要明确确认。禁用该确认的开关深藏在设置中。
如发现漏洞,请提交私有安全公告,而非公开 issue。
贡献
欢迎 Pull request。详见 CONTRIBUTING.md。
特别欢迎:
- 按类别划分的体积与日期筛选预设
- 为
AppState和扫描引擎提供更广泛的 XCTest 覆盖 - 除当前语言集(en、ar、es、ja、pt-BR、zh-Hans、zh-Hant)之外的翻译
- 应用图标设计
致谢
- @nguyenhuy158 - 搜索与筛选功能 (#18, #29)
- @edufalcao - 清理安全保护与确认对话框 (#30)
- @zeck00 - UI 大改版 (#31), 带系统应用保护的应用卸载器 (#32), 引导体验 (#33)
- @0x-man - 符号链接安全漏洞报告 (#25)
- @ansidev - 复选框交互缺陷报告 (#34)
- @fengcheng01 - 应用卸载器功能请求 (#28)
- @scholzfuni - 模块化方案 (#23)
- @Zonharo - 应用内自动更新请求 (#94)
Star 历史
如果 PureMac 帮你腾出了磁盘空间,点个 star 能帮助其他人发现它。
更多开源项目
- Pesty - 一款免费、开源的 macOS 剪贴板管理器。彩色编码的历史记录、钉板、即时搜索、键盘快速粘贴。已签名、已公证,
brew install --cask momenbasel/pesty/pesty。
许可证
MIT。详见 LICENSE。随意使用、fork、以自己的名义发布——许可证唯一的要求是保留版权声明。






