[English](README.md) | 简体中文
Purge 应用图标

Purge

释放 Mac 空间,安全第一。

一款免费、开源的原生 Mac 应用,清理 Mac 自己悄悄积累的缓存和垃圾文件。
文件默认移到废纸篓,随时可以放回原处。

构建状态 许可证:MIT 最新版本 总下载量 GitHub Star 数

jithin-sabu/purge-app | Trendshift

下载  ·  安装指南  ·  从源码构建  ·  安全

Purge 正在扫描 Mac 上可安全清理的缓存
--- > 本应用的简体中文界面基于 [@zihua-zhang](https://github.com/zihua-zhang) 的社区翻译([Purge-zh](https://github.com/zihua-zhang/Purge-zh))。如果本文与英文 README 有出入,请以英文 README 为准。 > > Purge 现在同时支持英文和简体中文,并跟随 macOS 的系统语言。你也可以在“系统设置 > 通用 > 语言与地区 > 应用程序”中单独为 Purge 设置语言。 你的 Mac 会悄悄积累大量缓存和垃圾文件,你既看不到,也从没要求过它们存在。Purge 会找出这些文件,标出哪些是安全的,并一键清理。 > [!NOTE] > 文件和文件夹默认会移到废纸篓,Purge 从不清空废纸篓,所以在你自己清空之前都可以放回去。以下内容会被永久移除:iOS 模拟器和模拟器运行时(通过 Xcode 的 `simctl`);Time Machine 本地快照(通过 `tmutil`,Purge 会保留最新的一张和上次备份留下的那张);macOS 27 上的 Apple Intelligence 模型(由 Apple 的资源服务释放,之后可以在 Purge 里重新下载);以及你在检查面板中选择交给包管理器卸载的命令行工具和 Homebrew cask 应用。Docker Desktop 的文件夹会移到废纸篓。Purge 不会执行 `docker system prune`。 你不需要了解其中的细节也能使用。不过,如果你想自己核对,每个项目都附有通俗易懂的说明和安全标签,所以不会有任何你事先看不到、验证不了的内容被动到。 --- ## 功能 ### 概览(Overview) - **空间都去哪了**:用一条横条展示整个磁盘。已用、可用和总容量直接取自磁盘卷,因此与系统设置中显示的一致。应用缓存、开发工具、大文件、已安装的应用以及已删除应用的残留文件,各占一段,其余部分显示为其他内容 - 每个类别一行,显示其大小和占磁盘的比例。点击某一行即可打开对应的标签页 - **其他内容**也可以打开。点击该行会打开一个页面,显示其中有什么:顶部是四个数字,说明你能对这些空间做什么;下方是一张地图,每个分组是一个框,里面按占用空间画出它最大的文件夹,并按类型着色。类型包括:可在其他应用中释放的空间(照片、邮件、Steam、废纸篓)、你自己的文件(项目、文稿)、Purge 认为删除不安全而不去碰的内容(不在清单上的缓存、没有已安装应用认领的应用数据),以及由 macOS 管理的内容。把指针移到某个方块上会显示它的名称,点击可查看它是什么,并提供“在访达中显示”或所属应用自带的释放方式。它是只读的:这里的任何操作都不会移动文件 - **扫描全部**(⇧⌘R)会逐个扫描所有类别,一次只扫一个,让 Mac 保持流畅。打开 Purge 时,它也会自动执行同样的操作。大文件和应用扫描需要完全磁盘访问权限;没有该权限时,只能扫描应用缓存和开发工具 - 每个字节只统计一次:应用的缓存文件夹计入应用缓存,不会在该应用名下重复计算 - **Apple Intelligence 模型**(macOS 27,Apple 芯片):macOS 归入“系统数据”的设备端模型,系统没有提供移除它们的开关。**移除** 会通过 Apple 的资源服务释放它们,并安装一个描述文件(你只需批准一次),让它们不会再次下载。**重新下载** 会移除该描述文件,并按你的 Siri 语言向 macOS 请求 Purge 移除的那些模型。显示的大小是 Apple 给出的数字;Purge 记录的是磁盘实际释放的空间 ### 应用缓存(App Caches) 扫描 `~/Library/Caches`、沙盒容器缓存以及常见的系统垃圾文件: - 每个应用一个缓存文件夹,带有易懂的名称、品牌图标,以及你想看时可以阅读的通俗说明 - 系统垃圾文件,例如应用日志、崩溃报告、macOS 安装器和残留的 macOS 更新文件 - Premiere Pro 和 After Effects 等创意类应用产生的大型媒体缓存 - 同一应用的重复缓存位置会合并为一行 - 结果会在找到时即时显示 ### 开发工具(Dev Tools) 一个视图中包含三个部分: - **全局开发工具缓存**:Xcode(Derived Data、Archives、DeviceSupport)、Homebrew、npm、pnpm、Yarn、CocoaPods、Gradle、Flutter、Docker Desktop、VS Code、Cursor、JetBrains、Cargo、Terraform 等 - **iOS 模拟器**:把不再使用的模拟器运行环境归在一起(已启动的模拟器会被跳过) - **开发项目**:`node_modules`、Python 虚拟环境、Rust 的 `target`、Flutter 构建产物、Xcode 的 `Pods`、Android 的 `.gradle` 以及其他生成文件,按项目分组 在 **设置 → 开发项目** 中,选择 **超过此时间视为未使用**(1 个月到 2 年,或显示全部),来控制显示哪些项目。时间从项目内任何内容最后一次变动算起,包括 git 活动,而不是看 `node_modules` 或 `target` 的日期。正在使用的项目,例如其中正运行着终端或开发服务器,或正在执行 git 命令,永远不会出现。 由 AI 编程工具(Cursor、Codex、Conductor、T3 Code 和 Claude Code)创建的 Git 工作树,只有在其仓库不再列出它们之后,才会出现在 **孤立 Git 工作树(Orphaned Git Worktrees)** 下。Git 仍在使用的工作树无论多旧都不会出现,终端或智能体正在其中工作的工作树同样不会出现。 ### 大文件(Large Files) 不用逐个翻文件夹,就能找到占用空间的个人文件: - 扫描 **文稿**、**桌面**、**下载**、**影片**、**音乐** 和 **图片**,另外只在 `~/Parallels` 和 `~/Virtual Machines.localized` 中查找虚拟机 - 跳过受管理的资源库(照片、iMovie、音乐等)、隐藏文件夹,以及 `node_modules`、`Pods`、`DerivedData` 和构建产物这类项目文件夹。从依赖目录中单独删除一个文件只会破坏安装,所以这些内容应归开发工具处理,它会按文件夹整个移除 - **搜索** 会在你输入时筛选列表,可匹配文件名、所在文件夹及其来源标签 - 按 **大小**(5 MB 到 1 GB)和 **上次使用时间**(不限时间到一年以上)筛选 - 按类别用标签筛选:视频、音频、图片、PDF、压缩文件、文稿、AI 模型、虚拟机和其他文件 - **重复文件**:逐字节扫描找出内容完全相同的副本,将它们归为一组,并显示只保留一份能回收多少空间。**重复文件** 标签会把它们集中在一处。**每组保留一份** 可一次清理整个标签页中的重复文件。它会为每组建议保留一份,并把其余的标记为移到废纸篓,在删除任何内容之前,你可以把要保留的那份换成别的副本。在你检查并确认之前,不会移除任何内容 - 按大小、日期或名称排序;先选择文件,检查后再删除 - 每一行都可使用 **快速查看** 预览和 **在访达中显示** - 删除操作会把文件移到 **废纸篓**,所以不会有任何文件被永久抹除 大文件与缓存清理是分开的:这些是你的个人文件,不是可以重新生成的缓存。 #### 恢复映像、虚拟机和未完成的下载 有些大文件会带一个标签,说明它是什么。把指针悬停在标签上可查看完整说明。 - **恢复映像**:macOS 的 `.ipsw` 文件,通常有 15 到 25 GB。只在设置 Mac、设备或虚拟机时需要。 - **虚拟机**:Parallels(`.pvm`)、UTM(`.utm`)或 VMware Fusion(`.vmwarevm`)的虚拟机包。它只占一行,会整个移到废纸篓,绝不会单独移走其中的磁盘文件。如果对应应用仍已安装,标签会提示你在该应用中移除,因为应用自己维护着一份虚拟机列表。如果虚拟机的应用正在运行,或虚拟机中有锁定文件,它会暂不显示,直到你退出该应用。 - **未完成的下载**:`.crdownload`、`.part` 和 Parallels 的 `.prlupd-part` 文件,以及直接位于“下载”文件夹中的 Safari `.download` 包。 #### 本地 AI 模型 下载的模型往往是 Mac 上最大的文件,而且很容易被忘记。它们会出现在大文件的 **AI 模型** 类别下,每个模型一行,名称与你安装时一致,位置显示为下载它的应用或库。Purge 认识 **Ollama**、**LM Studio**、**Hugging Face Hub** 缓存(`~/.cache/huggingface/hub`,支持 `HF_HOME` 和 `HF_HUB_CACHE`)、swift-transformers、把模型放在 `~/Library/Caches/huggingface` 下的应用、**PyTorch Hub**、**Whisper**、**GPT4All**、**Jan**、**DiffusionBee** 和 **Draw Things** 的模型存储。`~/Library/Caches`、`~/Library/Application Support` 和 `~/.cache` 中不属于任何已知存储、超过 100 MB 的权重文件也会列出,并显示所在文件夹,方便你判断是哪个应用下载的。 Purge 理解 Ollama 的内容寻址存储方式,因此模型的大小只统计真正能回收的字节,不会把与其他模型共享的数据块算进去。一个 Hugging Face 模型就是它的整个缓存文件夹,两个快照共享的数据块只计一次,也不会在另一个快照还需要时被移除。模型始终移到废纸篓,并且永远不会成为"清理安全项目"或定时清理的一部分。如果某个应用维护自己的已安装模型列表而 Purge 无法更新,该行会说明应用可能仍显示该模型为已安装。 ### 应用卸载(App Uninstaller) 把应用拖到废纸篓,大部分内容都会留下:缓存、偏好设置、容器、已保存的状态、日志和登录辅助程序都会堆积在磁盘上。应用卸载功能可以一次性移除应用及这些残留文件。 - 列出你安装在 **应用程序** 和 **~/Applications** 中的应用,跳过系统应用和 Purge 本身。每个图块都会显示卸载后能释放的空间:应用本体加上可移除的残留文件 - 选择一个或多个应用,然后检查每个应用的清单,其中列出每个项目的路径、大小和安全标签 - 匹配很严格,所以卸载一个应用不会误伤同一开发商多个应用共用的文件。与 bundle id 和 App Group 完全匹配的项目会默认勾选;只靠名称匹配、较宽松的项目默认不勾选,由你自行确认 - 正在运行的应用会先被请求退出,而且只会以正常方式请求。如果它不退出,就会保持已安装状态,同一批中的其他应用仍会继续处理 - 所有确认的项目都会通过与 Purge 其他功能相同的删除引擎移到 **废纸篓**,所以都可以恢复。唯一的例外是通过 Homebrew 以 cask 方式安装的应用:检查面板会提供两个按钮,**通过 Homebrew 移除** 和 **全部移到废纸篓**,并说明 Homebrew 会永久删除该应用,还会运行该 cask 自己的卸载步骤,这些步骤可能会停止它的后台服务,并永久删除它的辅助工具和安装文件。会安装多个应用的 cask 永远不会交给 Homebrew 处理。它的残留文件仍会移到废纸篓;如果 Homebrew 拒绝卸载,应用会改为移到废纸篓 - 可选,默认关闭:在设置中开启 **应用删除后检查残留文件**。一个小型后台监测程序会在应用离开 **应用程序** 或 **~/Applications** 时发现这一变化(即使 Purge 已退出也一样),打开 Purge 并只显示该应用的残留文件,在你确认或关闭后便不再打扰。没有经过这一步检查,不会移动任何内容 ### 安全标签 Purge 会为它识别的每个项目分配一个安全标签: | 标签 | 含义 | |------|------| | ✅ **可安全清理** | 已知的缓存或可重新生成的内容,可以安全移除 | | ⚠️ **先检查** | 可能是安全的,但可能带来不便 | 可用 **全部**、**可安全清理** 或 **先检查** 筛选(⌥⌘1–⌥⌘3)。可按大小、修改日期或名称排序。 无法识别的文件夹会完全不出现在列表中。Purge 只显示它了解的内容。 这些标签和说明是供你核对的,不需要从头读到尾。你可以直接选中安全项目并清理,也可以先展开任意一行查看背后的依据。两种方式都可以。 ### 清理 - **清理所选项目**:选中特定的行,在确认面板中检查,然后删除。会先进行 Git 和 lockfile 检查 - **清理安全文件**:从菜单栏执行同样的安全清理 - **定时清理**:在 **设置 → 清理** 中,开启 **自动清理**,并选择清理频率(每周、每月、每 3 个月,或按天、周、月设定的 **自定义** 间隔)。Purge 会发送本地提醒,并在你打开应用时清理安全项目,让清理在你不用惦记的情况下持续进行 - 文件和文件夹会移到 **废纸篓**。Purge 从不清空废纸篓。iOS 模拟器和模拟器运行时通过 Xcode 的 `simctl` 永久移除。Time Machine 本地快照通过 `tmutil` 永久移除;Purge 会保留最新的一张和上次备份留下的那张。Apple Intelligence 模型由 Apple 的资源服务释放,之后可以重新下载。包管理器安装的工具和 cask 应用,在你于检查面板中选择后,由该管理器自己的卸载命令永久删除 ### 设置 - **外观**:浅色、深色或跟随系统 - **清理**:按设定频率自动清理安全项目,显示下次清理日期和上次清理的摘要 - **开发项目**:开发工具生成文件扫描所用的“未使用项目”时间阈值 - **从扫描中排除**:你告诉 Purge 不要动的文件夹,每个都显示当前大小。右键点击任意扫描结果并选择 **从扫描中排除** 即可添加。排除操作只会缩小 Purge 的查看范围 - **清理历史记录**:每一次自动和手动清理,包含释放的空间和项目数量。打开某一条,可以看到哪些已移到废纸篓、哪些被跳过 ### 更多 - **首次启动引导**:欢迎、权限(完全磁盘访问权限和可选的登录项)、首次扫描、结果检查,以及安全清理演示 - **菜单栏助手**:一眼看到可回收的空间,快速打开,以及扫描和清理操作 - **磁盘摘要**:概览显示已用和可用空间;侧边栏显示废纸篓中已有的内容,以及每个扫描标签页的大小 - **应用内更新**:在“关于”界面中检查、下载并安装新版本 ### 键盘快捷键 | 快捷键 | 操作 | |--------|------| | ⌘R | 扫描当前标签页(在概览中为扫描全部) | | ⇧⌘R | 扫描全部,在任何标签页都可用 | | ⌘1–⌘5 | 前往概览、应用缓存、开发工具、大文件或卸载工具 | | ⌥⌘1–⌥⌘3 | 按全部、可安全清理或先检查筛选 | | ⌘F | 在大文件和卸载工具中搜索 | --- ## 下载
下载 Purge
--- ## 安装 安装 Purge 有两种方式:习惯用终端的话用 Homebrew,或者直接下载应用。两种方式的结果相同。 ### 使用 Homebrew 安装 ```bash brew install --cask purge ``` 这条命令会从官方 Homebrew cask 安装 Purge,Homebrew 还会自动为你校验下载文件的校验和。 ### 手动安装 下面的步骤介绍直接下载安装的方式。 #### 第 1 步:下载 点击上方的下载链接,下载 `.dmg`。 #### 第 2 步:验证下载文件(可选,但建议这样做) > [!TIP] > Purge 会删除文件,所以验证校验和可以确认你下载的文件与发布的文件逐字节一致,在传输途中没有被改动。 每个版本都附带一个对应的 `.dmg.sha256` 校验和文件。把 `.dmg` 和它的 `.dmg.sha256` 文件下载到同一个文件夹,然后在“终端”中运行: ```bash cd ~/Downloads shasum -a 256 -c Purgev*.dmg.sha256 ``` 如果结果以 `OK` 结尾,说明文件与发布的版本一致。 #### 第 3 步:安装 打开 `.dmg`,把 Purge 拖到“应用程序”文件夹。 #### 第 4 步:打开 Purge 双击 Purge 即可打开。Purge 已通过 Apple 公证,所以可以正常打开,无需额外步骤。 #### 第 5 步:授予完全磁盘访问权限 Purge 需要完全磁盘访问权限才能扫描你的缓存文件夹。 1. 在应用内点击 **打开隐私设置**(Open Privacy Settings) 2. 在列表中找到 Purge 3. 打开 Purge 旁边的开关 4. 回到应用,点击 **我已授予权限**(I've granted access) --- ## 更新 Purge 会就地自动更新。它每天检查一次新版本,有新版本时会弹出更新窗口并显示发行说明。选择 **安装更新**(Install Update),Purge 会下载更新、验证签名、完成安装并重新打开。你不需要访问发布页面,也不需要拖动任何东西。 没有你的确认,不会安装任何内容。你也可以随时在“关于”界面中检查更新;如果你不希望 Purge 自行检查,可以在 **设置 → 更新** 中关闭 **自动检查更新**。 更新通过 [Sparkle](https://sparkle-project.org) 提供,这是 App Store 之外的 Mac 应用通用的标准更新框架。每个更新都使用只存放在开发者本人电脑上的密钥签名,Purge 会拒绝任何没有匹配签名的下载。 ### 使用 Homebrew 更新 如果你是通过 Homebrew 安装的,也可以改用终端更新: ```bash brew upgrade --cask purge ``` 两种方式都可以。无论用哪种方式更新,你的设置、清理计划和历史记录都会保留,因为它们与应用本身分开存放。你也不需要再次授予完全磁盘访问权限,因为该权限会一直保留给 Purge。 你也可以随时在[发布页面](https://github.com/jithin-sabu/purge-app/releases)浏览以往的版本。 --- ## 从源码构建 想自己构建 Purge,而不是下载发布版?方法如下。 ### 前提条件 - macOS 13.0 或更高版本 - **Xcode 26 或更高版本**(来自 Mac App Store)。项目使用了 Swift 6.2 的构建设置(默认 actor 隔离和 approachable concurrency)以及 `@concurrent`,这些都需要 Xcode 26;更早的版本无法构建 - [Node.js](https://nodejs.org) 18+ 和 npm,仅在你想重新生成品牌图标时需要 依赖项会在你首次构建时由 Swift Package Manager 自动解析。唯一的依赖是 [Sparkle](https://github.com/sparkle-project/Sparkle),它负责应用内更新。 ### 第 1 步:克隆仓库 ```bash git clone https://github.com/jithin-sabu/purge-app.git cd purge-app ``` ### 第 2 步:构建并运行 在 Xcode 中打开项目并运行: ```bash open purge.xcodeproj ``` 然后选择 **purge** scheme,按下 **⌘R**。 或者直接在命令行中构建: ```bash # Build a Debug app xcodebuild -project purge.xcodeproj -scheme purge -configuration Debug build # Build a Release app xcodebuild -project purge.xcodeproj -scheme purge -configuration Release build ``` 构建出的 `Purge.app` 会写入 Xcode 的 DerivedData 文件夹下(构建输出的末尾会显示它的路径)。 ### 可选:重新生成品牌图标 应用缓存图标由 [simple-icons](https://simpleicons.org) 生成。要重新构建它们: ```bash npm install npm run generate:icons ``` ### 运行测试 ```bash xcodebuild test -project purge.xcodeproj -scheme purge -destination 'platform=macOS' CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO ``` 这些签名参数很重要:如果机器上没有开发证书,测试构建会在任何一个测试运行之前就失败。持续集成也是这样构建的。 --- ## 系统要求 - macOS 13.0 或更高版本 - 完全磁盘访问权限 - Xcode 命令行工具(可选,用于完整列出 iOS 模拟器) --- ## 隐私 Purge 完全在你的 Mac 上运行。扫描结果、说明、手动覆盖设置和清理历史记录都保存在本地的 Application Support 中。不会上传任何内容。上次的扫描结果也保存在那里,这样 Purge 在重新扫描时有内容可以显示。其中不会写入任何来自桌面、文稿、下载或 iCloud 的内容,大文件只保存按文件类型统计的总量,从不保存文件名。 Purge 唯一会联网的时候是检查更新:每天一次,从 GitHub 获取一个很小的 XML 文件,以确认是否有更新的版本。它不会发送任何关于你或你的 Mac 的信息,你也可以在 **设置 → 更新** 中关闭它。 Purge 会读取一部分文件内容,但只在你的 Mac 上读取。为了找出重复文件,它会逐字节比较大小相同的文件。为了判断某个文件属于哪个应用或工具,它会读取一些小文件,例如应用的 `Info.plist`、LaunchAgent plist,以及启动命令行工具的脚本。它从不把文件内容发送到任何地方。 Purge 不使用 AI。你扫描或清理的任何内容都不会发送给 AI 服务。 --- ## 安全 Purge 会删除文件,所以安全就是重点。以下几点值得了解: - **默认移到废纸篓**:文件和文件夹会移到 macOS 废纸篓,Purge 从不清空废纸篓。在你自己清空之前都可以恢复。iOS 模拟器和模拟器运行时通过 `simctl` 永久移除。Time Machine 本地快照通过 `tmutil` 永久移除;Purge 会保留最新的一张和上次备份留下的那张。Apple Intelligence 模型由 Apple 的资源服务释放,之后可以在 Purge 里重新下载。你选择通过包管理器移除的命令行工具和 Homebrew cask 应用会由该管理器永久删除。Docker Desktop 的数据文件夹会移到废纸篓。Purge 不会执行 `docker system prune`。 - **基于允许列表的删除**:只有匹配明确的安全允许列表的路径,才有资格被清理。Purge 不认识的内容,一律不会动。 - **由你决定清理什么**:Purge 会显示哪些空间可以回收,由你决定清理哪些。 - **开源**:完整的删除逻辑(包括允许列表)都在这个仓库中,你可以阅读,也可以自己从源码构建。 - **已通过 Apple 公证**:应用经过签名和公证,因此 macOS 可以验证它自发布以来没有被篡改。 - **签名更新**:应用内更新在安装之前会用签名密钥验证。没有用该密钥签名的更新会被拒绝,因此被篡改的下载内容不会变成被篡改的安装。 发现了安全漏洞,或某个本不该被删除的路径可能被删除?请告诉我们。报告方式见 [SECURITY.md](SECURITY.md)。 --- ## 参与贡献 欢迎提交错误报告、安全方面的发现和拉取请求。[CONTRIBUTING.md](CONTRIBUTING.md) 介绍了如何搭建项目,以及怎样的改动更容易审阅。凡是涉及安全允许列表、永不删除保护或扫描逻辑的改动,都会受到更严格的审查,审阅时间也更长,这是有意为之。 安全问题是例外:请通过 [SECURITY.md](SECURITY.md) 私下报告,不要公开提交 issue。 --- ## 许可证 Purge 根据 [MIT 许可证](LICENSE)发布。你可以自由地使用、阅读、修改和分发它。 --- ## 支持 Purge 是免费的。如果它帮你节省了一些磁盘空间,你可以在应用内的“关于”界面,或直接通过 [Buy Me a Coffee](https://buymeacoffee.com/jithinsabu),为运营成本出一份力。
请我喝杯咖啡
---
**Jithin Sabu** 网站 LinkedIn X 电子邮件