指南

FSRS 算法通俗讲解:跳过数学公式看懂原理

FSRS 用通俗语言讲解:稳定性和难度是什么意思、一次复习会如何改变它们,以及为什么它比 SM-2 排程更准确。

一张闪卡位于表示记忆稳定性和卡片难度的两个仪表之间,日历上标出下次复习时间。

FSRS(Free Spaced Repetition Scheduler,自由间隔重复排程器)是一个开源算法,它通过为每张卡片建模两件事,来决定何时再次向你展示这张闪卡:这段记忆大概能维持多久(稳定性),以及这张卡片对你来说有多难(难度)。它把这个模型拟合到你自己的复习记录上,而不是对所有人套用同一条公式。

先说结论

  • FSRS 为每张卡片分别追踪稳定性和难度,而不是用一个合并的数字。
  • 稳定性估计的是回忆概率降到你设定的目标之前,你还能撑多久不复习。
  • 难度估计的是这张卡片对你来说有多难,与复习时机无关。
  • 每一次复习,都会根据你的评分以及这次复习提前或延迟了多久,同时更新这两个数字。
  • 你设定一个期望保持率目标,FSRS 会把这个目标和这两个数字结合起来,算出下一次复习的间隔。

FSRS到底是什么

FSRS 是一种排程算法,不是一款你需要安装的软件。它内置在闪卡应用里,为每张卡片回答同一个问题:根据应用掌握的、关于你复习这张卡片的全部信息,它应该什么时候回来?它作为一个开源项目维护在 GitHub 上的 open-spaced-repetition,已经被多款闪卡工具采用,因为它排程的精度高于旧公式,而且不需要你手动配置任何参数。

拆开名字来看很简单:Free(自由),因为它开源且免费使用;Spaced Repetition(间隔重复),因为它建立在间隔重复原理详解所描述的间隔效应之上;Scheduler(排程器),因为排程——决定何时复习,而不是复习什么——是它唯一的工作。它不会替你挑选要学的卡片,也不会替你写卡片;它只决定两次复习之间的间隔。

驱动一切的两个数字:稳定性和难度

老一代算法为每张卡片只追踪一个数字,通常是一个随你上次答题结果而增大或缩小的“难易系数”。FSRS 把这个单一数字拆成两个,因为一张卡片可能天生难,却一旦学会就能牢牢记住;也可能天生容易,却如果复习次数不够就很快忘记。

稳定性是指这张卡片的回忆概率预计降到你设定的期望保持率之前,还需要多少天。稳定性为 40,意味着:如果你不再复习这张卡片,大约 40 天后,你仍有接近目标概率的机会正确回忆出它。稳定性通常会在每次成功回忆后增长,而且你之前正确复习的次数越多,它增长得就越快。

难度是一个独立的分数,衡量某张具体卡片对你来说有多难,用它自己的尺度衡量,与你上次看到它是多久之前无关。两张卡片今天可能有相同的稳定性,却有完全不同的难度:一张简单但是新学的,未来复习时稳定性会快速增长;另一张困难且学了很久,即便答对,稳定性增长得也更慢。

把这两者分开,正是 FSRS 能够区分“我答对了,但这题很难”和“我答对了,而且很轻松”这两种情况的原因——单一的难易系数无法很好地体现这种区别。

一次复习如何更新模型

每次你复习一张卡片,FSRS 都会用三项输入来更新这两个数字:你给出的评分(再看一次、困难、良好或简单)、之前的稳定性和难度,以及距上次复习实际经过的时间与算法原本预测的时间之间的差距。

  • 按时或提前完成的正确复习会提升稳定性,如果原本的间隔已经很长,提升幅度会更大,因为经过长时间间隔后仍能成功回忆,比经过短时间间隔后成功回忆,是更有力的“记忆牢固”的证据。
  • 评为简单的正确复习会进一步提升稳定性,还可能略微降低难度,因为一次轻松的正确回答说明这张卡片以后可以少一些谨慎。
  • 评为困难的复习仍算作通过,但提升稳定性的幅度更小,还可能提高难度,因为它意味着这张卡片比排程原本假设的更脆弱。
  • **失败的复习(再看一次)**会把稳定性重置到接近初始值的较低水平,并提高难度,因为一次遗忘是模型能得到的最强信号,说明之前的排程给得太宽松了。

这就是为什么今天你给出相同评分的两张卡片,离开复习环节时下一次的间隔却可能大不相同:模型反应的是这个评分背后的整段历史,而不只是这次评分本身。

为什么FSRS需要你的复习记录才能发挥作用

一张全新的卡片没有任何历史,所以 FSRS 会先用默认的稳定性和难度估计值开始,再随着你复习它逐步修正。这有时被称为“冷启动问题”:只复习过一两次的卡片,其早期预测必然比已经复习过二十次的卡片粗糙。

实际效果是,你使用得越久、积累的复习次数越多,FSRS 就越准确。它调优的对象不是某个假想中的“平均学习者”,而是逐张卡片地贴合你自己的答对答错模式。这也是为什么从其他工具导入多年的复习记录,能立刻让排程变得更精准——算法从第一天起就有更多信号可用,而不必对每张卡片都从零开始。

FSRS 与 SM-2 的直观对比

SM-2 FSRS
每张卡片追踪什么 一个“难易系数” 分别追踪稳定性和难度
如何确定下一次间隔 用上一次的间隔乘以难易系数 用记忆模型预测回忆概率,反推出符合你期望保持率的间隔
对“困难但答对”的反应 和其他任何正确答案差不多 稳定性提升幅度小于“简单且答对”
是否根据你的复习模式个性化 大致按卡片调整 按卡片调整,模型本身还可以根据你的完整复习记录进行优化
配置项 初始难易系数和间隔修正参数 期望保持率(参见如何选择期望保持率目标)

两种方式都谈不上“错”。SM-2 简单、可预测,已经为闪卡排程服务了数十年。FSRS 用这份简单性换来了更贴合的效果:让算法的假设,更接近你实际会忘记什么、什么时候忘记。

期望保持率到底控制什么

FSRS 并不是孤立地决定一个间隔——它反推的是能让你的回忆概率维持在你选定目标(称为期望保持率)的那个间隔。把它设为百分之九十,算法排程的复习就会让你在那一刻被测试时,大约十张到期卡片里能答对九张。把它设为百分之八十,复习间隔会拉得更开,用一些遗忘换取更少的总复习次数。

不存在一个放之四海而皆准的正确数值。目标定得更高,意味着更多复习、更少遗忘;目标定得更低,意味着更少复习,途中也会遗忘得更多。合适的数值取决于对你来说,忘记一张卡片的代价有多大——考试内容值得设定更高的目标,而只是想保持热度、为将来某次旅行准备的语言牌组,则不需要那么高。

StudyDaily 如何把这一切展示给你,而不是藏起来

StudyDaily 为每张卡片运行 FSRS-6,也就是这个算法目前的版本。它不会在幕后悄悄算出下一次间隔,而是让每个评分按钮——再看一次、困难、良好、简单——在你点按之前,就先显示出它会产生的间隔。你在做出评分之前就能看到这次评分的后果,这让稳定性和难度模型变得可见,而不只是一种理论。

复习、统计和排程全部在设备本地运行,所以你每天的学习不依赖任何网络连接。如果你正从另一款基于 FSRS 的工具迁移过来,StudyDaily 的导入器会从兼容的导出文件中读取已有的稳定性和难度数值,而不是让每张卡片都从冷启动重来——完整了解一次迁移能保留什么、不能保留什么,请参阅迁移实际能保留哪些内容。

接下来应该怎么做?

打开一副混合了简单卡片和困难卡片的牌组,观察你给出不同评分时,间隔预览如何随之变化。这个五分钟的测试,比任何公式说明都更能让你了解 FSRS 的实际表现。

  • 复习一张你很熟悉的卡片,记下评为简单时给出的间隔。
  • 复习一张你觉得难的卡片,对比评为困难时给出的间隔。
  • 检查你的期望保持率设置,如果复习感觉太频繁或太稀疏,就调整它。
  • 保持持续复习——模型会随着更多历史记录变得更精准,而不是靠一次完美的初始猜测。

常见问题

FSRS代表什么?

Free Spaced Repetition Scheduler,即自由间隔重复排程器。它是一个开源的排程算法,不是一款独立的应用——各种闪卡工具会实现它,用来决定每张卡片何时到期。

FSRS 比 SM-2 更好吗?

FSRS 通常排程得更精确,因为它把稳定性和难度分开处理,而不是用单一的难易系数,而且它能把预测结果拟合到你自己的复习记录上。SM-2 更简单,也有更长的应用历史,但它只根据你上一次的答案作出反应,而不是直接为记忆本身建模。

FSRS 中的“稳定性”是什么?

稳定性是指一张卡片的回忆概率预计降到你的期望保持率目标之前,还需要多少天。稳定性高的卡片可以隔很久才复习一次,并且仍然很可能被正确回忆起来。

FSRS 需要大量复习记录才能发挥作用吗?

它从第一次复习起就能工作,先用默认估计值,再随着某张卡片复习次数的积累变得更准确。从另一款兼容 FSRS 的工具导入已有的复习记录,能让模型获得一个领先的起点,而不必让每张卡片都从零开始。

本指南使用的来源

这里描述的算法机制来自开源的 FSRS 文档和 wiki,由 open-spaced-repetition 项目维护。StudyDaily 相关的实现说明,来自产品自身的 FSRS-6 排程器和导入器,并针对本指南 2026 年 6 月 15 日的发布日期,对照上述来源进行了核对。

用自己的卡片试试这个方法

在浏览器中打开 StudyDaily。本地学习无需账号。

打开 StudyDaily

Julien 开发 StudyDaily,并依据第一手资料和已发布的产品核查每篇指南。

阅读编辑方法

所有指南