startup-plan/核心架构/deep-research-report (4).md

364 lines
40 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 知习复习系统设计研究报告
## 执行摘要
这份报告的核心判断很明确:**知习不应该简单复刻 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、tagsAnki 负责据此生成卡片。官方还提供 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<br/>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 cardHard 在第一步会取前两步的平均值在后续步则重复当前步。若当前没有别的题可做Anki 默认会把 learning 卡提前最多 20 分钟展示;若步长跨过 day boundary则会自动转成“天”为单位。这个设计告诉我们Anki 把“当天记忆巩固”与“长期间隔调度”分成了两层而不是让一个公式包办所有事情。citeturn34search3turn33search3turn34search1
**SM-2 模式下的复习调度。**Anki 23.10+ 同时支持 legacy SM-2 家族算法与 FSRS。SM-2 分支的关键参数在官方手册中公开得很清楚Starting Ease 默认 2.50Hard Interval 默认 1.20Easy Bonus 默认 1.30Interval 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 可能是 35 天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 阶段忘记的卡定义为 lapseAgain 会让它进入 relearningminimum 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 帮助文档显示,系统会跟踪你答错的项目,用户可以点 “Dont 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、MasteredProgress 只在 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 可派生多张卡 | 用户自定义 fieldsnote type 与 deck 独立 | 明确的 front/back template支持 field replacement更深层可自定义 | 公开支持 legacy SM-2 与 FSRS学习步长、relearn、ease、desired retention、排序规则都可解释 | Again / Hard / Good / Easy官方也说明可只用 Again/Good | 多端同步但桌面端能力最强AnkiWeb 主要是 companionadd-ons 偏桌面iOS 为官方付费 app | 没有“核心复习订阅墙”;桌面与 AnkiWeb 免费iOS 付费资助开发 | lapse→relearnleech 默认 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 LearningLearn 有目标与题型Write/typed 可以重打Progress 提供定向复习入口 | iOS/Android/Web 都有;但导入与 multiple-choice 创建偏 Weboffline 属订阅能力 | 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 countsNew/Learning/Review | 没有 Anki 式 due 计数主线,更接近 recommendations + Progress | Today 页分四栏:必做复习 / 错题返练 / 今日新增 / 可选加练 | citeturn33search4turn31search0turn32view0 |
| 错题如何进入返练 | lapse 进 relearncustom study 可拉 forgotten cards | Write/typed 可重打Still Learning 可定向刷 | 建议“会话内 delayed retry + 会话后 relearn task”双层回流 | citeturn17view3turn17view4turn12view11turn32view0 |
| 掌握度推进 | 没单一 mastery scoreyoung/mature/retention 更底层 | Not Studied / Still Learning / Mastered另有 Memory Score 线索 | 表层用 45 档 mastery底层仍按 schedule state 运转 | citeturn28view0turn32view0turn37search0 |
| deck / set 组织 | deck 适合粗分类tags 做细分;可树状 subdeck | folders、tags、classes | 容器用文件夹,细分用标签;避免首发就让用户维护深树 | citeturn28view0turn29view0turn25view1turn26view2 |
| 搜索与过滤 | 强 DSLstate、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-systemQuizlet 擅长 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 fallbackstarting ease | `2.50` | 不暴露 | 兼容 Anki 风格增长 |
| 如果走 SM-2 fallbackhard interval | `1.20` | 不暴露 | 保守增长 |
| 如果走 SM-2 fallbackeasy bonus | `1.30` | 不暴露 | 奖励真正熟练项 |
| 如果走 SM-2 fallbacklapse 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