# FSRS 是什么？间隔重复调度器的工作原理（2026）

*2026-08-25*

你查看一张闪卡的答案，想了一会儿才记起来，然后按下 Good。这张卡会暂时消失。另一张卡被评为 Again，很快又会出现。FSRS 并不知道一个答案讲的是解剖学，另一个讲的是西班牙语。它看到的只有复习时间、卡片原有的记忆状态，以及你选择的评分。

**FSRS 全称为自由间隔重复调度器（Free Spaced Repetition Scheduler），是一种开源调度算法。它会估算你回忆起每张卡片的概率，并按照设定的记忆保持率目标选择下次复习日期。** 它会参考复习历史、经过的时间，以及 Again、Hard、Good 和 Easy 四档评分。闪卡应用仍然负责存储卡片、显示复习界面、执行学习步骤和提供其他产品功能。

这就是对 **FSRS 是什么** 的简短回答。要理解 FSRS 如何工作，需要先了解三个量——难度（Difficulty）、稳定性（Stability）和可提取性（Retrievability）——以及一个重要细节：这三个量并不都是固定存储的分数。

**事实核查日期：** 2026 年 8 月 25 日。

![温室管理员检查三株植物中水位各不相同的储水器，并为刚达到阈值的那一个补水](/blog/what-is-fsrs.png)

## FSRS 是调度器，不是闪卡应用

Anki 可以使用 FSRS，Flashcards Open Source App 也使用 FSRS，其他产品和程序库同样可以实现它。[open-spaced-repetition 项目](https://github.com/open-spaced-repetition)公开发布了这一模型、相关实现和配套工具。

产品和调度器各有分工：

| 层级 | 负责什么 |
| --- | --- |
| 闪卡应用 | 存储卡片、显示复习界面、同步数据，并记录你选择的评分 |
| FSRS 调度器 | 更新卡片的记忆状态，并计算合适的下次复习间隔 |
| FSRS 优化器 | 在宿主应用提供优化功能时，根据复习历史拟合模型参数 |
| 你 | 决定卡片要测试什么、给出答案，并如实评价这次作答 |

分清这两者，就不容易误解 **Anki FSRS** 之类的说法。Anki 是应用，FSRS 是在其中启用的调度器。比较 [Anki、SuperMemo 和 FSRS](/zh/blog/anki-vs-supermemo-vs-fsrs/) 时也要注意同样的区别：Anki 和 SuperMemo 是产品，而 FSRS 可以集成到产品中。

优化器和日常使用的调度器也不是一回事。调度器一开始可以使用默认参数。之后，优化器可以分析兼容的复习历史，找出更符合这些复习记录的参数。它不会重写你的卡片，也不会替你判断学习材料有多重要。

## FSRS 的思维模型：两个持续保留的状态和一个实时估算值

官方的 [FSRS 算法文档](https://github.com/open-spaced-repetition/awesome-fsrs/wiki/The-Algorithm)介绍了难度—稳定性—可提取性模型，通常简称 DSR。在 FSRS-6 中，难度和稳定性共同构成记忆状态，会从一次复习保留到下一次。可提取性则是针对某个具体时刻，根据稳定性和经过的时间计算出来的。

这个区别很重要。即使没有人修改卡片，可提取性也会随着时间流逝而下降。调度器可以在需要时即时计算，不必把它当作第三个固定输入值。

### 难度：这段记忆有多难进一步巩固

**难度（Difficulty）**估算提升一张卡片的记忆稳定性有多难。按照这个模型，在其他条件相同时，难度较高的卡片经过一次成功复习后，稳定性的增幅往往会小于较简单的卡片。

这不是对主题本身难度的客观评分。FSRS 没有读过你的解剖学定义，也没有检查你的西班牙语语法。难度只是根据这张卡片的复习模式和评分得出的内部估算值。

### 稳定性：记忆消退得有多慢

**稳定性（Stability）**描述记忆消退得有多慢。更准确地说，它是模型预测的回忆概率降至 90% 时所对应的时间间隔。

即使你选择的期望记忆保持率不是 90%，这个 90% 仍然属于稳定性的定义。稳定性是记忆模型内部的尺度，并不会自动等同于卡片的下次复习间隔。成功复习后，稳定性通常会提高，因此可以把下次复习安排得更晚，等更久后，预测回忆概率才会降到同一水平。

### 可提取性：此刻能够回忆起来的概率

**可提取性（Retrievability）**是模型预测你此刻能够回忆起这张卡片的概率。刚成功复习后，它会很高；随着时间推移，它会沿着模型的遗忘曲线逐渐下降。

可提取性是预测值，不是从大脑中读取的传感器数据。FSRS 无法确定你看到卡片时能否想起答案，只能根据卡片状态、经过的时间、参数和复习历史来估算概率。

把这三个量放在一起，就得到一套清晰的思维模型：

- 难度影响稳定性改变的容易程度。
- 稳定性决定可提取性下降的速度。
- 可提取性表示卡片此刻位于遗忘曲线上的位置。

## 一次真实复习中，FSRS 如何工作

对于已经进入长期复习阶段的卡片，调度循环大致如下：

1. FSRS 根据卡片的稳定性和距离上次复习经过的时间，计算当前的可提取性。
2. 你查看答案，然后选择 Again、Hard、Good 或 Easy。
3. FSRS 根据这次评分和卡片之前的状态，更新难度和稳定性。
4. 它计算预测可提取性将在何时接近你设定的期望记忆保持率。
5. 宿主应用再套用最大间隔、模糊处理（fuzz）等相关规则，然后保存下次到期时间。

[公开的 FSRS 公式](https://github.com/open-spaced-repetition/awesome-fsrs/wiki/The-Algorithm#fsrs-6)定义了这些更新方式。学习时不需要自己计算。真正需要理解的是：下次复习间隔来自不断变化的单卡估算，而不是“一天、三天、一周”这样的固定阶梯。

### 一张卡片，几次复习

假设有一张卡片问海马体的作用。具体间隔取决于应用、设置、复习时间、参数和评分，因此下面刻意只做定性描述。

| 复习时刻 | 你的评分 | 接下来会发生什么 |
| --- | --- | --- |
| 你看到一张新卡片，并正常回忆出答案 | Good | 在卡片进入长期复习前，应用可能会继续执行配置好的学习步骤 |
| 卡片后来进入长期复习，而你费了很大力气才想起来 | Hard | FSRS 将其视为一次困难但成功的回忆，并在该状态下的几个长期成功选项中给出最短间隔 |
| 在之后的一次复习中，你没能答出答案 | Again | FSRS 按照失败结果更新记忆状态；应用还可能让卡片进入重新学习步骤 |
| 卡片再次出现时，你正常回忆出答案 | Good | FSRS 根据这次新的成功复习更新难度和稳定性，再按照记忆保持率目标计算下一段间隔 |

这段顺序很重要。Hard 记录的是成功回忆，Again 记录的是失败。按下 Again 也不会抹掉之前的复习历史，把卡片重置成一张全新的空白卡。

## Again、Hard、Good 和 Easy 向 FSRS 传达什么

四个按钮描述的是刚才实际发生的回忆情况：

- **Again：** 你没能回忆出要求的答案，或者答错了。
- **Hard：** 你答对了，但回忆时明显很吃力，或者有所犹豫。
- **Good：** 你答对了，所花的力气处于正常水平。
- **Easy：** 你答对了，几乎没费什么力气。

官方的 [Anki FSRS 文档](https://docs.ankiweb.net/deck-options.html#fsrs)明确划出了关键界线：Again 表示失败，Hard 则表示成功回忆。忘记答案后却按 Hard，会向调度器发出错误信号，还可能让后续的复习间隔变得过长。

请根据自己的回忆情况选择评分，不要看着按钮上方显示的间隔来选。如果 Good 让卡片离开的时间比你预想得更长，说明你该检查设置。为了得到想要的日期而换一个评分，只会改变复习历史，并不能修正设置。

只答对一部分，或者卡片本身含糊不清时，怎么评分并不像四个标签看起来那么简单。[Again 和 Hard 的详细指南](/zh/blog/again-vs-hard-fsrs-flashcards/)专门介绍了这些情况。有一条可靠的简短规则：先看成败，再看费力程度。作答失败就选 Again；只有成功后，才在 Hard、Good 和 Easy 中选择。

FSRS 只接收你提交的评分，不会客观评判你口头说出或输入的答案。

## 期望记忆保持率把模型换算成复习日期

**期望记忆保持率（desired retention）**是你希望卡片到期时达到的回忆概率目标。如果设为 `0.90`，调度器会尽量让卡片在模型预测你有 90% 概率能够成功回忆时再次出现。

这是模型的目标，并不是承诺你总能答对每十张卡中的九张。预测可能不够准确，评分习惯也可能改变，真实的学习条件更是复杂多变。

这也能帮助我们理解稳定性。稳定性的定义基于 90% 的可提取性，因此当期望记忆保持率设为 `0.90` 时，进入长期复习的卡片所计算出的间隔会与稳定性密切相关。取整、模糊处理和最大间隔限制仍然可能改变你最终看到的日期。仍在学习阶段的卡片则遵循应用设置的短期步骤流程。

工作量上的取舍很直接：

- 提高期望记忆保持率，会让卡片更早回来，复习量随之增加。
- 降低期望记忆保持率，可以拉长间隔，但遗忘也会增多。

[Anki 手册的期望记忆保持率章节](https://docs.ankiweb.net/deck-options.html#desired-retention)提醒说，当目标接近 100% 时，工作量会迅速增加。没有一个数值能适合所有牌组和学习目标。

期望记忆保持率不是优化器从历史中学出来的，而是由你选择，用来表达学习目标。参数描述记忆模型；记忆保持率目标则告诉调度器，你希望回忆概率降到什么水平时安排复习。

关于实际设置和工作量之间的取舍，请阅读单独的 [FSRS 设置指南](/zh/blog/fsrs-settings/)。

## 优化器是可选的，期望记忆保持率仍由你决定

FSRS 公式使用一组通常称为**参数（parameters）**的权重，来更新难度和稳定性，并对遗忘过程建模。具体实现可以使用默认参数；如果宿主应用带有优化器，也可以根据兼容的复习历史来拟合参数。

目前的 Anki 中，**Optimize** 操作会分析复习历史，并生成与这些历史相匹配的参数。[Anki 参数文档](https://docs.ankiweb.net/deck-options.html#fsrs-parameters)建议用户不要手动修改这些值，也不要复制别人的参数。其他 FSRS 应用可能只使用默认值，并不提供优化功能。

这里的“已优化”含义很窄：按照优化器的评价标准，这些参数与所提供的复习数据更加吻合。它并不表示卡片内容准确、学习计划合理，也不保证未来的每次预测都会正确。

默认参数仍然很重要。即使没有进行个性化拟合，调度器也可以正常工作，并继续为每张卡片维护各自的记忆状态。

## 学习步骤处理的是另一种时间尺度

进入长期间隔前，新卡片通常会在几分钟后再次出现。已经进入长期复习的卡片如果作答失败，也可能很快返回。闪卡应用把这些短暂延迟设置为**学习步骤（learning steps）**和**重新学习步骤（relearning steps）**。

- 学习步骤是在引入新卡片时设置的短暂延迟。
- 重新学习步骤是已经进入长期复习的卡片被评为 Again 后采用的短暂延迟。
- 卡片从学习阶段毕业后，下一段长期间隔由 FSRS 记忆模型决定。

所以，修改一个十分钟的学习步骤，与修改期望记忆保持率并不是一回事。学习步骤直接控制卡片何时在短期内返回；期望记忆保持率则影响基于模型计算的长期间隔。具体实现不同，调度器也可能在学习阶段更新记忆状态。因此，学习步骤只是工作流程上的分界，并不代表另一套独立的记忆理论。

Anki 当前的 [FSRS 学习步骤指南](https://docs.ankiweb.net/deck-options.html#learning-steps)建议把步骤设在同一天内可以完成的范围。如果把步骤字段留空，Anki 还提供了一个实验性选项，让 FSRS 负责短期调度。其他应用可能采用不同的设计，所以在照搬 Anki 设置前，先确认自己的应用支持哪些功能。

## FSRS 无法替你决定什么

FSRS 可以把糟糕的输入安排得非常精确，但再先进的间隔也不会让卡片本身变得更好。

调度器无法：

- 理解卡片表达的含义
- 核实保存的答案是否正确、是否仍然有效
- 决定只答对一部分是否应该算作正确
- 修复含糊的题面或信息过多的背面
- 判断某条知识对你的目标是否重要
- 独自把源源不断且难以承受的新卡片变得可管理
- 保证你会在卡片到期时完成复习

假设一张卡片问：“解释免疫系统。”反复按 Again 或许会带来更多复习，但任何调度器都无法把这么宽泛的题目变成一项清晰的回忆任务。这个问题要在卡片编辑器里解决。[制作更好闪卡的指南](/zh/blog/how-to-make-better-flashcards/)介绍了这一层的改进方法。

分清这条边界，也更容易诊断学习问题。长期复习时间异常，通常应该检查设置、评分历史或具体实现。如果你总在为卡片背面的内容和自己的回答较劲，问题往往出在卡片质量上。队列过于庞大，原因也可能是新增卡片太多，而不是 FSRS 算法本身。

## Flashcards 如何实现 FSRS

> **披露：** 我是 Kirill Markin，也是 [Flashcards Open Source App](/zh/features/) 的开发者。本节描述的是已经发布的产品行为，并不是说每位学习者都应该离开自己正在使用的其他应用。

Flashcards 目前实现的是 **FSRS-6**，并与官方 `ts-fsrs` 5.2.3 的调度流程保持一致。它采用标准的 Again、Hard、Good 和 Easy 评分。后端、iOS 和 Android 调度器保持相同行为，Web 端的复习流程则复用后端调度器。

当前默认设置为：期望记忆保持率 `0.90`，学习步骤 1 分钟和 10 分钟，重新学习步骤 10 分钟，最大间隔 36,500 天，并启用模糊处理。工作区所有者可以调整这些设置。修改只会影响未来的复习，不会悄悄重算已有卡片的到期时间。

Flashcards v1 固定采用官方的 FSRS-6 默认权重。用户无法配置这些权重，产品目前也不会根据每位用户的复习历史拟合个性化 FSRS 参数。与 Anki 的优化器比较时，这项限制很重要。

公开的 [Flashcards FSRS 调度规范](https://github.com/kirill-markin/flashcards-open-source-app/blob/main/docs/fsrs-scheduling-logic.md)记录了当前的状态模型、默认设置、设置边界和跨平台一致性规则。更完整的[功能页面](/zh/features/)则说明了调度器如何融入产品，而不是把 FSRS 本身说成一款应用。

## FSRS 常见问题

### FSRS 是什么的缩写？

FSRS 是 **Free Spaced Repetition Scheduler**（自由间隔重复调度器）的缩写。它是一种开放式调度器，用来计算闪卡应该何时再次出现。

### FSRS 只能用于 Anki 吗？

不是。Anki 包含一种 FSRS 实现，但 FSRS 是一种调度器，其他应用和程序库也可以实现它。编辑、同步、导入和复习界面等产品功能由宿主应用提供。

### FSRS 知道我的答案是否正确吗？

不知道。FSRS 接收的是应用记录的评分。你仍然需要将自己的答案与卡片对照，再判断这次作答应该评为 Again、Hard、Good 还是 Easy。

### 难度、稳定性和可提取性都会存储在卡片上吗？

不一定。在 FSRS-6 中，难度和稳定性构成持续保留的记忆状态。可提取性则根据稳定性和经过的时间，针对特定时刻计算得出。应用可能还会为自己的工作流程存储其他调度字段。

### 90% 的期望记忆保持率意味着我会记住全部内容的 90% 吗？

不是。它告诉调度器，在卡片到期时以 90% 的预测回忆概率为目标。这并不保证每张卡片、每次学习、每场考试或现实场景都能达到 90%。

### 我需要优化后的 FSRS 参数吗？

刚开始时不需要。FSRS 可以使用默认参数。如果你的应用支持优化，而且你已经积累了有用的复习历史，拟合后的参数可以更好地反映这些记录。不要复制其他人的参数。

### FSRS 比 SM-2 更好吗？

两者使用不同的调度模型。FSRS 引入了明确的记忆保持率目标，并更新每张卡片的记忆模型，而不是沿用同一套由间隔和难度系数组成的结构。专门的 [FSRS 与 SM-2 对比](/zh/blog/fsrs-vs-sm-2/)介绍了相关证据和取舍，同时避免把算法与应用功能混为一谈。

### 我应该先了解哪项 FSRS 设置？

先从期望记忆保持率开始，因为它直接体现回忆率和工作量之间的取舍。然后检查学习步骤和重新学习步骤。除非你的应用提供受支持的优化流程，否则不要改动模型参数。

## 记住这套分工

应用显示卡片，你判断自己的回忆情况。FSRS 更新难度和稳定性，计算当前时刻的可提取性，再按照期望记忆保持率安排下一次复习。学习步骤负责短期内的再次出现，可选的优化器则可以根据复习历史拟合模型参数。

这套分工也说明了问题应该在哪里解决。工作量或长期复习时间感觉不对时，调整设置；题面或答案有问题时，编辑卡片；每次复习时，则要如实评价自己的作答。

FSRS 可以算出一个基于模型的日期。真正有用的信号，仍然始于一张清晰的卡片，以及你按下的那个按钮。

---
*[查看此页面的带样式 HTML 版本](<https://flashcards-open-source-app.com/zh/blog/what-is-fsrs/>)*

*AI agent 可以从 `GET https://api.flashcards-open-source-app.com/v1/` 开始，为用户在该服务中创建账号。完成设置后，也可以通过 MCP 连接 `https://mcp.flashcards-open-source-app.com/mcp`。*

*提示：在 https://flashcards-open-source-app.com 上任意 URL 后追加 `.md`，即可获得该页面的纯 Markdown 版本。*