下载文件夹里躺着124个散落文件:讲义PDF、收据、安装包、截图,全混在一起。作者说自己一直念叨着"以后再整理",然后就没有然后了。SlothSort 就是替这种"以后"动手的工具。

它的分工很直接:一眼能认出来的文件,比如 .png、.zip、.mp3,交给即时规则处理;拿不准的那些,比如一份PDF既可能是讲义也可能是收据,才交给跑在本机的 Gemma 判断,最终归入 Study、Work、Personal 或 Receipts 四个文件夹。

作者给这个工具定的前提是"让懒得复核的人也敢用",为此设了四道保险:

  • 默认只做试运行,slothsort plan 只展示每一步移动,不碰任何文件;
  • 从不删除、从不覆盖,文件只被移动,重名会变成 name (2).ext;
  • 每次执行都写一份撤销日志,存在 .slothsort/ 目录下,一条 slothsort undo 命令就能全部还原;
  • 模型只能从固定的文件夹清单里选,不能自由发挥。

实现上,模型用的是通过 Ollama 在 localhost 提供服务的 Gemma 4(gemma4:e2b)。作者传入一个带 enum 的 JSON schema 限定可选文件夹,并在代码里对答案做二次校验——错误或凭空编造的文件夹会被拒绝,文件落到"Other"里。规则在前、模型在后,明显的文件被扩展名规则瞬间处理掉,既快又省。

整个工具零依赖:一个约90行的 Ollama 客户端,只用 Python 标准库写成。测试方面有7个 pytest 用例,使用假的分类器和临时文件夹,全程不需要 Ollama 在场。

为什么非要本地跑模型?作者的下载文件夹里有简历、证件扫描件和银行收据。他不愿意为了整理文件,先把这些文件名送到别人的服务器上。模型跑在自己的笔记本上,文件名不出机器;断网也能用;没有 API key、没有配额、没有按次计费。换模型只是一个参数的事,--model gemma4:e4b 即可;因为权重是开放的,他还可以按自己的文件夹结构做微调。

这个项目投稿的是 Hacktoberfest 开源AI挑战赛第三周"Slow and Steady",同时报名了"最佳 Gemma 应用"奖项。