docs: 补全复习回路设计

This commit is contained in:
cat-shark
2026-09-19 22:43:47 +08:00
parent da2ad925f4
commit 5208dd0352
8 changed files with 168 additions and 8 deletions
+5 -1
View File
@@ -15,7 +15,11 @@
| 有效学习时间 | 学习会话中未暂停的实际投入时间 | [时间与效率](time-and-efficiency.md) |
| 任务优先级 | 由多个维度综合计算出的学习任务排序依据 | [任务优先级](priority.md) |
| 应用场景 | 学到的知识可以被使用到什么地方 | [应用场景](application-scenario.md) |
| 复习 Feed | 滚动展示知识碎片和学习报告的记忆触发物 | [复习 Feed](review-feed.md) |
| 复习总览 | 按任务汇总可复习内容、掌握度与最近复习时间的入口 | [复习总览](review-overview.md) |
| 复习 Feed | 滚动展示知识碎片的记忆触发物,只显示摘要 | [复习 Feed](review-feed.md) |
| 标准思维导图 | 每个学习任务对应的知识结构基准 | [标准思维导图](standard-mind-map.md) |
| 回忆对比 | 用户凭记忆重建知识结构并与标准导图比较 | [回忆对比](recall-review.md) |
| 回忆记录 | 一次回忆对比的存档,含起点、三类节点与覆盖率 | [回忆对比](recall-review.md) |
| 覆盖率 | 本次对比命中节点占参与对比节点的比例 | [回忆对比](recall-review.md) |
| 复习起点 | 用户指定的对比起始节点,只复习该子树 | [回忆对比](recall-review.md) |
| AI 任务 | 系统借助 AI 完成报告聚合、导图生成和语义对比 | [AI 任务](ai-task.md) |
+1 -1
View File
@@ -31,7 +31,7 @@
- 学习预期:报告中回答“实际学了什么”。
- 内容归属:决定碎片在报告中的分组,也决定它进入哪份标准思维导图。
- 标准思维导图:报告参与导图生成。
- 复习 Feed报告也参与碎片化展示
- 复习 FeedFeed 的条目单位是碎片;报告以会话完整结果的形态从任务记录进入回顾
## 设计思路
+37
View File
@@ -10,6 +10,41 @@
- 遗漏:标准导图中有、用户没有回忆出来的内容。
- 额外:用户回忆起但标准导图中没有明确出现的内容。
## 复习起点
用户可以指定一个节点作为复习起点,只对比该节点及其子树。起点让“只想巩固一小块”成为可能,不必每次面对整棵树。
不指定起点时,对比覆盖整棵标准导图。起点会记录在回忆记录中,便于之后回看“上次是从哪里复习的”。
## 回忆记录
每一次回忆对比都会留下一条回忆记录,包含:
- 发生时间。
- 复习起点(或整棵树)。
- 命中、遗漏、额外的节点集合。
- 覆盖率。
回忆记录有三个用途:
- 让用户看到掌握程度的变化,而不是只有一次结论。
- 为复习排序提供任务级掌握度:最近一条记录的覆盖率。
- 让遗漏项在下一次复习时仍然可以被定位。
## 覆盖率
覆盖率是本次对比的命中节点数占参与对比的节点数的比例。
它衡量的是“这次回忆起了多少结构”,不是“学了多久”,也不是“学得好不好”。因此它只作为事实呈现:覆盖率低表示这次漏得多,不表示用户落后。
覆盖率按任务聚合成**掌握度**,是复习排序的输入之一;单条碎片不单独计算覆盖率,避免把碎片变成需要逐个处理的对象。
## 遗漏项回溯
遗漏项是标准导图中有、用户没有回忆出来的节点。每个遗漏项都能回看它的来源(学习报告、知识碎片或应用场景),并在标准导图上定位。
遗漏项是本次对比的快照,不是跨次累计的待办集合:系统不提供“处理完所有遗漏项”的流程,也不统计还有多少条没处理。
## 设计意图
回忆对比把“是否记住了”变成可见的结构差异:
@@ -23,6 +58,8 @@
- 标准思维导图:对比的基准。
- 复习起点:用户可以选择从某个节点开始,只复习该子树。
- 知识碎片与学习报告:遗漏项可追溯回原文。
- 复习总览:消费覆盖率形成的任务级掌握度。
- 复习 Feed:排序权重按任务掌握度计算。
- AI 任务:语义对比可以由 AI 完成,也可降级到文本相似度匹配。
## 设计思路
+11 -2
View File
@@ -2,7 +2,9 @@
## 定义
复习 Feed 是滚动展示用户自己写过的知识碎片和学习报告的轻量复习入口。它只显示内容摘要,用户看到后可以回想上下文,也可以点击进入详情。
复习 Feed 是滚动展示用户自己写过的知识碎片的轻量复习入口。它只显示内容摘要,用户看到后可以回想上下文,也可以点击进入详情。
Feed 的条目单位是知识碎片。学习报告不以条目形式出现在 Feed 中:报告是“一次会话的完整结果”,从学习任务的记录进入回顾,避免同一段内容以两种形态重复出现。
## 设计意图
@@ -14,10 +16,17 @@
## 相关概念
- 知识碎片与学习报告Feed 的内容来源。
- 知识碎片:Feed 的唯一内容来源。
- 内容归属:Feed 里的归类动作改变碎片的归属。
- 复习总览:任务级入口,与 Feed 的条目级展示互补。
- 回忆卡片:点击 Feed 内容后,先让用户尝试回忆再展开原文。
- 回忆对比:Feed 是进入深度复习的入口之一。
- 复习排序:合并“多久没接触”与任务掌握度两个信号,只影响出现概率。
## 设计思路
滚动展示适合“播种”记忆,主动回忆适合“巩固”记忆。系统把两者结合:先低门槛展示,再在用户点击时引导回忆。
Feed 只给摘要,全文在详情里按需展开:滚动场景下全文既拖慢浏览,也让用户跳过“先尝试回忆”这一步。
Feed 同时是归类成本最低的位置:看到一条内容时顺手确认它属于哪个任务,不需要额外的整理流程。归类动作与复习动作放在一起的原因见[模块边界](../design/module-boundaries.md)。
+32
View File
@@ -0,0 +1,32 @@
# 复习总览
## 定义
复习总览是复习的任务级入口。它把用户的学习任务按“有什么可复习、掌握到什么程度、多久没复习过”列出来,让用户决定从哪个任务开始。
它不展示单条内容:单条内容的偶遇式回顾发生在[复习 Feed](review-feed.md) 里。
## 总览呈现什么
- **可复习内容的规模**:该任务下有多少知识碎片。学习报告不以报告为单位重复计数,它包含的碎片已经在碎片里各出现过一次。
- **掌握度**:该任务最近一次回忆对比的覆盖率。
- **最近复习时间**:距上次回忆对比过去了多久。
- **待归类内容**:尚未确定内容归属的碎片,见[内容归属](knowledge-ownership.md)。
## 设计意图
- 用户主动想复习时,需要一个“从哪里开始”的列表。总览只是入口选择,不是必须完成的清单:不产生到期、逾期、落后等压力信号。
- 任务级聚合让复习聚焦在有知识结构的对象上,碎片不单独成为待办项。
- 待归类内容必须在这里被看见:否则用户不知道有哪些内容还没有归属,归类也就无从发生。
## 相关概念
- 学习任务:总览的行单位。
- 内容归属:决定内容进入哪个任务,也决定待归类内容是否出现在这里。
- 标准思维导图:从任务进入深度复习的对象。
- 回忆记录与覆盖率:掌握度的来源。
- 复习 Feed:条目级的偶遇展示,与总览互补。
## 设计思路
总览只呈现事实——数量、覆盖率、时间,不给“你该复习了”的判断,也不做风险等级。掌握度低、久未复习的任务可以自然排在前面,但不被标记为落后。
+5 -3
View File
@@ -21,11 +21,13 @@
负责消费学习执行产生的材料:
- 滚动展示知识碎片和学习报告
- 按任务汇总复习状态(复习总览)
- 滚动展示知识碎片(复习 Feed)。
- 维护标准思维导图。
- 提供回忆对比和遗漏项回溯。
- 提供回忆对比、回忆记录和遗漏项回溯。
- 承接内容归属的调整动作与待归类内容的处理入口。
复习模块不要求用户逐条整理学习材料,材料是自动整理和对照分析的数据来源。复习按内容归属聚合,而不是按内容产生于哪次会话:这是归类动作与复习动作放在一起的原因。
复习模块不要求用户逐条整理学习材料,材料是自动整理和对照分析的数据来源。复习按内容归属聚合,而不是按内容产生于哪次会话:这是归类动作与复习动作放在一起的原因。复习不做调度:不生成到期清单,只影响内容的出现概率。
## 应用场景
+2
View File
@@ -30,6 +30,8 @@ LPT 是辅助学习与生活的工具。系统可以量化、提醒、建议,
随机展示是为了制造偶然接触,智能排序是为了让偶然接触更接近真正需要复习的内容。两者结合,而不是互相替代。
因此复习不做到期清单:系统只调整出现概率,不生成必须完成的队列,也不因为长期未复习而判定用户落后。
## AI 增强,但不依赖
AI 负责降低书写负担、提取知识结构和进行语义比较。核心学习流程必须在 AI 不可用时仍然可用,通过内置规则继续完成基本功能。
+75 -1
View File
@@ -1,5 +1,21 @@
# 复习回路
## 复习系统的立场
复习是记忆机制,不是任务清单。系统只做两件事:
- 让学过的内容以低阻力反复出现在用户眼前,为记忆播种。
- 在用户愿意的时候提供主动提取的机会,让记忆被巩固。
明确不做的事:
- 不做间隔重复调度:系统不计算“下次复习日期”,不生成到期队列,也不做逾期提醒。
- 不做打卡与连续天数,不统计“复习完成率”。
- 不做评分与等级:覆盖率是事实,不是成绩。
- 不要求用户处理完所有遗漏项。
任何让复习变成“必须完成的清单”的改动,都违背这条立场。复习可以影响“什么更容易被看到”,但不能制造“欠下的债”。
## 复习的两种机制
系统把两种记忆机制组合在一起:
@@ -7,6 +23,23 @@
1. 偶然接触:通过滚动 Feed 让用户无意识看到自己写过的内容,为记忆“播种”。
2. 主动回忆:用户点击内容后先尝试回忆,再展开原文,通过提取练习巩固记忆。
## 复习内容来源
| 来源 | 在复习中的角色 |
|------|----------------|
| 知识碎片 | 复习的基本单位,也是 Feed 的条目 |
| 学习报告 | 一次会话的完整结果,从任务记录进入回顾 |
| 标准思维导图 | 深度复习的对照基准与结构来源 |
| 应用场景 | 复习的现实语境,参与导图 |
| 回忆记录 | 复习产生的历史,用于展示掌握变化与计算任务掌握度 |
学习时间与效率数据不进入复习内容:它们属于时间轴,回答的是投入了多少,而不是记得怎么样。
## 复习的两个层级
- **任务级**:复习总览回答“从哪个任务开始复习”,见 [复习总览](../concepts/review-overview.md)。
- **内容级**:复习 Feed 回答“这次遇到哪条内容”,见 [复习 Feed](../concepts/review-feed.md)。
## 从轻量复习到深度复习
```text
@@ -41,6 +74,8 @@
- 遗漏的内容直接指出需要回看哪里。
- 额外回忆的内容可能是用户自己的联想,也值得保留。
每次对比都会留下一条[回忆记录](../concepts/recall-review.md),记录这次回忆的起点、三类节点与覆盖率。覆盖率按任务聚合成掌握度,是复习排序的输入之一。
## 进入回忆对比的入口
回忆对比不应该只有一个入口。系统提供三种入口,它们对应不同的复习心态:
@@ -53,4 +88,43 @@
## 智能排序与随机性
复习内容不应完全随机,也不应被强制排序。系统可以综合“多久没复习”和“上次回忆覆盖率”让更需要复习的内容更常出现,同时保留随机感。
复习内容不应完全随机,也不应被强制排序。系统综合两个信号调整内容的出现概率:
- **多久没接触**:距内容产生(或最近一次出现)越久,权重越高;时间效应在到达上限后不再增长。
- **任务掌握度**:最近一次回忆对比的覆盖率越低,权重越高;从未回忆过的任务视为最需要复习。
两个信号只影响“出现的概率”,不产生到期、逾期、优先级标记。随机性被保留:每条内容都有机会出现,包括刚刚复习过的内容。信号强度可配置,默认值按“时间效应为主、掌握度为辅”设定。
## 复习中的归类
复习是内容归类的最低成本时机:用户已经看到这条内容,此时决定它属于哪个任务不需要额外整理流程。
- 待归类内容在复习总览中可见,在 Feed 中可归类。
- 归类动作就近提供,一次交互完成;AI 只给建议,用户可一键接受或忽略。
- 归属改变后,内容进入新任务的导图取材范围,原任务与新任务的导图都标记为待更新;复习排序权重按任务掌握度自动跟随,不需要单独处理。
## 复习中的反馈动作
复习目前只有“看到 → 展开 → 深入”的路径,用户不能表达“这条我已经很熟”或“这条我要再看看”。设计上区分两种反馈:
- **无需记录的反馈**:展开查看、进入回忆对比,本身就是复习行为,不产生额外数据。
- **需要记录的反馈**:用户主动标记“已掌握”或“稍后再看”,用于调整出现概率。
反馈动作的存在方式列入待决问题:它既可能帮助系统更准地安排内容,也可能把复习拖回清单模式。
## AI 在复习中的边界
- 回忆对比的语义匹配由 AI 增强,AI 不可用时降级为文本相似度匹配。
- 归类建议由 AI 增强,AI 不可用时降级为关键词与历史归属的规则建议;规则也不可用时不做建议,不影响复习流程。
- AI 不参与“该复习什么”的判定:排序信号来自时间与回忆记录,AI 只影响匹配与建议。
## 待决问题
以下问题需要维护者确认后再进入实现:
1. **Feed 是否包含学习报告?** 本文档的取向是:Feed 只出知识碎片,报告以“会话完整结果”的形态从任务记录进入,不与碎片并列成条目,避免同一段内容以两种形态重复出现。
2. **复习反馈动作的形态。** 可选:只读(现状)/加“已掌握 / 稍后再看”轻反馈并参与权重/只提供“稍后再看”而不提供“已掌握”。轻反馈是否会演变成清单,是本项的核心顾虑。
3. **覆盖率口径。** 本文档暂按“最近一次回忆对比”计算;另一种做法是取最近若干次的加权结果,代价是变化被平滑、遗忘的征兆出现得更晚。
4. **待归类内容的呈现方式。** 在复习总览中独立成一类“待归类”,还是在 Feed 中与其他内容混排并打标;以及归类动作是否必须在卡片上可完成。
5. **遗漏项的语义。** 本文档按“每次对比的快照 + 可回看原文”设计,不做跨次累计的待处理集合。若改为累计,需要重新论证它不会变成待办清单。
6. **排序信号是否可配置。** 掌握度与时间效应的强度是否像任务优先级权重那样对用户开放,还是固定为默认值。