# 学习卡片系统方案

> 基于飞书多维表格 + OpenClaw 对话式交互的间隔复习学习系统。
> 适用于任何需要深度理解的书籍/课程/知识体系。

## 一、系统概览

将一本书（或任何知识体系）拆解为学习卡片，存储在飞书多维表格中。通过 OpenClaw 对话交互进行问答练习，自动追踪学习进度，并基于间隔复习算法动态调度出题。

**核心理念**：
- 主动回忆 > 被动阅读
- 间隔复习 > 集中突击
- 85% 正确率是学习效率最高的区间（Nature Communications, 2019）

## 二、多维表格结构

### 数据表：知识卡片表

#### 内容字段（卡片本身）

| 字段名 | 类型 | 说明 |
|--------|------|------|
| 概念名 | 文本（主键） | 卡片标题，如「核心自我」「删除法」 |
| 阶段 | 单选 | 知识体系的大阶段划分 |
| 站点 | 单选 | 具体章节/单元，如「第1站 缘起」 |
| 类型 | 单选 | 卡片类型：核心概念 / 隐喻 / 转变工具 / 关键问题 |
| 正面（问题） | 文本 | 卡片正面的提问 |
| 背面（答案） | 文本 | 标准答案 |
| 我的理解 | 文本 | 学习者自己的理解和联想（可选填写） |

#### 学习追踪字段

| 字段名 | 类型 | 说明 |
|--------|------|------|
| 掌握程度 | 单选 | 未学习 / 初步了解 / 基本掌握 / 深度理解 |
| 学习顺序 | 数字 | 首轮顺序学习的编号（按站点+类型排序） |
| 首次学习时间 | 日期 | 第一次答题的时间 |
| 上次复习 | 日期 | 最近一次答题的时间 |
| 下次复习时间 | 日期 | 间隔复习调度的核心字段 |
| 学习次数 | 数字 | 累计答了几次 |
| 连续答对次数 | 数字 | 决定复习间隔的关键指标 |
| 答错次数 | 数字 | 累计答错次数，用于识别薄弱点 |
| 最近得分 | 数字 | 最近一次答题的得分（1-5） |

#### 字段类型对照（飞书 Bitable API）

| 字段名 | Bitable type | ui_type | 备注 |
|--------|-------------|---------|------|
| 概念名 | 1 | Text | 主键 |
| 阶段 | 3 | SingleSelect | 选项需预设 |
| 站点 | 3 | SingleSelect | 选项需预设 |
| 类型 | 3 | SingleSelect | 选项需预设 |
| 正面（问题） | 1 | Text | |
| 背面（答案） | 1 | Text | |
| 我的理解 | 1 | Text | |
| 掌握程度 | 3 | SingleSelect | 未学习/初步了解/基本掌握/深度理解 |
| 学习顺序 | 2 | Number | |
| 首次学习时间 | 5 | DateTime | 毫秒时间戳 |
| 上次复习 | 5 | DateTime | 毫秒时间戳 |
| 下次复习时间 | 5 | DateTime | 毫秒时间戳 |
| 学习次数 | 2 | Number | |
| 连续答对次数 | 2 | Number | |
| 答错次数 | 2 | Number | |
| 最近得分 | 2 | Number | |

## 三、学习策略

### 3.1 三个学习阶段

#### 阶段一：顺序覆盖

- 适用于首次学习
- 按「学习顺序」字段从小到大出题
- 目标：先把整本书/整个知识体系走完一遍，建立全局地图感
- 每张卡第一次出现时，学习者可以选择「试着回答」或「讲讲」（直接看答案）

#### 阶段二：间隔复习

- 首轮走完后进入
- 不再按顺序，改为按「下次复习时间」调度
- 到期的卡优先出题
- 结合新卡继续推进（如果还有未学的卡）

#### 阶段三：融会贯通

- 大部分卡已掌握后进入
- 跨章节混合抽问
- 给现实情境，判断属于哪个知识点
- 让学习者自己举例，把概念用到生活里
- 正反向提问：给答案猜概念，给概念说例子
- 目标：从「记住内容」走向「会用内容」

### 3.2 间隔复习算法

基于「连续答对次数」决定下次复习间隔：

| 连续答对次数 | 下次复习间隔 |
|-------------|-------------|
| 0（刚答错/首次看答案） | 1 天 |
| 1 | 1 天 |
| 2 | 3 天 |
| 3 | 7 天 |
| 4 | 14 天 |
| 5 | 30 天 |
| 6+ | 90 天 |

**答题后更新规则**：

- **得分 4-5（答得好）**：连续答对次数 +1，按上表推算下次复习时间
- **得分 3（一般）**：连续答对次数不变，1 天后复习
- **得分 1-2（答得差）**：连续答对次数归 0，答错次数 +1，1 天后复习
- **得分 0（直接看答案）**：连续答对次数归 0，1 天后复习

**掌握程度更新规则**：

| 条件 | 掌握程度 |
|------|---------|
| 从未答题 | 未学习 |
| 答过至少 1 次 | 初步了解 |
| 连续答对 >= 3 次 | 基本掌握 |
| 连续答对 >= 5 次 | 深度理解 |

### 3.3 动态新旧比例（85% 规则）

基于 2019 年 Nature Communications 论文《The 85% Rule for Optimal Learning》：

> 当学习者的正确率保持在 85% 左右时，学习速度最快。
> 85% 已掌握（旧知识）+ 15% 未掌握（新知识/犯错）= 最优学习区间。

**动态配比**：根据最近 5 次答题的平均得分（换算为正确率），自动调整新旧卡比例：

| 近期正确率 | 新卡:复习卡 | 逻辑 |
|-----------|------------|------|
| > 90% | 3:1 | 太轻松，加大新卡比例 |
| 80-90% | 2:1 | 最优学习区间 |
| 70-80% | 1:1 | 稍难，增加复习巩固 |
| < 70% | 1:2 | 需要先把旧卡吃透 |

**正确率计算**：得分 4-5 视为正确，得分 0-3 视为错误。

## 四、交互流程

### 4.1 出题流程

```
用户说「继续学习」或「来 N 张」
  ↓
读取多维表格，获取所有卡片数据
  ↓
计算近期正确率 → 确定新旧比例
  ↓
选卡：
  - 复习卡：下次复习时间 <= 今天，按过期程度排序
  - 新卡：学习次数 = 0，按学习顺序排序
  ↓
按比例混合，组成本次题组
  ↓
逐题出题 → 等待用户回答 → 评分 → 展示标准答案 → 更新表格
```

### 4.2 单题交互格式

**出题**：
```
第 X 题（复习/新卡）

> [概念名] | [阶段] | [站点] | [类型]

[正面问题]

请作答～
```

**评分后**：
```
得分：⭐⭐⭐⭐（4/5）

[对用户回答的点评]

标准答案：
[背面答案]

[补充说明/知识拓展]
```

### 4.3 用户可用指令

| 指令 | 说明 |
|------|------|
| 继续学习 | 按默认数量（3 张）和动态比例出题 |
| 来 N 张 | 指定数量出题 |
| 讲讲 | 跳过作答，直接看标准答案和讲解 |
| 新旧比 X:Y | 临时调整本次的新旧比例 |
| 学习进度 | 查看当前整体学习进度 |
| 薄弱点 | 列出答错次数最多的卡片 |

## 五、每题答完后的数据更新

答完一题后，立即更新多维表格中该卡片的以下字段：

```python
# 伪代码
record.学习次数 += 1
record.最近得分 = score
record.上次复习 = today

if record.首次学习时间 is None:
    record.首次学习时间 = today

if score >= 4:  # 答得好
    record.连续答对次数 += 1
elif score == 3:  # 一般
    pass  # 连续答对次数不变
else:  # 答得差或看答案
    record.连续答对次数 = 0
    if score <= 2 and score > 0:
        record.答错次数 += 1

# 计算下次复习时间
intervals = [1, 1, 3, 7, 14, 30, 90]
streak = min(record.连续答对次数, len(intervals) - 1)
if score >= 4:
    record.下次复习时间 = today + intervals[streak] 天
else:
    record.下次复习时间 = today + 1 天

# 更新掌握程度
if record.连续答对次数 >= 5:
    record.掌握程度 = "深度理解"
elif record.连续答对次数 >= 3:
    record.掌握程度 = "基本掌握"
elif record.学习次数 >= 1:
    record.掌握程度 = "初步了解"
```

## 六、卡片生成指南

### 6.1 从书籍生成卡片

按章节/站点顺序，为每个关键知识点生成卡片。每个知识点考虑以下维度：

- **核心概念**：这个概念是什么？和常见理解有什么区别？
- **关键问题**：为什么是这样？根本原因是什么？
- **转变工具**：具体怎么操作？步骤是什么？
- **隐喻**：作者用了什么隐喻？它说明了什么？

### 6.2 卡片质量标准

- 问题要具体，不要过于宽泛（坏：「第三章讲了什么？」好：「容器有哪三种类型？」）
- 答案要完整但不冗长，150-300 字为宜
- 答案中用序号（①②③）标注要点，方便记忆
- 包含作者的原话或核心洞见，用加粗标注

### 6.3 建议的卡片密度

| 书籍类型 | 建议密度 |
|---------|---------|
| 心理学/自助类 | 每章 2-4 张 |
| 技术/工具类 | 每个工具/API 1-2 张 |
| 历史/叙事类 | 每个关键事件 1-2 张 |
| 哲学/理论类 | 每个核心论点 2-3 张 |

总量建议 30-50 张/本书，太少覆盖不够，太多复习负担重。

## 七、复用指南

### 7.1 为新书创建卡片系统

1. **创建多维表格**：`feishu_bitable_app` action=create
2. **创建数据表**：`feishu_bitable_app_table` action=create，按上方字段结构建表
3. **生成卡片内容**：阅读/分析书籍，按章节生成卡片
4. **批量写入**：`feishu_bitable_app_table_record` action=batch_create
5. **编排学习顺序**：按章节+类型排序，填写「学习顺序」字段
6. **开始学习**：用户说「继续学习」即可

### 7.2 自定义选项

以下内容可根据具体书籍/知识体系调整：

- **阶段选项**：根据书的结构划分（如「基础→进阶→实战」）
- **站点选项**：根据章节划分
- **类型选项**：根据知识特点划分（如技术书可用「概念/API/最佳实践/陷阱」）
- **间隔参数**：可调整 `[1, 1, 3, 7, 14, 30, 90]` 为其他值
- **85% 规则的阈值**：可根据学习者水平微调

### 7.3 扩展方向

- **学习配置表**：单独建一张表存储全局设置（学习模式、每次数量、间隔模板等）
- **测验题表**：除了知识卡片外，增加选择题/判断题表
- **学习日志表**：记录每次学习的详细数据（时间、题数、正确率），用于分析趋势
- **飞书互动卡片**：通过按钮回调实现卡片翻转、评分等交互
- **Web 应用**：独立的学习界面，支持移动端随时练习

## 八、参考

- Wilson, R.C., Shenhav, A., Stiso, M. et al. **The Eighty Five Percent Rule for optimal learning**. *Nat Commun* 10, 4646 (2019). https://doi.org/10.1038/s41467-019-12552-4
- 间隔复习算法参考 SM-2（SuperMemo）的简化版本
- 飞书多维表格 API 文档：https://open.feishu.cn/document/server-docs/docs/bitable-v1

---

_最后更新：2026-03-18_
