技术深度解析
Anki 的技术根基是 SM-2 间隔重复算法,但项目本身已发生显著进化。原始算法用 Python 实现,采用简单的参数矩阵:难度系数(EF)、间隔和重复次数。当用户将卡片评为“重来”(0)、“困难”(1)、“良好”(2)或“简单”(3)时,算法会调整下一次复习间隔。公式如下:
- 如果评分 < 3:重置到学习阶段
- 如果评分 >= 3:新间隔 = 旧间隔 * EF
- EF = EF + (0.1 - (5 - 评分) * (0.08 + (5 - 评分) * 0.02))
这一算法是确定性的且易于理解,但存在局限:它将所有相同难度的卡片等同对待,无法适应个体用户的记忆模式。社区通过 Free Spaced Repetition Scheduler(FSRS) 解决了这一问题,该调度器在 Anki 23.10 中引入。FSRS 使用三参数逻辑模型(稳定性、难度和可提取性),基于用户自身的复习历史进行训练。该模型可预测任意时刻的回忆概率,调度器据此设置间隔以维持目标保留率(默认 90%)。这是一项重大改进:在相同保留率下,FSRS 相比 SM-2 可减少高达 30% 的复习负担。
架构: Anki 使用 Python 编写(桌面端 Qt6,网页端 JavaScript),数据库采用 SQLite。卡片模型采用模板系统,其中字段(如正面、背面)映射到 HTML/CSS 模板,支持富媒体嵌入。插件系统历史上基于 Python,但 24.0 版本引入了 TypeScript API,支持更快的开发和更好的沙箱隔离。移动端应用(iOS 版 AnkiMobile、Android 版 AnkiDroid)是原生移植,通过 AnkiWeb 同步,AnkiWeb 充当中央中继服务器,使用 PostgreSQL 后端并提供 500 MB 免费存储。
性能基准测试: FSRS 调度器已在大型数据集上与 SM-2 进行对比测试。下表展示了官方 FSRS 基准测试结果,数据来自 Anki 社区的“20k reviews”数据集:
| 调度器 | RMSE(越低越好) | 日均复习数 | 保留率(目标 90%) |
|---|---|---|---|
| SM-2 | 0.124 | 45 | 87.2% |
| FSRS v4 | 0.087 | 32 | 89.8% |
| FSRS v5(Anki 24.0) | 0.079 | 30 | 90.1% |
数据要点: FSRS v5 将每日复习负担减少 33%,同时实现了更接近目标的保留率,证明数据驱动的调度优于启发式的 SM-2。升级到 Anki 24.0 的用户可以在相同记忆质量下体验到更少的复习量。
开源生态系统: 主仓库(ankitects/anki)拥有 28,458 颗星标和 1,200 个分支。最活跃的子项目包括:
- AnkiDroid(ankidroid/Anki-Android):8,000+ 星标,最受欢迎的 Android SRS 应用
- AnkiConnect(FooSoft/anki-connect):2,000+ 星标,支持基于 HTTP 的自动化(例如从浏览器自动导入)
- FSRS4Anki(open-spaced-repetition/fsrs4anki):1,500+ 星标,FSRS 的参考实现
社区正在积极开发基于 Rust 重写的核心引擎(名为“Anki Next”),有望带来更好的性能和内存安全性。
关键参与者与案例研究
Anki 的生态系统是去中心化的,没有单一公司主导开发。项目由 Damien Elmes(又名“dae”)维护,他作为唯一维护者已超过十年。他通过付费的 AnkiMobile 应用(iOS 上售价 24.99 美元)实现商业化,这笔收入支撑他全职投入项目开发。Android 版本(AnkiDroid)是开源且免费的,由志愿者团队维护。
竞品对比: Anki 面临来自传统 SRS 工具和 AI 原生学习平台的双重竞争。下表对比了关键玩家:
| 产品 | 定价 | 算法 | AI 功能 | 平台 | GitHub 星标 |
|---|---|---|---|---|---|
| Anki | 免费(桌面端),24.99 美元(iOS) | SM-2 / FSRS | 无原生功能(通过插件实现) | Win/Mac/Linux/iOS/Android | 28,458 |
| RemNote | 免费版,8 美元/月 Premium | 自定义 SRS + SM-2 | 从笔记中 AI 生成闪卡 | Web/iOS/Android | — |
| Memrise | 免费版,14.99 美元/月 Pro | 专有算法 | AI 生成助记符、视频片段 | Web/iOS/Android | — |
| Quizlet | 免费版,7.99 美元/月 Plus | Leitner 系统 | 从文本中 AI 生成闪卡 | Web/iOS/Android | — |
| Mnemosyne | 免费 | SM-2 变体 | 无 | Win/Mac/Linux | 1,200 |
数据要点: Anki 的主要优势在于其零成本的桌面应用和无与伦比的插件生态系统。然而,它缺乏原生 AI 功能,而竞品正在积极整合这些功能。例如,RemNote 使用 GPT-4 从 PDF 生成闪卡,这在 Anki 中需要通过第三方插件“AnkiGPT”(500+ 星标)手动设置才能实现。
案例研究:医学生。 /r/medicalschoolanki 子版块拥有 15 万成员,像“AnKing”(一个包含 3 万+ 卡片的综合 USMLE 牌组)这样的共享牌组已被下载数百万次。