我给飞牛 fnOS 写了个「磁盘清理助手」:定时扫盘 + 规则随便定,还能让 AI 帮你写规则

摘要
给飞牛 fnOS 写的原生 fpk 清理应用,专治磁力下载目录里搭车的网页、TXT、小体积视频:定时扫盘、自定义规则、AI 生成规则、删除前预览确认、完整日志。纯 Python 标准库零依赖,文末附下载。
我给飞牛 fnOS 写了个「磁盘清理助手」:定时扫盘 + 规则随便定,还能让 AI 帮你写规则
飞牛 fnOS 用了一年多,存储空间的问题越来越明显:磁力下载往盘里塞的远不止你想要的那个文件——网页广告、txt 说明、几十 MB 的广告小视频,常常跟着正片一起下进来;影视库里同一个文件存了好几份;还有些文件夹早就空了却一直躺在盘里。手写脚本清理过几轮,但每次需求变了都要改代码,而且脚本没有界面,删了什么、为什么删,事后全靠翻终端记录。
所以这次干脆把它做成了一个正经的 fnOS 应用——「磁盘清理助手」。它是一个飞牛第三方 fpk 应用,装进应用中心就能用:定时扫盘、规则随便定、删除前先预览确认、删了什么全有日志。这篇把设计思路、完整上手流程和下载地址都整理出来。
一、为什么自己写一个
市面上的磁盘清理工具不少,但放在飞牛 NAS 上都有点水土不服:
盘位多:fnOS 的存储卷是
/vol1到/vol6这样挂载的,很多工具默认只认一个系统盘;磁力下载带进来一堆搭车文件:下载工具只管把任务下完,正片旁边的网页广告、txt 说明、小体积广告视频不会帮你收拾,攒得多了比正片还占地;
不敢自动跑:多数工具要么只能手动扫,要么自动删了不留记录,定时任务挂在上面心里没底。
我要的东西其实很明确:带 Web 界面、规则可以自己定、先预览再删、能定时自动跑、每一条删除都有日志可查。干脆自己写。
二、它是什么架构
先说几个关键设计:
原生 fpk 应用,不是 Docker。直接跑在 fnOS 宿主机上,能访问全部
/vol*存储卷,没有端口映射和挂载路径的折腾。后端纯 Python 标准库:HTTP 服务用
http.server,删除日志存 SQLite,调度用标准库线程,零 pip 依赖。前端是单文件 SPA:原生 JS,没有构建步骤,断网也能正常操作。
整个 fpk 安装包只有两百多 KB。
安装时会自动关联安装应用中心的「Python 3.12」开发工具作为运行时,不需要手动装环境。

界面是左侧功能目录栏的布局:扫描、结果、规则、定时、日志、设置六块。扫描页从上到下是扫描范围、扫描速度和本次执行的规则,选好之后点「开始扫描」。
三、五分钟上手流程
建议按这个顺序走一遍,确认规则没问题之后再交给定时任务:
1. 设置 → 添加扫描目录。可以点「浏览添加」从文件树里选,也可以直接在输入框里敲绝对路径回车跳转,比如 /vol1/downloads。
2. 规则 → 启用要跑的规则(下一节细说)。
3. 扫描 → 启动首次扫描。手动模式下只出清单、不删除,可以放心跑。
4. 结果 → 检查删除候选。每一项都标了规则来源、大小和「为什么被选中」,勾选确认后才会真正删除。

顶部是本次扫描的 KPI:待删项、可释放空间、扫描文件总数、扫描错误数。下面按规则分组列出删除候选,每行都有路径、大小和原因,右上角可以按规则筛选、按路径搜索。确认删除后,已删项会即时从列表消失、KPI 同步更新,不需要手动重扫。
5. 确认无误后 → 定时 → 创建自动清理任务。
扫描速度:四档限速
扫盘会占用 NAS 的 IO,所以做了限速设计:
档位 | 行为 | 适用场景 |
|---|---|---|
全速 | 不限速 | NAS 空闲时(比如半夜) |
标准(默认) | 每遍历一个目录短暂停顿 | 日常使用,对 NAS 服务影响小 |
慢速 | 停顿更久 | 白天有播放、下载负载时 |
自定义 | 自己指定每目录停顿秒数 | 精细控制 |
我的用法是白天用标准档扫一次确认规则,之后定时任务设在凌晨,配全速。
四、规则系统:所有清理需求都用规则表达
这个应用的核心思路是:「删什么」完全由规则决定。规则页里分为预设规则和自定义规则两部分。
预设规则分两组,其中一组就是为磁力下载目录量身定的,对应上面说的「搭车文件」,默认关闭,装好后到规则页手动开启:
预设 | 默认行为 | 可调参数 |
|---|---|---|
删除网页文件 | 清掉 | 扩展名列表 |
删除 TXT 文件 | 清掉 | 扩展名列表 |
删除小体积视频 | 清掉小于 50MB 的视频 | 体积阈值、视频扩展名 |
另一组预设针对影视库整理(重复文件、多副本、空目录),同样可以改参数、停用,甚至删掉再一键恢复,本文不展开。预设之外,自定义规则 + AI 生成规则基本能覆盖所有需求,这也是更值得讲的部分。

自定义规则:三种类型,条件随便组合
类型 | 逻辑 | 例子 |
|---|---|---|
删除文件 | 匹配条件的单个文件进入候选 | 清掉没下完的 |
删除空文件夹 | 目录下没有任何内容 → 整个文件夹进入候选(可选仅一级) | 清掉下载完早就搬空的目录 |
整文件夹匹配 | 一级子文件夹内全部文件都匹配 → 删整个文件夹 | 删掉只剩缩略图和 NFO 的残留目录 |
每条规则可以组合这些条件:扩展名、文件名正则、排除正则、大小区间、修改时间。比如「删除 30 天没动过、小于 1MB 的 .txt」就是一条规则的事。
整文件夹类的删除还带保险阈值(默认 100MB):真正执行删除前会再核验一遍文件夹的实际总大小,超过阈值就自动跳过、标记人工复核——防止正则写歪了把大目录一锅端。
重复文件:留哪份自己挑
碰到重复文件类的候选,结果页会把整组文件全部列出来,包括当前按策略保留的那一份。每一行都有「保留此文件」按钮,点一下就把保留对象换成它,另外那份自动进入待删——不用去文件管理器里翻路径。

五、AI 生成规则:大白话描述,粘贴回来就能用
手写正则对不少人是个门槛,所以做了「AI 生成规则」。这个应用本身离线运行、不内置任何 AI 调用,生成规则用的是「提示词中转」的三步法:
在弹窗里用大白话描述你想要什么,比如「删除所有 30 天没访问过的临时日志」;
点「生成提示词」,复制下面整段话,发给任意你手头的 AI(WorkBuddy、ChatGPT、DeepSeek 都行)——规则 JSON 的格式说明已经内置在提示词里;
把 AI 回复的 JSON 粘贴到「导入 JSON」,应用会自动校验字段,合法就入库,不合法直接报错拒收。

这样做的好处是应用不用接任何 API Key,也不依赖外部服务,规则却可以无限扩展。
六、定时任务:到点自动扫、直接删
确认规则跑过几轮、候选都符合预期之后,就可以在「定时」页建自动任务了:
周期三种:每天指定时刻、每周指定几天、每隔 N 小时(0.1~720 小时);
任务可分类:每个任务可以限定只扫哪几个目录、只跑哪几条规则(默认全部),列表里直接显示「目录 · 规则」摘要——比如「只对下载目录跑三条搭车文件预设」可以做成一个独立任务,不用动全局配置;
到点自动执行「扫描 → 按任务指定的规则 → 直接删除候选」,不进回收站;
每一条删除(包括定时任务里的)都记录进删除日志;
与手动扫描互斥:有任务在跑时,另一边自动跳过本轮,不会打架;
运行结果写回任务卡片:下次运行时间、上次结果一目了然。
定时删除是全自动的,所以第七节的安全机制请务必先配好再开。
七、删文件的工具,安全是底线
一个能定时删文件的工具,我给它叠了这几层防护:

手动模式只出清单:扫描本身永远不删东西,删除必须到结果页勾选确认;
双重确认:点删除后弹出应用内确认框,明确警告「直接删除、不进回收站、操作不可恢复」;
文件夹保险阈值:整文件夹删除前二次核验大小,超阈值跳过待人工复核;
受保护路径:服务端拒绝删除
/、/vol1~/vol7、/home、/etc、/usr、/var、/bin、/sbin、/boot这些一级路径,只接受绝对路径,单次最多删 20000 项;保留关键词名单:文件名命中关键词(默认
fanart/poster/banner/backdrop/cover/folder,规则页可改)的文件永不进入删除候选;整文件夹里只要含有一个保留文件,整个文件夹自动跳过——刮削海报、封面这类元数据文件不会被误伤;扫描出错排除:有读取错误的文件夹不参与任何文件夹类删除;
访问密码:设置页可选开启,开启后所有操作都要先登录,避免局域网内误触;
日志留底:每条删除记录时间、路径、大小、规则、来源(手动/定时)和结果,SQLite 存储,保留天数可配(默认 90 天,超期自动清理);
卸载不丢数据:卸载时会询问是否删除本地配置和日志,选保留的话重装后原样沿用。
八、下载与安装
安装方式就是飞牛的 fpk 手动安装,完整流程(入口位置、安全提示、安装确认)我在上一篇文章里逐步截过图,这里不再重复,只列关键步骤:
飞牛 fnOS(x86 平台)→ 应用中心 → 右上角「手动安装」→ 上传
diskcleaner.fpk;首次安装会自动关联安装「Python 3.12」开发工具,等它装完即可;
从桌面图标「磁盘清理助手」打开,地址是
http://NAS_IP:9610。
下载地址(夸克网盘):
打开夸克网盘 App 粘贴口令,或直接访问链接,取回 diskcleaner.fpk 上传到应用中心即可。当前版本 1.0.20。
九、写在最后
这个应用是给自己「每周手动跑脚本」的懒癌晚期做的:现在规则配好、定时任务挂上,每周自动清一遍,删了什么打开日志页就能看到。两百多 KB 的包、零第三方依赖,就算哪天不想要了,卸载时数据也能一并带走或完整保留。
如果你也在用飞牛 fnOS,手里有一堆下载目录、影视库要定期收拾,可以试试。有想加的规则类型或者发现 bug,欢迎在评论区留言。
