Skip to content
misswellPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

DevSweep

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.67

当前功能

  • 新增「磁盘发现」页:一次 fts 遍历为选中的根目录建立完整层级快照,内存中以扁平数组保存节点和父子索引,目录占用在后序汇总,硬链接按 (device, inode) 去重;本层列表、嵌套树图、类型统计和详情都读取同一份快照,切换图表或下钻不会重新扫描文件系统。按空间从大到小排列;包含隐藏目录,但不跟随符号链接、不跨卷遍历。默认阈值为 100 MB,可调整为 10 MB–10 GB;不完整的统计也不会被阈值隐藏。每个条目展示分类(已知缓存、项目生成物、开发环境、AI 模型、系统管理、未识别)、识别证据、修改时间和「≥ 实际占用」提示,并汇总隐藏项、被过滤项、符号链接、跨卷跳过与权限诊断。可以逐层进入或返回上级查看,路径与阈值会持久化,也可以临时忽略条目后恢复;低于列表阈值的条目仍进入图表和类型统计,保证面积与合计不被阈值截断。
  • 磁盘发现页默认展示多层嵌套矩形树图:子目录和文件直接嵌套在父图块内,最多 5 层(可调 2–8 层),面积严格按分配大小计算;过小的图块合并为「其他」,达到图块预算后剩余子树总量仍完整保留。布局使用归一化坐标,在后台线程计算,窗口缩放、切换深度会取消旧请求并丢弃过期结果;悬停和选中只更新覆盖层,不重新布局。命中测试使用 32×24 空间分桶,优先命中最深层图块;单击选择、双击进入目录、方向键在可见图块间移动,进入和返回都在同一份快照内完成。搜索高亮匹配图块但保持面积比例,不会把搜索结果当成真实占用比例。配色按分支分配色相、按深度降低亮度,分类只作为辅助标识。还提供「当前层」矩形树图和多层环形图:面积和角度严格按本层直接子项的分配大小计算;环形图每层占用独立半径,子层扇区严格落在父层被展开图块的角度范围内,父目录与子目录不会重复累计,下钻时把离开的层压成内圈、回跳时按层截断。超出 300 项的部分合并为「其他」,只保留真实总量和成员数,明细按占用降序分页显示(默认 50 项,可在组内搜索),不为超大目录常驻整尾成员 ID。图表数据是一份按扫描结果构建的快照,悬停、选中只改画布内部状态,不会重新排序整层目录;支持搜索、单击选择、双击进入目录和面包屑返回。文件类型分布可在「当前层」与「整层递归」之间切换,并在占用与数量之间切换:递归模式覆盖子树内全部常规文件,包目录(.app、.xcarchive、.mlpackage 等)整体归类为对应类型并继续遍历,使包内文件与包外文件共享同一份 inode 去重,包数量单独计数;普通目录自身不计数,不跟随符号链接、不跨卷,跨卷跳过和取消都会标记为不完整,有条目上限且可取消。图表使用 SwiftUI Canvas 绘制,不会为每个文件创建视图。
  • 磁盘发现页默认只读:未知、系统管理、开发环境和 AI 模型条目无法加入清理。只有内置缓存规则或项目生成物规则明确识别的条目,才能在详情中显式加入本次清理;加入后仍需在清理列表确认,执行前会重新验证路径、白名单和文件身份。清理完成后自动重新测量当前发现目录。
  • 新增「后台进程」页:扫描运行中的 iOS Simulator、独立的 agent-browser/无头测试浏览器、旧版 Codex 崩溃报告,以及运行超过一小时的 mas 查询任务;展示运行时间、PID、进程树、RSS 合计和识别依据。默认不勾选,用户确认后关闭或结束所选任务;模拟器通过单设备 simctl shutdown 正常关机并保留数据,进程树只发送 SIGTERM。执行前重新核验进程启动时间、用户、可执行文件和进程树,状态变化时跳过;构建/测试期间保护模拟器,安装任务、当前应用及其祖先进程受保护,不按运行时长清理一般 Node/Python/MCP 服务。
  • 按 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 特征,避免按名称误报。
  • Rust cargo 的 target 不再只报一个巨大条目,而是按 artifact 拆分:deps、incremental、build、.fingerprint、examples、doc、package、bundle,并区分 target/<profile> 与交叉编译的 target/<triple>/<profile>,标题形如 deps · debug · pdfcraft;incremental/doc 视为可直接清理,其余按「建议确认」处理。拆分用一次 du 批量测量并利用 macOS du 的硬链接去重,避免 deps 与 incremental 共享 inode 时重复计算空间;target 下的自定义输出目录(如打包暂存)仍单独列出,不会消失。扫描和删除前都会用 cargo 的 .cargo-lock flock 二次确认:构建进行中整组标为「正在构建」并禁止勾选,删除侧遇到构建中的 target 会直接跳过该项。
  • Rust/Tauri profile 顶层的静态库(.a)、Rust 库(.rlib)、动态库和可执行文件也会独立列出,解决 src-tauri/target/debug 只剩最终输出时漏扫;均标为“建议确认”,支持加入常用清理。扫描和删除同时检查 .cargo-lock、.cargo-build-lock、.cargo-artifact-lock,有构建锁时禁止清理。Electron 的 node_modules/electron/dist 计入外层 node_modules,不重复列出或计数;清理后需恢复依赖才能运行 Electron。
  • 修正 target 的分类优先级:cargo 会写入 CACHEDIR.TAG,具名规则现在优先于该标签,target 始终按 Rust 项目归类,不再被误判为「其他开发缓存 / 可直接清理」;同名目录按内容判归属:有 cargo 证据(.rustc_info.json、cargo 签名 CACHEDIR.TAG、profile 下的 .cargo-lock/.fingerprint)或同级有 Cargo.toml 才归 Rust;有 classes/generated-sources 等 Java 构建输出特征的归 JVM;同级有其他项目标志的归「项目生成物」;无证据时不按名字误报。
  • 识别 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。
  • 增加 Claude Code Router 请求日志分类:识别 ~/.claude-code-router/app-data 下按 UUID 分片的 request-log-bodies 和 request-logs.sqlite,按 24 小时保留窗口就地裁剪——删除过期日志行及其正文、清理已无任何日志引用的残留正文,并执行 VACUUM 回收 SQLite 空闲页和 WAL;不把目录整体移入废纸篓,最近 24 小时的日志和仍被引用的正文都会保留,默认不勾选且不能从废纸篓恢复。
  • 补充 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 自定义目录。
  • 新增「Xcode 空间」页:按 Xcode 自己的存储语义把十三类占用分成可重建 / 需确认 / 手动三档,每类带独立开关与逐项选择;可直接清理 DerivedData、各类 Xcode/模拟器/SwiftPM 缓存与日志,归档与 DeviceSupport 逐项勾选后移入废纸篓。模拟器 Runtime 经由 xcrun simctl runtime delete 删除,按平台保留最新版本、删除前重新核对清单、删除后轮询验证,失败逐条给出原因并可复制兜底命令;启动前检查 Xcode / 构建 / 测试进程,运行中只提示不阻断开。
  • 参考 PureMac 与 dusty 补齐扫描盲区:Safari / Brave / Arc 浏览器缓存,Slack / Discord / Signal / Telegram / Teams / Zoom / Spotify / Obsidian 的可重建缓存与更新安装包,Unity 导入缓存,以及 ~/Library/Mail Downloads 邮件附件;Spotify 离线缓存与邮件附件标为「建议确认」,不默认勾选。Go 模块缓存仍由既有 go/pkg/mod 规则整体覆盖。
  • 新增「清空内容」清理语义:~/Library/Caches、~/Library/Logs、~/.Trash、~/Downloads 以清空子项的方式处理,目录本身保留,子项逐个移入废纸篓;一律默认不勾选,执行前重新核验目录身份与白名单,身份变化或目标不是目录时拒绝。
  • Time Machine 本地快照:扫描 tmutil listlocalsnapshots,逐条列出并可用 tmutil deletelocalsnapshots 删除;只处理 com.apple.TimeMachine.*,com.apple.os.update-* 更新回滚点永不进入候选;删除后重新列举确认真正消失(tmutil 可能返回 0 却没删),日期参数严格校验,永不默认勾选。
  • 展示 APFS 可清除空间:磁盘栏在「可用 / 已用」后追加「可清除 X GB」(volumeAvailableCapacityForImportantUsage 与 volumeAvailableCapacity 的差额),这类空间由系统按需回收,只做展示、不参与清理。
  • 新增只读的大文件 / 旧文件发现:按大小阈值与「超过 N 天未修改」两个独立条件筛选,跳过系统目录与废纸篓、不跟随符号链接、有数量上限并可取消;结果在「磁盘发现」页勾选「大文件 / 旧文件」后以纯只读列表展示(只提供在 Finder 中显示,不提供删除按钮),永不默认勾选、不进定时清理。
  • 动态发现 Electron / Chromium 系应用缓存:扫描 ~/Library/Application Support/<App>/{Cache, Code Cache, GPUCache, DawnGraphiteCache, DawnWebGPUCache, ShaderCache}(含 session/ 子目录),覆盖 QQ、钉钉、飞书、网盘、各类桌面客户端等无统一命名的应用;Local Storage、IndexedDB、Session Storage、databases、Service Worker 一律不碰,IDE 宿主与系统容器目录跳过。
  • 覆盖 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 等生成物容器,会跳过其内部项目发现。对 Composer vendor、.NET bin/obj 和通用 build 必须先验证项目标志,避免按同名目录误报源码或运行时文件。
  • 识别项目内模型缓存:tools/models/cache、models/、checkpoints/、weights/ 等目录只有在包含 HF 下载回执(.cache/huggingface + config.json)或 config.json + 权重文件(safetensors、gguf、onnx、pt、mlpackage 等)时才归入 AI/ML「建议确认」;为这类容器把默认扫描深度放宽到第 7 层,普通 cache 目录不会按名称误报,删除后模型需要重新下载或重新转换。
  • 识别 CoreSimulator 设备,通过 xcrun simctl delete 删除,避免直接破坏设备注册。
  • XCTest 克隆设备按动态状态展示:明确 UUID 命名的 clone 在未检测到 XCTest/UI 测试运行时显示「可安全清理」并默认勾选;检测到 xcodebuild test、test-without-building、xctest、XCTRunner 或 XCTestAgent 进程时显示「正在测试」并禁止勾选清理;无法确认进程状态时保守显示「无法确认状态」,同样禁止自动清理。标题只显示 8 位短 UUID,完整路径放在详情中;XCTestDevices 根目录或未识别内容永远保持「建议确认」不默认勾选。
  • 清理 XCTestDevices 项目前会重新检测一次测试进程(TOCTOU 二次确认,一次批量清理只检测一次):扫描后启动的测试同样会阻止删除,被阻止的 clone 不影响同批次普通缓存继续清理;CoreSimulator 设备独立通过 simctl 管理,删除前同样检查设备与构建/测试状态。
  • 提供 deploy/ios-project-template/(scripts/test-ios.sh、scripts/ensure-scheme-serial.sh 与 Agent 规则文本),用于在 iOS 项目内固定单 Simulator 测试:自动探测 workspace/project/scheme,固定 -parallel-testing-enabled NO、-maximum-parallel-testing-workers 1,只复用已有 Simulator、绝不 simctl create,从源头避免并行测试持续制造 XCTest clone。
  • 对 Xcode Archives、iOS DeviceSupport、SourcePackages、XCTest 克隆设备、项目生成物、自定义 build-* DerivedData 和版本化 Release 暂存目录标记为“建议确认”或“手动处理”;包含 Release App/归档或安装包的目录不会默认勾选。
  • 扫描过程中显示当前路径、已检查数量、跳过数量和权限异常;扫描完成后可查看实际扫描范围和诊断详情。
  • 目录占用统计会检查 du 的退出状态、超时和错误输出:存在无法读取的子树时,列表显示「≥ 至少占用」并标注原因,扫描摘要和详情给出统计不完整项数,不再把部分结果当成精确值;du 的错误按路径归属到具体目录,一个目录读不到不会把同批次的其他目录一起降级,只有无法归属时才保守按下限处理;单个文件缺少 fileAllocatedSize 时退回 lstat 的磁盘块数,两者都读不到才记为「无法统计」,真正的 0 字节文件仍是有效的完整测量结果;统计超时只保留已测到的部分,不会退回更慢的逐文件遍历;du 不可用时回退遍历会按 inode 去重硬链接并记录跳过项。
  • 图表不掩盖统计缺口:测量不完整的图块用虚线描边、合计与所属分类标注「≥」下限,「其他」分组内的下限项会把整块标为下限;「0 B 的空条目」与「无法统计的条目」分开展示,后者在详情里逐项给出原因。真实磁盘验证:~/Library/Caches 的 9 个受保护目录按「无法统计」列出而不是被算成 0 B。
  • Cargo 已解压源码、Cargo Git、NuGet、Dart/Flutter 依赖目录和自定义 DENO_DIR 按 review 展示,默认不勾选;近期刚修改的低风险缓存也不会自动勾选。
  • 普通目录清理前会重新检查目标是否仍存在、是否发生 symlink/路径替换、是否落在危险根目录或当前白名单中;检查失败只记录该项失败并继续处理其他项目。
  • GitHub CLI、pnpm 和 uv 优先使用官方清理命令,并在执行前检查工具进程、白名单、缓存根目录和超时;命令型清理不会进入废纸篓,默认不勾选。
  • 每个项目都提供操作下拉菜单,可加入白名单/常用清理、在 Finder 中打开目录、复制完整路径或单独清理;加入白名单后条目立即从当前结果消失并清除勾选状态,不需要重新扫描;移出白名单会立即从最近一次扫描结果恢复;长路径可悬浮查看。
  • 「常用清理」区分收藏与清理授权:node_modules、DerivedData 等可再生成目录、已识别的软件更新安装包及 Rust 编译输出可长期授权移入废纸篓;清理后同一路径重新生成仍可一键清理,每次执行前重新捕获 FileIdentity。模拟器设备可按 UDID 收藏,每次必须单独确认永久删除;不会进入「一键清理缓存」,删除前重新核验设备登记、目录身份、关机状态及构建/测试活动,状态不明时跳过。设备删除后收藏保留并标记失效,同名新设备不会继承授权。系统级模拟器和 Xcode 文档缓存仅收藏供查看及手动处理,不会自动提权或清理。白名单与常用清理互斥,加入白名单会自动退出常用清理。
  • 侧栏新增「概览」(全部项目 / 常用清理 / 白名单)与分类两级导航;白名单拥有独立页面,可逐条移出;常用清理页面无需完整扫描即可即时刷新快照。刷新默认按占用大小排序(可切回按加入时间,选择会记住),还没量到的行排在最后,逐批到达时只补大小不变的顺序,列表不会反复跳动;目录占用合并成少量 du 调用、单个文件直接读属性,可清理项先发布、模拟器登记在其后查询,15 秒内重复进入不重新遍历目录树;刷新只是核对磁盘占用,删除自己会重新核验路径与身份,因此刷新或普通扫描进行中清理按钮依旧可用。
  • 常用清理支持扫描识别的软件更新安装包(例如 update.zip 和 updater 目录中的版本化 ZIP),以及已确认 Cargo target/profile 中的编译输出文件:只授权所选文件的完整路径,不清理整个父目录;同一路径重新生成可继续清理;安装包升级导致版本号变化时,会自动匹配同一更新目录中唯一的新版本文件(父目录必须一致,多个候选时不自动选择,旧文件仍存在时保持精确路径)。普通文档、数据库和其他未识别文件不支持加入,旧目录授权不会自动扩展到文件。
  • 「全选当前显示」只作用于当前可见条目(列表头提供三态 checkbox)。侧栏分类决定清理范围:「全部项目」覆盖全部,分类页只覆盖该分类勾选的项目,概览卡、列表头计数、底部「已选 N 项 · 大小」与「清理 N 项」按钮、以及「加入常用清理 / 加入白名单」都跟着当前分类切换,避免在分类页一键清理到没看到的其它分类;切换分类不会取消其它分类的勾选,底部会提示「其它分类还有 M 项保持勾选」。列表过滤器(只看已选 / 常用清理 / 只看大于指定大小,阈值 100 MB~1 GB 下拉可选、默认 1 GB,勾选状态与阈值会记住)只决定显示内容,永远不改变清理范围。迷你模式没有侧栏,清理范围是所有分类里勾选的项目。
  • 重新扫描期间保留上一次结果并在顶部显示进度,勾选与清理操作暂时禁用,新报告完成后一次性替换,避免界面闪空。
  • 支持迷你模式:以 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 只纳入可重建缓存、调试日志和更新下载,所有会话、项目、凭据、记忆、队列、配置、状态和仓库数据都排除在扫描规则之外。Claude Code Router 的请求日志只在原地按 24 小时窗口裁剪,清理范围始终由 $HOME 推导、不采用扫描结果里的路径,只接受 UUID 命名的正文文件,读不到日志库时直接跳过而不是按空结果删除。开发工具的 Electron 数据也只按明确应用和缓存叶子白名单识别,不扫描整个 Application Support,不触碰 IDE 用户数据、会话历史或工作区状态。删除项目生成物和模拟器设备会让下次构建/运行重新生成数据,可能需要重新下载依赖。运行测试、模拟器、Docker 构建或 agent 更新时,请先停止相关进程再处理对应资源。XCTestDevices 只自动清理明确以 UUID 命名的克隆设备:实际删除前会重新检测一次测试进程,空闲才放行,正在测试或状态不可知时一律拒绝;CoreSimulator 真实设备永远只通过 xcrun simctl delete 管理。


👨‍💻 作者的其他开源项目

MacPilot —— 开源 macOS 菜单栏效率工具箱(Swift 原生 · 零第三方依赖):应用自动退出规则、BLE 靠近解锁、窗口切换器、剪贴板历史、平滑滚动、画中画、录屏、截图贴图等 11 合 1,Apple 公证签名,免费下载。觉得有用欢迎点个 Star ⭐

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages