完成工作的方法是爱惜每一分钟。——达尔文

Mole

Deep clean and optimize your Mac.

Stars Version License Commits Twitter Telegram

Mole - 95.50GB freed


Mole:一只住在 macOS 里的“清洁小仓鼠”,把你的磁盘空间一口一口啃回来

仓库的 Description 说得很俏皮,也很准确:

🐹 Deep clean and optimize your Mac.

Mole 就像一只认真到有点强迫症的小动物——它不吵不闹,悄悄钻进你的系统角落,把那些“你以为删了、其实还在”的残留,连根拔起;把你不想面对的缓存、日志、浏览器碎屑、项目构建垃圾,整理得干干净净;顺手还帮你把系统服务拍拍灰、把状态面板亮起来,让你随时知道 Mac 现在到底健不健康。

它的自我介绍也很克制:

Deep clean and optimize your Mac.

但它做的事一点都不克制——它想当你的“全能工具箱”。


Features:它不是一把刷子,它是一整套工具箱(而且是一个二进制)

Mole 一上来就把野心写在 Features 里:

  • All-in-one toolkit:把 CleanMyMac、AppCleaner、DaisyDisk、iStat Menus 这类角色,塞进一个 single binary
  • Deep cleaning:清 caches、logs、browser leftovers,目标是 reclaim gigabytes of space
  • Smart uninstaller:卸载 app 不是“拖进废纸篓就算了”,它还要把 launch agents、preferences、各种 hidden remnants 一并带走
  • Disk insights:可视化磁盘占用、找大文件、rebuilds caches、刷新系统服务
  • Live monitoring:实时展示 CPU/GPU/内存/磁盘/网络统计

它像是在说:
“你不用再开四个软件、切五个窗口、到处找按钮——把我叫出来就行。”


Quick Start:把 Mole 叫醒的两种方式

1) Homebrew 安装(最像 macOS 的打开方式)

1
brew install mole

2) 脚本安装(想要指定版本/追最新都可以)

1
2
# Optional args: -s latest for main branch code, -s 1.17.0 for specific version
curl -fsSL https://raw.githubusercontent.com/tw93/mole/main/install.sh | bash

Mole 还提醒了自己的“主场”:

Mole is built for macOS. An experimental Windows version is available in the windows branch for early adopters.


Run:一条 mo,召唤交互菜单;一串子命令,分工明确

Mole 的命令行像一套“清洁工的工具腰带”,每个工具都有名字:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mo                           # Interactive menu
mo clean # Deep cleanup
mo uninstall # Remove apps + leftovers
mo optimize # Refresh caches & services
mo analyze # Visual disk explorer
mo status # Live system health dashboard
mo purge # Clean project build artifacts
mo installer # Find and remove installer files

mo touchid # Configure Touch ID for sudo
mo completion # Set up shell tab completion
mo update # Update Mole
mo update --nightly # Update to latest unreleased main build, script install only
mo remove # Remove Mole from system
mo --help # Show help
mo --version # Show installed version

它的性格很“清晰”:
你要深度清理就 clean,你要卸载干净就 uninstall,你要看看谁最占地方就 analyze,你想随时知道系统状态就 status


Preview safely:它很勤快,但也很谨慎——先演练再动手

Mole 知道自己干的是“本地维护工具”,有些命令会做 destructive local operations,所以它给了你一个“先看看会删什么”的护栏:

1
2
3
4
5
6
7
8
9
10
mo clean --dry-run
mo uninstall --dry-run
mo purge --dry-run

# Also works with: optimize, installer, remove, completion, touchid enable
mo clean --dry-run --debug # Preview + detailed logs
mo optimize --whitelist # Manage protected optimization rules
mo clean --whitelist # Manage protected caches
mo purge --paths # Configure project scan directories
mo analyze /Volumes # Analyze external drives only

它像一个很讲规矩的保洁队长:
“我可以干活,但你先确认一下我准备干什么;你想看得更细,我也能把日志全摊开给你看。”


Security & Safety Design:它不是莽夫,它有安全边界

Mole 的安全设计写得很直白:

  • safety-first defaults
  • path validation
  • protected-directory rules
  • conservative cleanup boundaries
  • higher-risk actions 需要 explicit confirmation
  • 当风险或不确定性高,它会 skip / refuse / require stronger confirmation,而不是扩大删除范围

并且它还把 mo analyze 单独点名为更“适合临时清理”的方式:

  • 因为它通过 Finder 把文件移到 Trash,而不是直接删掉

相关信息在:

  • SECURITY.md
  • SECURITY_AUDIT.md

Tips:它不仅会干活,还会教你怎么不踩坑

  • 有视频教程(YouTube):Mole tutorial video(感谢 PAPAYA 電腦教室)
  • 安全与日志:clean / uninstall / purge / installer / remove 都是 destructive
    • --dry-run
    • 需要时加 --debug
    • 操作日志写到:~/Library/Logs/mole/operations.log
    • 想关闭日志:MO_NO_OPLOG=1
  • 导航体验:支持方向键与 Vim 绑定 h/j/k/l

它像在你耳边说:
“别急着删,先预演;别怕看不懂,我让你像用 Vim 一样顺手。”


Features in Detail:它每个技能,都像一段小剧场

1) Deep System Cleanup:mo clean 的“扫地机器人模式”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ mo clean

Scanning cache directories...

✓ User app cache 45.2GB
✓ Browser cache (Chrome, Safari, Firefox) 10.5GB
✓ Developer tools (Xcode, Node.js, npm) 23.3GB
✓ System logs and temp files 3.8GB
✓ App-specific cache (Spotify, Dropbox, Slack) 8.4GB
✓ Trash 12.3GB

====================================================================
Space freed: 95.5GB | Free space now: 223.5GB
====================================================================

它清理时连开发者工具也不放过,还特别提了一嘴:

  • 在 Developer tools 里,会移除未使用的 CoreSimulator Volumes/Cryptex 条目,并跳过 IN_USE

这像是它“有脑子”的证据:
不是无差别扫荡,而是知道哪些该动、哪些别碰。


2) Smart App Uninstaller:mo uninstall 的“拔萝卜模式”(连根带土)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ mo uninstall

Select Apps to Remove
═══════════════════════════
▶ ☑ Photoshop 2024 (4.2G) | Old
☐ IntelliJ IDEA (2.8G) | Recent
☐ Premiere Pro (3.4G) | Recent

Uninstalling: Photoshop 2024

✓ Removed application
✓ Cleaned 52 related files across 12 locations
- Application Support, Caches, Preferences
- Logs, WebKit storage, Cookies
- Extensions, Plugins, Launch daemons

====================================================================
Space freed: 12.8GB
====================================================================

它对“卸载”的理解是:
“你走可以,但你落下的行李箱、钥匙串、快递盒,我也得一起清走。”


3) System Optimization:mo optimize 的“拍一拍系统服务”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ mo optimize

System: 5/32 GB RAM | 333/460 GB Disk (72%) | Uptime 6d

✓ Rebuild system databases and clear caches
✓ Reset network services
✓ Refresh Finder and Dock
✓ Clean diagnostic and crash logs
✓ Remove swap files and restart dynamic pager
✓ Rebuild launch services and spotlight index

====================================================================
System optimization completed
====================================================================

Use `mo optimize --whitelist` to exclude specific optimizations.

它不只是清文件,还会“刷新系统的呼吸节奏”。


4) Disk Space Analyzer:mo analyze 的“可视化探矿灯”

默认它为了启动更快,会跳过 /Volumes 下的外置盘;想看外置盘就:

  • mo analyze /Volumes 或指定挂载路径
1
2
3
4
5
6
7
8
9
10
11
$ mo analyze

Analyze Disk ~/Documents | Total: 156.8GB

▶ 1. ███████████████████ 48.2% | 📁 Library 75.4GB >6mo
2. ██████████░░░░░░░░░ 22.1% | 📁 Downloads 34.6GB
3. ████░░░░░░░░░░░░░░░ 14.3% | 📁 Movies 22.4GB
4. ███░░░░░░░░░░░░░░░░ 10.8% | 📁 Documents 16.9GB
5. ██░░░░░░░░░░░░░░░░░ 5.2% | 📄 backup_2023.zip 8.2GB

↑↓←→ Navigate | O Open | F Show | ⌫ Delete | L Large files | Q Quit

它像一只小鼹鼠在地底打灯:
“你想知道空间去哪了?我带你一层层挖出来。”


5) Live System Status:mo status 的“健康仪表盘”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ mo status

Mole Status Health ● 92 MacBook Pro · M4 Pro · 32GB · macOS 14.5

⚙ CPU ▦ Memory
Total ████████████░░░░░░░ 45.2% Used ███████████░░░░░░░ 58.4%
Load 0.82 / 1.05 / 1.23 (8 cores) Total 14.2 / 24.0 GB
Core 1 ███████████████░░░░ 78.3% Free ████████░░░░░░░░░░ 41.6%
Core 2 ████████████░░░░░░░ 62.1% Avail 9.8 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 Code ▮▮▮▮▯ 42.1%
Up ▄▄▄▃▃▃▄▆▆▇█▁▁▁▁▁ 0.02 MB/s Chrome ▮▮▮▯▯ 28.3%
Proxy HTTP · 192.168.1.100 Terminal ▮▯▯▯▯ 12.5%

Health score 由 CPU、内存、磁盘、温度、I/O load 计算,颜色分档。

它还藏了一点小彩蛋式的快捷键:

  • mo status 里按 k:toggle the cat 并保存偏好
  • q:退出

并且它会在需要时提醒“高 CPU 占用进程”——你还能调阈值与窗口:

  • --proc-cpu-threshold
  • --proc-cpu-window
  • --proc-cpu-alerts=false

Machine-Readable Output:它也愿意当脚本的好朋友

mo analyzemo status 都支持 --json,并且 mo status 会检测输出被 pipe 时自动切 JSON。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Disk analysis as JSON
$ mo analyze --json ~/Documents
{
"path": "/Users/you/Documents",
"entries": [
{ "name": "Library", "path": "...", "size": 80939438080, "is_dir": true },
...
],
"total_size": 168393441280,
"total_files": 42187
}

# System status as JSON
$ mo status --json
{
"host": "MacBook-Pro",
"health_score": 92,
"cpu": { "usage": 45.2, "logical_cpu": 8, ... },
"memory": { "total": 25769803776, "used": 15049334784, "used_percent": 58.4 },
"disks": [ ... ],
"uptime": "3d 12h 45m",
...
}

# Auto-detected JSON when piped
$ mo status | jq '.health_score'
92

它像在说:
“你要交互,我给你界面;你要自动化,我给你 JSON。”


6) Project Artifact Purge:mo purge 专门收拾开发者的“建筑垃圾”

它会清理 node_modulestargetbuilddist 等老旧构建产物:

1
2
3
4
5
6
7
8
9
10
11
12
mo purge

Select Categories to Clean - 18.5GB (8 selected)

➤ ● my-react-app 3.2GB | node_modules
● old-project 2.8GB | node_modules
● rust-app 4.1GB | target
● next-blog 1.9GB | node_modules
○ current-work 856MB | node_modules | Recent
● django-api 2.3GB | venv
● vue-dashboard 1.7GB | node_modules
● backend-service 2.5GB | node_modules

它还建议在 macOS 安装 fd

1
brew install fd

并且有一条非常“懂你”的规则:

  • Projects newer than 7 days 会被标记并默认不选中

Custom Scan Paths:想让它只扫你指定的目录也行

运行:

  • mo purge --paths

或编辑:

  • ~/.config/mole/purge_paths

例如:

1
2
3
~/Documents/MyProjects
~/Work/ClientA
~/Work/ClientB

7) Installer Cleanup:mo installer 把你下载过的安装包也“扫一遍”

它会从 Downloads、Desktop、Homebrew caches、iCloud、Mail 等位置找大安装包,并标注来源:

1
2
3
4
5
6
7
8
9
10
mo installer

Select Installers to Remove - 3.8GB (5 selected)

➤ ● Photoshop_2024.dmg 1.2GB | 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

Quick Launchers:把 Mole 放进 Raycast / Alfred 的口袋里

一条脚本,把常用命令塞进 Raycast 或 Alfred:

1
curl -fsSL https://raw.githubusercontent.com/tw93/Mole/main/scripts/setup-quick-launchers.sh | bash

它会新增 5 个命令:

  • Mole Clean
  • Mole Uninstall
  • Mole Optimize
  • Mole Analyze
  • Mole Status

Raycast Setup:把“门牌号”告诉 Raycast

  1. 打开 Raycast Settings(⌘ + ,)
  2. Extensions → Script Commands
  3. Add Script Directory(或 “+”)
  4. 添加路径:~/Library/Application Support/Raycast/script-commands
  5. 搜索并运行:Reload Script Directories
  6. Mole Clean / clean / Mole Optimize / Mole Status 开用

Terminal Detection:它还会观察你用哪种终端

Mole 会自动识别终端,但 iTerm2 有已知兼容问题;它强烈推荐:

也提到其他不错的选择:Alacritty、kitty、WezTerm、Ghostty、Warp。

想手动指定,就设置:

  • MO_LAUNCHER_APP=<name>

Community Love:它把感谢写在墙上

它感谢每一个贡献者,也展示了用户在 X 上的真实反馈与截图,让这只“清洁小仓鼠”看起来不再孤单——它有一整个用户群在帮它长大。


Support:如果它帮你省下了空间,你可以怎么回礼

  • star repo 或分享给朋友
  • 读 Contributing Guide,提 issue / PR
  • Buy Tw93 a Coke(赞助入口在 README)

License

MIT License. Feel free to use Mole and contribute.