SM-2 vs FSRS vs Leitner vs Anki:2026 年哪个间隔重复算法真的赢了
我在 USMLE Step 1 备考时花了 416 个小时打字做卡片,之后才意识到——给我安排"下一张复习哪张卡"的算法,其实根本不重要。算一下就明白:10,000 张卡 × 每张 2.5 分钟做卡,等于整整 17 天什么都不干只敲键盘。等我开始关心是哪个调度器在挑下一张卡的时候,输入端的战争我已经输了。
这段经历直接决定了我后来怎么读那些"FSRS 比 SM-2 省 30% 复习量"的 benchmark。数字是真的。但那是问题里简单那一半的 benchmark。
下面是 2026 年大多数人会真的碰到的四种算法——Leitner、SM-2、Anki 改版 SM-2、FSRS——的横向对比。我做过一个间隔重复产品,对这件事有立场。我会告诉你 SmartRecall 用的是哪个、为什么,但这篇的目的是把细节写够,让你能在事实层面跟我吵起来。
先说一句"间隔重复"在解什么问题
直接进算法之前,一段提醒。半个互联网关于 FSRS-vs-SM-2 的讨论里,发言的人其实不太分得清两者各自在解什么。
Cepeda 等 (2008) 跑了一项 26 周、1,354 名被试的研究,结果是:把复习摊开比把复习压在一起,单位学习时间的留存率提高大约 200%。这不是小效应,是认知心理学里被反复复现的最大效应之一。每个间隔重复算法解的都是同一个后续问题:**给定一张你看过 N 次的卡,最优的下一次复习是什么时候?**太早,你在浪费力气复习已经会的;太晚,你已经忘了,间隔效应直接归零。
下面四个算法,本质上是对这个问题的四种押注。
Leitner (1972) — 纸盒算法
Sebastian Leitner 在 So lernt man lernen (1972) 里提出来的。是你德国表哥 1985 年用鞋盒在跑的那个东西。
机制:5 个实体盒子。新卡放 Box 1。答对升一格,答错回 Box 1。Box 1 每天复习,Box 2 每两天,Box 3 每四天,往后大致按 2 倍递增。每张卡除了"在哪个盒子里"之外没有别的状态。
它做对的:这是"扩展间隔"最朴素的表达,而且能用。如果你只读这一段,结论是——任何间隔安排都比不安排好。Leitner 是地板,地板已经能拿到 200% 的留存提升。
它做错的:同一个盒子里所有卡被一视同仁。差点忘的卡和 0.4 秒就答出来的卡,升格幅度一样。看了 200 次的卡和看了 3 次的卡,只要恰好在同一个盒子,就被当成一样的。没有"卡片难度"的概念,没有"你这次有多确定"的概念,2 倍递增的节奏跟你个人的遗忘曲线无关。Quizlet 的 "Learn" 模式本质上就是 Leitner 套了个 UI。
200 张以下的卡组,Leitner 真的够用。再往上,"没有按卡定时"这件事就开始让你做不必要的复习。
SM-2 (Wozniak, 1987) — 别人都在抄的那个
Piotr Wozniak 的 SM-2——他硕士论文的一部分,1987 年随 SuperMemo 1.0 for DOS 上线——是过去近 40 年里默默支撑半个间隔重复世界的那个算法。
机制,用人话讲:
- 每张卡有一个易度因子 (EF),默认 2.5。
- 每张卡有一个间隔——离下一次复习还有几天。
- 每次复习后你给自己回忆质量打分,0-5 分(0 = 完全忘了,5 = 即刻完美回忆)。
- 评分 ≥ 3:下一个间隔 = 上一个间隔 × 当前 EF。EF 根据具体分数微调上下。
- 评分 < 3:卡片重置——间隔回到 1 天,EF 被惩罚。
就这些。SM-2 原始描述 比这一节还短。
它做对的:易度因子是按卡走的。你觉得简单的卡 EF 涨得快,间隔迅速拉长;你觉得难的卡 EF 跌向 1.3 的下限,复习更频繁。它把"不是所有卡都一样"这件显而易见的事编码成一个你能直接推理的数字。整个算法核心逻辑大概五行代码。我手写实现过几次,闭眼能写。
它做错的:公式是手工调出来的。Wozniak 1987 年根据自己的复习记录加几百个朋友的数据挑了那些常数。现代数据显示曲线不太对——SM-2 倾向于过度复习已经很熟的卡(成熟卡的间隔涨得太慢),而且对"勉强答对"和"秒答"之间的区别反应不足。它也根本没有"遗忘"本身的模型,就是闷头乘 EF。
0-5 评分在实操里也是个 UX 问题。大多数人没法可靠区分 2 分和 3 分——而这恰好是卡片要么继续展开、要么直接重置的悬崖。Anki 注意到了。
Anki 改版 SM-2 — 你们大多数人实际在跑的那个
2006-2008 年 Damien Elmes 写 Anki 时,从 SM-2 起步做了几处务实的改动。在 Anki 23.10 把 FSRS 作为可选调度器之前,"我用 Anki" 的复习里 90% 跑的是这个算法,2026 年新用户的默认仍然是它。
重要的几处改动:
- 四个按钮取代六个分。 Anki 把 Wozniak 的 0-5 折成 "Again / Hard / Good / Easy"。Again 是失败(间隔重置,EF 惩罚)。Hard / Good / Easy 大致对应 SM-2 的 3、4、5。这是 UX 上的胜利——大多数人无法老实在 6 档里给自己评分,但能在 4 个按钮里挑一个"感觉对的"。
- 失败处理可调。 SM-2 是二元的:失败或不失败。Anki 让你配置失败如何惩罚 EF(默认 −0.20)、失败的卡要爬几个"再学习"步骤(默认 10 分钟然后重新毕业)、以及"困难卡"阈值(默认连续失败 8 次)。
- 新卡毕业前的学习步骤。 新卡按 1m / 10m / 1d 三步走完才进入 SM-2 正式调度。SuperMemo 没有这个,是 Anki 发明的,也基本上被证明是对的。
- EF 下限和"易度地狱"。 Anki 把 EF 卡在 1.3 以上,意味着你一直答错的卡最终会停在一个固定的、令人发指的高频复习节奏,而不是一路衰减成天天见。这同时是经典抱怨 "leeches in ease hell" 的来源——长期卡组里堆着一批 EF 卡在 1.3 附近、你其实永远学不会的卡。
它做对的:这是世界上经过最多实战检验的间隔重复调度器。几千万用户、几十亿次复习日志、几十年的边缘 case 都被磨过了。无聊得很好。
它做错的:跟 SM-2 错的一样。1987 年手调的常数、没有真正的遗忘模型、过度复习成熟卡。当你跑了 18 个月、卡组到 3 万张的时候,你能感觉到那个拖累。
FSRS (Open Spaced Repetition, 2022→) — 真的有遗忘模型那个
FSRS——Free Spaced Repetition Scheduler,最早作者是叶峻峣(Jarrett Ye)——是第一个被广泛部署、建立在显式遗忘模型而不是手调倍数上的间隔重复算法。Anki 23.10(2023 年 10 月)开始作为可选项上线,到 25.x 已经是新用户的默认。源码和论文在 github.com/open-spaced-repetition/fsrs4anki。
核心模型叫 DSR——Difficulty / Stability / Retrievability,如果你想对 FSRS 有立场,值得理解这三个量:
- 稳定性 S — 你这张卡的可提取概率衰减到 90% 还需要多少天。S = 30 意思是:30 天后你有 90% 概率仍然记得。
- 可提取性 R — 此刻你能回忆起这张卡的概率,建模为
R = exp(-t/S),t是距离上次复习的天数。这是一条真实的指数遗忘曲线,不是凭空设定。 - 难度 D — 每张卡一个常数(0-10),调节稳定性在每次复习后的增长速度。
每次复习后,FSRS 用 17-21 个训练得到的权重(FSRS-4.5、FSRS-5、FSRS-6 自 2023 年起都先后上线)更新 S 和 D。权重是用你自己的复习日志做梯度下降拟合出来的。这是关键的部分:FSRS 是针对你个人遗忘曲线做了个性化,不是 Wozniak 的曲线。
实证依据:Domenech-Iglesias 等 (2024) 在 20,000+ Anki 用户的复习日志上跑了基准测试,比较 FSRS 和 SM-2 在同一留存目标下的表现。FSRS 在达到相同 90% 留存率时,复习量减少约 30%。这个数字是真的,可复现,大概是 Cepeda 的间隔效应 meta-analysis 之后间隔重复领域最重要的定量结果。
它做对的:有遗忘模型,模型用你的数据拟合,benchmark 是诚实的。如果你已经有几千张卡、几万次复习日志的成熟卡组,切到 FSRS 每周能给你省下能量化的时间。
它做错的(或者说部署起来更难的):你需要有一定量的复习日志,个性化才能起效。普遍说法是 ~1,000 次复习之后,针对你个人拟合的权重才稳稳超过默认权重;几千次以后,差距才肉眼可见。新用户拿到的是默认权重——比 SM-2 的 1987 年常数好,但好不到 30%。实现也确实更难:SM-2 五行能写完,FSRS 要训练权重 + DSR 更新规则 + 想做个性化还得有优化器流水线。
横向表格
| 算法 | 年份 | 每张卡的状态 | 调度输入 | 留存目标 | 主要弱点 |
|---|---|---|---|---|---|
| Leitner | 1972 | 盒子编号 (1-5) | 对 / 错 | 隐式(~85%) | 没有按卡定时;同盒所有卡一视同仁 |
| SM-2 | 1987 | EF + 间隔 | 0-5 评分 | 隐式(~90%) | 手调常数;过度复习成熟卡 |
| Anki SM-2 | 2006-2023 | EF + 间隔 + 失败次数 | Again/Hard/Good/Easy | 隐式(~90%) | 继承 SM-2 缺陷;长期卡组的"易度地狱" |
| FSRS | 2022 → 持续迭代 | Difficulty + Stability + Retrievability | Again/Hard/Good/Easy | 显式可配置(默认 90%) | 需要复习日志才能个性化;实现更复杂 |
| SuperMemo 18+ | 2019 → | 完整 DSR + 工作量模型 | 0-5 评分 | 可配置 | 闭源;无法迁移到其他工具 |
那到底哪个赢
老实说:
单兵作战、卡组 1,000 张以下——一门外语词汇、一章教材、一个短期资格证——SM-2(或 Anki 的 SM-2)够用,FSRS 那个优势主要是噪声。30% 那个 benchmark 是在重度用户、成熟卡组上平均出来的;小卡组上一天省不了多少。
重度用户、5,000+ 张卡、跨年时间线——USMLE、MCAT、法考、考研、严肃的语言项目、任何有两万张医学卡的人——FSRS 赢,赢的是真的。切。
Leitner 在实体卡片或小学课堂里赢。"五个盒子,对就升错就降"的极简就是它的整个教学卖点,按卡优化在那个场景反而是负担。
SmartRecall 为什么仍然选 SM-2
我做了 SmartRecall,选了 SM-2。对 FSRS 有强烈意见的人偶尔会来问我为什么,老实答案就是这篇文章开头那段。
对我们的用户——一个备考重磅考试、还没建好卡组的人——瓶颈不是 FSRS 在他第一千次复习之后开始释放的那 30% 复习节省。瓶颈是让卡片先存在出来。我们把优化预算花在输入端(那条把一章 PDF 在 12 分钟里变成 800 张合格卡片的 AI 流水线),因为 416 小时那堵墙就在那一侧。卡片一旦存在,SM-2 的调度足够好,好到 FSRS 那点边际复习时间在我们已经省下的输入时间面前基本看不见。等 18 个月后我们的平均用户有了成熟复习日志,再回头评 FSRS 不迟;今天,算法差一点、卡片好得多胜过算法好一点、根本没卡。
这是我们的押注。可能是错的。如果你的备考时间线是两年、卡组终将 2 万张以上,请直接在 Anki 里跑 FSRS,别让我劝退你。SmartRecall 服务的是那个 8 周冲刺——输入问题比调度问题大得多的窗口。
今天该做什么
如果你完全没在用间隔重复:挑最容易上手的(Anki 默认设置,或者你不想手敲卡就用 SmartRecall),今天就开始。你纠结两小时的算法选择,在你明天没卡可复习的情况下毫无意义。
如果你已经在 Anki 默认调度上跑了一年、卡组超过 5,000 张:打开 Tools → Deck Options → FSRS,启用,点 "Optimize" 用你的复习历史拟合权重。十分钟搞定,往后每月大概给你省两小时。官方指南 不长。
如果你正盯着一本 700 页的教材、距离考试还有 8 周、做卡片的数学算不过来:那就是我做 SmartRecall 想解决的那个问题。20 个免费 credits 够你在一章上测一下——让它生成卡片,看一眼,判断那是不是"如果你有时间会自己写出来的卡"。
— Alex
常见问题
FSRS 比 SM-2 更好吗?
对于成熟卡组和长周期来说,是的——同样的保留率下,FSRS 通常能少安排约 20–30% 的复习,因为它是用你真实的复习历史拟合记忆模型,而不是套 SM-2 的固定公式。但这个优势要等你累积了几千次复习记录之后才显现。卡组很小(1,000 张以下)时,实际省下的时间每天就几秒钟,SM-2 完全够用。
SM-2 和 FSRS 到底有什么区别?
SM-2(1987)是固定公式:根据你对回忆质量的评分,微调每张卡的"难度因子",再用它乘出下次间隔。FSRS(2022 起)是可训练模型,每张卡有三个变量——难度、稳定性、可提取性——其权重是针对你自己的复习日志优化出来的。SM-2 对所有人用同一套规则;FSRS 把调度个性化到你的遗忘曲线。
我该不该在 Anki 里从 SM-2 换成 FSRS?
如果你已经用 Anki 默认调度跑了一年、卡组超过 5,000 张:该换。打开 Tools → Deck Options → FSRS,启用,点 "Optimize" 用你的历史拟合权重。十分钟搞定,往后每月通常能省下两小时左右的复习时间。如果卡组很小或刚建,不急。
Leitner 系统放在哪个位置?
Leitner 是盒子法——卡片在五个实体盒子之间按固定节奏移动复习。它不像 SM-2 或 FSRS 那样做逐卡优化,但简单就是它的卖点:特别适合纸质卡片和课堂场景,"答对往上挪、答错往下挪"就是全部教学逻辑。软件卡组上,SM-2 或 FSRS 都胜过它。
SmartRecall 用的是 SM-2 还是 FSRS?
SmartRecall 用 SM-2。对我们的核心用户——还没建好卡组、要冲一场硬考的人——瓶颈不是 FSRS 在成熟卡组上省下的复习时间,而是"卡片根本还不存在"。我们把优化预算花在 AI 制卡管线上(一章 PDF 约 12 分钟变 800 张卡),而 SM-2 调度这些卡已经够好,FSRS 那点边际节省,跟我们在输入端省下的时间相比小到看不见。

