# 知习复习系统设计研究报告 ## 执行摘要 这份报告的核心判断很明确:**知习不应该简单复刻 Anki,也不应该简单复刻 Quizlet。**更好的方案是,**后端学 Anki 的状态机、到期队列、lapse 与 relearn 机制;前端学 Quizlet 的低摩擦创建、清晰 mastery 分组、错题定向返练与“今天学什么”的任务化呈现。**Anki 的优势在于它把学习对象、调度状态、错题回流、搜索过滤和统计都公开成了可解释的系统;Quizlet 的优势在于它把学习体验包装成普通用户更容易理解的 Flashcards、Learn、Progress 和移动端个性化 feed。citeturn28view0turn3view0turn17view0turn26view0turn12view1turn32view0turn31search0 如果知习首版面向大众用户,而不是重度自定义人群,那么最值得复制的不是 Anki 的整套“高级控制台”,而是它的**四态复习内核**:`new → learn → review → relearn`;同时,最值得借鉴 Quizlet 的不是所有学习模式,而是它的**人话化呈现方式**:用 Not Studied / Still Learning / Mastered 这样的分组,配合错题再练和移动端推荐,让用户知道自己“今天该干什么”。citeturn28view0turn17view0turn32view0turn31search0 从调度透明度看,Anki 明显更适合做“底层设计样本”。官方文档公开了学习步长、毕业间隔、Hard/Easy/Again 的行为、FSRS 的 desired retention、以及因 lapse 进入 relearning 的流程。Quizlet 官方则更像公开“行为级 UX”而非“公式级算法”:帮助中心详细写了 Flashcards、Learn、Test、Write、Progress 的入口和规则,官方博客/功能页摘要又把 Learn 与 spaced repetition、scheduled reviews、Memory Score 关联起来,但没有像 Anki 那样公开按钮到间隔的详细公式。因此,**知习的算法层应以 Anki 为主样本,交互层应以 Quizlet 为主样本。**citeturn34search3turn33search2turn17view1turn12view1turn13view1turn32view0turn35search0turn35search1turn37search0 我对知习的总体建议是:首版采用**“Anki 状态机 + Quizlet 表层交互”**。默认只给用户看两个按钮“忘了 / 记得”,把 Anki 风格的 Hard / Easy 放在高级模式里;首页不直接展示复杂牌组树,而是展示**今日必做复习、错题返练、今日新增、可选加练**四类任务;掌握度不要只看今天正确率,而要用**长期状态 + 最近表现 + 下次间隔**来推导。这样既能避免 Anki 的上手陡峭,也能避免 Quizlet 那种“学习模式很多,但到期复习主线不够硬”的问题。citeturn2view0turn4view0turn3view5turn32view0turn13view2turn31search0 ## 研究范围与证据边界 本文只研究 **Anki** 与 **Quizlet**,不展开其他产品。证据优先级如下:**Anki Manual、Anki FAQs、AnkiWeb/官方 app 页面;Quizlet Help Center、Quizlet 官方功能页与博客摘要、官方升级页与帮助文档。**对于 Quizlet,由于部分官方功能页或博客正文无法直接抓取,我只在能直接验证的官方摘要范围内使用相关结论;因此,凡涉及 Quizlet 调度机制,我都只做**行为级分析**,不做未证实的公式还原。 本文对知习的设计建议默认基于以下假设:知习首版面向**大众学习者**,核心场景是长期记忆巩固;支持文本卡、图片卡、音频卡,移动端是主要复习入口,网页端承担更重的创建与管理职责;首版不以插件生态、教师课堂管理、富文本模板编排为中心。 一个重要边界是:Anki 的文档非常透明,适合直接拆解调度与状态;Quizlet 的文档更偏“用户视角的帮助说明”,适合提炼交互与任务组织。正因为这两者公开程度不同,本文在做产品建议时会明确区分“**事实**”与“**设计推断**”。citeturn28view0turn29view0turn30view0turn12view0turn12view1turn12view2turn12view4turn25view0turn40search2 ## Anki机制深析 **卡片对象与数据结构。**Anki 的基本单位不是“卡片行”,而是 **note → fields → card types/templates → cards**。一个 note 可以包含多个 field,一个 note type 可以定义一个或多个 card type,于是同一条知识内容可以派生出多张卡片,例如正向卡、反向卡、填空卡、图片遮挡卡。官方文档明确说明了 note、field、card type、note type 之间的关系,还强调 note type 与 deck 是相互独立的:同一 note type 可以跨 deck 使用,反之亦然。这个设计的产品意义是:**内容复用**与**调度实例**天然分层,未来要支持多视角提问、同源多卡、统一修订时非常重要。citeturn28view0turn23search12turn29view0 **创建方式。**Anki 支持从头手工添加 note,也支持导入文本文件、打包牌组,并支持共享牌组导入。创建时用户选择 note type、deck、fields、tags,Anki 负责据此生成卡片。官方还提供 Basic、Basic reversed、type in the answer、Cloze、Image Occlusion 等标准 note type,并建议长期最好围绕自己的学习内容建立专属 note type。对知习而言,这说明:**Anki 的“高表达力”来自 note/card 分层,而不是来自单张卡片本身。**citeturn29view0turn23search15turn28view0 **完整复习链路。**Anki 的学习入口是 deck overview。进入 deck 后,系统先显示今日任务,拆成 New、Learning、To Review 三类,并可在启用 bury siblings 时显示将被埋藏的兄弟卡数。开始学习后,先只展示问题,用户点击 Show Answer 后,再用 Again、Hard、Good、Easy 对回忆质量进行评分。Anki 官方还明确表示,如果四键对用户来说太复杂,也可以只使用 Again 和 Good。citeturn33search4turn2view0 下图把 Anki 官方文档整理成了一个可产品化理解的复习链路:先看今日概览,再按队列优先级取卡,再根据用户评分更新状态与间隔。图中的状态和优先级都来自官方手册与 FAQ。citeturn33search4turn4view5turn17view0turn17view1 ```mermaid flowchart TD A[Deck overview
New / Learning / To Review] --> B{取卡优先级} B -->|先| C[同日 learning] B -->|再| D[跨日 learning] B -->|再| E[review] B -->|后| F[new] C --> G[展示问题] D --> G E --> G F --> G G --> H[Show Answer] H --> I{评分} I -->|Again| J[回到首个学习步 / 进入重学] I -->|Hard| K[重复当前步或给较短增长] I -->|Good| L[进入下一步或安排下次复习] I -->|Easy| M[直接毕业或给更长间隔] J --> B K --> B L --> B M --> B ``` **学习步长与新卡毕业。**在 learning/relearning 阶段,Anki 使用显式的 steps。文档给出的示例是 `1m 10m 1d`:Again 回到第一步;Good 前进到下一步;最后一步按 Good 时毕业;Easy 无论当前在哪一步都可直接变成 review card;Hard 在第一步会取前两步的平均值,在后续步则重复当前步。若当前没有别的题可做,Anki 默认会把 learning 卡提前最多 20 分钟展示;若步长跨过 day boundary,则会自动转成“天”为单位。这个设计告诉我们,Anki 把“当天记忆巩固”与“长期间隔调度”分成了两层,而不是让一个公式包办所有事情。citeturn34search3turn33search3turn34search1 **SM-2 模式下的复习调度。**Anki 23.10+ 同时支持 legacy SM-2 家族算法与 FSRS。SM-2 分支的关键参数在官方手册中公开得很清楚:Starting Ease 默认 2.50;Hard Interval 默认 1.20;Easy Bonus 默认 1.30;Interval Modifier 默认 1.00;对 review 卡按 Again 时,New Interval 默认 0.00,也就是默认重置,之后再受 minimum interval 约束。Anki FAQ 还补充说明:它与原始 SM-2 的一个重要差别是,**学习阶段的反复失败不会持续下调 ease,避免卡片掉进“低间隔地狱”**;同时,晚做但仍答对的卡,延迟也会被计入下次间隔。citeturn33search2turn33search1 **FSRS 模式下的复习调度。**Anki 官方 FAQ 明确说明,FSRS 基于三变量记忆模型:Retrievability、Stability、Difficulty;用户最关键的可调项是 desired retention,默认推荐值是 0.90,并提醒过高目标会显著增加工作量。官方还指出,FSRS 往往会给新毕业卡更长的首次间隔,例如 Good 可能是 3–5 天,Easy 可能超过一周;同时,FSRS 更擅长处理 overdue review,并在启用后把 review sort order 从“relative overdueness”切到“ascending retrievability”。这意味着 Anki 在 FSRS 下已经从“按日程是否拖欠”升级为“按遗忘风险排序”。citeturn16view1turn17view1turn27search0turn27search2turn2view1turn3view4 下表把 Anki 的按钮行为整理成设计时最有参考价值的形式。 | 状态 | Again | Hard | Good | Easy | 设计含义 | 来源 | |---|---|---|---|---|---|---| | New / Learning | 回到第一个学习步 | 第一学习步时取前两步平均值;其他步重复当前步 | 前进到下一步;若步数耗尽则毕业 | 直接毕业并给 Easy Interval | 同日巩固是显式步长,不是纯公式 | citeturn34search3turn34search1 | | Review in SM-2 | 进入 lapse / relearn;默认 New Interval=0 | 按 Hard Interval 给较短增长 | 按 ease 正常增长 | 在 Good 基础上乘 Easy Bonus,且 ease 更激进 | 评分不仅是“对/错”,还是增长速度控制杆 | citeturn33search2turn33search1 | | Review in FSRS | 调整 D/S/R 并进入更保守的后续安排 | 增长较保守 | 以 target retention 安排下一次 | 更大幅增长 | 目标由“经验倍数”变成“目标可回忆率” | citeturn17view1turn27search0 | **错题回流、掌握与异常卡。**Anki 把 review 阶段忘记的卡定义为 lapse,Again 会让它进入 relearning,minimum interval 默认 1 天;如果 relearning steps 留空,则会直接被赋予 1 天的新间隔。对于反复遗忘的卡,Anki 有 leech 机制:默认阈值是 8 次 lapse,并且每增加一半阈值会再次提醒;默认处理是打上 leech tag 并 suspend。除此之外,Anki 还支持 Custom Study / Filtered Deck 直接“复习遗忘的卡”或按最多 lapses 选卡。对知习最重要的启示是:**错题不应该只是统计项,而应自动进入新的训练通道。**citeturn17view0turn17view3turn16view3turn17view4 **今天的复习呈现。**Anki 的 today 不是一个“推荐流”,而是一个**清单化的 due system**。它有 daily new limit、maximum reviews/day、learning 与 review 的显示顺序,以及 sibling burying。官方还特别提醒:若每天学 20 张新卡,随着旧卡累积,复习量可能很容易逼近 200 次/日。这个提醒对于知习非常关键,因为它说明“新卡入口”如果不控量,迟早会反噬 review queue。citeturn4view0turn4view1turn4view5 **组织、检索与分析。**Anki 的组织策略是:deck 用来放宽主题,tags 用来做细粒度组织,deck 不要切得过碎;deck 还可以用 `::` 形成树状 subdeck。检索上,Anki 提供非常强的查询语言,支持 field、tag、deck、card state、flag、interval、due、reps、lapses,甚至在 FSRS 启用后还可按 `prop:s / prop:d / prop:r` 搜索。统计上,Anki 有 today、forecast、review count、review time、ease、card type、hourly breakdown 等图;但官方也提醒,不要把某一天的 Today 页数字当成整体进展的好代理。citeturn28view0turn29view0turn30view0turn30view2turn3view5 **平台与收费边界。**Anki 生态由桌面端、AnkiMobile、AnkiDroid 与 AnkiWeb 组成。AnkiWeb 是免费的同步与在线学习服务,官方 app 页面明确说明桌面端可在主要桌面平台免费下载使用,AnkiWeb 免费同步,iOS 端的付费购买用于资助开发。与此同时,Anki 的深度能力显著偏向桌面端:add-ons 入口在桌面版菜单中,Shared Deck 也不能直接加到 AnkiWeb,需要先导入桌面端或移动端再同步。官方还说明 AnkiWeb 主要是电脑版本的 companion,并非完全等价替代。对知习而言,这意味着**网页端创建更强、移动端复习更强**并不是缺陷,而是一种可接受的形态。citeturn22view0turn21search14turn23search0turn28view0 ## Quizlet机制深析 **卡片对象与数据结构。**Quizlet 的主对象是 **flashcard set**。官方帮助中心把它定义为“term/definition”或“question/answer”的列表;内容可包含 words、images、diagrams、audio。与 Anki 相比,Quizlet 的公开模型明显更扁平:它更像“集合 + 行”,而不是“note/field/template/card instance”四层分离。对大众用户而言,这种结构上手成本低;但对长远的多模板、多视角提问、同源多卡调度来说,它不如 Anki 那样强。citeturn26view0turn38search4 **创建方式。**Quizlet 支持手工创建 set、从已有文档导入内容、复制并编辑他人的 set,还支持在特定场景下创建 multiple-choice set。导入时每一行变成一张卡;创建时可设置 term/definition 的语言,支持图片与格式增强;published sets 默认是 public,但可切换可见范围,包括 Everyone、Certain classes、People with a password、Just me。多选题创建当前只支持网站,不直接支持原生移动端;导入同样是网站优先。这一组特征说明,Quizlet 在内容创建上追求的是**低门槛与快速发布**,而不是 Anki 那种模板化建模能力。citeturn29view2turn25view2turn25view3turn26view1turn25view4 **完整学习链路。**Quizlet 的 review-centric 主线不是一个“due queue”,而是一组学习模式。最核心的四个是 Flashcards、Learn、Test、Progress。Flashcards 负责翻卡和初步自我熟悉,Learn 负责目标驱动的个性化学习路径,Test 负责一次性练习测验,Progress 负责按长期表现分组。官方帮助中心直接写明:Learn 会根据用户目标和对内容的熟悉程度创建个性化 study path;其描述又强调它“基于 learning science principles,并由 machine learning 驱动”。官方博客与功能页摘要则进一步把 Learn / spaced repetition / scheduled reviews / Memory Score 连在了一起。也就是说,Quizlet 的调度逻辑公开得不如 Anki 细,但它明确在朝**“个性化路径 + 定时复习 + 长期记忆指标”**的方向包装。citeturn12view1turn35search1turn35search0turn37search0 下图把 Quizlet 的当前学习闭环抽象成产品流程。它不是严格的 due-driven queue,而是 mode-driven learning loop。citeturn12view0turn12view1turn13view2turn32view0 ```mermaid flowchart TD A[打开 set] --> B{选择学习模式} B --> C[Flashcards] B --> D[Learn] B --> E[Test] B --> F[Progress] C --> C1[翻卡 / 播放音频 / 打乱 / 分到 Know 或 Still Learning] D --> D1[设定目标与选项] D1 --> D2[个性化 study path] D2 --> D3[错题继续练 / 可要求重打] D3 --> F E --> E1[选题量与题型] E1 --> E2[提交后看分数与回顾] F --> F1[Not Studied / Still Learning / Mastered] F1 --> D ``` **Flashcards。**Quizlet 的 Flashcards 模式支持翻面、前后移动、完成整轮;还允许 play、shuffle,以及把卡片分进 Still learning / Know 两组,并可选择回答方向。这里最重要的设计点不是“翻卡”本身,而是它把用户主观反馈降成了**非常易懂的二元分组**。和 Anki 的 Again/Hard/Good/Easy 比,Quizlet 的词汇显著更大众。citeturn13view0turn31search2 **Learn。**Learn 是 Quizlet 最接近“调度器”的模式。官方文档写明它可以设置目标,并提供多种可定制选项,例如 answer side、question types、shuffle、audio、grading option,以及与 Write/Spell 相关的行为。对于 typed question,如果启用“retype correct answers for questions you missed”,错题会被要求重新输入正确答案。这种设计非常值得知习直接借鉴,因为它把“错题重练”从一个事后复盘动作,变成了会话内的即时闭环。citeturn12view1turn13view1 **Test。**Test 更像一次性 assessment,而不是长期 mastery 引擎。它允许用户选择题量和题型,提交后显示分数与回顾,但官方帮助明确说明:**Test 不保存 progress**。这意味着 Quizlet 自己也在区分“用于评价的模式”与“用于长期积累进度的模式”。知习应该吸收这个边界,不要把考试页和复习页混在一个调度概念里。citeturn13view2 **Write 与错题回流。**Quizlet 的 Write 帮助文档显示,系统会跟踪你答错的项目,用户可以点 “Don’t know” 看答案,然后继续;完成后还能只学习 miss 过的题。Learn 又允许对 miss 的 written question 要求重打正确答案。再加上 Progress 的 “Still Learning” 组,Quizlet 其实构成了三层错题回流:**会话内重打、模式内重练、跨模式定向回到 still learning**。这是它最适合知习借鉴的部分之一。citeturn12view11turn13view1turn32view0 **掌握度与今日任务。**Quizlet 的长期 mastery 公开得最清楚的不是公式,而是分组。Progress 会把 terms 根据 across activities 的答题表现,分成 Not Studied、Still Learning、Mastered;Progress 只在 Plus 中开放,并且不会追踪 game modes,但会在网站和移动端同步。与此同时,官方移动端 home feed 说明又显示:移动端首页会基于用户学习内容展示 quick study activities、progress updates 与 recommendations。这说明 Quizlet 对“今天学什么”的答案不是“哪些卡 due 了”,而是“哪些内容值得你现在继续学”。citeturn32view0turn31search0 **组织、搜索与分析。**Quizlet 的主要组织对象是 folders、tags 与 classes。它把 tags 定义为“像 subfolders 一样”,用来在 folder 内按 topic/subject/exam 做组织;classes 则主要面向教师,学生更多依赖 folders 与 tags。搜索方面,官方帮助支持按 school、course、word count、creator type、content type 等条件筛选。分析方面,个人侧以 Progress 为主,教师侧则有 Class Progress,可追踪 study activity 与 best scores。和 Anki 相比,Quizlet 的分析明显更偏“用户能理解的进度板”,而不是“底层调度可解释性”。citeturn25view1turn26view2turn13view3turn32view0turn26view3 **平台与收费边界。**Quizlet 官方支持 iOS、Android 与网页。帮助文档反复显示 IOS / Web / Android 三端说明,但一些能力是非对称的:导入 set 只能在网站上做,多选题 set 的创建也只能在网站上做;离线学习则被列在订阅权益里。付费方面,Quizlet 当前把 free、Plus、Plus Unlimited、Teachers 等计划区分得比较细:免费账户可学习 flashcards、practice questions、interactive diagrams and activities;而 Learn、Test、Progress、offline、custom study paths、smart grading 等则受订阅或限额影响。官方还给出一些例外:进入 class 的成员,对该 class 内的 set 可以免费用 Learn 与 Test;被分配 assignment 的学生可免广告和学习限额。对知习而言,这带来一个重要商业设计启示:**不要把整个 review loop 的关键部分切得过碎,否则用户会觉得“我不是不能学,而是每一步都差一点”。**citeturn25view0turn29view2turn26view1turn12view6turn40search2turn26view3turn10view12 ## 对照分析与十八项映射 先给出你要求的核心对照表。为了可读性,我增加了“主要来源”一列。 | 产品 | Card model | Fields | Templates | Scheduling algorithm | User feedback options | Mobile/web parity | Free limits | Error handling | Mastery metrics | Typical UX | 主要来源 | |---|---|---|---|---|---|---|---|---|---|---|---| | Anki | `note → fields → card types → cards`;一条 note 可派生多张卡 | 用户自定义 fields,note type 与 deck 独立 | 明确的 front/back template,支持 field replacement;更深层可自定义 | 公开支持 legacy SM-2 与 FSRS;学习步长、relearn、ease、desired retention、排序规则都可解释 | Again / Hard / Good / Easy;官方也说明可只用 Again/Good | 多端同步,但桌面端能力最强;AnkiWeb 主要是 companion;add-ons 偏桌面;iOS 为官方付费 app | 没有“核心复习订阅墙”;桌面与 AnkiWeb 免费,iOS 付费资助开发 | lapse→relearn;leech 默认 8 次并可 suspend;支持 forgotten cards custom study | 没有单一 mastery 分数;更多依赖 new/learn/review/relearn、young/mature、retention/stats/FSRS 属性 | queue-first、due-driven、参数导向、偏 power user | citeturn28view0turn29view0turn33search2turn17view1turn22view0turn23search0turn17view3turn3view5 | | Quizlet | `set → rows(term/definition or question/answer)`;公开模型更扁平 | term/definition 两列为主,可配语言、图片、音频、diagram;特定场景支持 multiple choice | 公开帮助中心没暴露 Anki 那样的模板层;更像固定结构 + 少量模式配置 | Learn 被描述为 personalized study path、learning science + machine learning;官方又把其与 spaced repetition、scheduled reviews、Memory Score 关联,但未公开公式 | Flashcards 中有 Know / Still Learning;Learn 有目标与题型;Write/typed 可以重打;Progress 提供定向复习入口 | iOS/Android/Web 都有;但导入与 multiple-choice 创建偏 Web;offline 属订阅能力 | free 可学 flashcards 等;Learn/Test/Progress/offline/custom study paths 等有订阅或限额边界;class/assignment 有例外 | 会话内错题重打、Write 的 missed items、Progress 的 Still Learning 组形成回流 | Progress 的 Not Studied / Still Learning / Mastered;公开功能页摘要还指向 Memory Score | mode-first、goal-driven、表层轻、偏大众用户 | citeturn26view0turn29view2turn26view1turn12view1turn35search0turn37search0turn25view0turn40search2turn12view11turn32view0 | 下面把你要求的 **18 个设计面向** 全部映射到 Anki、Quizlet 与知习建议上。 | 设计面向 | Anki 现状 | Quizlet 现状 | 对知习的建议 | 依据 | |---|---|---|---|---| | 卡片数据结构 | note/field/card type/card 分层,表达力极强 | set + term/definition 扁平模型,低摩擦 | 采用 **ContentUnit + ReviewCard + ScheduleState** 三层;不要首发就暴露模板编辑器 | citeturn28view0turn26view0 | | 卡片创建方法 | 手工添加、共享牌组、文本导入、Cloze、Image Occlusion | 手工创建、导入、复制编辑、多选题 set | 首发只做:手工创建、粘贴导入、复制一套内容;Cloze/图片遮挡列为后续 | citeturn29view0turn23search15turn29view2turn25view2 | | 学习流程 | deck overview → question → show answer → rating → next | open set → Flashcards / Learn / Test / Progress | 首页不要直接进 deck 树,改成“今日任务页 → 进入会话” | citeturn33search4turn12view0turn12view1turn32view0 | | 用户如何标记记住/忘记 | Again/Hard/Good/Easy,可降为 Again/Good | Know/Still Learning;错题由模式自动跟踪 | 默认只给“忘了 / 记得”,高级模式再露出“四键” | citeturn2view0turn31search2 | | 间隔调度 | SM-2 与 FSRS 均公开,支持 learn/relearn/review | 行为级公开,公式未公开;Learn/Memory Score 更像黑箱 | 后端采用 Anki 风格状态机;若资源足够,用 retention-target 引擎;若资源有限,先用 SM-2-lite | citeturn33search1turn17view1turn12view1turn35search0 | | 今日复习呈现 | 明确 today counts:New/Learning/Review | 没有 Anki 式 due 计数主线,更接近 recommendations + Progress | Today 页分四栏:必做复习 / 错题返练 / 今日新增 / 可选加练 | citeturn33search4turn31search0turn32view0 | | 错题如何进入返练 | lapse 进 relearn;custom study 可拉 forgotten cards | Write/typed 可重打;Still Learning 可定向刷 | 建议“会话内 delayed retry + 会话后 relearn task”双层回流 | citeturn17view3turn17view4turn12view11turn32view0 | | 掌握度推进 | 没单一 mastery score;young/mature/retention 更底层 | Not Studied / Still Learning / Mastered;另有 Memory Score 线索 | 表层用 4–5 档 mastery,底层仍按 schedule state 运转 | citeturn28view0turn32view0turn37search0 | | deck / set 组织 | deck 适合粗分类,tags 做细分;可树状 subdeck | folders、tags、classes | 容器用文件夹,细分用标签;避免首发就让用户维护深树 | citeturn28view0turn29view0turn25view1turn26view2 | | 搜索与过滤 | 强 DSL:state、due、ivl、lapses、flags、FSRS props | 搜索筛选更轻:school/course/content type 等 | 首发做“筛选 chips”,不要做 Anki 级 DSL;后续再加高级查询 | citeturn30view0turn30view2turn13view3 | | 学习分析 | 统计非常细,但更偏系统健康 | Progress 更偏用户理解的长期分组 | 知习应同时做“系统健康指标”和“用户可懂 mastery 指标”两层 | citeturn3view5turn32view0turn13view2 | | App vs Web 差异 | 桌面更强;AnkiWeb 辅助;移动端用于随时复习 | Web 更强于创建;移动更强于 daily feed 与随时学 | 接受“Web-first authoring, mobile-first review” | citeturn22view0turn23search0turn29view2turn31search0 | | 免费层限制 | 主要是平台付费差异,不是核心复习能力订阅墙 | 核心学习能力被拆进订阅与限额,且存在班级例外 | 知习不要把基础复习闭环锁进付费;把高级创作和洞察做成付费更合理 | citeturn22view0turn40search2turn26view3 | | 适合大众用户的机制 | 状态机与 due queue 很强,但 UI 过重 | 低摩擦 set、Progress 分组、模式清晰 | 复刻:二键默认、导入快、错题返练、today tasks、清晰 mastery | citeturn2view0turn31search2turn32view0 | | 初期过于高级的机制 | 模板、note type、DSL、preset、add-ons | 复杂订阅矩阵、教师生态、网站专属多选 | 首发先不要上 HTML 模板、复杂预设、全量教师功能 | citeturn23search0turn30view0turn40search2turn26view1 | | 知习应复制的核心机制 | learn/relearn/review、lapse、bury siblings、backlog order | Progress buckets、typed retry、goal/task surface | **后端复制 Anki,前端复制 Quizlet** | citeturn17view1turn17view3turn4view5turn32view0turn13view1turn31search0 | | 知习推荐数据对象 | Anki 说明了内容与调度实例分离的价值 | Quizlet 说明了扁平容器的重要性 | 设计 `StudySet / ContentUnit / ReviewCard / ScheduleState / Attempt / RetryTicket / DailyTask` | citeturn28view0turn26view0 | | 知习建议复习页流程 | Anki 擅长 due-system;Quizlet 擅长 task surface | Quizlet 擅长把目标和进度讲成人话 | Today 页任务化,Review 页单线程,错题自动回流,结束页给 mastery 变化 | citeturn33search4turn32view0turn31search0 | ## 知习集成方案 知习最稳妥的方案,是把 **“调度状态”** 与 **“用户看到的掌握度”** 分离。Anki 证明了状态机必须足够严谨,否则复习队列会失真;Quizlet 证明了掌握度必须足够简单,否则普通用户不知道自己在变好还是变差。我的建议是:**底层保留 schedule state,表层输出 mastery bucket。**citeturn28view0turn17view1turn32view0 下面这个图展示了我建议的知习双层模型:左边是调度状态,右边是面向用户的掌握层级。右侧不是独立调度器,而是由左侧状态与间隔推导出来的展示层。 ```mermaid flowchart LR subgraph 调度状态 N[New] --> L[Learn] L --> R[Review] R --> RL[Relearn] RL --> R end subgraph 用户掌握层 M0[未学] M1[在学] M2[熟悉] M3[稳定] M4[掌握] end N -.推导.-> M0 L -.推导.-> M1 RL -.推导.-> M1 R -.next interval < 7d.-> M2 R -.7d 至 20d.-> M3 R -.≥21d 且近期稳定.-> M4 ``` 知习的数据对象我建议如下。这个设计吸收了 Anki 的内容/卡片分离,也保留了 Quizlet 那种 set 容器与简单组织能力。 | 对象 / 表 | 关键字段 | 作用 | |---|---|---| | `study_set` | `set_id, owner_id, title, visibility, folder_id, tags[]` | 类似 Quizlet set / Anki deck 的容器层 | | `content_unit` | `unit_id, set_id, fields_json, media_json, source_type` | 知识内容原子,对应 Anki note 的简化版 | | `card_blueprint` | `blueprint_id, answer_mode, prompt_mapping, answer_mapping` | 只做平台定义,不首发开放用户 HTML 模板 | | `review_card` | `card_id, unit_id, blueprint_id, sibling_group_id, status` | 真正被调度的一张卡,类似 Anki card instance | | `schedule_state` | `card_id, engine, state, step_index, due_at, interval_days, ease_factor, stability, difficulty, retrievability, lapse_count` | 调度内核;SM-2 字段与 FSRS 字段可以共存 | | `review_attempt` | `attempt_id, session_id, card_id, mode, rating, correctness, latency_ms, answered_at` | 记录每次作答事件,供调度与分析使用 | | `retry_ticket` | `ticket_id, card_id, source_attempt_id, retry_after_cards, retry_after_at, reason` | 会话内错题返练队列 | | `mastery_snapshot` | `card_id, mastery_bucket, mastery_score, updated_at` | 给 Today、列表页、详情页直接读 | | `daily_task` | `task_id, user_id, task_type, date, card_count, query_scope` | Today 页的任务对象 | | `study_session` | `session_id, user_id, task_id, started_at, ended_at, stats_json` | 会话层,承载 streak、耗时、Again 率等 | 知习的默认调度参数,我建议不要把 Anki 的所有高级参数都暴露给用户;但产品内部需要一套明确默认值。这里我给出一个**FSRS-ready,但可用 SM-2 fallback 落地**的方案。之所以把新卡量设得更低,是因为 Anki 官方已经明确提示:20 张新卡/天对很多人会推高到约 200 次复习/天,这对大众用户太重。citeturn4view0 | 参数 | 建议默认值 | 是否暴露给用户 | 说明 | |---|---|---|---| | 每日新增上限 | `8` | 暴露 | 用“今日新增上限”表达,不让用户碰底层步长 | | 今日必做复习 | `全部 due`;若 backlog 很大,先切 `60` 张为建议批次 | 半暴露 | 不硬性吞掉 due,而是用“先完成这一批”分段 | | 学习步长 | `10m, 1d` | 不暴露 | 保留 Anki “同日巩固 + 次日复现”的好处 | | 新卡 Easy 毕业间隔 | `3d` | 不暴露 | 比 1d/2d 更像“真轻松” | | 重学步长 | `10m` | 不暴露 | 错题先做短时回流 | | lapse 最小间隔 | `1d` | 不暴露 | 与 Anki 默认一致,避免当日无限打转 | | desired retention | `0.90` | 不直接暴露 | 用“轻松 / 标准 / 冲刺”三档映射,例如 0.86 / 0.90 / 0.93 | | 如果走 SM-2 fallback:starting ease | `2.50` | 不暴露 | 兼容 Anki 风格增长 | | 如果走 SM-2 fallback:hard interval | `1.20` | 不暴露 | 保守增长 | | 如果走 SM-2 fallback:easy bonus | `1.30` | 不暴露 | 奖励真正熟练项 | | 如果走 SM-2 fallback:lapse new interval | `0.20` | 不暴露 | 我建议比 Anki 默认 0.00 更温和,减少大众用户挫败 | | leech 阈值 | `8` | 不暴露 | 但不要首发就自动 suspend;先提示“建议重写这张卡” | 在用户交互层,我建议知习采用 **二键默认 + 四键高级模式**。理由很简单:Anki 官方明确表示用户完全可以只用 Again 和 Good;而大众学习者通常并不天然理解 Hard 与 Easy 的调度含义。知习可以默认只展示“忘了 / 记得”,用户在设置里切换成“忘了 / 吃力 / 记得 / 很熟”。这样在行为数据上仍可兼容更细粒度评分,但不会让首日用户被算法语义绊住。citeturn2view0 知习还应该把错题回流做成**双轨机制**:一条轨是 Quizlet 风格的会话内短延迟重试,另一条轨是 Anki 风格的会话后重学。也就是说,用户这道题答错以后,不只是在统计里 +1,而是立刻生成一张 `retry_ticket`,例如“隔 3 题后再见一次”;与此同时,这张卡的 schedule state 也进入 `relearn`,例如 10 分钟后重新出现。这样既能抓住短时纠错窗口,又不至于当场无限循环。这个想法直接来自 Anki 的 relearn steps 与 Quizlet 的 retype missed answers。citeturn17view3turn13view1turn12view11 知习的 Today 页我建议做成下面这样的任务流,而不是传统 deck list。这个设计既保留了 Anki 的 due 严肃性,也借了 Quizlet 的 task 化表达。citeturn33search4turn32view0turn31search0 ```mermaid flowchart TD A[Today 页面] --> B[必做复习] A --> C[错题返练] A --> D[今日新增] A --> E[可选加练] B --> F[开始会话] C --> F D --> F E --> F F --> G[ReviewCard] G --> H{作答模式} H -->|自评| I[展示答案后评分] H -->|客观判分| J[输入/选择后自动判分] I --> K{是否做错} J --> K K -->|是| L[生成 retry_ticket + 进入 relearn] K -->|否| M[更新 schedule_state + mastery_snapshot] L --> N[隔 3 题后再试] M --> O[下一张] N --> O ``` 知习的 API / 事件流也应该围绕 “任务、尝试、调度、掌握、返练” 五类对象组织。我建议的典型链路如下。 ```mermaid sequenceDiagram participant U as User participant A as App participant API as Review API participant S as Scheduler participant M as Mastery Engine U->>A: 打开 Today A->>API: GET /daily-tasks/today API->>S: 生成 due/new/relearn 队列 S-->>API: 任务列表 + 首卡 API-->>A: Today 数据 U->>A: 提交作答 A->>API: POST /review-attempts API->>S: 更新 schedule_state API->>M: 重算 mastery_snapshot S-->>API: next due / retry ticket M-->>API: mastery 变化 API-->>A: 下一张卡 + 提示文案 + 计数更新 ``` 配套的接口大致可以长这样: ```json GET /v1/review/daily-tasks/today { "date": "2026-05-21", "tasks": [ {"taskType": "due_review", "count": 42}, {"taskType": "error_repractice", "count": 9}, {"taskType": "new_cards", "count": 8}, {"taskType": "optional_drill", "count": 15} ] } ``` ```json POST /v1/review/attempts { "sessionId": "sess_123", "taskType": "due_review", "cardId": "card_456", "mode": "self_rate", "rating": "again", "correctness": false, "latencyMs": 7400, "answeredAt": "2026-05-21T09:35:12Z" } ``` ```json { "nextCardId": "card_789", "scheduleState": { "state": "relearn", "dueAt": "2026-05-21T09:45:12Z", "intervalDays": 0 }, "retryTicket": { "queued": true, "retryAfterCards": 3 }, "mastery": { "bucket": "在学", "score": 0.38 } } ``` 最后,知习的复习页本身不要塞太多功能。一个好的 ReviewCard 页只需要五个东西:**题面、可选提示、答案区/作答区、单一主操作、简短反馈。**Anki 擅长严肃地推进状态,Quizlet 擅长让用户“不思考系统,只思考题目”。知习首版应该优先追求后者的简洁表层,再把前者的严谨状态机藏到系统里。citeturn33search4turn12view0turn12view1 ## 分阶段取舍 如果只看“适合大众用户”的机制,我会把知习首发的 P0 重点放在下表这些东西上。这些能力几乎都可以直接从 Anki 与 Quizlet 的强项里找到动机。 | 机制 | 建议阶段 | 为什么必须先做 | |---|---|---| | Today 任务页 | P0 | 让“今天学什么”一眼可见,避免让用户先理解 deck 结构 | | 二键默认评分 | P0 | 降低 Anki 式评分成本,同时保留以后升级四键的空间 | | learn / review / relearn 三种核心状态 | P0 | 这是复习系统真实性能的底盘 | | 会话内错题 delayed retry | P0 | 直接提升错题纠正效率,成本低、感知强 | | 会话后 relearn 队列 | P0 | 让“错题”真正进入未来,而不是只留在统计 | | 掌握度 buckets | P0 | 用用户能看懂的方式表达长期进步 | | 粘贴导入与快速建卡 | P0 | 借 Quizlet 的低摩擦优势,加速冷启动 | | 文件夹 + 标签 | P0 | 够用且简单,比深层牌组树更适合大众 | 这些建议分别来自 Anki 的状态机、relearn、today 概览,以及 Quizlet 的 Flashcards、Progress、导入创建和任务化推荐。citeturn33search4turn17view3turn31search2turn32view0turn29view2turn31search0 相反,下面这些东西很强,但我明确不建议知习在首发阶段做满。 | 机制 | 建议阶段 | 为何不适合首发 | |---|---|---| | 用户自定义 HTML/CSS 模板 | 后续 | 表达力强,但学习成本和 QA 成本都高 | | 多 note type / 多 card type 自定义编辑器 | 后续 | 适合高级用户,不适合大众应用首日 | | Anki 级搜索 DSL / Filtered Deck Builder | 后续 | 功能强,但心智负担极高 | | 手动调 ease / FSRS 参数 / 预设矩阵 | 后续 | 大众用户不会用,且容易误用 | | 自动 suspend leech | 后续 | 对普通用户来说太“黑箱”,更适合先做提示而非自动惩罚 | | 复杂教师 / 班级 / 课堂分发体系 | 后续 | 除非知习首发就是教育机构产品,否则不应抢占主线 | | 过碎的订阅矩阵 | 慎用 | Quizlet 当前就展示了一个例子:功能多层切分会影响认知简洁度 | 其依据也很明确:Anki 的模板、预设、加插件、DSL 搜索都强,但明显面向更高意愿学习系统本身的人群;Quizlet 的复杂订阅层、教师例外、多端能力差异,则说明能力拆分一多,产品表层很容易“到处差一点”。citeturn23search0turn30view0turn23search8turn40search2turn26view3 如果只能用一句话概括知习的产品路线,我的建议是: **首发做硬复习,不做硬配置;首发做清晰任务,不做复杂体系;首发做错题闭环,不做参数控制台。** 从具体路线看,我建议: - **P0**:Today 任务页、ReviewCard、二键评分、错题短延迟重试、relearn、导入建卡、基础 mastery。 - **P1**:四键高级模式、按标签/掌握度定向加练、考试前冲刺、兄弟卡 bury、更多客观判分题型。 - **P2**:网页高级内容编辑器、模板系统、搜索 DSL、教师班级、公开 Memory Score 解释页。 ## 开放问题与局限 关于 Quizlet,有两点需要明确说明。第一,**我能直接获取到的官方帮助中心正文,没有像 Anki 一样公开其按钮到间隔的精细调度公式**;第二,Quizlet 官方公开页面与搜索摘要已经明显出现了 **spaced repetition、scheduled reviews、Memory Score** 这组表述,但部分功能页正文无法直接抓取,因此我在报告里只把它们当作**产品方向信号**,而不是可逐项落地的算法文档。citeturn12view1turn35search0turn37search0 因此,如果知习团队当前最关心的是**调度实现**,应优先按 Anki 的公开机制来设计;如果最关心的是**大众用户上的产品包装**,应优先按 Quizlet 的 Learn / Progress / home feed 逻辑来做表层体验。换言之,**算法看 Anki,交互看 Quizlet**,这是本报告最稳的结论。citeturn17view1turn33search4turn32view0turn31search0