本文是《如何使用 Anki》的补充文章,我会在这里介绍 Anki 的高级技巧。所以在阅读本文前,应该先阅读此前的基础教程。

认知心理学知识

Anki 是关于记忆的软件,所以我把认知心理学知识放在这篇文章的最开始。相比于了解软件上的技巧,基本的认知心理学知识也是重要的。下面的引文全部来自书籍《认知心理学及其启示》

增细加工

有证据表明增加细节的加⼯越多,记忆效果越好。增细加⼯(elaborative processing)包括创建与需要记忆的事物有关且对它有所补充和扩展的额外信息。安德森和鲍尔(Anderson & Bouer,1973)所做的⼀项实验表明了增细加⼯的重要性。他们让被试记忆⼀些简单的句⼦,例如医⽣恨律师。在⼀种条件下,被试只学习句⼦;在另⼀种条件下,他们要根据⾃⼰的选择⽣成有关细节,例如因为治疗失当的诉讼。随后,给被试呈现原句的主语和动词(例如,医⽣恨), 并让他们回忆宾语(例如,律师)。只学习过原句的被试能够回忆出57% 的宾语,但是⽣成细节的被试能够回忆出72%的宾语。两位研究者认为这种优势缘于增细加⼯带来的信息冗余。

相比直接记忆由其他人制作好的预制卡组,我更喜欢使用自己在观看影视作品时制作的 Anki 卡片。对于我自己制作的卡片,我充分地感知了词汇所在的语境,拥有大量细节,所以不必像在记忆预制卡组一样「机械复述」,有更好的记忆效果。如果缺乏细节,那么即便进行大量的重复,也难以记住词汇。

使用 Anki 学习时需要带上脑子,并且在 Anki 外做的事情(比如制卡)要比在 Anki 内做的事情更重要。

带着问题学习与主动回忆

弗瑞斯(Frase,1975)发现了对课本教材进⾏增细加⼯的好处。他⽐较了 两组被试对课⽂的记忆:⼀组在阅读课⽂之前需要思考问题,有时称为预先组织者(Ausubel,1968);另⼀组是控制组,只学习课⽂,没有预先的问题。第 ⼀组被试需要在阅读课⽂的过程中寻找预先给出的问题的答案。这样可以迫使被试更认真地加⼯课⽂并思考其中的含意。在随后的测验中,预先组织者组(第⼀组)正确回答出了64%的问题,⽽控制组的正确率只有57%。测验中的问题有的与预先组织者有关,有的⽆关。例如,⼀个测验问题是关于促使美国卷入第⼆次世界⼤战的事件,如果预先的问题是引导被试学习美国为什么会参加战争,那么这就是相关问题。如果预先的问题是引导被试学习第⼆次世界⼤战的经济后果,那么这就是⽆关问题。预先组织者组正确回答出76%的相关问题和52%的⽆关问题。与控制组相⽐,他们对⽆关问题的回答略差,⽽对相关问题的回答则好得多。

在学习课文时,事前的提问带来更好的学习效果,事前的提问迫使人在阅读时对课文进行了更深的加工。

Anki 利用了类似的底层原理,被称为「主动回忆」。一般的 Anki 卡片在正面展示问题,再在背面展示答案。通过 Anki 这样的方式,人能建立对信息的更深层理解。如果没有正面的提问,人也背面的答案不会上心。

过去在读《论语》时,孔子的教育理念里有一句令我印象深刻的话——「不愤不启,不悱不发」。现在看来,这些学习理念在本质上是共通的,都强调了事前提问的重要性。

语言能力高低者的速度差异

与语⾔能⼒⾼的被试在单词识别上显⽰的优势不是很⼤,但是在语⾳和语义的匹配任务上则表现出了⼤得多的优势。语⾔能⼒⾼是从语⾔刺激到其信息的速度。

在 Anki 的复习页面,存在「重来」和「困难」的区分。一般来说,我把「困难」作为自己回忆速度缓慢时的选项,回忆速度缓慢实际上意味着相关的语言能力低下,和无法回忆的区别不大。

处理 leech

Anki 官方对 leech 的介绍和处理方式

在使用了一段时间 Anki 以后,很可能会发现有几张卡片非常难以记忆,总是要忘记。在 Anki 的默认设置里,当一张复习卡片被标记为「重来」8 次以后,卡片会被打上「leech」的标签,意思是这张卡片是记忆难点。

《Anki 手册》里这样描述 leech:

Leeches are cards that you keep forgetting. Because they require so many reviews, they take up a lot more of your time, compared to other cards.

记忆难点(leech)是你总是遗忘的卡片。因为它们需要大量的复习,与其他卡片相比,它们占用了你更多的时间。

《Anki 手册》里也给出了对应的解决方法:

Editing

The most efficient method to deal with leeches is to change how the information is presented. Maybe your cards have too much information, or you’re trying to memorize something without fully understanding it. Often, it helps to follow the 20 rules of formulating knowledge, proposed by Dr Piotr Wozniak, the creator of SuperMemo. Some cards can benefit from a mnemonic. Even some well-written cards may need a boost in coherence, e.g. by adding cards for related concepts. However, it takes a lot of experience to know how to formulate the material properly, break it down into smallest possible components, and use mnemonic techniques.

Deleting

If the material you’re struggling with isn’t important enough to justify the time spent, you can simply delete the card. By selectively deleting difficult and obscure items, you can spend more time learning other material, making studying more enjoyable. If you think the card might be useful for future reference, you can leave it suspended.

Waiting

Some leeches are caused by “interference”. For example, an English learner may have recently learned the words “disappoint” and “disappear”. As they look similar, the learner may find themselves confusing the two when trying to answer. In such situations, it’s often helpful to concentrate on one idea at a time. Once that idea is firmly ingrained in your mind, you can then start learning the other idea. So, in these situations, you might want to leave one of the words suspended until you have learned the other one well, and then unsuspend it.

For a more detailed discussion, you can refer to the article “Dealing with Leeches”, written by Soren Bjornstad.

我处理 leech 的思路

Leech 的形成有多种多样的原因,可能是制作的卡片没有遵循最小信息原则,如果一张卡片里含有大量需要回忆的信息,那么自然无法回忆;也可能是自己在并未理解的内容,如果卡片是自己未能理解的内容,在记忆深度浅的情况下,自然难以记忆。

除了 Anki 的 leech 标签,还有一种知道卡片难度的方法是在 Anki 的「浏览」页面对「难度」进行排序。尽管《Anki 手册》里提及了多种处理难卡的方法,我个人处理难卡的方法是简单粗暴地直接删除卡片。

我的所有行为都存在机会成本,与其被少数的几张难卡浪费大量时间,不如投入时间到学习更多的简单卡片上。我通常不会调整难卡内容的原因也是一样,如果调整一张卡片需要大量时间的思考,而制作一张新卡只需要 30 秒,那么选择新内容对我来说是更理性的选择。而且,当旧的情境难以记忆时,可能在制新卡时会因为情境的改变而容易记住。

不过,尽管我会在卡片成为难卡时选择删卡,但是我经常在卡片尚未是一张新卡的时候就给卡片写上笔记,这样一来,卡片从一开始就不容易成为难卡。

标签管理

在使用 Yomitan 给内容制卡时,我一般会给卡片打上标签。然后在看完一部作品以后,对 tag 进行整理。

Yomitan 内的 tag 设置

在 Anki 里,可以使用 :: 来表示标签上下的层级,例如,当我在 2026 年 5 月观看了日本动画《赌博默示录》以后,我会将 赌博默示录 的标签编辑为 アニメ::26::05::赌博默示录。通过对标签的层级整理,我可以在实现对不同作品打标签的同时,不至于让 Anki 里出现大量的一级标签,避免 Anki 浏览页面的混乱。

在 Anki「浏览」页面的左侧标签管理里,可以看到我的标签已经按照作品类型、年份、月份来归类,非常整洁。我使用相同的方式来对其他类型的作品进行整理。

理解「期望的记忆保留率」

概念

在 Anki 的牌组设置里,其中关于 FSRS 里有一项「期望的记忆保留率」的设置,这是一项不容易理解的设置。

如果要理解这项设置的含义,首先需要了解 FSRS 的工作原理。随着时间的流逝,用户对某张卡片的记忆会逐渐弱化,FSRS 会在算法判断你有 X% 的概率还记着这张卡片的日期里,把卡片展示给你。这个用户成功回忆起某张卡片的 X% 的概率,又称为记忆的「保留率」。

所以设置的期望的记忆保留率,会影响 Anki 将卡片再次向你展示的间隔。例如如果将期望的记忆保留率设置为 85%,就意味着 Anki 会在预测你还有 85% 的概率仍记着卡片的日期里,把卡片向你展示。

因此,将期望的记忆保留率设置得越高,意味着卡片将会更频繁地出现在你的复习计划里。

保留率与复习时间

但是,如果将保留率设置得很低,这时复习量并不会随之减少,反而会增加。这是因为,随着保留率的降低,用户需要花费更多的时间来捡起大量的被严重遗忘的卡片。因此,在设置保留率时,绝对不要超过这个临界点(一般来说,高于 80% 的保留率是安全的)。

过高的保留率同样会导致糟糕的结果,这会导致卡片极度频繁地出现,用户需要耗费大量的时间复习。

保留率和复习量的关系图示例

具体的保留率设置因个人的偏好而异,一般为 80%-90%。如果你更希望更好地掌握卡片卡片内容,可以设置为偏高的保留率;如果你希望投入更多时间在 Anki 之外,可以设置为偏低的保留率。

考虑复习痛苦

当用户把目标保留率按照临界值设置时,理论上这时可以用最少的时间来记忆相同的内容。但我不会喜欢这种时间上最高效的设定。我的理由是,这种情况下意味着较多的遗忘,而复习时的遗忘会带来心理上的痛苦。

此外,当目标保留率逼近临界点时,降低保留率所带来的时间节省已经非常少了。目前,我自己在 Anki 设置的保留率为 83%。

如果想了解这方面的更多内容,可以阅读《Anki 手册》

Anki 的搜索功能

使用过 Anki 的搜索栏以后,就会发现 Anki 的搜索栏非常难用。一般来说,用户想搜索的是词条名称这样的重要内容,但是 Anki 却会默认检索卡片里的所有内容,这就让搜索结果反而充满大量的噪音。

实际上,Anki 的搜索功能是强大的。我认为 Anki 不够用户友好,导致了普通用户使用上的困难。通过《Anki 手册》,可以知道 Anki 需要特殊的搜索语法,才能变得「勉强能用」。

一些简单搜索语法可以被轻松地学会,比如我想搜索 Expression 字段为 xxx 的卡片,那么需要在 Anki 的搜索栏输入 Expression:xxx。这样,就可以避免上面说的搜索噪音问题

Anki 还支持使用正则表达式搜索。当我存在复杂的搜索需求时,会向 LLM 寻求帮助,然后使用 LLM 提供的表达式进行搜索。

自制插件的详细介绍

相比其他记忆软件,Anki 最大的护城河在于它的生态。由于 Anki 的开放性,用户可以方便地开发 Anki 插件,网络上有大量的可以满足自己特殊学习需求的插件可供使用。为了满足自己的学习需求,我用 Coding Agent 自制了几款 Anki 插件。

前置文章里,我简单地提及过我所使用的 Anki 插件。在此,我会详细介绍我的自制插件。

我没有将我的插件上传至 AnkiWeb,所以在安装时,需要手动把插件文件解压到 Anki 插件文件夹(也就是在 Anki 插件管理页面点击「查看文件」时跳出来的文件夹),再重启 Anki。

打开 Anki 插件文件夹的方法 打开 Anki 插件文件夹的方法

相比其他人的插件,我的插件缺乏打磨,更可能触发问题。如果你使用我的插件,那么就意味着你已经知晓它们的缺陷。使用遇到问题时,可以向我反馈,以便我提供对插件的修复。

AI Definition Matcher by Ken

AI Definition Matcher by Ken 260516.zip28.4 KB下载项

功能介绍

插件会读取当前卡片的上下文背景和辞典信息,让 LLM 找出匹配的释义,然后由用户选择将 LLM 挑选的释义写入 DashedText 或者 PopupSelectionText 字段。

对于辞典非常长的卡片,可以使用这个插件来减少一行行阅读辞典的时间成本。

插件运行后的效果

使用步骤

  1. 安装插件
  2. 进入插件设置,填写 API 信息
  3. 选取卡片(支持单张和多张,推荐配合我自制的笔记模版使用)然后运行插件,等待匹配结果
  4. 勾选需要的解释,默认会写入 DashedText 字段;可以对高质量解释勾选「改写入PST」,来写入 PopupSelectionText 字段

AJT Media Converter Enhanced by Ken

AJT Media Converter Enhanced by Ken 260227.zip3.62 MB下载项

功能介绍

如果在 Anki 内存储由 asbplayer 生成的高质量图片和音频,那么 Anki 所占的体积会膨胀得很大。压缩 Anki 的媒体文件是我的一个需求。

这个插件从既有插件 AJT Media Converter 强化而来,iOS 不支持 ogg 格式的音频,所以我为插件增加了音频的「opus编码+m4a封装」功能,这样的话就可以在 AnkiMobile 上使用 opus 了。

我还做了一个均衡响度的功能,以避免不同媒体来源的卡片的响度不一。

AJT Media Converter 原版的图片压缩功能 我增强的音频压缩和均衡响度功能

使用步骤

  1. 安装插件
  2. 安装 ffmpeg
  3. 在 Anki「浏览」页面选取多张卡片,然后从菜单栏的「编辑」运行插件,等待媒体处理

New Card Auto-Selector by Ken

New Card Auto-Selector by Ken 260318.zip5.81 KB下载项

通过 AnkiConnect 制卡时,如果想要返回 Anki 编辑卡片,每次需要手动选择选择卡片,这不方便。当卡片的媒体字段更新时,Anki 也不会自动刷新编辑页面的预览,这不方便。

安装了这个插件以后,在 Anki「浏览」页面打开时,如果有新卡被添加,会自动把浏览页面定位到该新卡并选中,这样就减少了手动选取的点击步骤。当使用 asbplayer 更新媒体字段后,当前的卡片的预览也会动态刷新,无须手动刷新。

这个插件还有一些问题,最好能来个野生程序员修一下。

AI Furigana Selector by Ken

AI Furigana Selector by Ken 260419.zip17.0 KB下载项

功能介绍

日语的发音规则相当复杂,在不使用 AI 的情况下,没有可以准确判断出正确读音的方法。目前,我首先使用插件 AJT Japanese 从字段 SentenceBold 生成带有对个注音的内容到字段 SentenceFuriganaPlain,再用 AI Furigana Selector by Ken 来剔除多余的注音,从而实现对日语的自动注音。

插件的示例效果

使用步骤

  1. 安装插件,以及此前已经安装和配置了 AJT Japanese 来为句子注音
  2. 进入插件设置,填写 API 信息
  3. 在 Anki「浏览」页面选取多张卡片,然后从菜单栏的「编辑」运行插件

自建同步服务器

这部分内容需要较强的计算机水平。

大部分人使用 AnkiWeb 进行同步,AnkiWeb 是一个不错的选择,但是它有几个问题:

  • 在中国大陆的同步服务很慢
  • 尽管媒体文件没有大小限制,但是集合文件有仅 250M 的空间限制,在自行制卡时容易超

通过自建同步服务器的方法,可以规避这两个问题。Anki 官方提供了自建同步服务器的方法,为了方便,我自己使用 Docker 来运行同步服务器。这里是关于我所用的 Anki 同步服务器容器的详细页面

docker create \
  --name=anki-server \
  -p 8080:8080 \
  -v /替换这部分文字为文件位置/anki-sync-data:/ankisyncdir \
  -e SYNC_USER1=替换这部分文字为用户名1:替换这部分文字为密码 \
  -e SYNC_USER2=替换这部分文字为用户名2:替换这部分文字为密码 \
  -e UID=1000 \
  -e GID=1000 \
  -e MAX_SYNC_PAYLOAD_MEGS=100480\
  --restart unless-stopped \
  johngong/anki-sync-server:latest
docker start anki-server

其中,-e MAX_SYNC_PAYLOAD_MEGS=100480\ 这行表示你允许的最大空间(单位 MB),可以自行修改。对于 AnkiDroid 用户,推荐把同步服务器的用户名设置为邮箱的格式。

后续关于公网访问的事情,由于我在这方面是外行,所以就不提供教学了。