一个开发者因为"爱好太多",最终自己动手写了一套文档管理系统。这个名为Kintara的项目,是一个自托管的文档库和阅读器,运行在Docker中,直接监控你已有的文件夹。

把PDF、Markdown或纯文本文件丢进目录,Kintara会自动完成索引、提取可搜索文本和元数据、生成缩略图,然后通过浏览器或可安装的PWA(渐进式Web应用)呈现整个文库。它支持文库、集合、标签、全文搜索、高亮、收藏、阅读进度、私有文库共享,以及GitHub OAuth登录。

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

架构大改:从Tauri桌面壳到单一Rust服务器

这个项目已经开发了几个月,架构在过程中发生了相当大的变化。Kintara最初有一个Tauri桌面外壳,但开发者最终意识到这根本不是自己想要的,于是把桌面层整个拆掉,围绕一个同时提供API和前端服务的Rust服务器重建。现在,把Kintara指向NAS(网络附加存储)文件夹,就能在台式机、笔记本、平板或手机上打开同一个文库。

开发者最钟爱的部分是可选的AI功能。他加入了使用OpenAI或Gemini的选项,由于消耗的token极少,大多数功能每次使用只需不到一分钱——封面图生成会贵一些,但能让文库看起来漂亮得多。

AI定位:工具而非主角,完全可选

开发者希望AI是文库里的一个工具,而不是接管一切,并且完全可选。如果你属于"讨厌AI出现在应用里"的那类人,不开启就行,它就像不存在一样。AI能做的事情包括:总结文档、建议元数据并填补空白字段、为没有封面的文档生成封面图、在文库中搜索文档,或者直接和它聊天讨论文档内容。

其中"查找"功能相当出色。Kintara不会让模型含糊地告诉你某内容"出现在文档某处",而是要求提供带页码的实际段落,先在服务器端对照提取的页面文本验证引用,再对照渲染后的PDF验证一次。如果引用无法定位,就会被丢弃。

不过,开发者最终最欣赏的是AI元数据建议功能。他的文库中有大量文档的嵌入元数据不完整、不一致或完全无用,手动修复很快就会让人厌烦。Kintara能读取文档并建议标题、作者、摘要、关键词、DOI(数字对象标识符)、ISBN(国际标准书号)和出版年份,然后显示建议,由用户选择要应用的字段。面对几百个文件的文库时,这个看似微不足道的便利就变得相当惊人。

项目失控式成长:从"简单整理"到多用户权限系统

Kintara已经长成了那种"一开始只想找个不过度复杂的文档整理方式,结果搞出了文件系统监控、OAuth、多用户权限,还顺手加了图片生成"的项目。如果你也积攒了大量PDF和Markdown文件,这个自托管方案或许值得一试。