Eosphor
核心概念

技术形态

前端、存储、AI 调用、备份链路整体是怎么搭的

这一页给一个整体的技术地图,方便理解"数据存在哪""AI 是怎么接进来的""离线能做到什么程度"。这里只讲和使用体验直接相关的部分。

整体结构

通几当前是 Svelte 5 + Vite 前端,配一个 Bun 写的 BFF(Backend for Frontend),是一个可安装的 PWA

浏览器(IndexedDB,工作数据源)
   ↕ 读写
Svelte 5 + Vite 前端(可离线打开应用壳)
   ↕ /api(仅在线)
Bun BFF —— AI 调用 / 导入抓取 / OCR / 服务端快照

服务端快照备份链

数据存在哪

  • 浏览器 IndexedDB 是当前正在使用的工作数据源——你在通几里的每一次操作,先落在这里。
  • BFF 会把每个知识库的服务端快照写入备份链。
  • 前端只能看到存储位置的名字(id / label / 是否已备份),看不到服务端的绝对路径——存储路径只能在 BFF 白名单里配置,不能从浏览器提交任意路径。

也就是说:日常使用中数据的"第一现场"是你的浏览器,服务端快照是备份,不是主库。备份和恢复见备份与多端同步

FSRS:调度引擎

复习调度用的是 FSRS(Free Spaced Repetition Scheduler,ts-fsrs 实现),从 SuperMemo 系的 SM-2 算法一路演进而来。它算的是"这张卡你大概还能记得多久",据此安排下次复习时间。

AI 不碰调度

FSRS 评分只来自你自己点的四档;AI 导师、AI 拆书、AI 变式都不会直接改写这条曲线。这是产品红线,不是当前的技术限制。

画布:CRDT 本地优先

画板这一层单独用 Loro(CRDT,冲突自由复制数据类型)管理文档状态,和研几主体的存储分开:画布数据只进独立的画布存储,不混进内容库。这样画布的多端合并(比如两台设备分别改了同一块白板)可以做到"取并集、不覆盖"。

AI 是怎么接进来的

材料拆书、AI 制卡、AI 导师这些功能,模型调用统一走 Vyane——Eosphor 的执行内核。界面上能看到模型选择下拉框,标"省"的是成本更低的档位,适合日常解释和制卡;概念很硬、需要长推理时换强档。

离线边界(PWA)

生产包注册了 service worker,预缓存静态前端资源。缓存边界:

能离线不能离线
已加载过的应用界面壳AI 功能(导师 / 制卡 / 拆书)
浏览器本机 IndexedDB 里已有的数据材料导入(URL 抓取 / OCR)
服务端备份与恢复

/api 和非 GET 请求不经过 service worker 处理——这些能力天然要求在线。

接下来

On this page