MER-236 LearningOS / SuperMemo / Wozniak 深度纵向研究
原始 research campaign 输出,来自 may1 all night learningos memory agent source re。这页保留报告结构和运行痕迹,正式文章会在写作区重写。
MER-236 LearningOS / SuperMemo / Wozniak 深度纵向研究
Campaign: rc-69f3894d-296c | 2026-05-01 | 研究 Agent (Opus 4.6)
研究范围与方法
本报告聚焦 Piotr Wozniak 的 SuperMemo 体系及其对 Maple 自建 LearningOS 的设计启示。研究覆盖:
- SuperMemo 算法演进(SM-17 → SM-20)
- 增量阅读(Incremental Reading)完整工作流
- 自由学习(Free Learning)与 Learn Drive 哲学
- 知识格式化 20 条规则(20 Rules of Formulating Knowledge)
- 毒性记忆(Toxic Memory)
- 优先级队列(Priority Queue)
- SuperMemo API(2026 早期访问)
- FSRS 算法现状(v6)与生态
- 数据可移植性
方法:四路并行 Agent 调研,交叉引用 supermemo.guru、supermemo.com、GitHub 仓库、PyPI/npm 包。整合项目已有 46 篇研究文档(~/maple/research/learning-system/,~750KB)。
证据标注:[P] = 一手来源(Wozniak 本人/官方文档),[S] = 二手来源(社区/博客),[U] = 未经独立验证
一、算法演进:SM-17 → SM-20
1.1 理论基础:DSR 模型
所有 SM-17+ 算法共享 DSR(Difficulty-Stability-Retrievability)三变量记忆模型:
| 变量 | 含义 | 范围 |
|---|---|---|
| D (Difficulty) | 突触模式的复杂度 | 0.0(易)→ 1.0(难) |
| S (Stability) | 使平均回忆概率为 0.9 的间隔天数 | 正实数 |
| R (Retrievability) | 当前时刻的回忆概率 | R = e^(-kt/S),指数衰减 |
遗忘曲线:单项记忆为指数衰减;混合复杂度的聚合曲线趋近幂函数。
最优间隔 = S 本身(即 R 降至 0.9 时的间隔)。每次成功复习后,S 乘以稳定性增长因子 SInc:
SInc = (3.102 - 1) × S^(-0.529) + 1
SInc 范围从 SIncMin(~1.36,R≈100% 时)到 SIncMax(~26.31,R→0 时),体现了间隔效应:高记忆可提取性时复习收益最低。
来源:[P] Two component model of memory | [P] Stabilization curve
1.2 SM-17(2016)
第一个显式实现 DSR 模型的算法:
- 用 SInc[] 矩阵(20 稳定性 × 20 难度 = 400 格)取代 SM-15 的 O-Factor/RF 矩阵
- 为每个稳定性-难度类别独立绘制遗忘曲线推导 SInc
- 间隔公式:
next_interval = S × SInc[S, R, D] - 弱点:大型集合中首次复习间隔适应缓慢
来源:[P] Algorithm SM-17
1.3 SM-18(2017-2019)
对 SM-17 的靶向改进:
- 难度计算重设计:放弃"绝对难度",每次复习通过 bet-win 指标独立估算 D,增量调整
- 稳定化函数逼近改进:400 条独立稳定化曲线可检查、更精确拟合
- 核心模型(DSR、指数遗忘、SInc 矩阵)不变
来源:[P] Algorithm SM-18 | [P] Item difficulty in Algorithm SM-18
1.4 SM-19(2024)
两个靶向改进:
- 遗忘后稳定性估算(Post-lapse stability):完全重写失败复习后的 S 重新计算逻辑
- 首次遗忘曲线处理:结合 SM-15(快速适应)和 SM-17(理论严谨)的优点,解决大型集合首间隔迟缓问题
- 实时优化:每次复习即时调整参数
- Universal metric 对比 FSRS 默认参数:18:2 优势
来源:[P] Algorithm SM-19 | [S] SuperMemo blog
1.5 SM-20(2026,新发现)
范式转变——第一个完全基于机器学习优化参数的 SM 算法:
| 特征 | SM-17/18/19 | SM-20 |
|---|---|---|
| 参数量 | ~40,000(经验矩阵) | ~40(ML 优化),目标 10-15 |
| 参数来源 | 启发式规则 + 曲线拟合 | ML 拟合个人数据 |
| 理论基础 | 保留 | 保留(ML 优化拟合,不替代理论) |
| Universal metric | 基准 | 0.000764%(百万级复习数据集,2026-02-27) |
SM-20 计划随 SuperMemo 20 for Windows 发布,发布日期未定(截至 2026-02)。将与 FSRS 和 SM-19 并行提供。
来源:[P] Algorithm SM-20
评估:SM-20 的方向(少量 ML 参数 + 理论约束)与 FSRS 趋同。两者最终可能殊途同归,但 SM-20 闭源,FSRS 开源。对 Maple 的 LearningOS,FSRS 仍是最佳选择——开源、可定制、生态活跃,且 SM-20 的理论改进可被 FSRS 社区吸收。
二、增量阅读(Incremental Reading)
2.1 核心工作流
增量阅读是 Wozniak 1999 年发明的方法,将优先化阅读与间隔重复结合。不是线性读完一篇文章,而是并行阅读数百篇,逐步蒸馏为原子知识。
漏斗流程:
文章导入 → 分段阅读 → 提取(Extract) → 转为填空题(Cloze) → 间隔重复
- 导入:网页、PDF、文本粘贴,自动附加引用来源
- 阅读:文章进入优先级队列,每次读一部分,系统调度下次浮现时间
- 提取(Alt+X):高亮重要段落,提取为子元素,父引用自动传递
- 填空:提取的句子转为 cloze 卡片(如"Sierra Leone 的首都是 […]")
- 复习:卡片进入 SM 算法的间隔重复调度
2.2 双轨制:Topics vs Items
| 类型 | 性质 | 调度方式 |
|---|---|---|
| Topics(文章/提取) | 被动阅读材料 | 用户控制间隔,A-factor 调节 |
| Items(cloze/Q&A) | 主动回忆测试 | 算法自动调度 |
设计启示:「待处理的素材」和「待记忆的知识」必须分轨调度。这正是 LLM Wiki 的 ingest→compile 流程可以覆盖的——AI 版增量阅读。
2.3 局限
- 学习曲线陡峭,SuperMemo 独占功能
- Anki/Emacs 有移植但缺完整优先级队列
- Wikipedia 批评"文档过度依赖单一关联来源"
来源:[P] SuperMemo Incremental Learning Help | [S] Wikipedia: Incremental reading | [S] SuperMemo.wiki
三、自由学习(Free Learning)与 Learn Drive
3.1 核心主张
Wozniak 认为大脑有内置的"学习驱动力"(learn drive)——一种本能,引导好奇心朝向复杂度最优、个人最相关的材料。强制教育用"学校驱动力"(奖惩机制)覆盖了这一本能。
三个关键论点:
- 好的学习本质上令人愉悦,且不像食物/性愉悦那样饱和
- 学习快乐是知识质量的信号——learn drive 产生的记忆"简洁、助记、连贯、稳定、可应用"
- 被学校化的人发展出对学习本身的厌恶,不只是对学校的厌恶
3.2 设计原则
- 学习系统应跟随用户兴趣(learn drive),不施加课程表
- 优先级应从真实好奇心涌现,不由外部指派
- 快乐信号是有效的质量指标——用户觉得痛苦 = 系统有问题
3.3 证据评估
[U] 主要是 Wozniak 个人理论写作。借鉴奖赏回路神经科学,但缺乏对照实验。作为设计哲学有说服力,作为实证科学证据薄弱。
来源:[P] Free Learning | [P] Learn Drive | [P] Pleasure of Learning
四、知识格式化 20 条规则
1999 年发表,是 Wozniak 最有影响力的实践指南。完整列表:
| # | 规则 | 设计可操作性 |
|---|---|---|
| 1 | 不理解就不学 | AI 可检测理解前提 |
| 2 | 先学后记(建立全局图景) | LLM Wiki 的 compile 阶段 |
| 3 | 从基础出发 | 知识图谱的拓扑排序 |
| 4 | 最小信息原则(卡片原子化) | AI 制卡核心规则 |
| 5 | 填空题简单有效 | 自动 cloze 生成 |
| 6 | 使用图像 | 多模态卡片 |
| 7 | 使用助记术 | AI 可建议助记 |
| 8 | 图像删除同理 | 视觉类知识 |
| 9 | 避免集合(无序集合几乎无法记忆) | AI 检测并拆分 |
| 10 | 避免枚举(有序列表仍然困难) | AI 检测并拆分 |
| 11 | 对抗干扰(区分相似项) | AI 生成对比卡片 |
| 12 | 优化措辞(消除冗余词) | AI 精简 |
| 13 | 引用其他记忆 | 知识图谱交叉链接 |
| 14 | 个性化并举例 | 基于用户画像的示例 |
| 15 | 依赖情绪状态 | 时机调度 |
| 16 | 上下文线索简化措辞 | 领域标签 |
| 17 | 冗余不矛盾最小信息 | 多角度同一知识点 |
| 18 | 提供来源 | 自动附加引用 |
| 19 | 提供日期标记 | 自动时间戳 |
| 20 | 优先级排序 | 优先级队列 |
最可操作的规则:4、9、10、12——AI 制卡系统可自动执行这些规则,检测违反并提示修正。
来源:[P] 20 Rules - supermemo.com(证据等级高,1999 年发表,稳定 25+ 年)
五、毒性记忆(Toxic Memory)
5.1 定义
与焦虑或恐惧关联的持久/寄生性记忆,由强制学习或低质量知识格式化产生。
5.2 成因
| 成因 | 机制 |
|---|---|
| 强制学习 | 对学习者无兴趣/无准备的材料施加压力 |
| 低质量格式化 | 违反 20 条规则(尤其是记忆集合、不理解就记) |
| 过高难度 | 步幅太大产生挫败感,挫败感与内容一起编码 |
5.3 后果
学习恐惧 → 习得性无助 → 可能导致持久行为/精神影响。
5.4 设计启示
学习系统应检测挫败信号(连续失败、长响应时间)并自动:
- 简化材料或降低优先级
- 不在用户疲惫/烦躁时推送复习
- 提供"跳过"而非"必须回答"
来源:[P] Toxic Memory | [P] Coercion in Learning(证据:理论性,单一作者,但内部一致、数十年观察支撑)
六、优先级队列(Priority Queue)
6.1 机制
每个元素获得 0%(最高)→ 100%(最低)的连续优先级值。两个自动工具管理过载:
- Auto-sort:每次学习开始时按优先级排序当日复习
- Auto-postpone:延迟低优先级的待处理材料,保护高优先级项目
6.2 A-factor 关系
A-factor 决定间隔增长速度。对 Topics,A-factor 调节曝光频率——更高 = 更少浮现。优先级变更也调整 A-factor。
6.3 设计原则
- 连续谱优于离散桶:0-100% 比「高/中/低」灵活
- 优雅降级:完不成当日任务时,只有低优先级材料受影响
- 优先级偏差校正:新内容不应自动获最高优先级(“新鲜偏差”)
- FSRS 只管时间不管价值——优先级层是 FSRS 之上的独立策略
来源:[P] Priority Queue | [P] super-memory.com archive
七、SuperMemo API 与技术生态(2026 新发现)
7.1 SuperMemo.com API(早期访问)
SuperMemo 于 2026 年发布 REST API:
| 特征 | 详情 |
|---|---|
| 核心端点 | POST /algorithm/review(JSON 输入/输出) |
| 免费层 | 仅 SM-2 算法,100 次/日,1000 次/月 |
| 付费层 | SM-20 算法,Dev $49/月 / Scale $299/月 |
| 用途评估 | 可作为对照基准,不适合做核心调度器(闭源+商业锁定) |
7.2 桌面版
SuperMemo 18/19 无真正 API。社区项目 SuperMemoAssistant(C#,仅 Windows)通过进程注入实现自动化。XML 导出存在但学习历史迁移有损。
7.3 FSRS v6(当前最新)
| 特征 | 详情 |
|---|---|
| 版本 | FSRS v6,21 个参数(v4 为 17 个) |
| TypeScript | ts-fsrs(MIT) |
| Python | fsrs 6.3.1(MIT) |
| Rust 绑定 | @open-spaced-repetition/binding(NAPI) |
| Anki 集成 | 23.10+ 内置为默认调度器 |
ts-fsrs 使用示例:
import { fsrs, createEmptyCard, Rating } from 'ts-fsrs'
const scheduler = fsrs()
const card = createEmptyCard()
const result = scheduler.next(card, new Date(), Rating.Good)
7.4 现代生态对比
| 项目 | FSRS | 增量阅读 | 适合 LearningOS |
|---|---|---|---|
| Anki | v6 内置 | 无 | 调度引擎参考 |
| RemNote | v4.5 | 有(插件) | 笔记+SRS 参考 |
| Orbit (Matuschak) | 无 | 嵌入式 | 交互设计参考 |
| SiYuan | v5 | 有 | 国产开源参考 |
| Logseq/Obsidian | 插件 | 部分 | 不适合(Maple 已排除 Obsidian 依赖) |
7.5 数据可移植性
| 路径 | 工具 | 限制 |
|---|---|---|
| SM XML → Anki | sm2anki / Anki 内置 | Q&A 迁移 OK,学习历史丢失 |
| Anki .apkg | 事实标准(SQLite + ZIP) | 最通用 |
| FSRS review log | CSV/JSON | ts-fsrs binding 提供转换 |
建议:以 FSRS review log(CSV/JSON)为内部格式,支持 .apkg 导入导出做生态兼容。
来源:[P] SuperMemo API | [P] ts-fsrs GitHub | [P] fsrs PyPI
八、对 Maple LearningOS 的设计原则提炼
综合本次调研 + 项目已有 46 篇研究成果,提炼以下设计原则:
调度层
| 原则 | 来源 | 实现思路 |
|---|---|---|
| FSRS 为调度核心 | SM-20 与 FSRS 趋同,但 FSRS 开源 | ts-fsrs,个人数据训练 |
| 优先级层叠加在 FSRS 之上 | SM 的 Priority Queue,FSRS 只管时间 | 0-100% 连续优先级 + auto-sort/auto-postpone |
| 断档后自动校准,不积压 | Free Learning 哲学 | 超过 N 天未复习 → 重置而非补课 |
| 睡眠感知 | Wozniak 的 sleep & learning 研究 | 考虑用户作息,不只间隔天数 |
知识处理层
| 原则 | 来源 | 实现思路 |
|---|---|---|
| AI 版增量阅读 | SuperMemo Incremental Reading | LLM Wiki 的 ingest→compile = AI 驱动的「导入→提取→原子化」 |
| AI 自动执行 20 条规则 | Wozniak 20 Rules | 制卡时自动检测:原子性(规则 4)、集合/枚举(规则 9/10)、冗余措辞(规则 12) |
| 双轨调度 | Topics vs Items | 「待处理素材」与「待记忆知识」分轨,不同调度逻辑 |
| 毒性记忆防范 | Toxic Memory 理论 | 检测挫败信号 → 自动降级/简化,不强推 |
交互层
| 原则 | 来源 | 实现思路 |
|---|---|---|
| 对话式复习优于卡片翻转 | ENFP 认知画像 + 用户偏好 | 苏格拉底式提问,不是 Y/N 翻转 |
| 快乐是质量信号 | Learn Drive 理论 | 用户觉得痛苦 = 系统有问题 |
| 知识碰撞促创造力 | Neural Creativity + LLM Wiki lint | 定期展示看似无关的知识关联 |
| 不强制不惩罚 | Free Learning | 跳过按钮永远可用,无"逾期债务" |
技术选型
| 决策 | 理由 |
|---|---|
| ts-fsrs(TypeScript,MIT) | 算法领先、开源、与 Vyane/Node 生态一致 |
| FSRS review log 为内部格式 | 原生支持 optimizer 训练 |
| .apkg 导入导出 | 生态兼容(Anki 是事实标准) |
| SuperMemo API 仅作对照 | 闭源+付费,不做核心依赖 |
九、不确定性与待验证
| 项 | 不确定程度 | 如何验证 |
|---|---|---|
| SM-20 具体发布日期和最终参数量 | 高 | 关注 supermemo.guru 更新 |
| SM-19 vs FSRS v6(优化后)的真实差距 | 中 | 需在同一数据集上跑基准测试 |
| SM-20 API 是否开放 SM-20 算法全部能力 | 中 | 测试 API 返回值细节 |
| Wozniak 的 Free Learning/Toxic Memory 理论的实证支撑 | 中高 | 缺乏独立对照实验,但设计哲学层面可采纳 |
| ts-fsrs v6 是否支持自定义优先级层 | 低 | 读源码确认,初步判断需自行实现 |
| FSRS optimizer 对小数据集(个人用户早期)的效果 | 中 | 需实测,可能前 200-500 条复习后才有意义 |
supermemo.guru 访问性注意
本次调研中 supermemo.guru 页面直接 fetch 返回 403,数据通过搜索引擎快照和缓存摘要获取。这意味着:
- 引用的页面内容可能不是最新版本
- 细节引用(如具体公式参数)可能因页面更新而过时
- 后续需人工验证关键数据点
十、推荐后续工作
| 优先级 | 任务 | 依赖 |
|---|---|---|
| P0 | ts-fsrs 技术评估:搭建最小可运行原型,验证 API、参数训练、自定义优先级可行性 | 无 |
| P0 | 设计模式文档(wozniak/12-design-patterns.md):从所有调研提炼可直接编码的 pattern | 本报告 |
| P1 | 增量阅读 × LLM Wiki 交叉设计:定义"AI 版增量阅读"的具体数据流和 UI 交互 | LLM Wiki 原型 |
| P1 | 优先级策略层设计:0-100% 连续优先级 + auto-sort + auto-postpone 在 FSRS 之上的接口 | ts-fsrs 原型 |
| P2 | SM-20 API 实测:注册早期访问,在小数据集上对比 FSRS v6 | API 开放 |
| P2 | 毒性记忆检测机制设计:定义"挫败信号"的指标(连续失败次数、响应时间、跳过率) | 交互层原型 |
| P3 | 渐构世界模型课程调研(待 Maple 提供素材) | Maple 提供 |
附录:来源索引
一手来源 [P]
二手来源 [S]
| 来源 | URL |
|---|---|
| SM vs FSRS (blog) | https://www.supermemo.com/en/blog/supermemo-is-better-than-fsrs-by-far |
| Wikipedia: SuperMemo | https://en.wikipedia.org/wiki/SuperMemo |
| Wikipedia: Incremental reading | https://en.wikipedia.org/wiki/Incremental_reading |
| SuperMemo.wiki | https://www.supermemo.wiki/en/learning/incremental-reading |
| SuperMemoAssistant | https://github.com/supermemo/SuperMemoAssistant |
项目已有研究(内部)
| 路径 | 内容 |
|---|---|
~/maple/research/learning-system/SUMMARY.md |
整体综合 |
~/maple/research/learning-system/wozniak/SUMMARY.md |
Wozniak 11 篇综合 |
~/maple/research/learning-system/wozniak/10-sm-algorithms.md |
SM-17/18/19 细节 |
~/maple/research/learning-system/wozniak/11-sm-vs-fsrs.md |
SM vs FSRS 对比 |
~/maple/research/learning-system/01-fsrs-spaced-repetition.md |
FSRS 算法详解 |
~/maple/research/learning-system/deep/D11-fsrs-ye-junyang.md |
叶俊洋 FSRS 深度 |