如何从 Anki 迁移到 SmartRecall 而不丢失复习记录

2026/05/14

上个月,一位医学生给我发邮件:"我有 8,000 张 Anki 卡片用于 Step 1 备考。我想试试 SmartRecall 的 FSRS 调度器,但我很害怕丢失三个月的复习数据。" 我理解这种担忧。你已经投入数百小时建立起对那些间隔的肌肉记忆,从零开始的想法让人难以接受。

好消息是:你不必从零开始。SmartRecall 的 Anki 导入器能保留 95% 重要的内容——你的复习历史、调度间隔、标签和卡组结构。另外 5% 是边缘情况,我会标注出来让你知道该期待什么。

TL;DR
将 Anki 卡组导出为包含调度信息的 .apkg 文件。通过"设置 → 导入 → Anki"导入 SmartRecall。复习历史、间隔和标签会自动转移。填空删除、图片遮挡和自定义笔记类型需要手动清理。一个 5,000 张卡片的卡组预计需要 15-30 分钟。

为什么人们从 Anki 迁移

Anki 之所以是黄金标准是有原因的——它免费、开源,经过数百万用户的实战检验。但在两年的用户访谈后,我听到了相同的痛点:

  • SM-2 算法已经过时。 Anki 的默认算法发布于 1988 年。SmartRecall 使用的 FSRS(自由间隔重复调度器)在相同保留率下能减少 20-30% 的复习负担,因为它按单卡而非按卡组建模遗忘曲线。
  • 移动端同步不够流畅。 AnkiWeb 能用,但 iOS 应用要 25 美元,跨设备同步需要手动操作。
  • 没有内置分析功能。 你需要插件才能看到热力图、预测工作量或识别难记卡片。SmartRecall 默认在仪表板上显示这些。

如果你对 Anki 满意,继续用就好。如果你好奇现代 SRS 能否每天为你节省 30 分钟,这份指南能帮你在不丢失数据的情况下实现迁移。

迁移中会保留什么

SmartRecall 的导入器直接读取 Anki 的 .apkg 格式。以下内容能完整转移:

复习历史和间隔

每张卡片的复习日志——时间戳、难度评级(重来/困难/良好/简单)、间隔长度——都会完整导入。如果一张卡片在 SM-2 下的到期时间是 45 天,SmartRecall 的 FSRS 调度器会继承该历史,并根据你的实际表现曲线重新计算下一个间隔。

实际效果:你在 Anki 中复习过 12 次的卡片,在 SmartRecall 的历史标签页中会显示 12 次复习记录。新算法从第 13 次复习开始生效。

标签和卡组层级

标签原样导入。如果你用 #cardiology#high-yield#zanki-step1 标记卡片,这些标签会出现在 SmartRecall 的标签浏览器中。卡组结构(父卡组、子卡组)映射到 SmartRecall 的文件夹系统。

一个小差异:Anki 允许嵌套标签(cardiology::arrhythmias)。SmartRecall 将其扁平化为 cardiology-arrhythmias 以保持标签选择器的速度。功能上完全相同,只是分隔符不同。

基础卡片和反向卡片类型

标准的正面/背面卡片和反向卡片(背面/正面)无需修改即可导入。如果你使用了 Anki 的"基础(及反向卡片)"笔记类型,在 SmartRecall 中每个笔记会得到两张卡片,和之前一样。

媒体文件

卡片中嵌入的图片、音频片段和 LaTeX 公式会自动转移。SmartRecall 从 .apkg 压缩包中提取它们并重新链接。我测试过包含 2GB 解剖图的卡组——没有问题。

什么不会转移(以及解决方法)

多上下文的填空删除

Anki 的填空笔记类型从一个笔记生成多张卡片。例如:

\{\{c1::Paris\}\} is the capital of \{\{c2::France\}\}.

这会创建两张卡片。SmartRecall 导入这两张卡片,但如果你在 SmartRecall 中编辑笔记文本,你是在编辑两张独立的卡片——而不是共享笔记。

解决方法: 如果你的填空笔记少于 500 个,保持原样即可。如果有数千个(医学院卡组如 Anking 中很常见),考虑在导出前将高优先级填空转换为基础卡片。在 Anki 的浏览器中按笔记类型筛选,然后使用"更改笔记类型"选项批量转换。

图片遮挡

Anki 的图片遮挡插件以自定义字段格式存储遮罩坐标。SmartRecall 目前还不解析这个——图片遮挡卡片会以烘焙了遮罩的静态图片导入(所以仍然能用),但你无法编辑遮罩位置。

解决方法: 对于你经常添加新遮挡的卡组(解剖图谱、组织学切片),在 SmartRecall 推出原生图片遮挡功能前(2026 年第三季度路线图)继续在 Anki 中使用。对于只复习的静态卡组,导入它们——功能正常。

自定义笔记类型和模板

如果你构建了带有 JavaScript、条件字段或复杂 CSS 的自定义卡片模板,渲染效果不会完全相同。出于安全考虑,SmartRecall 使用沙盒化的 Markdown 渲染器,因此任意脚本不会执行。

解决方法: 导出一个包含每种自定义类型 10-20 张卡片的样本卡组。导入 SmartRecall 并检查渲染效果。如果格式损坏,你可以在完整导出前在 Anki 中简化模板,或使用 SmartRecall 的批量编辑器在导入后手动修复卡片。

插件数据

Anki 插件将数据存储在单独的 SQLite 表中。热力图、自定义调度器和难记卡片阈值不会转移。SmartRecall 为大多数流行插件提供了内置等效功能(热力图、FSRS 调度器、难记卡片检测),但你需要重新配置设置。

分步迁移流程

1. 备份你的 Anki 集合

在操作任何内容之前,进入 Anki → 文件 → 创建备份。这会在你的 Anki 文件夹中创建一个带时间戳的 .colpkg 文件。如果出现问题,你可以从这里恢复。

2. 导出包含调度信息的卡组

在 Anki 主窗口中:

  1. 点击你想导出的卡组(或按住 Ctrl/Cmd 点击选择多个卡组)。
  2. 文件 → 导出。
  3. 导出格式:Anki 卡组包 (*.apkg)
  4. 勾选"包含调度信息"——这很关键。没有它,你会丢失复习历史。
  5. 仅当你的卡组没有图片/音频且想要更小的文件时,取消勾选"包含媒体"。否则保持勾选。
  6. .apkg 文件保存到你能找到的地方(桌面或下载文件夹)。

对每个卡组重复此操作。如果你有 20+ 个卡组,导出父卡组——Anki 会将所有子卡组打包到一个 .apkg 中。

3. 导入到 SmartRecall

登录 SmartRecall (smartrecall.ai)。进入"设置 → 导入 → Anki"。

  1. 点击"选择文件"并选择你的 .apkg
  2. SmartRecall 扫描文件并显示预览:卡片数量、媒体文件、检测到的标签。
  3. 选择目标文件夹(或创建新文件夹)。这是卡组在 SmartRecall 库中的位置。
  4. 点击"导入"。

进度条出现。对于包含 500MB 图片的 5,000 张卡片卡组,预计需要 2-3 分钟。SmartRecall 分批处理卡片以避免超时。

4. 验证导入

完成后,导航到导入的卡组。抽查:

  • 打开 5-10 张随机卡片。图片加载了吗?格式完整吗?
  • 检查你在 Anki 中多次复习过的卡片的"历史"标签页。你应该能看到过去的复习日期和评级。
  • 按你经常使用的标签筛选。卡片数量与 Anki 中的一致吗?

如果有什么看起来不对,不要惊慌。SmartRecall 会保留原始 .apkg 文件 30 天。你可以重新导入或联系支持团队([email protected])并提供卡组名称。

5. 调整 FSRS 设置(可选)

SmartRecall 的 FSRS 调度器有合理的默认值(目标保留率:90%,最大间隔:365 天)。但如果你在 Anki 中使用自定义设置——比如高风险考试的 95% 保留率目标——你可以在"设置 → 调度器"中调整。

FSRS 根据你的复习历史重新计算间隔,所以你可能会看到一些卡片立即重新调度。这是正常的。算法正在针对你的实际遗忘曲线优化,而不是 Anki 的通用难度因子。

处理 5% 的边缘情况

暂停的卡片

Anki 的暂停卡片在 SmartRecall 中导入为"已暂停"。它们不会出现在复习中,直到你取消暂停。批量取消暂停:选择卡组,点击三点菜单,选择"全部恢复"。

筛选卡组

Anki 的筛选卡组(自定义学习、突击模式)没有直接等效功能。SmartRecall 使用动态筛选器。导入后,通过进入主库、点击"筛选"并设置条件(例如"今天到期 + 标记为 #high-yield")来重建筛选卡组。

同级卡片掩埋

如果你在 Anki 中启用了"掩埋相关卡片",SmartRecall 在导入时会遵守此设置。同级卡片(来自同一笔记)不会在同一复习会话中出现。你可以在"设置 → 卡组选项 → 同级处理"中按卡组切换此功能。

媒体链接损坏的卡片

偶尔,Anki 卡组中的卡片引用了媒体文件夹中不再存在的图片(通常来自已删除的插件或损坏的同步)。SmartRecall 在导入期间会标记这些卡片并发出警告:"3 张卡片缺少媒体"。你可以使用"broken-media"标签筛选这些卡片,然后修复链接或删除卡片。

迁移后的工作流程建议

给 FSRS 两周时间校准

FSRS 从复习数据中学习你的遗忘曲线。在最初的 10-14 天,间隔可能感觉略有偏差——有些卡片回来得太快,有些太晚。这是算法收集信号的过程。每个卡组复习 50-100 次后,间隔会稳定下来,比 SM-2 更准确。

如果某张卡片持续感觉时机不对,使用"困难"或"简单"按钮给出反馈。FSRS 的调整速度比 Anki 的难度因子系统更快。

使用 SmartRecall 的难记卡片检测

Anki 默认在 8 次失误后标记难记卡片。SmartRecall 的难记卡片检测器更细致——它标记保留率低于 50% 你至少复习过 5 次的卡片。这些会出现在"难记卡片"智能文件夹中。

对于难记卡片,我建议:

  1. 重写卡片使其更原子化(每张卡片一个概念)。
  2. 添加助记符或视觉提示。
  3. 如果真的无法记住,暂停它并继续前进。不是每个事实都值得反复练习。

跨设备同步

与 Anki 不同,SmartRecall 自动同步。午餐时在手机上复习 20 张卡片,桌面应用会立即反映这些复习。无需手动"同步"按钮。

一个注意事项:离线模式是只读的。你可以在没有网络的情况下复习卡片,但更改会在重新连接后上传。Anki 的离线优先架构在这方面更强大——SmartRecall 优先考虑同步简便性而非离线编辑。

什么时候应该留在 Anki

迁移并不总是正确的选择。在以下情况下坚持使用 Anki:

  • 你严重依赖社区共享的卡组,这些卡组经常更新(如 USMLE 的 Anking)。将更新导入 SmartRecall 需要每次从 Anki 重新导出。
  • 你构建了复杂的插件工作流程(自定义调度器、笔记类型生成器、批量编辑脚本)。SmartRecall 的 API 仍在成熟中。
  • 你在哲学上反对闭源软件。Anki 是 GPL 许可的;SmartRecall 是专有的(尽管我们将 FSRS 实现作为开源发布)。

对于其他人——特别是如果你正在开始新卡组或对 Anki 的用户体验感到沮丧——迁移是低风险且可逆的。如果你改变主意,你随时可以从 SmartRecall 导出回 .apkg

实际迁移时间

根据用户报告:

  • 1,000 张卡片卡组,无媒体: 3-5 分钟(导出 + 导入 + 验证)。
  • 5,000 张卡片卡组,200MB 图片: 15-20 分钟。
  • 20,000 张卡片卡组(完整 Anking),2GB 媒体: 45-60 分钟。在周末进行。

瓶颈通常是媒体文件处理。如果你有大型卡组,考虑在导出前将其拆分为较小的子卡组以并行导入。

最后的想法

我在 2025 年 3 月将自己的日语词汇卡组(6,400 张卡片,18 个月的复习记录)从 Anki 迁移到 SmartRecall。整个过程花了 22 分钟。我没有丢失任何复习历史。三周内,FSRS 将我的每日复习负担从 85 张卡片减少到 62 张,保留率稳定在 91%。

最难的部分不是技术迁移——而是信任一个新算法来处理我花了一年时间建立的数据。如果你有这种犹豫,从小处开始。导出一个低风险的卡组(也许是业余项目或单本教材的一章),导入它,复习一周。看看 FSRS 是否比 SM-2 感觉更好。如果是,再迁移其余部分。

如果你遇到问题——媒体损坏、格式奇怪、无法导入的卡片——给我发邮件 [email protected]。我会阅读每条消息,边缘情况能帮助我为下一个人改进导入器。

你的复习历史太宝贵了,不能丢失。这份指南的存在是为了让你不必在保留数据和尝试更好的工具之间做选择。

Alex Chen

Alex Chen