一只三趾树懒的移动速度是每小时0.24公里,每天靠大约110千卡维持生存,原因是它拒绝把代谢能量浪费在多余的动作上。人类则相反:每个月都要花上几个小时,手动打开scan_0042 (1).pdf,判断它是什么、重命名、建文件夹,再从下载目录里拖出去。

打开网易新闻 查看精彩图片

开发者 tahaenasraoui-debug 做的 SlothTidy,就是把这套动作交给一只"数字树懒"。它是一个零摩擦、隐私优先的本地文件整理守护进程,面向开发者、学生和数字囤积者——想要干净的文件系统,但不想付出任何手动劳动。

它的工作方式很直接:在后台静默运行,或通过一条 CLI 命令按需触发,监视~/Downloads和~/Desktop,在文件下载完成的瞬间读取内容,用本地运行的轻量开源权重模型(qwen2.5:1.5b或llama3.2:1b)完成四件事:

  • 归类文件,类别包括 Finance、Academic、Development、Media、Administration 或 Misc;
  • 按文档真实日期和主题生成规范文件名,格式为YYYY-MM-DD-descriptive-slug.ext
  • 路由到~/Documents/Organized下的语义子文件夹,例如 Academic/Mathematics/2026-10-21-td3-real-analysis.pdf;
  • 把每一次原子移动记录到~/.config/sloth-tidy/history.jsonl,随时用 sloth-tidy undo 回滚任意数量的操作。

作者算过一笔账:手动打开、检查、重命名、建目录、移动一个文件约需25秒,整理42个文件就是17.5分钟的琐碎上下文切换,外加126次微决策——这是什么文件?该叫什么名?该放哪里?

而运行 sloth-tidy scan ~/Downloads,42个文件全部归位,他靠在椅背上喝了杯咖啡:数学和计算机习题集带着干净的日期前缀落进 Academic/Mathematics/;月度水电账单直接进 Finance/Invoices/;压缩的 Linux 配置进 Development/Archives/;终端截图经 OCR 识别后归入 Media/Screenshots/。零点击、零手动重命名、零字节泄露到云端。

工程实现上,它围绕三层本地推理架构和多格式内容提取管线搭建。主引擎通过Ollama的 /api/chat 接口与本地服务通信;结构化输出用 Pydantic v2 做语法约束——不指望 1.5B 参数模型靠提示词写出合法 JSON,而是把 FileClassification.model_json_schema() 直接传进 Ollama 的 format 参数,在推理采样阶段就把 token 限制在 category、suggested_filename、subfolder、confidence、summary 这套 schema 内,再由校验器剥离路径穿越符号(..)并强制 YYYY-MM-DD 短横线命名。

Ollama 守护进程没跑时,回退到llama-cpp-python直接加载本地 .gguf 模型文件,同样带 JSON schema 语法约束;连本地模型都够不着时,还有确定性的关键词加 MIME/扩展名分类器兜底,工作流不会断。图片和截图则用 Pillow 提取 EXIF、Tesseract 做本地 OCR,可选把压缩到 512x512 的 Base64 缩略图交给moondream:latest做本地多模态视觉分类。

内容提取管线遵循"小模型喂高信号、紧边界上下文"的原则:PDF 用 pypdf 读元数据和前两页文本,上限 2KB;代码和纯文本读前 2KB 加尾部 512B,带 UTF-8 启发式检测;二进制和压缩包只看 8 字节魔数头加文件名 token,不把多 GB 的 ISO 或 tar.gz 读进内存。

后台守护模式用非阻塞的 watchdog 观察目录,浏览器未完成的下载(.crdownload、.part、.tmp、.aria2)自动忽略,再用 POSIX 文件锁加字节大小稳定性防抖,等大文件写完才触发推理。冲突处理不覆盖已有文件,自动以 -1、-2 解决,并保留 .tar.gz 这类复合扩展名;低置信度文件送进 Misc/Low_Confidence_Review。

作者给出的理由是隐私:下载和桌面是电脑上最敏感的两个目录,一周之内就可能堆着银行流水、电汇回执、水电发票、身份证与护照扫描件、成绩单和未发表研究、.env 文件、SSH 配置和专有源码。后台文件守护进程调用闭源云 API 是走不通的——没人想让后台进程悄悄把银行流水片段或 .env 文件传到第三方服务器,也不想每下载一个 PDF 就付一次按 token 计费的 API 费用。

全离线意味着每个字节的提取和推理都留在127.0.0.1:拔掉网线或关掉 Wi-Fi,SlothTidy 表现完全一致。边际成本为零,跑上几年 API 费用也是0.00 美元;不需要独立显卡,1B 到 1.5B 的开源量化架构在普通笔记本 CPU 上约1.5秒完成一次结构化分类。测试环境是 6 核笔记本 CPU、16GB 内存、无 GPU,语料为 50 个混合文件,涵盖发票、大学数学习题集、C/Rust/Python 脚本和截图。

还有一个sloth-tidy report的"树懒能量报告卡",在终端打印仪表盘,统计已整理文件总数、整理的兆字节数、省下的手动劳作分钟数、避免的心理决策次数,以及省下的云 API 美元。

这个项目投稿的是 Hacktoberfest 开源 AI 挑战赛第三周"慢而稳"赛道,主打本地优先、由开源权重模型驱动的节能自动化。作者在开发中把 AI 编程助手当作系统架构的讨论对象,反复打磨那些会让朴素文件整理脚本翻车的边界情况:watchdog 事件不能读到写了一半的浏览器下载或被锁定的文件描述符;冲突解决时要保住复合压缩扩展名;还用 pytest 套件验证路径穿越清洗、dry-run 隔离和原子化多步回滚。