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.32
- 按 Xcode、CoreSimulator、XCTest、Docker、项目生成物、包管理器、语言工具链、CI/CD、AI/ML、JVM、IDE、数据库工具和 API/调试工具分类展示占用,并按空间从大到小排列。
- 扫描常见开发者缓存白名单,不扫描照片、文档、邮件或整个磁盘;目录占用使用 macOS
du校准,避免只读到目录元数据而漏报大缓存。 - 默认发现
~/Code、~/Projects、~/Developer、~/Development、~/Work、~/src、~/workspace、~/www、~/GitHub以及存在时的~/.codex/worktrees、~/.claude/worktrees,也支持添加多个项目根目录并持久化保存;不会把整个~/.codex或~/.claude当作项目根。 - 深度扫描项目目录,查找
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、monorepo marker 和有效CACHEDIR.TAG;如果扫描根自身是node_modules、target、build、dist、vendor等生成物容器,会跳过其内部项目发现。对 Composervendor、.NETbin/obj和通用build必须先验证项目标志,避免按同名目录误报源码或运行时文件。 - 识别 CoreSimulator 设备,通过
xcrun simctl delete删除,避免直接破坏设备注册。 - 对 Xcode Archives、iOS DeviceSupport、SourcePackages、XCTest 克隆设备、项目生成物、自定义
build-*DerivedData 和版本化 Release 暂存目录标记为“建议确认”或“手动处理”;包含 Release App/归档或安装包的目录不会默认勾选。 - 扫描过程中显示当前路径、已检查数量、跳过数量和权限异常;扫描完成后可查看实际扫描范围和诊断详情。
- Cargo 已解压源码、Cargo Git、NuGet、Dart/Flutter 依赖目录和自定义
DENO_DIR按review展示,默认不勾选;近期刚修改的低风险缓存也不会自动勾选。 - 普通目录清理前会重新检查目标是否仍存在、是否发生 symlink/路径替换、是否落在危险根目录或当前白名单中;检查失败只记录该项失败并继续处理其他项目。
- GitHub CLI、pnpm 和 uv 优先使用官方清理命令,并在执行前检查工具进程、白名单、缓存根目录和超时;命令型清理不会进入废纸篓,默认不勾选。
- 每个项目都提供操作下拉菜单,可加入忽略名单、在 Finder 中打开目录、复制完整路径或单独清理;加入忽略名单只保存路径,不触发重新扫描,下次扫描时生效;长路径可悬浮查看。
- 支持迷你模式:以 360×640 的手机式竖屏窗口隐藏侧栏和说明卡,只保留扫描进度、缓存列表、选择、扫描和清理操作,并记住上次模式;从迷你模式切回普通模式时会根据窗口所在屏幕边缘向内展开,避免超出屏幕。
- 勾选仅用于批量清理;设置页支持手动检查和执行在线更新。
- 会按目录完整路径记住上次的勾选状态,下次扫描或启动后可以直接继续清理。
- 普通目录优先移入 macOS 废纸篓,便于恢复。
- 支持从 GitHub Releases 检查在线更新;只接受带 SHA-256 digest、Developer ID 签名并通过 Gatekeeper 校验的安装包,由独立更新程序原子替换、重启和失败回滚。
要求 macOS 13+、Swift 5.9+:
swift build
swift test本地验证只运行 SwiftPM 测试和编译,不生成或交付临时签名 App。正式发布需要 Developer ID 签名和 Apple 公证,由 GitHub Actions 完成:
git tag v<version>
git push origin v<version>scripts/build_app.sh 默认拒绝没有 Developer ID 的构建,避免误把临时签名包上传到 Release。发布前必须确认 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 的清理目录和安全策略依据各开发工具公开文件结构、官方文档、实际运行行为及公开项目的功能思路独立实现。项目不复制、移植或翻译其他清理工具的源代码;上面的链接仅用于透明说明设计依据。
DevSweep 不会直接删除 Docker 虚拟磁盘、用户源码、Git 仓库、照片或文档,也不会把 /、$HOME、$HOME/Library、Desktop、Documents、Downloads 等危险根目录作为自动删除目标。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 ⭐