项目详情

Anki

把「记忆」当成工程问题,解了二十年的间隔重复标杆

ankitects/anki AGPL-3.0 Rust + Python + TS 31.2k stars 2006 年立项 · 月度发布

分类:学习工具 · 长寿开源项目 · ← 返回汇总

项目速览

一句话定位

不是笔记软件,是一台对抗遗忘的调度引擎

智能间隔重复记忆卡程序的桌面版源码:Rust 核心 + Python/Qt 桌面壳 + Svelte 前端,内建 FSRS 现代调度算法,通过 AnkiWeb 免费云同步串起 iOS/Android/网页全端。适合任何需要长期牢固记忆的人——语言学习、医学生、法考党全球主力工具。

本仓库 = 桌面版 + 核心 rslib AnkiDroid / AnkiMobile 为独立端 AnkiWeb 同步免费
项目速览

核心数据

31.2k
Stars
3.2k
Forks
391+
贡献者(含匿名)
2012
GitHub 建仓(项目 2006 起)
26.09
CalVer 最新版(月度节奏)
FSRS 6.6
内建调度算法版本

GitHub API 采集于 2026-09-19 · 主语言 Rust · 仓库 53MB · 最近 push 2026-09-19(当天仍在活跃开发)

🔥 核心页

它解决什么:遗忘是指数级的,复习必须卡在刀刃上

记忆保留率 时间 不复习:单次记忆指数衰减 复习1 复习2 复习3 每次复习把保留率拉回高位 且衰减越来越慢(间隔拉长) 目标保留率(如 90%)
复习节点(FSRS 决定何时触发) 实线 = 间隔重复下的保留率 虚线橙 = 不复习的遗忘曲线

Anki 的全部价值就在这张图:算出每张卡「快忘但没忘」的时间点,把复习总成本压到最低。

🔥 核心页

架构:一场持续八年的 Rust 渐进重写

前端层(双形态) qt/ — PyQt6 桌面窗口 · ts/ — Svelte 组件跑在 Qt WebEngine 里(新版界面全在这) TypeScript · Svelte Python 层(传统桥) pylib/ — 以 anki 模块暴露给桌面端与插件 API · 26.09 刚移除 Python 版 legacy 导入导出 Python proto/ — protobuf RPC 桥 跨语言调用序列化 rslib — Rust 核心:调度(FSRS)· 集合(SQLite) · 导入导出 · 同步协议 · 搜索 Rust 功能逐层下沉
Rust 核心(一切业务逻辑的家) 传统桥与前端 protobuf 跨语言桥

策略:不动用户数据格式的前提下,把调度/IO 逐块从 Python 搬进 Rust——8 年没停过,AnkiDroid 与未来新端也直接复用 rslib。

核心机制

FSRS:从社区研究到官方心脏

  • 出身:open-spaced-repetition 社区用数千万条真实复习记录训练的记忆模型,2023 年 23.10 版起内建进 Anki(此前要靠自定义调度脚本)
  • 对老 SM-2:不再「固定难度系数拍脑袋」,而是按每张卡的记忆状态(难度/稳定性/可提取性)动态排期
  • 个性化优化器:拿你自己的复习历史重训参数,目标保留率直接可调
  • 持续迭代:26.09 已跟进 FSRS 6.6.2;主贡献者 L-M-Sherlock 从社区研究者成为官方维护者
  • 配套工具:FSRS 模拟器(换参数前预览未来负担)、遗忘曲线图、card info 直读记忆状态
一句话理解区别

SM-2:所有卡一视同仁,间隔 = 上次间隔 × 固定系数。

FSRS:这张卡你忘得快,那就早点见;那张你记得牢,就别浪费今天的时间。


调度之外,rslib 还负责:SQLite 集合存储、全文搜索、.apkg 导入导出、与 AnkiWeb 的同步协议。

生态

数据格式与全端生态

端 / 组件形态说明
桌面版(本仓库)Win / macOS / Linux全功能旗舰,唯一支持插件的端
AnkiDroid独立开源仓库Android 端,社区维护,免费
AnkiMobileiOS 付费 App买断制收费——整个项目的主要收入来源
AnkiWeb免费云服务同步 + 网页复习 + 共享牌组平台
.apkg开放交换格式牌组/笔记/媒体打包,全端通用,无数第三方工具围绕它长出来
.anki2SQLite 集合库本地数据即一个 SQL 库,可被外部工具直接分析

桌面端插件生态是护城河:数以千计的 add-on 覆盖词源、发音、统计、批改——但代价见「风险」页。

工程细节

发布工程:CalVer 月更 + 安全响应

  • 日历版本:26.05 → 26.08 → 26.09,每月正式版,配 b1-b3 beta 通道(betas.ankiweb.net)
  • 当天修当天发:26.09 发布后 48 小时内连出 26.09.1 / 26.09.2 两个补丁
  • CI/CD:GitHub Actions 全平台构建,SonarCloud 覆盖率徽章挂 README
  • 文档独立仓:dev-docs.ankiweb.net 服务插件与贡献者开发者文档
26.09 安全修复(真实案例)

两个漏洞:牌组可在编辑器里读取本地文件;「打开图片」右键动作不校验扩展名,可执行危险文件。官方标注「请尽快升级」——分享牌组 = 运行半受信内容,是这类软件的经典攻击面。

同版还移除了 anki.importing/exporting 传统模块,为 AnkiConnect 类插件加了临时兼容层——旧 Python 接口的退场持续进行。

社区

一个人的项目,如何长成 391 人的引擎

可持续性

商业模式:一个付费 App 养活整个免费生态

收入端

iOS AnkiMobile 买断付费;桌面 / Android / 网页 / 同步全部免费无广告。

成本端

全职维护者 + AnkiWeb 服务器。团队极小,决策链极短,二十年没融资没商业化变脸。

License

AGPL-3.0+(部分贡献 BSD-3、vendored 组件各有注明)。网络服务条款也传染,商用fork需整链开源。

这可能是个人主导开源项目最健康的活法之一:用户付钱买的是 iOS 端的便利,资助的是全人类免费的记忆基础设施。

在线体验

亲手感受间隔重复的数学

Anki 最适合「玩」的机制是调度本身:拖动每日新卡数和评分习惯,看一张 SM-2 时间表如何把每日复习负担推向稳态——峰值在哪天、稳态有多高、差评一次会付出多少代价,全部实时成像。

▶ 打开间隔重复负担模拟器

SM-2 经典算法 1:1 实现(Anki 传统调度),与 Python 参考实现对拍通过。

快速上手

用户三步 · 开发者两条路

用户
  • apps.ankiweb.net 下载对应平台安装包(或手机商店)
  • 建账号开同步,或导入别人分享的 .apkg 牌组
  • 新集合直接用 FSRS;老用户在牌组选项里一键开启并跑优化器
开发者(本仓库)
# 完整构建(含 Rust 工具链 + Python venv + npm)
./run <target>
# 常用:./run tests / ./run pyqt / ./run rust-check

# 想尝鲜开发版而不自己编译:
https://betas.ankiweb.net

贡献流程:CONTRIBUTING → 一般从带 good first issue 标签的 issue 入手。

适用场景

适合谁用

风险提示

需要警惕什么

潜力评估

未来空间

「AI 会消灭记忆需求」的论调喊了十年,医学生和语言学习者用脚投票了二十年。FSRS 把记忆科学变成了可训练参数的算法资产,rslib 让这套引擎可以长到任何新端上——它已经不太像一款软件,更像记忆领域的水电煤。评分 9:长寿、活跃、有护城河、有研究前沿,几乎无可挑剔。


上一个
Security Audit Skill
下一个
RustFS
1 / 15