学习卡片
间隔重复(Spaced Repetition)是经过科学验证的高效学习方法。Moltbot 可以根据你正在学习的内容生成记忆卡片,存入记忆系统,并通过定时任务每天推送需要复习的卡片。
前置条件
- Moltbot 已部署并运行
- Telegram Bot 已配置
- 记忆系统已启用:参考 记忆系统文档
- 定时任务(Cron)已启用(可选):用于自动推送复习卡片
配置步骤
第一步:生成学习卡片
告诉 Moltbot 你在学什么,让它生成卡片:
你:我在学 Rust 的生命周期,帮我生成 5 个记忆卡片,
正面是问题,反面是答案,难度从易到难Moltbot 会返回类似:
🃏 卡片 1(简单)
Q:Rust 中生命周期标注的基本语法是什么?
A:使用单引号加名称,如 'a。写在泛型参数位置:fn foo<'a>(x: &'a str)
🃏 卡片 2(简单)
Q:为什么 Rust 需要生命周期标注?
A:编译器需要确保引用不会比被引用的数据存活更久,生命周期标注帮助编译器验证引用的有效性。
...第二步:保存卡片到记忆
你:把刚才生成的卡片保存到记忆中,标记为 "flashcard-rust-lifetime"或者在 SOUL.md 中设置自动保存规则:
markdown
## 学习卡片
当用户要求生成学习卡片时:
1. 生成指定数量的卡片,正面问题反面答案
2. 自动保存到记忆系统,分类为 "flashcards"
3. 记录主题、难度和创建日期
4. 确认保存成功第三步:设置每日复习推送
yaml
cron:
- name: flashcard-review
schedule: "0 21 * * *"
channel: telegram
prompt: |
从记忆中找到用户的学习卡片,
按间隔重复算法选择今天需要复习的 3 张卡片,
逐张发送(先发问题,等用户回复后发答案)每晚 9 点推送复习卡片,利用睡前时间巩固记忆。
第四步:互动式复习
当 Moltbot 发送卡片问题后,你可以:
Moltbot:🃏 复习卡片 - Rust 生命周期
Q:结构体中如何使用生命周期标注?
你:需要在结构体定义和字段类型上都加上生命周期参数
Moltbot:✅ 基本正确!完整答案:
struct Foo<'a> { field: &'a str }
结构体名称后声明生命周期参数,然后在引用类型的字段上使用。
这确保结构体实例不会比其引用的数据存活更久。
难度评估:你觉得这张卡片的难度如何?(简单/适中/困难)进阶技巧
从阅读笔记生成卡片
结合 阅读稍后读,从文章自动生成学习卡片:
你:根据我之前读过的那篇 RAG 架构文章,生成 5 张学习卡片多主题管理
按主题组织卡片:
你:生成 5 张关于 Docker 网络的卡片
你:生成 3 张关于 PostgreSQL 索引优化的卡片
你:今天复习 Rust 相关的卡片
你:我有哪些主题的卡片?每个主题各有多少张?难度自适应
根据你的掌握程度调整复习频率:
你:刚才那张卡片太简单了,下次可以少复习
你:这张关于 trait object 的卡片我总是记不住,增加复习频率在 SOUL.md 中可以设置自适应逻辑:
markdown
## 间隔重复策略
根据用户反馈调整复习间隔:
- 回答正确且标记"简单":间隔 x 2.5
- 回答正确且标记"适中":间隔 x 1.5
- 回答错误或标记"困难":间隔重置为 1 天多种卡片类型
不只是问答型,还可以生成其他类型的卡片:
你:生成 3 张填空型的 SQL 卡片🃏 填空题
SELECT ___ FROM users WHERE age > 18 ORDER BY ___ DESC LIMIT ___;
答案:列名, 排序字段, 数量你:生成一张代码纠错卡片🃏 找出以下代码的问题:
fn longest(x: &str, y: &str) -> &str {
if x.len() > y.len() { x } else { y }
}
答案:缺少生命周期标注。返回值的引用需要明确与输入参数的生命周期关系。学习进度追踪
定期回顾学习状态:
你:汇总一下我的学习卡片情况:
总共有多少张卡片?各主题分布如何?
哪些卡片我已经掌握?哪些还需要加强?常见问题
卡片内容有错怎么办? 直接告诉 Moltbot 修正:「刚才那张关于 Rust 生命周期的卡片,答案不完整,补充一下 elision rules 的内容」。
能和 Anki 配合使用吗? Moltbot 不能直接导出 Anki 格式,但你可以要求它按 Anki CSV 格式输出卡片内容,然后手动导入 Anki。
卡片数量多了以后怎么管理? 通过主题标签管理。让 Moltbot 定期整理「列出所有卡片主题和数量」,删除已完全掌握的卡片。