正文

项目是什么

Aindexer 是一个本地运行的文献索引、精读问答和翻译工作台。这是我第一个vibe coding项目,因此也是跨度最长、踩过最多坑、学到最多东西的一个项目。做这个项目的起点并不复杂:读论文的时候,材料常常散在文件夹、笔记、翻译窗口和临时对话里,当下看得懂,过一阵子就很难完整找回来。Aindexer 想把这些动作重新接起来,让文献从导入、整理到回看,都留在同一个工作环境里。

它面向的是一类很具体的使用方式:文献会越积越多,阅读会跨很多天甚至几个月,真正有价值的不是一次性看完,而是后面还能继续找、继续改、继续问。Aindexer 希望把这些过程沉淀下来,让读过的内容慢慢变成自己的资料库。


它在做什么

一篇 PDF、DOCX 或 TXT 被导入之后,系统会先解析文本,再生成一份可以继续修改的结构化索引。这里面通常会包括标题、作者、关键词、APA 引用、核心观点和重要 claims。结果会保存在本地数据库和文件中,后面无论是搜索、修订、翻译,还是围绕这篇文献继续提问,都会沿着这份材料往下走。

整个流程大致是这样:

上传文献
  -> 生成结构化索引
  -> 检索 / 修订 / 回看
  -> 围绕文献问答
  -> PDF 选区翻译
  -> 导出 / 备份

这样的好处是,文献不会只停留在“存进来了”这一层,而是会一点点长出自己的整理脉络。后面再回来看时,能看到的不只是原文件,还包括之前留下的理解、线索和上下文。


主要部分

现在的 Aindexer 主要由四个部分组成,它们围着同一条主线工作:先把文献收稳,再把理解过程留下来。

模块 作用
Workbench 作为主入口,负责上传、浏览、搜索、排序、索引修订和导出。
Chat 围绕已经整理过的文献继续提问,回答会附上来源线索,方便回到原文。
Translator 面向 PDF 阅读场景,支持选区翻译、原文对照和历史回看。
Config 管理 Provider、模型默认值、字段模板、工作区、用量统计和备份恢复。

这几个部分分工很清楚,但体验上并不是割裂的。文库里整理过的内容可以继续进入问答和翻译,翻译和问答又都依附在文献本身上,整套系统会更像一张持续使用的研究桌。


适合怎样的使用场景

这套工具比较适合会长期读、长期记、长期回看材料的用户。写综述、做课题、读外文论文、整理研究笔记,或者只是想把自己的文献资料慢慢沉淀成一个能反复使用的本地资料库,都能比较自然地用上它。工作区的设计也服务于这个目标,不同主题、不同项目、不同阶段的文献可以分开整理,后面回头查看时会更清楚。

如果你的习惯是边读边记、边记边查、查到一半还会继续追问和翻译,那 Aindexer 的节奏会比较贴近真实使用过程。很多动作不需要来回切换工具,思路也更不容易断开。


当前状态

目前这个项目已经能稳定完成一条比较完整的链路:上传文献、生成索引、全文搜索、Markdown 修订、围绕文献问答、PDF 选区翻译、按工作区管理数据,以及备份和恢复本地资料。正式体验现在以桌面端为主,浏览器版也可以访问,不过更多承担兼容访问和基础回归的角色。

数据默认保留在本机,这一点对很多需要长期维护私人文献库的用户来说会更安全一些。Aindexer 现在已经不是一个只适合演示的原型,很多部分已经可以认真承担日常使用,只是整体还在继续打磨,很多细节还会一点点更新。


技术基础

从实现上看,Aindexer 采用的是一套比较直接、也比较适合本地工具的技术结构。

层次 技术
后端 FastAPI、Pydantic、SQLite、本地文件存储
前端 React 18、TypeScript、Vite、TanStack Router、TanStack Query、Zustand
桌面端 Tauri 2、Rust
文档解析 PyMuPDF、pdfplumber、python-docx
检索与能力支撑 SQLite FTS5、流式问答、流式翻译、取消控制、工作区隔离、备份恢复

页面上看到的体验比较偏纸张感,底层其实处理了不少和异步任务、状态一致性、来源追溯有关的问题。索引和翻译都支持中间状态展示,问答支持流式输出和取消,文献来源也能在回答里继续追踪。这些工程细节不会直接跳到台前,但它们决定了这套工具能不能真正被持续使用。


最后

Aindexer 还在继续打磨,但它的方向一直很稳定:把整理、阅读、翻译和追问放回同一张本地桌面上,让文献工作流更连贯,也让已经读过的内容更容易被重新找回和继续使用。如果你希望有一套属于自己的本地文献工作台,这个项目就是朝着这个方向一步步做出来的。