写了一个 Mac 清理工具 Mole,看看你能清理出多少 GB? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
tw93
V2EX    分享创造

写了一个 Mac 清理工具 Mole,看看你能清理出多少 GB?

  •  4
     
  •   tw93
    Tw93 6 天前 3965 次点击

    Mole - 像鼹鼠一样深入挖掘来清理您的 Mac

    最近 Mac 存储空间有点受限,用了好几个工具效果都不好,然后自己简单写了一个 Shell ,一下子居然清理了几十个 G 无用空间,把其中一些思路抽成这个工具,取名叫做 Mole 。

    Mole 鼹鼠是一种小小的掘地生物,前肢力气非常大,刨土在打隧道找东西非常厉害,这个工具可以像鼹鼠一样深入挖掘来清理您的 Mac 。

    假如小伙伴需要给电脑做个大扫除,可以试试,也支持了可以把软件卸载得非常干净的功能,很好奇你可以清理出来多少 GB ?

    使用地址:https://github.com/tw93/mole

    清理内容和功能

    • 深度系统清理:缓存、日志、临时文件、垃圾桶
    • 浏览器缓存清理:支持 Safari / Chrome / Arc / Firefox 等
    • 开发者环境清理:Xcode Derived Data 、Node.js 、npm 、pip 、Docker 、Homebrew 等
    • 常用应用缓存清理:Slack 、Discord 、JetBrains 、VS Code 、Notion 等
    • Dry-run 模式:预览将要删除的内容,不实际执行
    • 白名单机制:支持自定义目录保护,避免误删关键缓存

    卸载内容和功能

    • 应用主程序卸载:删除 /Applications/App.app
    • 应用支持文件清理:~/Library/Application Support/AppName
    • 缓存文件清理:~/Library/Caches/com.company.app
    • 偏好设置清理:~/Library/Preferences/com.app.plist
    • 日志与崩溃报告清理:~/Library/Logs/AppName
    • 沙盒容器数据清理:~/Library/Containers/com.app.id
    • 多选卸载:支持批量选择应用卸载
    • 卸载统计:展示已删除应用数量和释放的空间大小

    常见问题

    1. 会误删重要文件吗?不会。Mole 内置保护机制,会跳过系统关键文件。
    2. 清理操作能撤销吗?缓存文件删除后可自动生成,一般无需担心。
    3. 多久运行一次比较合适?一个月一次即可,或者磁盘紧张时使用。
    4. 安全吗?安全,支持 --dry-run 预览模式,执行前会列出要删除的内容。

    最后

    由于是一个小工具,只花了 2 天左右时间整的,假如你有任何建议,欢迎告诉我加上去,然后假如你发现这个工具帮你清理了很多垃圾,哈哈欢迎截图出来,大伙一起看看。

    51 条回复    2025-10-09 10:20:39 +08:00
    SiLenceControL
        1
    SiLenceControL  
       6 天前   1
    已 star
    avenger
        2
    avenger  
       6 天前
    昨晚在 x 上看到就用了,立省 30g ,真不错……
    之前一直用 tecent lemon
    tw93
        3
    tw93  
    OP
       6 天前 via Android
    @avenger 谢谢喜欢
    love4taylor
        4
    love4taylor  
    PRO
       6 天前
    brew install tw93/tap/mole
    ==> Fetching downloads for: mole
    ==> Fetching tw93/tap/mole
    ==> Downloading https://github.com/tw93/Mole/archive/refs/tags/V1.4.0.tar.gz
    curl: (56) The requested URL returned error: 404

    Error: mole: Failed to download resource "mole (1.4.0)"
    Download failed: https://github.com/tw93/Mole/archive/refs/tags/V1.4.0.tar.gz
    ==> No outdated dependents to upgrade!

    ~ took 3s
    tw93
        5
    tw93  
    OP
       6 天前
    @love4taylor 抱歉 我的锅 tag 我重新更新了一下,你试试,现在是 1.4.1
    geminikingfall
        6
    geminikingfall  
       6 天前
    感觉有点厉害的。
    cinhoo
        7
    cinhoo  
       6 天前
    --dry-run 模式下
    Developer tools cache 好像还是被清理掉了?
    tw93
        8
    tw93  
    OP
       6 天前 via Android
    @cinhoo 嗯嗯 我比较强迫症 你可以加上这个白名单 文档有个说明
    ssh
        9
    ssh  
       6 天前
    如果能搞个微信重复聊天文件清理就更赞了(根据文件 md5 或者其他特征判断重复,删掉之后创建软连接指向独一份的文件)
    tw93
        10
    tw93  
    OP
       6 天前
    @ssh 哈哈 想起前端时候对微信的吐槽来了,这个会有些自定义,我建议是 微信只保留关键人的聊天信息,其他的直接删就好
    followad
        11
    followad  
       6 天前 via iPhone
    我来试试 哥们
    tw93
        12
    tw93  
    OP
       6 天前
    @followad 看看可以清理多少
    xiaket
        13
    xiaket  
       6 天前   1
    挺好用, 谢谢!
    love4taylor
        14
    love4taylor  
    PRO
       6 天前
    旧菜单还留在屏幕上,新的菜单又在下面重新打印了一份

    mole --version
    Mole version 1.4.0

    tw93
        15
    tw93  
    OP
       6 天前 via Android
    @love4taylor 你这个终端是什么 我去修复一下
    love4taylor
        16
    love4taylor  
    PRO
       6 天前
    @tw93 Apple Terminal ,fish shell ,但是 shebang 应该不影响,TERM 也是 xterm-256color 没问题。
    lucasji
        17
    lucasji  
       6 天前


    不错不错
    tw93
        18
    tw93  
    OP
       5 天前 via Android
    @lucasji 厉害了
    tw93
        19
    tw93  
    OP
       5 天前 via Android
    @love4taylor 好 那应该是我代码没有处理好 下一个版本修一下
    xiaopanzi
        20
    xiaopanzi  
       5 天前
    很实用
    nah
        21
    nah  
       5 天前
    首先支持。
    涉及文件删除的,我还是保守点。
    你们先用。
    2bad4u
        22
    2bad4u  
       5 天前
    不错不错 正考虑下个柠檬呢 来的真及时
    zieglar
        23
    zieglar  
       5 天前
    虽然但是,我还是再观察一下
    tw93
        24
    tw93  
    OP
       5 天前 via Android
    @zieglar 今日最大
    zieglar
        25
    zieglar  
       5 天前
    @tw93 #24 有些太拿不准了,比如这个 Sandboxed app caches (1520 items) (37.5GB, dry) 还有 User app cache (374 items) (35.3GB, dry)
    Helsing
        26
    Helsing  
       5 天前 via iPhone
    ~/.gradle 排除了也还是被清除了
    tw93
        27
    tw93  
    OP
       5 天前 via Android
    @Helsing mole clean --whitelist 看看在里面不
    deplives
        28
    deplives  
       5 天前   2
    慎用,清理完 DataGrip 保存的 data source 全没了,淦
    deplives
        29
    deplives  
       5 天前   3


    真的是是服了,几百个 data source 现在一个不剩,好多密码都根部不记得了,淦
    tw93
        30
    tw93  
    OP
       5 天前
    @deplives #28 非常抱歉,JetBrains 的配置文件夹是 JetBrains (没有 com. 前缀),我已经把 JetBrains 文件夹的特殊保护,同时保护其他数据库工具的配置文件夹这个能力给加上了
    Dreamful
        31
    Dreamful  
       5 天前
    @deplives #29 哈哈哈哥们好样的,我先不用了
    arrebol42
        32
    arrebol42  
       5 天前
    在用一个类似的工具 mac-cleanup 。

    https://github.com/mac-cleanup/mac-cleanup-sh

    对比了一下清理的大文件,mole 把缓存的 huggingface 模型文件给清理了~
    tw93
        33
    tw93  
    OP
       5 天前
    @arrebol42 谢谢反馈,我已经把 HuggingFace 缓存到默认白名单中,下一个版本发布
    PatrickAtMoon
        34
    PatrickAtMoon  
       5 天前
    感谢作者,请问有没有办法添加自定义一些清理模式呢
    tw93
        35
    tw93  
    OP
       5 天前
    @PatrickAtMoon 正在写这个工具,我会基于 dry-run 的预览模式出一个白名单模式,可以让用户主动选中哪些可以不被清除
    ryh
        36
    ryh  
       5 天前
    application states 和 spotlight 的才多大,居然也放入默认删除的列表
    1OF7G
        37
    1OF7G  
       5 天前
    替作者感谢上面的小白鼠做出的牺牲。

    不想做小白鼠的还是再观望观望吧!
    avenger
        38
    avenger  
       5 天前 via iPhone
    反馈一个
    github desktop 客户端的配置好像也会被清除
    tw93
        39
    tw93  
    OP
       5 天前
    @ryh application states 这个我计划放出好了,之前写了不少白名单机制,更好就是不删除好了
    murongxdb
        40
    murongxdb  
       5 天前
    正好需要
    deplives
        41
    deplives  
       5 天前   3
    @tw93 #30 我现在真的想干死你,妈的整了一晚上,找回来了 30 多个,剩下的完全找不回来。还有一大堆需要改 drive 配置的链接根本不记得改的啥,都几年前的配置了。真的是服了 op 了,就是太相信网友
    YsHaNg
        42
    YsHaNg  
       5 天前
    妈耶 看评论有点危险 我还是先继续 brew zp 吧
    8520ccc
        43
    8520ccc  
       5 天前
    这种白名单模式的很危险呀 op 根本不可能维护一个完善的白名单的 难免出现遗漏 很有可能会对用户的数据造成损失。。。考虑一下 保守模式吧 不然不可避免的需要一次次的试错 来完善这个白名单。。。
    Ccf
        44
    Ccf  
       5 天前
    观望一下,没有 gui 不用
    tw93
        45
    tw93  
    OP
       5 天前
    @8520ccc 谢谢建议,我已经修改了,发布了 1.5 版本,把原本配置孤岛这个逻辑干掉了(正常而言,是用于删除已经卸载的软件的残留的配置文件,结果有些软件没有按照规范来命名,我没有考虑到这种情况),不过这里本来也不大,就先不做这个了,的确有些危险,对之前的小白用户说声抱歉。
    tw93
        46
    tw93  
    OP
       5 天前
    @avenger #38 谢谢反馈,这个我在 1.5 版本修正了
    iFrey
        47
    iFrey  
    PRO
       5 天前
    已 star ,使用了一下,感觉良好
    Tomatopotato
        48
    Tomatopotato  
       5 天前
    一点都不敢用这种清理工具,自从快十年前被 CleanMyMac 删除了 QQ 的所有聊天图片,就得了 ptsd 了。 虽然后来 QQ 自己也改成不定期自己删图片了。。。
    dreamage
        49
    dreamage  
       4 天前
    今天 gh daily 推荐了 巧了么不是
    4ever911
        50
    4ever911  
       1 天前
    为什么不在清理之前给一个清单,再让用户确认执行。
    Helsing
        51
    Helsing  
       1 天前
    @tw93 #27
    在里面
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4751 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 03:59 PVG 11:59 LAX 20:59 JFK 23:59
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86