From c25417f4ad56f2eeb8768f3f96691c7ea1245b5a Mon Sep 17 00:00:00 2001 From: cat-shark Date: Sun, 20 Sep 2026 00:28:21 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=96=B0=E5=A2=9E=E5=AD=A6=E4=B9=A0?= =?UTF-8?q?=E5=BC=95=E5=AF=BC=E4=B8=8E=E7=BB=9F=E4=B8=80=E6=A0=87=E8=AE=B0?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/concepts/README.md | 6 ++-- docs/concepts/ai-task.md | 6 +++- docs/concepts/knowledge-ownership.md | 8 +++-- docs/concepts/learning-guidance.md | 50 ++++++++++++++++++++++++++++ docs/concepts/learning-report.md | 2 +- docs/concepts/marker.md | 46 +++++++++++++++++++++++++ docs/concepts/review-feed.md | 1 + docs/concepts/review-overview.md | 3 +- docs/concepts/standard-mind-map.md | 1 + docs/concepts/time-and-efficiency.md | 4 +-- docs/design/module-boundaries.md | 3 +- docs/design/review-loop.md | 10 ++++-- docs/design/system-structure.md | 4 +-- 13 files changed, 129 insertions(+), 15 deletions(-) create mode 100644 docs/concepts/learning-guidance.md create mode 100644 docs/concepts/marker.md diff --git a/docs/concepts/README.md b/docs/concepts/README.md index 09fec7d..39473a1 100644 --- a/docs/concepts/README.md +++ b/docs/concepts/README.md @@ -9,11 +9,12 @@ | 学习预期 | 开始学习前对本次学习目标的描述 | [学习预期](learning-expectation.md) | | 知识碎片 | 学习中随手记录的不完整内容,也称“学习报告残片” | [知识碎片](knowledge-fragment.md) | | 内容归属 | 一条知识碎片在知识结构上属于哪个学习任务 | [内容归属](knowledge-ownership.md) | -| 记录上下文 | 碎片产生于哪次学习会话与任务,不可变且不可为空 | [内容归属](knowledge-ownership.md) | +| 记录上下文 | 碎片产生于哪次学习会话或复习行为,不可变且不可为空 | [内容归属](knowledge-ownership.md) | +| 标记 | 附加在对象上的轻量元信息(来源、标签等),统一存放 | [标记](marker.md) | | 待归类 | 尚未确定内容归属的碎片状态 | [内容归属](knowledge-ownership.md) | | 学习报告 | 一次学习结束后汇总出的结构化学习结果 | [学习报告](learning-report.md) | | 有效学习时间 | 学习会话中未暂停的实际投入时间 | [时间与效率](time-and-efficiency.md) | -| 复习耗时 | 复习行为(回忆对比、引导追问)的耗时,独立于学习时间 | [时间与效率](time-and-efficiency.md) | +| 复习耗时 | 复习行为(回忆对比、学习引导)的耗时,独立于学习时间 | [时间与效率](time-and-efficiency.md) | | 任务优先级 | 由多个维度综合计算出的学习任务排序依据 | [任务优先级](priority.md) | | 应用场景 | 学到的知识可以被使用到什么地方 | [应用场景](application-scenario.md) | | 复习总览 | 按任务汇总可复习内容、掌握度与最近复习时间的入口 | [复习总览](review-overview.md) | @@ -23,4 +24,5 @@ | 回忆记录 | 一次回忆对比的存档,含起点、三类节点与覆盖率 | [回忆对比](recall-review.md) | | 覆盖率 | 本次对比命中节点占参与对比节点的比例 | [回忆对比](recall-review.md) | | 复习起点 | 用户指定的对比起始节点,只复习该子树 | [回忆对比](recall-review.md) | +| 学习引导 | 用开放式问题引出回答、由 AI 纠正概念边界的复习行为 | [学习引导](learning-guidance.md) | | AI 任务 | 系统借助 AI 完成报告聚合、导图生成和语义对比 | [AI 任务](ai-task.md) | diff --git a/docs/concepts/ai-task.md b/docs/concepts/ai-task.md index 6751f35..2884b34 100644 --- a/docs/concepts/ai-task.md +++ b/docs/concepts/ai-task.md @@ -2,11 +2,12 @@ ## 定义 -AI 任务是系统使用 AI 完成的三类学习处理能力: +AI 任务是系统使用 AI 完成的学习处理能力: - 聚合报告:把知识碎片整理成结构化学习报告草稿——会话摘要、预期达成判断、按归属分组的碎片,以及自由总结草稿。 - 生成导图:从报告、碎片和应用场景中提取标准思维导图。 - 回忆对比:对用户回忆与标准导图进行语义层面的比较。 +- 学习引导:用一个开放式问题引出用户的回答,检查回答里隐含的概念边界问题并纠正,产出交用户确认后记成知识碎片。 ## 设计意图 @@ -20,8 +21,11 @@ AI 用于降低用户的书写和整理负担: AI 是增强能力,而不是单点依赖。AI 不可用时,系统应能用内置规则继续完成报告拼接、导图生成和字符串匹配,保证核心学习流程不中断:报告降级为按内容归属分组碎片并生成摘要,自由总结留空由用户填写。 +例外:学习引导不提供降级形态。它不属于核心闭环,AI 不可用时该功能整体不可用。 + ## 相关概念 - 学习报告:AI 聚合碎片的产出。 - 标准思维导图:AI 生成或增量更新的对象。 - 回忆对比:AI 负责语义匹配的环节。 +- 学习引导:允许完全依赖 AI 的能力。 diff --git a/docs/concepts/knowledge-ownership.md b/docs/concepts/knowledge-ownership.md index ad8d8bd..79de5b5 100644 --- a/docs/concepts/knowledge-ownership.md +++ b/docs/concepts/knowledge-ownership.md @@ -35,6 +35,8 @@ 归属保持**单一**是有意的:多归属会让同一条内容出现在多张导图里、被回忆对比重复计数,聚合与统计都会出现歧义。一条内容确实横跨两个领域时(例如"1B"同时属于英语与 AI),用标签表达弱关联即可。 +标签与来源标记等弱信息统一由[标记](marker.md)承载,不在碎片表里各自加字段。 + ## 核心原则 **时间按真实发生的行为统计,内容按内容归属聚合。** @@ -42,7 +44,7 @@ 这条原则把两条轴彻底分开: - 学习时间、有效性、番茄钟、遗忘判定——全部按学习会话,不受归属影响。一次会话实际投入的时间不会因为碎片被归类到别处而改变。 -- 复习耗时——按复习行为(回忆对比、引导追问)统计,与学习时间独立,不合并也不换算。 +- 复习耗时——按复习行为(回忆对比、学习引导)统计,与学习时间独立,不合并也不换算。 - 标准思维导图的素材、复习内容、按任务的检索——全部按归属,不受产生地点影响。 推论:**学习报告按会话生成**(它是"这次学习产出了什么"的事实记录),而**标准思维导图按归属聚合**。同一份数据因此有两种视角,这是设计意图,不是重复。 @@ -85,13 +87,13 @@ - 标准思维导图:按归属聚合的核心消费者。 - 学习报告:按会话生成,与归属口径不同。 - 复习 Feed:归类动作的最低成本落点,也是旁支内容的复习入口。 -- 复习行为(回忆对比、引导追问):另一类记录上下文;追问产生的碎片默认归属被追问概念所属的学习任务。 +- 复习行为(回忆对比、学习引导):另一类记录上下文;学习引导产生的碎片默认归属被引导概念所属的学习任务。 - AI 任务:只提供归属建议,不作为判定依据。 ## 已确认的结论 以下三点于 2026-09-19 由维护者确认: -1. **碎片不可脱离记录上下文。** 不存在没有记录上下文的内容:每一条碎片都产生于某次学习会话或某次复习行为(回忆对比、引导追问),因此一定有可追溯的产生场景。代价是系统不向可以随手记录的通用笔记工具演进,这是有意的边界。 +1. **碎片不可脱离记录上下文。** 不存在没有记录上下文的内容:每一条碎片都产生于某次学习会话或某次复习行为(回忆对比、学习引导),因此一定有可追溯的产生场景。代价是系统不向可以随手记录的通用笔记工具演进,这是有意的边界。 2. **学习报告改为结构化呈现。** 报告由会话摘要、预期达成判断、按归属分组的碎片和自由总结组成;旁支碎片仍留在本次报告中,只单独标注归属、不参与正文推演。自由总结必须保留,否则卡点与下一步无处表达。 3. **内容归属保持单一,跨领域关联由标签承担。** 学习内容很少只属于一个领域:一份侧重 A 领域的材料仍会带来 B 领域的碎片,但它仍归属 A,与 B 的关联用标签表达。如果用户持续在同一领域积累旁支碎片,说明该领域已值得作为独立学习任务,此时走“待归类内容升格为学习任务”的路径,而不是给它第二个归属。 diff --git a/docs/concepts/learning-guidance.md b/docs/concepts/learning-guidance.md new file mode 100644 index 0000000..aaeb55d --- /dev/null +++ b/docs/concepts/learning-guidance.md @@ -0,0 +1,50 @@ +# 学习引导 + +## 定义 + +学习引导是复习中的一种主动提取:系统用一个开放式问题引出用户自己的回答,AI 在对话中检查回答里隐含的概念边界问题并及时纠正,最终由用户确认把这次对话的收获记成一条知识碎片。 + +例子:对「大模型参数量」这个概念,系统问“1B 参数量的 LLM 模型,会占用多少磁盘空间?”要回答它,用户必须先意识到参数量并不能决定模型在磁盘上的大小,从而把「参数量」与「硬件占用」这两个容易混淆的概念分开。 + +## 设计意图 + +- 复习的另外两种机制回答的是“有没有接触到”和“记不记得住结构”,捕捉不到概念边界上的误解:节点都在、结构也在,但把 A 当成了能决定 B 的东西。 +- 开放式问题不设标准答案:系统要确认的是“用户是否分清了边界”,而不是“答案是否与范文一致”。 +- 纠正的对象是回答里隐含的假设,而不是答案本身的对错。对话因此是引导,不是判卷。 + +## 产出 + +- 对话的产出是一条**知识碎片**,不是新的数据实体:它走碎片的全部既有逻辑(内容归属、待归类、归属调整、导图取材、复习 Feed 回收)。 +- 碎片由**用户确认后**记录:AI 的纠正也可能是错的,未经确认就入库会把错误边界固化进以后的复习基准。没有确认,就等于这次引导没有产出。 +- 碎片带一个「来自学习引导」的[标记](marker.md)。标记只说明来源,不改变碎片的任何处理逻辑。 +- 记录上下文是这次复习行为;耗时计入[复习耗时](time-and-efficiency.md);不进入任何学习报告——报告按学习会话生成,学习引导不是会话。 +- 默认内容归属:被引导概念所属的学习任务。 + +## 入口 + +- 复习 Feed 的卡片。 +- 标准思维导图的节点。 + +两个入口都对应“用户已经看到某段内容”的时刻,系统据此就近发问,用户不需要先想清楚该复习哪个概念。 + +## 对话不设轮数上限 + +引导对话以“用户想结束”为终点,不限制轮数,也不要求必须产出碎片。系统不统计“引导做了多少次”“还有多少没引导”。 + +## 与 AI 的关系 + +学习引导是系统里唯一允许完全依赖 AI 的能力:它不属于核心闭环,AI 不可用时该功能整体不可用,也不提供降级形态。核心闭环(报告聚合、导图生成、回忆对比)仍然必须能靠内置规则独立完成。 + +## 相关概念 + +- 知识碎片:引导产出的落点。 +- 内容归属:默认归属被引导概念所属的学习任务。 +- 标准思维导图:入口之一,也是引导产出的延伸概念进入的地方。 +- 回忆对比:另一种主动提取,测的是结构是否记得住。 +- 复习 Feed:入口之一,也是引导产出被再次遇到的地方。 +- 标记:承载“来自学习引导”这类附加信息。 +- AI 任务:承担引导对话与边界纠正。 + +## 设计思路 + +引导的目标不是把概念讲一遍,而是让用户先说出自己的理解,再针对那句话纠正。因此系统不预设问题清单,也不把引导做成待办:它和复习的其他机制一样,只在用户已经看到内容时就地发生。 diff --git a/docs/concepts/learning-report.md b/docs/concepts/learning-report.md index 00ea184..ee70a9e 100644 --- a/docs/concepts/learning-report.md +++ b/docs/concepts/learning-report.md @@ -11,7 +11,7 @@ - **按归属分组的碎片**:碎片按内容归属分组呈现;旁支碎片单独列出并标注其归属。 - **自由总结**:用户对本次学习的叙述,包括卡点、疑问和下一步打算。 -报告一定属于产生它的那次会话。会话中产生的碎片无论最终归属哪个任务,都会出现在本次报告中,只是分组不同。复习行为(回忆对比、引导追问)产生的碎片不进入任何报告:报告按会话生成,复习行为不是会话。 +报告一定属于产生它的那次会话。会话中产生的碎片无论最终归属哪个任务,都会出现在本次报告中,只是分组不同。复习行为(回忆对比、学习引导)产生的碎片不进入任何报告:报告按会话生成,复习行为不是会话。 ## 设计意图 diff --git a/docs/concepts/marker.md b/docs/concepts/marker.md new file mode 100644 index 0000000..c7de436 --- /dev/null +++ b/docs/concepts/marker.md @@ -0,0 +1,46 @@ +# 标记 + +## 定义 + +标记是附加在系统对象上的一段轻量元信息,用来表达对象的来源、性质或用户自己的分类。所有标记统一存放,而不是在碎片等表结构里为每一种标记各加一个字段。 + +一条标记至少包含: + +- **对象**:对象类型与对象标识(例如某条知识碎片、某个学习任务)。 +- **标记名与标记值**:例如「来源 = 学习引导」「标签 = 英语」。 +- **种类**:系统标记或用户标签。 +- **建立信息**:建立者(系统或用户)与建立时间。 + +## 设计意图 + +- 新增一种标记时不需要改动各功能表结构,避免碎片、报告等表被标记字段逐渐撑开。 +- 跨功能检索统一:按标记找对象只查一处。 +- 让「来源」「标签」这类弱信息有唯一的存放位置,语义清晰,不再散落在各功能里。 + +## 边界 + +标记不是状态,也不是归属: + +- 会话状态、报告能否修订、导图是否待更新这类会影响流程判断的信息,留在各自主体上,不进标记表。用标记表达状态会让流程判断变得不可枚举。 +- 标记只被读取和展示,不参与聚合口径,也不改变内容归属。 +- 内容归属是唯一的结构归属,标记不能用来表达第二归属。 + +## 现有与预期的标记 + +- **标签**(用户标签):用户自由建立的分类,多个、可为空、可变,只影响检索。 +- **来源标记**:例如「来自学习引导」。系统标记,由系统在产出时写入,用户不可编辑。 + +## 相关概念 + +- 知识碎片:最常见的标记对象。 +- 内容归属:与标签互补——归属是唯一结构归属,标签是弱关联。 +- 学习引导:产出的碎片带来源标记。 +- 学习任务:标签也可以挂在任务上用于检索。 + +## 待决问题 + +1. 标记可以挂在哪些对象上(知识碎片 / 学习报告 / 学习任务 / 学习会话)? +2. 标记名的受控方式:系统标记用固定词表、用户标签自由输入;是否允许用户在系统标记上叠加自己的值。 +3. 标记值是否只在需要时使用(布尔开关 / 枚举 / 自由文本)。 +4. 是否需要按标记检索的入口(例如“找出所有来自学习引导的碎片”),以及需要哪些索引。 +5. 标记名如何治理(能否重命名或废弃),以及哪些标记对用户展示。 diff --git a/docs/concepts/review-feed.md b/docs/concepts/review-feed.md index 283a538..3c12ada 100644 --- a/docs/concepts/review-feed.md +++ b/docs/concepts/review-feed.md @@ -21,6 +21,7 @@ Feed 的条目单位是知识碎片。学习报告不以条目形式出现在 Fe - 复习总览:任务级入口,与 Feed 的条目级展示互补。 - 回忆卡片:点击 Feed 内容后,先让用户尝试回忆再展开原文。 - 回忆对比:Feed 是进入深度复习的入口之一。 +- 学习引导:Feed 卡片是它的入口之一。 - 复习排序:合并“多久没接触”与任务掌握度两个信号,只影响出现概率。 ## 设计思路 diff --git a/docs/concepts/review-overview.md b/docs/concepts/review-overview.md index f0ce319..e136fba 100644 --- a/docs/concepts/review-overview.md +++ b/docs/concepts/review-overview.md @@ -10,7 +10,7 @@ - **可复习内容的规模**:该任务下有多少知识碎片。学习报告不以报告为单位重复计数,它包含的碎片已经在碎片里各出现过一次。 - **掌握度**:该任务最近一次回忆对比的覆盖率。 -- **复习耗时**:该任务上回忆对比与引导追问累计的耗时,与学习时长并列展示。 +- **复习耗时**:该任务上回忆对比与学习引导累计的耗时,与学习时长并列展示。 - **最近复习时间**:距上次回忆对比过去了多久。 - **待归类内容**:尚未确定内容归属的碎片,见[内容归属](knowledge-ownership.md)。 @@ -28,6 +28,7 @@ - 标准思维导图:从任务进入深度复习的对象。 - 回忆记录与覆盖率:掌握度的来源。 - 复习耗时:与学习时长并列的投入口径。 +- 学习引导:复习行为之一,产出的碎片默认归属被引导概念所在任务。 - 复习 Feed:条目级的偶遇展示,与总览互补。 ## 设计思路 diff --git a/docs/concepts/standard-mind-map.md b/docs/concepts/standard-mind-map.md index da33970..48c4e77 100644 --- a/docs/concepts/standard-mind-map.md +++ b/docs/concepts/standard-mind-map.md @@ -19,6 +19,7 @@ - 应用场景:作为独立分支进入导图。 - 回忆对比:标准导图是用户回忆结果的对照基准。 - 节点溯源:导图节点可以关联回原始报告、碎片或应用场景。 +- 学习引导:从导图节点发起,产出的碎片按归属进入本导图。 ## 生成来源 diff --git a/docs/concepts/time-and-efficiency.md b/docs/concepts/time-and-efficiency.md index 12e9fad..c976db3 100644 --- a/docs/concepts/time-and-efficiency.md +++ b/docs/concepts/time-and-efficiency.md @@ -24,7 +24,7 @@ 复习耗时是一次复习行为的耗时。它与学习时间分属两条轴,不合并、不换算、不互相比较。 -- **覆盖范围**:回忆对比与引导追问。滚动浏览内容不计时。 +- **覆盖范围**:回忆对比与学习引导。滚动浏览内容不计时。 - **计时边界**:从行为开始到结束;超过 5 分钟没有任何交互,则把耗时截断到上一次交互时间。复习没有“暂停”动作,这条截断规则用来替代暂停。 - **不叫“有效复习时间”,也不套用 10 分钟最小阈值**:复习行为天然是分钟级,套用会话口径会把几乎所有复习耗时清零。 - **用途**:在复习总览中按任务与学习时长并列展示,回答“我在这块内容上复习了多少”。不设目标、不做提醒、不参与“该复习什么”的排序。 @@ -32,6 +32,6 @@ ## 相关概念 - 学习会话:学习时间数据记录在会话上。 -- 复习行为:回忆对比与引导追问,复习耗时的来源。 +- 复习行为:回忆对比与学习引导,复习耗时的来源。 - 复习总览:按任务并列展示学习时长与复习耗时。 - 学习任务:任务层面的累计学习时间来自多次会话,累计复习耗时来自多次复习行为。 diff --git a/docs/design/module-boundaries.md b/docs/design/module-boundaries.md index 0093cd4..c5d2e5a 100644 --- a/docs/design/module-boundaries.md +++ b/docs/design/module-boundaries.md @@ -25,7 +25,8 @@ - 滚动展示知识碎片(复习 Feed)。 - 维护标准思维导图。 - 提供回忆对比、回忆记录和遗漏项回溯。 -- 记录复习耗时(回忆对比与引导追问)。 +- 提供学习引导(开放式问题与概念边界纠正)。 +- 记录复习耗时(回忆对比与学习引导)。 - 承接内容归属的调整动作与待归类内容的处理入口。 复习模块不要求用户逐条整理学习材料,材料是自动整理和对照分析的数据来源。复习按内容归属聚合,而不是按内容产生于哪次会话:这是归类动作与复习动作放在一起的原因。复习不做调度:不生成到期清单,只影响内容的出现概率。 diff --git a/docs/design/review-loop.md b/docs/design/review-loop.md index e1139a2..a5134a4 100644 --- a/docs/design/review-loop.md +++ b/docs/design/review-loop.md @@ -21,7 +21,9 @@ 系统把两种记忆机制组合在一起: 1. 偶然接触:通过滚动 Feed 让用户无意识看到自己写过的内容,为记忆“播种”。 -2. 主动回忆:用户点击内容后先尝试回忆,再展开原文,通过提取练习巩固记忆。 +2. 主动提取:用户主动付出回忆努力,让记忆被巩固。它有两种形态: + - **回忆对比**:重建知识结构,看漏了哪些节点。 + - **学习引导**:回答一个开放式问题,暴露概念边界上的误解,产出由用户确认后记成知识碎片。 ## 复习内容来源 @@ -42,7 +44,7 @@ ## 复习耗时 -复习行为(回忆对比、引导追问)会记录耗时,与学习时间独立统计:不合并、不换算,也不参与“该复习什么”的排序。口径、截断规则与展示方式见[时间与效率](../concepts/time-and-efficiency.md)与[复习总览](../concepts/review-overview.md)。 +复习行为(回忆对比、学习引导)会记录耗时,与学习时间独立统计:不合并、不换算,也不参与“该复习什么”的排序。口径、截断规则与展示方式见[时间与效率](../concepts/time-and-efficiency.md)与[复习总览](../concepts/review-overview.md)。 ## 从轻量复习到深度复习 @@ -80,6 +82,10 @@ 每次对比都会留下一条[回忆记录](../concepts/recall-review.md),记录这次回忆的起点、三类节点与覆盖率。覆盖率按任务聚合成掌握度,是复习排序的输入之一。 +## 学习引导的作用 + +学习引导处理的是另一种失效:结构记住、概念边界却没分清。系统用开放式问题引出用户的回答,AI 针对回答里隐含的假设纠正边界,用户确认后把收获记成一条知识碎片,之后走碎片的全部既有逻辑(归属、待归类、导图取材、Feed 回收)。完整定义见[学习引导](../concepts/learning-guidance.md)。 + ## 进入回忆对比的入口 回忆对比不应该只有一个入口。系统提供三种入口,它们对应不同的复习心态: diff --git a/docs/design/system-structure.md b/docs/design/system-structure.md index 340707f..6ed3ed3 100644 --- a/docs/design/system-structure.md +++ b/docs/design/system-structure.md @@ -74,12 +74,12 @@ LPT 的全部能力最终只服务于三个问题: 以下六条是设计目标的支点。改动它们属于设计变更,必须先改文档再改实现: -1. **时间按真实发生的行为统计**。学习时间来自学习会话,复习耗时来自复习行为(回忆对比、引导追问),两者独立统计、不合并。 +1. **时间按真实发生的行为统计**。学习时间来自学习会话,复习耗时来自复习行为(回忆对比、学习引导),两者独立统计、不合并。 2. **一次学习会话只属于一个学习任务**。 3. **三类时间规则**:番茄钟长度(单个学习段落的上限)、遗忘判定阈值(判断用户是否忘记暂停或结束)、不计入总时长的最小值。这三条只用于学习会话;复习耗时的挂机截断窗口不属于它们。 4. **学习报告是会话产出的真实记录**,形态为会话摘要、预期达成判断、按归属分组的碎片与自由总结。碎片是原料,报告是收敛,报告不做美化;旁支碎片留在本次报告中单独呈现,不参与正文推演。 5. **复习是偶遇加主动提取**,不是清单、不是打卡、不是必须完成的任务。 -6. **AI 只增强不依赖**。报告聚合、导图生成、回忆对比都必须有内置规则可独立完成。 +6. **AI 只增强不依赖**。报告聚合、导图生成、回忆对比都必须有内置规则可独立完成;学习引导是唯一例外——它不属于核心闭环,允许完全依赖 AI,AI 不可用时整体不可用。 ## 六、两条轴的分工原则