# 系统结构 ## 本文档的用途 `concepts/overview.md` 回答"系统要解决什么问题",本文档回答"系统是靠什么结构解决问题的"。理解以下三条结构后,判断某个功能该不该做、改动会不会动摇设计目标,都会变得直接。 ## 一、系统要回答的三个问题 LPT 的全部能力最终只服务于三个问题: 1. **我学过什么?** —— 需要真实、不可篡改的学习记录。 2. **我学到什么程度?** —— 需要可对照的知识结构和暴露缺口的机制。 3. **下一步该学什么?** —— 需要可比较的任务优先级。 任何一个功能,如果对这三个问题都没有贡献,就不应该进入系统。 ## 二、骨架:一个组织轴、一个闭环、一个记忆机制 ### 组织轴 ```text 学习任务 → 学习会话 → 知识碎片 → 学习报告 ``` 组织轴决定"内容存放在哪里、被谁聚合"。系统里所有围绕内容的聚合(知识结构、复习内容、检索)都从这条轴派生。 组织轴的每一层含义不同: - **学习任务**:长期目标,可管理、可排序。 - **学习会话**:一次真实发生的学习,不可变、时间可计量。 - **知识碎片**:学习过程中的原始记录,粒度最小。 - **学习报告**:一次会话的收敛结果。 ### 闭环 ```text 学习预期 → 学习执行(碎片) → 报告收敛 → 复习 → 应用场景 ``` 闭环决定"一次学习如何被完整地走完"。闭环的完整性依赖两件事: - 会话记录不可篡改,量化结果才可信。 - 碎片记录成本足够低,闭环才不会在中途断掉。 ### 记忆机制 ```text 偶遇(滚动 Feed) → 主动提取(回忆对比) → 缺口暴露(遗漏项) → 回看原文 ``` 记忆机制是系统区别于普通笔记工具的部分。笔记工具能"存",能"检索",但不会告诉用户"你以为你记得,其实漏了这三个点"。 ## 三、三条主线与痛点的对应 | 原始痛点 | 设计主线 | 主要概念 | |---------|---------|---------| | 没有时间观,不知道自己的能力水平在哪 | 量化学习过程 | 学习会话、学习预期、知识碎片、学习报告、时间与效率 | | 没有计划,想学什么学什么 | 合理安排优先级 | 学习任务、任务优先级、应用场景 | | 没有复习习惯,学过就忘 | 让复习自然发生 | 复习 Feed、标准思维导图、回忆对比 | 三条主线共享同一条组织轴,因此组织轴的任何变化都会同时影响三条主线;反之,三条主线各自的机制变化通常互不干扰。 ## 四、取舍准则 新增功能时按以下顺序判断: 1. **是否服务于三个问题之一**(见第一节)。不服务就不做。 2. **是否增加记录或整理成本**。增加成本的方案必须证明收益大于成本损失。 3. **是否让 AI 变成必需品**。AI 只能增强,不能成为流程能否走通的前提。 这三条准则解释了系统已有的一些取舍:不做强制复习清单、不做打卡与连续天数、短会话不计入总时长、AI 能力全部可降级。 ## 五、支点:不轻易改动的六条 以下六条是设计目标的支点。改动它们属于设计变更,必须先改文档再改实现: 1. **时间按真实发生的行为统计**。学习时间来自学习会话,复习耗时来自复习行为(回忆对比、引导追问),两者独立统计、不合并。 2. **一次学习会话只属于一个学习任务**。 3. **三类时间规则**:番茄钟长度(单个学习段落的上限)、遗忘判定阈值(判断用户是否忘记暂停或结束)、不计入总时长的最小值。这三条只用于学习会话;复习耗时的挂机截断窗口不属于它们。 4. **学习报告是会话产出的真实记录**,形态为会话摘要、预期达成判断、按归属分组的碎片与自由总结。碎片是原料,报告是收敛,报告不做美化;旁支碎片留在本次报告中单独呈现,不参与正文推演。 5. **复习是偶遇加主动提取**,不是清单、不是打卡、不是必须完成的任务。 6. **AI 只增强不依赖**。报告聚合、导图生成、回忆对比都必须有内置规则可独立完成。 ## 六、两条轴的分工原则 系统正在形成两条互不干扰的轴: - **时间轴**:按真实发生的行为统计投入——学习会话贡献学习时间,复习行为贡献复习耗时。回答“我花了多少时间、复习投入了多少”。 - **内容轴**:按内容归属聚合知识。回答"这块知识属于哪里、我掌握到什么程度"。 两条轴的分工是:**时间按行为,内容按归属**。这解释了一个看起来矛盾的现象——一次会话产生的知识碎片不一定属于这次会话的学习任务(旁支碎片仍在该报告中单独呈现),而一份学习报告一定属于这次会话。细节见 [内容归属](../concepts/knowledge-ownership.md)。 ## 七、判断改动是否触及设计目标 用三个提问自查: 1. 改动是否改变了支点之一(第五节六条)?如果改变,属于设计变更。 2. 改动是否引入了第二套聚合口径(同一内容在两处归属不同)?如果引入,必须先把口径统一到唯一的聚合入口。 3. 改动是否依赖了某个尚不存在的概念?如果是,先补概念文档再谈实现。 ## 相关文档 - [系统总览](../concepts/overview.md):三个痛点与核心闭环的简述。 - [设计原则](principles.md):量化但不评判、低阻力优先等具体原则。 - [模块边界](module-boundaries.md):各模块负责什么、不负责什么。 - [内容归属](../concepts/knowledge-ownership.md):内容轴的定义与设计。