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