macOS · Windows
Mac 深度清理、应用卸载、系统优化、磁盘分析与状态监控,免费开源命令行,另有原生 Mac App
English · 中文 · 繁體 · 日本語 · 한국어 · Deutsch · Français · Українська · Русский
💡 这个仓库是免费开源的命令行工具(
mo),喜欢图形界面的话可以单独下载 Mole for Mac,支持删除前逐项确认、实测 800 多款软件的卸载残留、系统维护、逐层分析磁盘空间、实时状态监控,以及在支持的 Mac 上控制风扇,Windows 上对应的原生 App 是 Mole for Windows,brew install mole只会安装命令行工具。
- 多合一命令行:把 CleanMyMac、AppCleaner、DaisyDisk 与 iStat Menus 的日常用法放进一个终端命令
- 深度清理:清除系统缓存、应用日志与卸载残留,释放磁盘空间
- 应用卸载:移除应用程序,同步清理配置文件与自启动项
- 磁盘分析:终端交互式浏览目录层级,定位占用空间的大文件
- 系统优化:刷新 DNS、QuickLook 与图标缓存,优化系统数据库
- 实时监控:在终端看板中实时查看 CPU、内存、磁盘读写、网络流量与进程
Mole 支持 macOS 12 及更高版本,兼容 Intel 与 Apple Silicon 芯片,Homebrew 不再支持你的 macOS 版本时改用脚本安装。
通过 Homebrew 安装
brew install mole通过脚本安装
curl -fsSL https://raw.githubusercontent.com/tw93/mole/main/install.sh | bashWindows 上安装(Windows CLI)
iwr -useb https://raw.githubusercontent.com/tw93/Mole/windows/quick-install.ps1 | iexMole 只通过 Homebrew、这个 GitHub 仓库和 Mac 版、Windows 版官网 mole.fit 发布,自称基于 Mole 的其他 App,或者让你往终端里粘贴一段编码命令的网站,都和 Mole 无关。
常用命令
mo # 打开交互式菜单
mo clean # 深度清理与已卸载应用残留
mo uninstall # 卸载应用及其残留
mo optimize # 刷新系统缓存与服务
mo analyze # 磁盘空间浏览(也可写 mo analyse)
mo status # 实时系统健康看板
mo purge # 清理项目构建产物
mo installer # 查找并删除安装包
mo slim # 移除通用应用里的 Intel 代码
mo touchid # 配置终端 Touch ID 指纹提权
mo completion # 配置命令行 Tab 键自动补全
mo update # 检查并更新 Mole
mo update --nightly # 更新到最新未发布的开发版(仅限脚本安装)
mo remove # 从系统中完全卸载 Mole
mo --help # 查看帮助信息
mo --version # 查看已安装版本安全预览
mo clean --dry-run
mo uninstall --dry-run
mo optimize --dry-run
mo purge --dry-run
mo installer --dry-run
mo slim --dry-run
mo history
mo history --json
mo clean --dry-run --debug # 安全预览 + 详细诊断日志
mo optimize --whitelist # 管理受保护的优化规则
mo clean --whitelist # 管理受保护的缓存白名单
mo purge --paths # 配置代码项目扫描目录
mo analyze /Volumes # 仅分析外接移动硬盘或磁盘卷
mo analyze /private/tmp # 仅查看临时目录(不自动清理)其他安装选项
想装特定版本就传入 Releases 页面 里的任意 Tag,带不带开头的 V 都行,想跟开发分支就传 main:
curl -fsSL https://raw.githubusercontent.com/tw93/mole/main/install.sh | bash -s -- 1.51.0
curl -fsSL https://raw.githubusercontent.com/tw93/mole/main/install.sh | bash -s -- mainmain 会安装默认分支上还没发布的代码,可能不稳定,latest 只是 main 的旧别名,并不会安装最新稳定版。
安装脚本默认装到 /usr/local/bin,可能需要输入管理员密码。希望以后的 mo update 不用输密码,可以装到用户目录:
mkdir -p "$HOME/.local/bin"
curl -fsSL https://raw.githubusercontent.com/tw93/mole/main/install.sh | bash -s -- --prefix "$HOME/.local/bin"
export PATH="$HOME/.local/bin:$PATH"记得把 export PATH 加到 ~/.zshrc 或相应的终端配置文件。Mole 更新的是你运行的那份安装,之后会一直用这个目录,需要改系统文件的命令仍可能要管理员权限。
Nix
在 macOS 上,Nix 用户可从 main 分支安装 flake,其中包含还没发布的改动:
nix profile install github:tw93/mole/main#mole
nix profile upgrade mole
nix profile remove mole声明式配置可以把 github:tw93/mole/main 加为 flake input,用它的 packages.${system}.mole 包。Nix 管理的安装要通过 Nix 升级和卸载,mo update 和 mo remove 不会改动它。
Mole 会删除文件,所以会先校验路径、保护共享和系统目录,需要时才请你确认,无法确认安全的项目一律跳过或拒绝。
clean、uninstall、purge、installer、slim与remove会删除文件,可先用--dry-run预览,需要时加上--debug- 日常运行 无需
sudo,仅在触及系统级清理时按需请求管理员权限 mo uninstall、mo analyze与mo slim在确认后默认将删除项移入废纸篓;clean、purge与installer为永久删除,mo uninstall --permanent可跳过废纸篓- 清理操作记录在
~/Library/Logs/mole/operations.log中,可通过mo history查看,或设置MO_NO_OPLOG=1禁用 - 可通过
mo clean --whitelist保护指定缓存,或使用mo optimize --whitelist排除维护项 - 白名单文件无法读取时,
clean、purge和optimize会直接停止,不会在没有白名单的情况下继续执行
漏洞报告方式、安全边界与当前限制见 SECURITY.md 与 SECURITY_AUDIT.md。
以下展示为缩减示例,具体显示项、大小与跳过原因取决于你的 Mac 实际环境。
mo clean 扫描并清理已知可安全删除的缓存、日志、临时文件、开发工具缓存以及已卸载应用的残留,默认会清空 ~/.Trash,想保留就在 mo clean --whitelist 里勾选 Trash,同一个菜单也用来保护想留下的缓存,各卷的废纸篓(如 /Volumes/*/.Trashes)不会随之清空。选好的项会写进 ~/.config/mole/whitelist,想加自定义路径时先打开菜单按回车保存一次,再往文件里每行追加一个路径,文件一旦存在就会替换可选默认规则,内置安全保护仍然生效。
$ mo clean
Clean Your Mac
⚙ Apple Silicon | Free space: 219.0GB
➤ User essentials
✓ User app cache · 18 items, 2.4GB
✓ User app logs · 7 items, 12.8MB
✓ Trash · emptied, 9 items
➤ App caches
✓ App Store cache · 8 items, 248.5MB
➤ Browsers
✓ Safari cache · 24 items, 642.1MB
✓ Chrome cache · 31 items, 1.2GB
➤ Developer tools
✓ npm cache · cleaned
◎ pnpm cache · skipped (pnpm busy)
======================================================================
Cleanup complete
Tracked cleanup: 4.5GB | Items cleaned: 97 | Categories: 4
Free space: 223.5GB (+4.5GB)
======================================================================
mo uninstall 移除已安装的应用,以及 Mole 能确认属于这个应用的相关文件;若同一应用的另一个已安装副本仍在使用这些文件,会自动保留,应用此前已被手动删除的话,运行 mo clean 扫描残留。
设置、插件等个人数据默认保留,在卸载预览页按 D 可逐项选择要删除的数据路径,用 mo uninstall --with-data 时这些数据会预先选中,浏览器配置文件与 App Group 容器除外,预览里单独列出,仍可按 D 保留任意路径,卸载后若发现 shell、Hook 或 MCP 配置仍引用已删除的路径,只提示文件和行号,不修改配置。
$ mo uninstall
Select Apps to Remove 1/3 selected
➤ ● Photoshop 2024 4.20GB | 2mo ago
○ IntelliJ IDEA 2.80GB | 3d ago
○ Premiere Pro 3.40GB | 2w ago
Files to be removed:
✓ Photoshop 2024, 4.20GB
✓ /Applications/Adobe Photoshop 2024/Adobe Photoshop 2024.app
Personal data kept:
~/Library/Application Support/Adobe/Adobe Photoshop 2024
~/Library/Preferences/com.adobe.Photoshop.plist
D choose personal data
======================================================================
Uninstall complete
Removed 1 app, freed 4.20GB: Photoshop 2024
======================================================================
mo optimize 对支持的 Finder、网络、数据库与 macOS 服务执行范围明确的维护,非必要、当前执行不安全或不可用的任务会跳过并说明原因。可用 mo optimize --whitelist 排除任务或路径模式,例如常驻挂载的 /Volumes/mail,避免它出现在推出列表里。
$ mo optimize
Optimize
⚙ System 18/32 GB RAM | 616/926 GB Disk | Uptime 6d
PERFORMANCE DIAGNOSIS
✓ No sustained high-CPU bottleneck detected
➤ Finder Cache Refresh
→ QuickLook thumbnails refreshed
→ Icon services cache rebuilt
➤ Network Cache Refresh
→ DNS cache refreshed
➤ Database Optimization
◎ Close these apps before database optimization: Safari
➤ Disk Health
→ Disk verify skipped
======================================================================
Optimization Complete
Applied 2 optimizations
13 unchanged | 3 skipped | 1 unavailable
======================================================================
mo analyze 打开终端交互式磁盘分析器,支持方向键与 Vim 快捷键浏览、快速过滤、多选标记、Finder 预览与移入废纸篓。外置磁盘默认不在概览中显示,可运行 mo analyze /Volumes 或指定挂载路径单独查看,mo analyze /private/tmp 只检查临时目录,不会把它们变成自动清理目标。逐文件扫描时,共享全部数据块的 APFS 克隆只计一次,文件夹快速估算仍可能重复计算共享块。
以 + 结尾的大小是部分扫描里实际测到的字节数,unknown 表示没法测出大小。因临时超时中断的条目不会覆盖已有完整缓存,后续刷新可自动补全。macOS 不允许终端读取的文件夹会一直标为部分扫描,直到访问权限改变。终端界面只列出最大的 30 项,读不到的条目可能不在这 30 项里,但总量仍会标为部分扫描,JSON 格式输出则包含所有扫描条目。
mo analyze --json /path 的结果本身和其中每一项都带有 scan_status(complete、partial 或 unavailable)。数值大小是实际测到的字节数,unavailable 时的 0 也不代表目录为空。未完成的扫描仍返回退出码 0,脚本要看 scan_status 判断结果是否完整。完整性以 Mole 现有的扫描排除规则为界,不保证是文件系统的原子快照。
$ mo analyze
Analyze Disk (302.1GB free)
Select a location to explore:
▶ 1. ████████████████████████ 47.9% | Home 75.4GB
2. ███████████ 22.0% | User Library 34.6GB
3. ███████ 14.2% | Applications 22.4GB
4. █████ 10.7% | System Library 16.9GB
5. ███ 5.2% | Old Downloads (90d+) 8.2GB >3mo
mo status 提供只读系统硬件仪表盘,涵盖 CPU、系统负载、磁盘读写、网络流量、电源与进程。
当默认 IPv4 路由走 VPN 或隧道接口时,流量图表会统计这个接口,避免和物理网卡重复计算。JSON 输出保留每个接口的速率,包括路由经过的隧道,空闲的非默认隧道不显示。
$ mo status
Mole Status Health ● 92 MacBook Pro · M4 Pro · 32GB · macOS 26
⚙ CPU ▦ Memory
Total ████████████░░░░░░░ 45.2% Used ███████████░░░░░░░ 58.4%
Load 0.82 / 1.05 / 1.23 (8 cores) Total 18.7 / 32.0 GB
Core 1 ███████████████░░░░ 78.3% Free ████████░░░░░░░░░░ 41.6%
Core 2 ████████████░░░░░░░ 62.1% Avail 13.3 GB
▤ Disk ⚡ Power
Used █████████████░░░░░░ 67.2% Level ██████████████████ 100%
Free 156.3 GB Status Charged
Read ▮▯▯▯▯ 2.1 MB/s Health Normal · 423 cycles
Write ▮▮▮▯▯ 18.3 MB/s Temp 58°C · 1200 RPM
⇅ Network ▶ Processes
Down ▁▁█▂▁▁▁▁▁▁▁▁▇▆▅▂ 0.54 MB/s Zombies 3 · Chrome (4242) ×3
Up ▄▄▄▃▃▃▄▆▆▇█▁▁▁▁▁ 0.02 MB/s Code ▮▮▮▮▯ 42.1%
Proxy HTTP · 192.168.1.100 Chrome ▮▮▮▯▯ 28.3%
健康评分综合了 CPU、内存、磁盘余量、SMART 状态、I/O 读写、温度、电池状况与运行时间,按 k 切换看板小猫,按 c 调整显示的 CPU 核心数,按 q 退出,设置会自动保存。
JSON、NDJSON 与进程告警
mo analyze --json ~/Documents:单次输出指定路径的磁盘分析 JSONmo status --json:单次输出系统状态快照 JSONmo status | jq '.health_score':当输出被管道重定向时自动切换为 JSON 模式mo status --watch --interval 2s:持续流式输出 NDJSON(换行分隔的 JSON)mo history --json:以 JSON 格式输出历史清理日志。每个会话带有run_id(不透明字符串,没有记录身份时为空)和attribution,能识别的运行是run,旧版按命令分组的是command,旧标记分不清中断和重叠运行时是ambiguous。记录下来的操作仍然都能看到,但ambiguous的计数没法可靠地分到单次运行上。ended_at为空表示没有记录到结束标记
$ mo analyze --json ~/Documents
{
"path": "/Users/you/Documents",
"overview": false,
"entries": [
{ "name": "Library", "path": "...", "size": 80939438080, "is_dir": true }
],
"large_files": [
{ "name": "backup.zip", "path": "...", "size": 8796093022 }
],
"total_size": 168393441280,
"total_files": 42187
}
$ mo status --json
{
"host": "MacBook-Pro",
"health_score": 92,
"cpu": { "usage": 45.2, "logical_cpu": 8 },
"memory": { "total": 34359738368, "used": 20078972109, "used_percent": 58.4 },
"disks": [],
"process_collected_at": "2026-08-29T12:30:00Z",
"process_stale": false,
"zombie_count": 3,
"zombie_parents": [
{ "pid": 4242, "name": "Google Chrome for Testing", "count": 3 }
],
"zombie_parents_complete": true,
"uptime": "3d 12h 45m"
}
僵尸进程诊断是只读的,不会结束进程,也不影响健康分。Mole 还没成功拿到一次进程样本时,process_collected_at、process_stale、zombie_count 和 zombie_parents_complete 都不会出现,zombie_parents 为 null。之后的 fast/watch 快照会沿用最近一次成功的样本,保留它原来的 process_collected_at 并设 process_stale: true,拿到新的进程样本后变回 false。0 表示 Mole 实际测过,没有僵尸进程。父进程摘要最多列出三个已知的父进程,zombie_parents_complete: false 表示归属信息拿不到、不完整或被截断。
如果某个指标采集出错,mo status --json 仍会输出其他可用指标,将错误记录在 stderr 中并退出 0,--watch 也是这样继续输出,只有 CPU、内存、磁盘和进程指标全都拿不到,或者 JSON 输出失败时才退出 1。
持续高 CPU 的进程会有提示,用 --proc-cpu-threshold、--proc-cpu-window 或 --proc-cpu-alerts=false 调整或关闭。
mo purge 自动查找可随时重新构建的项目生成目录(如 node_modules、target、.build、build 与 dist)。按项目归类展示,只永久删除你勾选确认的产物,不经过废纸篓,最近 7 天内有改动或无法确认改动时间的产物默认不勾选。扫描优先用 fd,没有时回退到 find,包含部署密钥、嵌套 Git 仓库或 Git 追踪文件的目录会受保护,非交互式运行需加 --yes,可先用 mo purge --dry-run 预览候选目录。
使用 Page Up/Down 或 h/l 翻页,[/] 在项目间跳转,X 跳过当前项目并前进到下一个,/ 搜索项目路径与产物名称,n 跳到下一个匹配且不改变已选项,回车打开最终路径确认界面。显示的空间是估算值,没测出大小的产物和不完整的扫描会单独标明。
Purge 示例输出
$ mo purge
Purge Project Artifacts
Select Artifacts to Purge
6.00GB, 2 selected
➤ ● ┌ ~/Projects/website 3.80GB | node_modules | 28d
○ └ ~/Projects/website 186MB | dist | <1d
● ┌ ~/Projects/rust-app 2.20GB | target | 2mo
○ └ ~/Projects/rust-app 22MB | dist | <7d
======================================================================
Purge complete
Estimated space freed: 6.00GB | Items: 2 | Free: 223.5GB
======================================================================
自定义扫描路径
运行 mo purge --paths 配置扫描目录,或直接编辑 ~/.config/mole/purge_paths:
~/Documents/MyProjects
~/Work/ClientA
~/Work/ClientB配置了自定义路径就只扫描这些目录,没配置时用默认目录(如 ~/Projects、~/GitHub、~/dev 以及受支持的 agent worktree 目录),扫描中途得到的不完整结果不会保存。产物扫描深度为配置根目录下 6 层,更深的项目可以加一个更近的根目录,Purge 只删除 worktree 里可重建的产物,不会删除 worktree 目录本身。
mo installer 自动查找下载目录、桌面、Homebrew 缓存、iCloud、Mail、Telegram 等受支持位置中的 DMG、PKG、MPKG、ISO、XIP 与安装器 ZIP 文件,清理前列出各文件大小与来源。扫描有总时长上限,出错或超时就直接放弃,不在不完整的数据上操作,损坏或无法读取的 ZIP 压缩包会跳过,扫描根目录可以是符号链接,但不会跟随它下面的符号链接,最终删除前还会再校验一次,确保文件未发生变动。
Installer 示例输出
$ mo installer
Select Installers to Remove, 3.83GB, 5 selected
➤ ● Photoshop_2024.dmg 1.20GB | Downloads
● IntelliJ_IDEA.dmg 850.6MB | Downloads
● Illustrator_Setup.pkg 920.4MB | Downloads
● PyCharm_Pro.dmg 640.5MB | Homebrew
● Acrobat_Reader.dmg 220.4MB | Downloads
○ AppCode_Legacy.zip 410.6MB | Downloads
======================================================================
Installers cleaned
Removed 5 installers, freed 3.83GB
======================================================================
mo slim 在 Apple Silicon Mac 上移除通用应用里的 Intel 代码。它列出归你所有、使用 Developer ID 签名的应用及各自的 Intel 代码大小,只处理你选中的应用。每个应用先在副本上瘦身,只动主程序和自带签名的嵌套代码,副本保留 Apple Silicon 代码并通过代码签名与 Gatekeeper 检查后才替换原应用,原应用移入废纸篓。App Store 应用、Apple 应用、设为使用 Rosetta 打开的应用、属于其他用户的应用以及正在运行的应用都不会处理。不需要安装开发工具,应用更新后 Intel 代码会回来。
Raycast 与 Alfred 配置
安装快捷启动器(Clean、Uninstall、Optimize、Analyze 与 Status):
curl -fsSL https://raw.githubusercontent.com/tw93/Mole/main/scripts/setup-quick-launchers.sh | bash脚本会添加 Raycast 命令,检测到 Alfred 配置时还会添加带有 clean、uninstall、optimize、analyze 与 status 关键词的 Alfred Workflow。
Raycast 装好后要手动设置一次:
- 打开 Raycast 设置 > Extensions > Script Commands。
- 添加
~/Library/Application Support/Raycast/script-commands目录。 - 在 Raycast 中点击 Reload Script Directories。
启动器会自动适配常见终端(Terminal、iTerm2、Alacritty、kitty、WezTerm、Ghostty、Hyper、WindTerm、Warp)。可通过 MO_LAUNCHER_APP=<名称> 指定终端,也可以直接在 Kaku 中运行。
感谢所有参与 Mole 开发与维护的贡献者,去关注一下他们吧 ❤️
来自 X (Twitter) 用户的真实使用反馈:
观看 PAPAYA 電腦教室 制作的 Mole 教学视频。
- 购买 Mole for Mac 是支持 Mole 持续开发最直接的方式
- 如果 Mole 帮到了你,欢迎点个 Star、分享给朋友,或在 GitHub 提交 Issue 和 PR
- 我养了两只猫,汤圆和可乐,如果 Mole 用着顺手,欢迎投喂她们一顿 罐头 🥩
Mole 基于 GPL-3.0 协议开源(详见 LICENSE),任何修改与分发的版本需要保持相同的开源协议,如果你将 Mole 分叉为其他独立产品,请使用不同名称并注明出处。Mole for Mac 是独立的闭源 App,Mole 会长期维护下去。

