DevSweep 是一个原生 SwiftUI macOS 开发者缓存清理工具,面向 Xcode、Rust/Tauri、Node、SwiftPM、Cargo、Gradle、Maven、Python、Go、Flutter、VS Code、Cursor 以及 OpenAI Codex、OpenCode、Claude Code、Goose 等 AI agent 开发环境。
当前版本:0.1.30
- 按 Xcode、CoreSimulator、XCTest、Docker、项目生成物、包管理器、语言工具链、AI/ML、JVM、IDE 分类展示占用,并按空间从大到小排列。
- 扫描常见开发者缓存白名单,不扫描照片、文档、邮件或整个磁盘;目录占用使用 macOS
du校准,避免只读到目录元数据而漏报大缓存。 - 默认发现
~/Code、~/Projects、~/Developer、~/Work、~/src和~/workspace,也支持添加多个项目根目录并持久化保存。 - 深度扫描项目目录,查找
target、node_modules、.build、Pods、build、build-*、dist、output、release-v<版本>、带版本号的项目发布包、.next、.turbo、.dart_tool、Python 缓存、测试产物等生成物;Xcode 自定义build-*目录必须同时位于 Xcode 项目根目录并具备多个 DerivedData 特征,避免按名称误报。 - 识别 Xcode
ModuleCache、SourcePackages、Preview、源码控制缓存,以及按 UUID 拆分的 XCTest 克隆设备和 CoreSimulator 设备。 - 读取 npm、Cargo、Go、pip、uv、Poetry、Gradle 等自定义环境变量和 npm 配置,尽量覆盖不在默认路径的缓存。
- 覆盖 Docker 官方 CLI 可回收的未使用镜像、已停止容器、未使用卷和 Build Cache,并显示 Docker Desktop 虚拟磁盘占用;虚拟磁盘只读,Docker CLI 清理需单独确认且不能从废纸篓恢复。
- 覆盖 Deno、Corepack、Playwright、Puppeteer、rustup、Conda、Bazel、Android SDK、NuGet、mise、asdf、ccache/sccache、Hugging Face、PyTorch、Whisper、Keras、TensorFlow Hub、Ollama、LM Studio 及 JetBrains/Android Studio 日志等常见开发工具数据;同时识别各工具的自定义缓存环境变量。
- 增加 AI Agent 分类:识别 OpenAI Codex 日志数据库、OpenCode 的 XDG 缓存/日志及 macOS Library 兼容路径、Claude Code 调试日志,以及 Goose updater 缓存;支持
CODEX_HOME、XDG_CACHE_HOME、XDG_DATA_HOME和CLAUDE_CONFIG_DIR自定义位置;只清理可重建缓存、日志和更新下载,不触碰 Codex 目标/记忆/队列/线程历史、OpenCode 数据/配置/状态/仓库、Claude Code 项目/历史/凭据/任务状态或 Cline 的 VS Code globalStorage。 - 补充 npx、Ruby/Bundler、node-gyp、VS Code/Cursor 扩展安装包、前端工具链、云 CLI、Terraform/Helm、Cypress/Selenium 和多平台 Xcode DeviceSupport;系统级 CoreSimulator/Xcode 缓存只读展示为手动处理。
- 补充 nvm、Volta、SonarQube、pnpm registry 元数据、SwiftPM XDG/旧缓存、Scala/sbt/Ivy/Coursier/Metals,以及 Instruments、SourceKitService 和 Xcode Previews 缓存;同时覆盖 Lingma、Trae CN、Windsurf、Zed、OpenCode Desktop、Nova 等开发工具的明确缓存叶子,并识别 NVM_DIR、VOLTA_HOME、SONAR_USER_HOME、COURSIER_CACHE 和 CocoaPods 自定义目录。
- 覆盖 Edge、Firefox、Google 应用、媒体分析、剪映和自定义 Chromium 资料目录缓存;跨 Caches、Application Support、Containers、Group Containers、HTTPStorages 和临时目录识别 Sparkle/Squirrel 等软件升级残留,系统级位置仅展示为手动项;存在项目标志时识别项目运行日志与 Nacos 日志。
- 项目扫描覆盖
.terragrunt-cache、.astro、zig-out、.cxx和项目内 DerivedData;对 Composervendor与 .NETbin/obj必须先验证项目标志,避免按同名目录误报源码或运行时文件。 - 识别 CoreSimulator 设备,通过
xcrun simctl delete删除,避免直接破坏设备注册。 - 对 Xcode Archives、iOS DeviceSupport、SourcePackages、XCTest 克隆设备、项目生成物、自定义
build-*DerivedData 和版本化 Release 暂存目录标记为“建议确认”或“手动处理”;包含 Release App/归档或安装包的目录不会默认勾选。 - 扫描过程中显示当前路径、已检查数量、跳过数量和权限异常;扫描完成后可查看实际扫描范围和诊断详情。
- 默认只勾选低风险缓存;清理前二次确认。
- 每个项目都提供操作下拉菜单,可加入忽略名单、在 Finder 中打开目录、复制完整路径或单独清理;加入忽略名单只保存路径,不触发重新扫描,下次扫描时生效;长路径可悬浮查看。
- 支持迷你模式:以 360×640 的手机式竖屏窗口隐藏侧栏和说明卡,只保留扫描进度、缓存列表、选择、扫描和清理操作,并记住上次模式;从迷你模式切回普通模式时会根据窗口所在屏幕边缘向内展开,避免超出屏幕。
- 勾选仅用于批量清理;设置页支持手动检查和执行在线更新。
- 会按目录完整路径记住上次的勾选状态,下次扫描或启动后可以直接继续清理。
- 普通目录优先移入 macOS 废纸篓,便于恢复。
- 支持从 GitHub Releases 检查在线更新;只接受带 SHA-256 digest、Developer ID 签名并通过 Gatekeeper 校验的安装包,由独立更新程序原子替换、重启和失败回滚。
要求 macOS 13+、Swift 5.9+:
DEVSWEEP_ALLOW_ADHOC=1 ./scripts/build_app.sh
open ./DevSweep.app上面是仅供本地调试的 ad-hoc 构建,默认按当前机器架构构建;需要 Universal 调试包时使用:
DEVSWEEP_ALLOW_ADHOC=1 DEVSWEEP_ARCHS="arm64 x86_64" ./scripts/build_app.sh正式发布需要 Developer ID 签名和 Apple 公证。请在发布电脑上配置 Developer ID 证书及其私钥,并使用已验证的 DEVSWEEP_NOTARY_PROFILE:
export DEVSWEEP_DEVELOPER_ID='Developer ID Application: Your Name (TEAMID)'
export DEVSWEEP_DEVELOPER_TEAM_ID='TEAMID'
export DEVSWEEP_NOTARY_PROFILE='your-notary-profile'
DEVSWEEP_ARCHS='arm64 x86_64' ./scripts/distribute_app.shscripts/build_app.sh 默认拒绝没有 Developer ID 的构建,避免误把 ad-hoc 包上传到 Release。只有本地开发时才显式使用 DEVSWEEP_ALLOW_ADHOC=1;这个包不能发布或用于在线更新。发布前必须确认 codesign 显示 Developer ID Application、spctl 通过且 xcrun stapler validate 成功。在线更新要求 Release 资产使用 DevSweep-<version>-macos.zip 文件名,并保留 GitHub 自动生成的 SHA-256 digest。包含在线更新功能的首个版本之前,旧安装需要手动安装一次。
正式 Release 使用 .github/workflows/release.yml 在 GitHub Actions 上完成,不依赖发布电脑的钥匙串。该 workflow 复用现有项目的仓库 Secrets:APPLE_CERTIFICATE_P12、APPLE_CERTIFICATE_PASSWORD、APPLE_ID、APPLE_APP_SPECIFIC_PASSWORD、APPLE_DEVELOPER_ID 和 APPLE_TEAM_ID。推送符合版本格式的 tag 后,Actions 会自动测试、签名、公证、装订票据、校验并创建 Release。
GitHub Actions 的 tag 发布还需要配置仓库 Secrets:APPLE_CERTIFICATE_P12、APPLE_CERTIFICATE_PASSWORD、APPLE_DEVELOPER_ID、APPLE_ID、APPLE_APP_SPECIFIC_PASSWORD 和 APPLE_TEAM_ID。workflow 会导入 Developer ID 证书,完成签名、公证、staple 和 Release 资产上传。
也可以直接在 Xcode 中打开 Package.swift。
本项目的路径白名单和交互策略参考了公开项目:
- k-angama/macOS-dev-cache-cleaner:SwiftUI 分类扫描、白名单路径、工作区生成物和安全访问思路。
- MacPaw/cleanmymac-cli:分析/预览/交互确认、按年龄和风险处理项目生成物的思路。
- jemishavasoya/dev-cleaner:开发工具缓存覆盖范围。
- riponcm/Jharu:Docker、AI/ML 模型、Playwright/Puppeteer、Conda 等开发者数据覆盖,以及按安全等级解释清理后果。
- georgekhananaev/spark-clean:Docker/Ollama 使用官方 CLI、命令型清理不可恢复的安全提示和 review-first 流程。
- tw93/Mole:多语言工具链、系统级 Xcode 缓存和带项目标志保护的生成物覆盖思路。
- momenbasel/PureMac:IDE、语言工具链和可重建缓存分类思路。
- openai/codex:区分
logs_2.sqlite日志数据库与目标、记忆、队列、状态和线程历史数据库。 - anomalyco/opencode:确认 XDG cache/data/log 路径,数据、配置、状态和仓库目录保持不清理。
- anthropics/claude-code 与 Claude Code 设置文档:参考
~/.claude/debug-logs调试日志边界及CLAUDE_CONFIG_DIR自定义目录。 - aaif-goose/goose:确认 Goose updater cache 目录名为
goose-updater。 - cline/cline:确认扩展 ID;其 globalStorage 主要是任务和 agent 状态,因此不作为清理目标。
代码仅借鉴公开项目描述和使用策略,没有复制其源代码。
DevSweep 不会直接删除 Docker 虚拟磁盘、用户源码、Git 仓库、照片或文档。Docker 镜像、容器、卷和 Build Cache 通过官方 CLI 清理,不能移入废纸篓,必须由用户逐项确认;只允许当前 Docker CLI 指向本机 Unix socket 或 localhost,拒绝远程 context;Docker.raw 只展示占用。AI Agent 只纳入可重建缓存、调试日志和更新下载,所有会话、项目、凭据、记忆、队列、配置、状态和仓库数据都排除在扫描规则之外。开发工具的 Electron 数据也只按明确应用和缓存叶子白名单识别,不扫描整个 Application Support,不触碰 IDE 用户数据、会话历史或工作区状态。删除项目生成物和模拟器设备会让下次构建/运行重新生成数据,可能需要重新下载依赖。运行测试、模拟器、Docker 构建或 agent 更新时,请先停止相关进程再处理对应资源。
MacPilot —— 开源 macOS 菜单栏效率工具箱(Swift 原生 · 零第三方依赖):应用自动退出规则、BLE 靠近解锁、窗口切换器、剪贴板历史、平滑滚动、画中画、录屏、截图贴图等 11 合 1,Apple 公证签名,免费下载。觉得有用欢迎点个 Star ⭐