{"id":51430264,"url":"https://github.com/lumidesk/clean-sweep-tui","last_synced_at":"2026-07-05T03:03:40.426Z","repository":{"id":357153021,"uuid":"1229320333","full_name":"LumiDesk/clean-sweep-tui","owner":"LumiDesk","description":"一键清空各类开发缓存，以及部分用户目录、应用配置的命令行小工具。","archived":false,"fork":false,"pushed_at":"2026-06-20T06:51:43.000Z","size":624,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-20T08:21:13.241Z","etag":null,"topics":["cleaner","linux","tool","tui","tui-app"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LumiDesk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-04T23:33:52.000Z","updated_at":"2026-06-20T06:51:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/LumiDesk/clean-sweep-tui","commit_stats":null,"previous_names":["kaede221/cleansh","lumidesk/cleansweep","lumidesk/clean-sweep","lumidesk/clean-sweep-tui"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LumiDesk/clean-sweep-tui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LumiDesk%2Fclean-sweep-tui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LumiDesk%2Fclean-sweep-tui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LumiDesk%2Fclean-sweep-tui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LumiDesk%2Fclean-sweep-tui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LumiDesk","download_url":"https://codeload.github.com/LumiDesk/clean-sweep-tui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LumiDesk%2Fclean-sweep-tui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35141967,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-05T02:00:06.290Z","response_time":100,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cleaner","linux","tool","tui","tui-app"],"created_at":"2026-07-05T03:03:40.021Z","updated_at":"2026-07-05T03:03:40.385Z","avatar_url":"https://github.com/LumiDesk.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧹 CleanSweep TUI\n\n\u003e 一键清空各类开发缓存，以及部分用户目录、应用配置的终端小工具。勾选、预览、确认，三步清空磁盘。\n\n\u003cp\u003e\n  \u003cimg alt=\"Platform\" src=\"https://img.shields.io/badge/platform-Linux-informational\"\u003e\n  \u003cimg alt=\"Python\" src=\"https://img.shields.io/badge/python-3.10%2B-blue\"\u003e\n  \u003cimg alt=\"Package manager\" src=\"https://img.shields.io/badge/deps-uv-purple\"\u003e\n  \u003cimg alt=\"License\" src=\"https://img.shields.io/badge/license-GPLv3-green\"\u003e\n\u003c/p\u003e\n\nCleanSweep TUI 把「该删的缓存」整理成一份清单，用 TUI（终端图形界面）让你**勾选 → 预览要执行的命令 → 一次性确认 → 执行**。每一项删什么都清清楚楚，所见即所删，不藏黑盒。\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"CleanSweep TUI 运行截图：左侧勾选清单，右侧实时命令预览\" src=\"https://raw.githubusercontent.com/LumiDesk/clean-sweep-tui/main/showcase.png\" width=\"860\"\u003e\n\u003c/p\u003e\n\n## ✨ 特性\n\n- **一眼看清要删什么** —— 选中任意一项，右侧实时显示即将执行的原始 shell 命令，没有隐藏动作。\n- **安全分级，默认稳妥** —— 缓存类默认勾选（最坏只是下次构建变慢）；会动用户数据 / 配置 / 系统状态的项带 `!` 标记、**默认不勾**，需要你自己选中。\n- **跨环境自适应** —— 没装的工具、不存在的目录会自动置灰跳过，不会因为环境缺东西就报错；同一份脚本在不同机器上都能跑。\n- **一道确认闸门** —— 勾选过程随便改，真正执行前弹出确认弹窗，列全选中项并单独标出「会删数据 / 需 sudo」的项。\n- **应用插件** —— 针对具体软件的清理规则（Claude、思源笔记……）写成 JSON，随包分发、在 TUI 独立区域开箱即选；想加新软件只需丢一个 JSON 文件，不用改代码。\n- **可自定义** —— 通过 `custom.json` 添加你自己想清理的路径。\n\n\u003e [!WARNING]\n\u003e 这个工具会**真实删除文件**，其中部分项（用户目录、回收站、应用配置、系统缓存）删除后无法恢复。清理范围对应作者的使用习惯，请在勾选前看清右侧命令预览，**确认每一项要删什么再执行**。默认只勾选缓存类，危险项需要你主动选中——这是有意为之的安全设计。\n\n## 📋 清理项一览\n\n启动后进入 TUI 勾选界面，左侧分成上下两块：**「清理项」**（下表的通用项）和 **「应用插件」**（针对具体软件的规则，含 Claude，详见 [应用插件](#-应用插件presets) 一节）。下表是「清理项」区，编号即列表顺序：\n\n| # | 目标 | 性质 |\n| --- | --- | --- |\n| 01 | Docker：容器 / 镜像 / volume / 构建缓存 | 缓存 |\n| 02 | pnpm store | 缓存 |\n| 03 | npm cache（`_cacache` / `_logs` / `_npx`） | 缓存 |\n| 04 | Bun：全局模块缓存（`~/.bun/install/cache`） | 缓存 |\n| 05 | Go build / module / test / fuzz 缓存 | 缓存 |\n| 06 | Rust：registry（含 index）与 git 缓存（保留 `~/.cargo/bin`，支持 `CARGO_HOME`） | 缓存 |\n| 07 | SDKMAN：`sdk flush` + 删下载归档 `archives/`（支持 `SDKMAN_DIR`） | 缓存 |\n| 08 | Gradle：`~/.gradle/caches`（支持 `GRADLE_USER_HOME`） | 缓存 |\n| 09 | Maven：本地仓库 `~/.m2/repository` | 缓存 |\n| 10 | 清空 `~/.cache/`（XDG 用户缓存，支持 `XDG_CACHE_HOME`） | 缓存 |\n| 11 | 缩略图缓存：`~/.thumbnails` + `~/.cache/thumbnails` | 缓存 |\n| 12 | 清空 `~/Documents`、`~/Downloads`、`~/Music`、`~/Pictures`、`~/Videos` 的内容（保留文件夹本身） | **用户数据** |\n| 13 | 清空所有回收站：主回收站（`$XDG_DATA_HOME/Trash`）+ 各挂载盘的 `.Trash-\u003cuid\u003e` / `.Trash/\u003cuid\u003e` + 老版兼容路径 | **用户数据** |\n| 14 | 递归删除家目录 `~` 下所有 `.log` 日志文件（跳过 `node_modules` / `.git`） | **用户数据** |\n| 15 | `sudo dnf autoremove` + `sudo dnf clean all` | **系统（需 sudo）** |\n| 16 | `sudo apt-get autoremove` + `sudo apt-get clean` | **系统（需 sudo）** |\n| 17 | 清空 `/var/cache/man`、`/var/cache/fontconfig`、`/var/cache/PackageKit`、`/var/cache/cups` | **系统（需 sudo）** |\n| 18 | 清空全部 systemd 日志（`sudo journalctl --rotate` + `--vacuum-time=1s`，不保留历史） | **系统（需 sudo）** |\n| 19 | 崩溃报告 / core dump：`/var/crash`、systemd-coredump | **系统（需 sudo）** |\n| 20 | 删除 snap 旧版本（disabled 的 revision，保留当前版本） | **系统（需 sudo）** |\n| 21 | flatpak 未用 runtime（`flatpak uninstall --unused`，用户级 + 系统级） | **系统（需 sudo）** |\n| 22 | 读 `~/.config/clean-sweep-tui/custom.json` 中 `paths` 列表，删除指定路径（**包括路径本身**） | **用户自定义** |\n\n\u003e 「应用插件」区（Claude、思源笔记等针对具体软件的清理）单独列在界面下方，数量随规则文件变化，不在上表编号内——见 [应用插件](#-应用插件presets) 一节。\n\n关于这份清单的几条重要说明：\n\n- **缺失的工具会自动跳过**：检测不到（没装 Docker、没有回收站、`custom.json` 未配置等）的项在列表里直接置灰、无法勾选。\n- **默认勾选策略**：缓存类（# 01–11）默认就勾上了；标了 `!` 的用户数据 / 系统项默认**不勾**，要删得自己用空格选中。应用插件同理——`cache` 类默认勾、`config` 类（如 Claude）默认不勾。\n- **# 14** 只扫描家目录 `~`，不会动 `/var/log` 等系统日志；只删常规文件，不跟随符号链接，且跳过 `node_modules` / `.git` 目录（不误删项目与依赖里的日志）。\n- **# 15–21** 需要 `sudo`，执行阶段会按需弹出密码提示；# 15 仅 Fedora/RHEL 系有效，# 16 仅 Debian/Ubuntu 系有效，# 20/21 需装了 snap/flatpak，其余发行版 / 未安装会置灰。`/var/cache` 下没列出的子目录不会被动到。\n- **# 22** 没有配置文件时置灰。\n\n## 🚀 安装与使用\n\n仅支持 Linux，需要 Python 3.10+。\n\n### 方式一：从 PyPI 安装（推荐）\n\n命令行工具用 [pipx](https://pipx.pypa.io/) 或 [uv](https://docs.astral.sh/uv/) 装到独立环境，装完直接敲 `clean-sweep-tui` 启动：\n\n```bash\npipx install clean-sweep-tui      # 或\nuv tool install clean-sweep-tui\n\nclean-sweep-tui\n```\n\n\u003e 现在的 Debian/Ubuntu 因 [PEP 668](https://peps.python.org/pep-0668/) 会拦截 `sudo pip install` 系统级安装，pipx / uv tool 是装 CLI 工具的正确方式。\n\n### 方式二：从源码运行\n\n需要 [uv](https://docs.astral.sh/uv/)：\n\n```bash\n# 1. 克隆仓库\ngit clone https://github.com/LumiDesk/clean-sweep-tui.git\ncd clean-sweep-tui\n\n# 2. 同步依赖\nuv sync\n\n# 3. 启动\nuv run main.py\n```\n\n### TUI 操作\n\n| 按键 | 作用 |\n| --- | --- |\n| `↑` / `↓`（或 `j` / `k`） | 在当前区域内上下移动，右侧实时显示该项将要执行的命令 |\n| `Tab` / `Shift+Tab` | 在「清理项」与「应用插件」两个区域间切换焦点 |\n| `空格` | 勾选 / 取消当前项 |\n| `a` | 全选 |\n| `n` | 全不选 |\n| `c` | 只选缓存类 |\n| `回车` | 执行：弹出一次性确认，列出全部选中项并标出会删数据 / 需 sudo 的项；再按 `回车` 确认，`esc` 取消 |\n| `q` | 退出，什么都不做 |\n\n确认后 TUI 退出，回到普通终端逐条打印并执行命令（sudo 密码也在这一步输入）。\n\n## ⚙️ 自定义清理（custom.json）\n\n想清理清单之外的路径？在 `~/.config/clean-sweep-tui/custom.json` 放一份配置（支持 `XDG_CONFIG_HOME`）：\n\n```json\n{\n  \"paths\": [\n    \"~/某个临时目录\",\n    \"/tmp/foo\"\n  ]\n}\n```\n\n- 支持 `~` 展开；不存在或危险（根目录 `/`、家目录本身）的路径会被自动排除，整项无可删路径时置灰。\n- 确认后用 `rm -rf` 删除，**路径本身一并删掉**（与 # 12 只清空内容不同），请谨慎填写。\n\n## 🧩 应用插件（presets）\n\n`custom.json` 是「你临时列几条路径」，**应用插件**是「预先写好、按软件分组的规则库」：每个软件（Claude、思源笔记、各类编辑器……）的清理路径写成一个 JSON 文件，启动后自动扫描，在 TUI 左侧下方的**「应用插件」独立区域**展示，和通用清理项分开。**想支持一个新软件，只要丢一个 JSON 文件，不用改代码——连 Claude 本身也是一个内置 JSON。**\n\n扫描两个目录，**同 `key` 时用户目录覆盖内置**：\n\n| 来源 | 位置 | 说明 |\n| --- | --- | --- |\n| 内置 | 随包分发的 `clean_sweep_tui/presets/*.json` | 项目自带的规则库（目前含 Claude、思源笔记） |\n| 用户 | `~/.config/clean-sweep-tui/presets/*.json`（支持 `XDG_CONFIG_HOME`） | 你自己加的 / 覆盖内置同 key 的规则 |\n\n一个预设 JSON 长这样（与 `custom.json` 一样只支持「删路径」模型）：\n\n```json\n{\n  \"key\": \"siyuan\",\n  \"name\": \"思源笔记（配置 + 默认工作区）\",\n  \"category\": \"config\",\n  \"note\": \"删 ~/SiYuan 默认工作区 + ~/.config/siyuan + SiYuan-Electron 用户数据；笔记请确认放在别处\",\n  \"paths\": [\n    \"~/SiYuan\",\n    \"~/.config/siyuan\",\n    \"~/.config/SiYuan-Electron\"\n  ]\n}\n```\n\n- `key`（必填）：稳定标识，同 `key` 的用户预设会覆盖内置预设。\n- `name`（必填）：列表显示名。\n- `paths`（必填）：要 `rm -rf` 的路径，支持 `~` 展开；不存在或危险路径自动排除，全没有时整项置灰。**删的是路径本身**。\n- `category`（可选，默认 `cache`）：`cache` 默认勾选、无标记；`user_data` / `config` / `system` / `custom` 会带 `!` 标记、默认不勾。决定默认勾选与危险提示，仅影响安全分级，不会加 `sudo`。\n- `note`（可选）：一行简介。\n\n内置规则现有四条，都是 `config` 类（默认**不勾**、带 `!`，需主动选中）：\n\n- **Claude**：删除 `~/.claude` 与 `~/.claude.json`（配置 / 历史 / 项目记录）。\n- **Codex**：删除 `~/.codex`（配置 / 认证缓存 / 会话 / 技能 / 日志 / 记忆），保留 `codex` 命令本体。\n- **思源笔记**：删除整个 `~/SiYuan`（默认工作区）、`~/.config/siyuan`（思源配置）和 `~/.config/SiYuan-Electron`（Electron 用户数据）——即「除程序本体与真实工作区外的所有配置」。\n- **微信开发者工具**：删除 `~/.config/wechat-devtools` 与 `~/.cache/wechat-devtools`（登录态 / 项目历史 / 模拟器数据 / 缓存），保留 `/opt/apps/...` 等程序本体。\n\n\u003e [!WARNING]\n\u003e 思源这条会删掉**整个默认工作区 `~/SiYuan`**。如果你的笔记就放在那里，**不要勾选它**；笔记放在别处时这一项才安全。工作区路径不同的话，复制内置规则到用户预设目录、改 `paths` 即可（同 `key` 自动覆盖内置）。\n\n## 🛡️ 它不会做什么\n\n- 不会动 `~/.cargo/bin`（保留已安装的 cargo 命令）。\n- 不会删上面清单之外的任何东西，也不会替你勾选危险项。\n- 不用猜每条命令长什么样：选中某项时右侧预览就是即将执行的原始命令，所见即所删。\n\n## 🤝 贡献\n\n欢迎提 Issue 和 PR。新增清理项时请注意把它归到正确的安全分级（缓存 / 用户数据 / 系统 / 配置 / 自定义），项目的开发约定见 [AGENTS.md](AGENTS.md)。\n\n## 📄 License\n\n本项目以 [GNU General Public License v3.0](LICENSE) 授权发布。你可以自由使用、修改和分发本软件，但衍生作品必须同样以 GPLv3 开源。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flumidesk%2Fclean-sweep-tui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flumidesk%2Fclean-sweep-tui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flumidesk%2Fclean-sweep-tui/lists"}