Skill: guoqunabc/learning-cards (version 1.1.1)

--- name: learning-cards description: | Spaced-repetition flashcard system backed by Feishu Bitable (multi-dimensional table). Create flashcards from any book or knowledge base, quiz the user interactively, track progress with 16 fields, and auto-schedule reviews using the 85% Rule. 基于飞书多维表格的间隔复习学习卡片系统。从任何书籍/知识体系生成学习卡片， 通过对话式问答练习，16 个字段追踪学习进度，85% 规则动态调整难度。 Use when / 使用场景: (1) User wants to study a book/course with flashcards / 用户想用卡片学习一本书或课程 (2) User says "继续学习", "来几张卡片", "continue studying", "quiz me" (3) User asks to create learning cards from a book or document / 用户要求从书籍或文档生成学习卡片 (4) User asks about learning progress, weak points, or review schedule / 查看学习进度、薄弱点、复习计划 (5) User mentions "学习卡片", "间隔复习", "spaced repetition", "flashcards" --- # Learning Cards Spaced-repetition flashcard system on Feishu Bitable. 基于飞书多维表格的间隔复习学习卡片系统。 Full design details: [references/system-design.md](references/system-design.md) 完整设计文档：[references/system-design.md](references/system-design.md) ## Prerequisites This skill requires **Feishu (Lark) Bitable** access. Ensure the following before use: 本技能依赖**飞书多维表格**。使用前请确认以下条件： 1. **OpenClaw Feishu plugin configured** — The `openclaw-lark` plugin must be installed and connected to a Feishu tenant. See [OpenClaw Feishu setup docs](https://docs.openclaw.ai/channels/feishu). **OpenClaw 飞书插件已配置** — 需安装 `openclaw-lark` 插件并连接到飞书租户。 2. **User OAuth authorization** — The user must grant Bitable read/write permissions when prompted (standard Feishu OAuth flow, handled automatically by OpenClaw). **用户 OAuth 授权** — 用户需在首次使用时授权多维表格读写权限（OpenClaw 自动处理）。 3. **Bitable app scope** — The Feishu app needs scopes: `bitable:app`, `bitable:app:readonly`. These are standard in the OpenClaw Feishu plugin. **多维表格权限范围** — 飞书应用需开通 `bitable:app`、`bitable:app:readonly` 权限（OpenClaw 飞书插件标配）。 **No additional API keys or credentials are needed** — authentication is handled by the OpenClaw Feishu plugin's existing OAuth infrastructure. **无需额外 API 密钥** — 认证由 OpenClaw 飞书插件的 OAuth 基础设施统一处理。 ## Setup Create a Bitable app with one table containing these fields. 创建一个飞书多维表格，包含以下字段。 ### Content fields / 内容字段 | Field | Type | Note | |-------|------|------| | 概念名 | Text (primary) | Card title / 卡片标题 | | 阶段 | SingleSelect | Major phase / 大阶段 | | 站点 | SingleSelect | Chapter/unit / 章节 | | 类型 | SingleSelect | e.g. 核心概念 / 隐喻 / 转变工具 / 关键问题 | | 正面（问题） | Text | Question / 问题 | | 背面（答案） | Text | Answer / 答案 | | 我的理解 | Text | Learner's own notes / 学习者笔记 | ### Tracking fields / 追踪字段 | Field | Type | Note | |-------|------|------| | 掌握程度 | SingleSelect | 未学习 / 初步了解 / 基本掌握 / 深度理解 | | 学习顺序 | Number | Sequential order for first pass / 首轮学习顺序 | | 首次学习时间 | DateTime | First study timestamp (ms) / 首次学习时间戳 | | 上次复习 | DateTime | Last study timestamp (ms) / 上次学习时间戳 | | 下次复习时间 | DateTime | Next review date (ms) / 下次复习日期 | | 学习次数 | Number | Total attempts / 总答题次数 | | 连续答对次数 | Number | Streak — drives interval / 连对次数，决定间隔 | | 答错次数 | Number | Cumulative errors / 累计答错 | | 最近得分 | Number | Last score (1-5) / 最近得分 | ## Three Learning Phases ### Phase 1: Sequential coverage / 顺序覆盖 First pass through all cards in order by 学习顺序. Goal: build a mental map of the entire knowledge base. 按学习顺序首轮过一遍，建立全局地图感。 ### Phase 2: Spaced review / 间隔复习 After first pass. Schedule by 下次复习时间. Mix in remaining new cards. 首轮完成后按复习时间调度，穿插新卡。 ### Phase 3: Mastery & transfer / 融会贯通 Cross-topic quizzes, scenario-based questions, reverse prompts (give answer → guess concept). 跨章节混合抽问、情境题、反向提问（给答案猜概念）。 ## Quiz Flow ``` 1. Read all cards from Bitable 2. Compute recent accuracy (last 5 scores) → determine new:review ratio 3. Select cards: - Review: 下次复习时间 <= today, sorted by overdue days - New: 学习次数 = 0, sorted by 学习顺序 4. Mix per ratio, present one at a time 5. After each answer: score → show answer → update Bitable ``` ### Card presentation format / 出题格式 ``` 第 X 题（复习/新卡） > [概念名] | [阶段] | [站点] | [类型] [正面问题] ``` User can say "讲讲" to skip answering and see the explanation directly (score = 0). 用户可说"讲讲"跳过作答，直接看答案（计 0 分）。 ## 85% Rule — Dynamic Ratio Target ~85% accuracy for optimal learning speed (Wilson et al., Nature Communications, 2019). 目标保持 85% 正确率以获得最优学习速度。 | Recent accuracy | New:Review | Logic | |---|---|---| | > 90% | 3:1 | Too easy, add new / 太轻松，加新卡 | | 80–90% | 2:1 | Optimal zone / 最优区间 | | 70–80% | 1:1 | More review / 多复习 | | < 70% | 1:2 | Consolidate first / 先巩固 | Accuracy = proportion of scores >= 4 in last 5 attempts. 正确率 = 最近 5 次中得分 >= 4 的比例。 ## Spaced Review Algorithm Interval based on consecutive correct answers (连续答对次数): | Streak | Interval | |--------|----------| | 0 | 1 day | | 1 | 1 day | | 2 | 3 days | | 3 | 7 days | | 4 | 14 days | | 5 | 30 days | | 6+ | 90 days | ## Post-Answer Update After each answer, immediately update the card record: 每题答完立即更新卡片记录： ``` 学习次数 += 1 最近得分 = score 上次复习 = today 首次学习时间 = today (if null) if score >= 4: 连续答对次数 += 1 elif score <= 2: 连续答对次数 = 0; 答错次数 += 1 (if score > 0) else (score == 3): streak unchanged intervals = [1, 1, 3, 7, 14, 30, 90] 下次复习时间 = today + intervals[min(streak, 6)] days (if score >= 4) today + 1 day (otherwise) 掌握程度: streak >= 5 → 深度理解 streak >= 3 → 基本掌握 studied → 初步了解 ``` ## Card Generation Guidelines When creating cards from a book: 从书籍生成卡片时： - 2–4 cards per chapter for conceptual books / 概念类书籍每章 2-4 张 - 1–2 per tool/API for technical books / 技术类每个工具 1-2 张 - Target 30–50 cards total / 总量 30-50 张 - Questions should be specific, not vague / 问题要具体 - Answers: 150–300 chars, use ①②③ for key points / 答案 150-300 字，序号标注 ## User Commands | Command | Action | |---------|--------| | 继续学习 / continue | Default 3 cards, dynamic ratio / 默认 3 张，动态配比 | | 来 N 张 / give me N | Specific count / 指定数量 | | 讲讲 / explain | Show answer directly / 直接看答案 | | 学习进度 / progress | Show overall stats / 显示整体进度 | | 薄弱点 / weak points | List cards with most errors / 列出高错卡片 |

path: references/system-design.md
content: # 学习卡片系统方案

> 基于飞书多维表格 + 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_


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)