给学习应用接入 FSRS 复习排程的实践记录
最近在做一个对话式学习教练 Yozi 时,遇到一个很实际的问题:对话可以把知识点讲清楚,但学过的内容如果没有安排复习,第二天就容易忘。于是我把重点放在了复习排程上,记录一下这次接入 FSRS 的过程和结论。
先说 Yozi 的基本做法。它以对话加学习事实加复习排程为核心。学习过程中,每次答题的对错和暴露出的薄弱点,不会只停留在对话记录里,而是沉淀为一条条学习事实。这样做的好处是,复习时有明确的依据,而不是凭感觉重新翻一遍全部内容。
排程部分我用了 ts-fsrs 库。它的思路是按记忆曲线来安排复习:答对的事实可以适当拉长间隔,答错的事实则提前回来复习。每天打开应用时,系统会根据这些事实生成当天的复习队列,先复习最需要巩固的内容,再安排新的学习内容。
在实现上,技术栈是 Vue 3 加 uni-app 加 Pinia,桌面端用 Tauri 2。数据采用每用户本地数据库,也就是 local-first 的做法:学习事实先存在本地,复习队列也在本地生成。这样即使在没有稳定网络的情况下,复习安排也不会中断。
实际用下来,最大的变化是复习变得可预期。以前复习是想到哪里看到哪里,现在每天有一个明确的队列,完成之后就知道今天的巩固任务做完了。薄弱点也不会被新内容淹没,因为答错过的事实会更早回到队列里。
当然也有局限。刚开始使用时,学习事实还不多,排程的效果并不明显,需要积累一段时间的数据。排程参数也不能照搬默认值,需要结合自己的答题节奏观察几天,再做小幅调整。
总结一下这次实践:对话负责讲清楚,学习事实负责留住过程,FSRS 负责决定何时复习。三者分开后,学习应用的复习功能就不再是一句口号,而是一个每天可以执行、可检查的队列。对我来说,这比一次学更多内容更有价值。
- 点赞
- 收藏
- 关注作者
评论(0)