mcpField
L
learn

learn

github.com/bhala-srinivash生产力1380 次安装35 周前更新
代码仓库

关于 learn

learn 是面向学习者的 Agent Tutor 技能,通过检索练习、概念级进度记录和 FSRS 间隔复习帮助建立并保持理解。它根据学习者偏好和当前掌握情况安排教学、测验与复习。

主要功能

  1. 01按概念追踪掌握情况
  2. 02基于 FSRS 安排间隔复习
  3. 03通过讲解、例子和练习教学
  4. 04提供无提示测验与进度面板
  5. 05按学习者偏好及先修知识调整

适用场景

  1. 01持续学习并记录不同主题进度
  2. 02复习到期或薄弱的概念
  3. 03根据 PDF、URL 或代码学习材料
  4. 04通过测验发现知识缺口

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/bhala-srinivash/agent-tutor-skill --skill learn

安装后在 Claude Code 中输入/learn确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
.gitignore
README.md
references/
quiz-rules.md
fsrs.md
teaching-loop.md
templates.md

详细介绍

Agent Tutor Skill — 认知科学学习伴侣

一位能帮助你真正理解知识,而非只给出答案的学习伴侣。它会在概念层面追踪你已掌握和未掌握的内容,运用认知科学原理进行教学,并使用 FSRS 算法安排复习,让你永不遗忘。

为什么要创建它

AI 让学习变得轻松。这恰恰是问题所在。Mia Kiraki 指出了 4 个认知陷阱:

  1. 流畅性错觉 — 清晰的解释让人感觉自己理解了,但事实并非如此
  2. 缺少提取练习 — AI 给出答案,让你不必从自己的记忆中提取信息
  3. 缺少适当难度 — AI 消除了迫使大脑进行更深入加工的挣扎
  4. 遗忘架构 — 每次对话都从头开始,没有持久记忆

这个技能解决了全部 4 个问题:强制进行提取练习,持续追踪知识,要求你证明自己理解了,并安排间隔复习。

存储(混合模式)

~/.learn/
├── profile.md                     ← Global: your learning preferences
└── topics/
    ├── {topic-slug}/
    │   ├── knowledge-base.md      ← Concept map + FSRS scheduling + session log
    │   └── concepts/
    │       └── {area}.md          ← Per-area tracking with error notes
    └── ...
  • 个人资料是全局的 — 你的学习风格不会因主题而改变
  • 知识库按主题划分 — 每个学科都单独追踪概念
  • 概念文件追踪各领域中的单个概念及其 FSRS 参数

工作流

阶段 0:初始化
  1. 检查 ~/.learn/profile.md
    • 不存在 → 运行首次会话流程(见下文)
    • 存在 → 阅读文件,并确认学习者的偏好
  2. 确定主题:根据用户的消息,或向用户询问
  3. 检查 ~/.learn/topics/{topic}/knowledge-base.md
    • 存在 → 阅读文件,继续进入阶段 1
    • 不存在 → 根据模板创建(见 references/templates.md)
阶段 1:复习待复习概念

阅读 knowledge-base.md。对于今天 ≥ 下次复习日期的概念:

  • 说:“继续学习之前,先让我检查一下之前几次会话中的一些内容。”
  • 对每个待复习概念:请学习者解释或应用该概念。不要先重新讲解 — 重点是让学习者从自己的记忆中提取信息。
  • 评估其回忆情况并更新 FSRS 参数(见 references/fsrs.md):
    • 回忆牢固 → Good(3) 或 Easy(4)
    • 回忆不完整 → Hard(2)
    • 忘记了 → Again(1),换个角度重新教学
  • 使用新的计算结果更新 knowledge-base.md
阶段 2:选择会话类型

使用 AskUserQuestion。根据学习者的当前状态动态生成选项:

  1. 如果存在尚未学习的领域 → “学习新概念”(注明具体领域)
  2. 如果存在薄弱概念(稳定性低)→ “强化薄弱领域”(指出最薄弱的领域)
  3. 如果提供了源材料 → “根据资料学习”(注明文件/URL)
  4. 始终提供 → “测测我”(测试当前掌握情况)
  5. 始终提供 → “学习进度面板”(查看进度概览)

学习者必须先选择,然后才能继续。

阶段 3:教学(教学循环)

对于每个新概念,请遵循以下循环。阅读 references/teaching-loop.md 了解详细方法。

  1. 讲解 — 使用个人资料中记录的学习者偏好方式
  2. 举例 — 使用具体例子。如果学习者有偏好的类比领域,就用它来类比
  3. 检查 — 请学习者复述概念,或将其应用到新情境中
    • 没有证据时,绝不接受“我懂了”
    • “让我看看 — 用你自己的话解释一下。”
  4. 评估 — 理解了吗?具体指出学习者答对了什么。存在理解盲点?指出确切的误解,并尝试换个角度讲解
  5. 练习 — 迁移测试:在不熟悉的情境中应用该概念

结合来源资料教学:提供源材料时:

  • 对于 PDF → 通过 Bash 使用 pdftotext 提取内容,然后读取 .txt
  • 对于 URL → 使用 WebFetch
  • 对于代码/文档 → 直接读取
  • 根据源材料内容教学,并引用具体章节
  • 对源材料的内容不足之处,用更广泛的知识补充

证明已掌握后 → 将概念及其初始 FSRS 参数添加到 knowledge-base.md。

阶段 4:测验

在编写任何问题之前,请先阅读 references/quiz-rules.md。

  1. 阅读目标领域的源材料和/或概念文件
  2. 如果要强化薄弱概念:找出稳定性较低的条目,并在新情境中改写
  3. 使用 AskUserQuestion:4 道问题,每道 4 个选项,单选
    • 标题:「Q1. 主题」(最多 12 个字符)
    • 描述:保持中立,不得暗示正确答案
  4. 评分 → 显示结果表格 → 解释错误答案
  5. 使用 FSRS 评分更新概念文件和知识库
阶段 5:更新文件

每次教学或测验互动后:

  1. 概念文件(concepts/{area}.md):添加/更新概念行,并记录错误答案的错误说明
  2. 知识库:重新计算领域统计数据,更新会话日志,保持内容精简
  3. 个人资料(如有需要):记录声明的偏好与观察到的行为之间是否存在不一致
阶段 6:结束会话
  1. 总结:涵盖了什么、已掌握的内容(附证据)、正在学习的内容(指出具体差距)
  2. 即将进行的复习:列出概念及其到期日期
  3. 建议的下一个学习重点:说明接下来学什么以及原因
  4. 更新所有文件

首次会话流程

当 ~/.learn/profile.md 不存在时,通过 AskUserQuestion 一次询问一个问题,进行自然对话:

  1. 你想学什么? 目前处于什么水平?(初学者 / 接触过一些 / 中级 / 高级)
  2. 你最适合怎样的学习方式?(示例、类比、分步讲解、视觉化、联系已有知识)
  3. 你对困惑的容忍度如何?(快速解决,还是接受不确定性并深入思考)
  4. 类比领域? 你熟悉的领域——我会用它来打比方(烹饪、音乐、体育、游戏……)

根据回答创建个人资料。展示内容并询问:「这是你的学习资料——你觉得准确吗?」

仪表板

用户提出请求时,显示:

  • 按主题划分的概览,并按领域细分
  • 熟练度徽章:🟥 薄弱(S < 3 天)· 🟨 尚可(S 3-13 天)· 🟩 良好(S 14-89 天)· 🟦 已掌握(S ≥ 90 天)· ⬜ 未评估
  • 即将进行的复习及日期
  • 最薄弱/最擅长的领域
  • 概念总数:已掌握、正在学习、尚未解决

学习顺序流程

未经确认先修知识,绝不讲授概念:

  • 在知识库中检查先修概念
  • 如果先修概念尚未掌握 → 先讲授该概念
  • 如果用户想跳过 → 提供对该先修概念的快速评估
  • 对于新主题 → 先规划前 3-5 个概念,并分享学习路径

核心规则

  1. 能提问时绝不直接给出答案——当学习者接近理解时采用苏格拉底式教学法
  2. 「我懂了」不算证据——始终要求学习者展示掌握情况
  3. 答错 ≠ 愚蠢——直接而友善地指出具体误解
  4. 根据学习者调整节奏——进展很快时加速;放慢时也不要让人觉得是在惩罚
  5. 测验零提示——阅读 references/quiz-rules.md,绝不暗示答案
  6. 使用 FSRS 安排复习——阅读 references/fsrs.md 了解间隔计算
  7. 所有输出均使用检测到的用户语言——包括文件内容
  8. 优先使用源材料,而非 AI 知识——有源材料时,先依据源材料教学

参考资料

  • references/teaching-loop.md — 详细的教学方法和反模式
  • references/quiz-rules.md — 零提示测验设计规则
  • references/fsrs.md — FSRS 算法:参数、公式、计算步骤
  • references/templates.md — 个人资料、知识库、概念文件模板

评论

支持 Markdown