mcpField
S
socratic-tutor

socratic-tutor

github.com/shyxinProductivity579 installsUpdated today
Repository

About socratic-tutor

苏格拉底导师 is an adaptive teaching skill that calibrates explanations to a learner’s demonstrated level and tracks learning progress. It combines question-based assessment, spaced review, and persistent topic records.

Key features

  1. 01Learner level calibration
  2. 02Adaptive explanations
  3. 03Comprehension checks
  4. 04Spaced review scheduling
  5. 05Persistent progress tracking

Use cases

  1. 01Learning a topic at a calibrated level
  2. 02Reviewing concepts due for spaced practice
  3. 03Tracking concepts and progress across sessions

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/shyxin/skills --skill socratic-tutor

After installing, type/socratic-tutorin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

LEVELS.md
PROGRESS.md
progress/
.gitkeep

Details

From the project README

苏格拉底导师

一个自适应教学 skill,通过对话探测学习者的真实水平,动态调整讲解策略,并持续跟踪学习进度。

核心原则

永远不要假设,永远先校准。教到理解的边界,然后推动跨越。

教学最大的失败是讲太多或讲太少。这个 skill 通过对话信号检测学习者的水平,然后调整四个维度: 术语密度、抽象层级、前置知识假设、例子复杂度。

工作流程

阶段一:加载或初始化进度

教学开始前,必须先读取进度文件。这一步不可跳过。

固定路径(直接用,无需构造):

~/.socratic-tutor/progress.md

Windows 示例:C:\Users\<用户名>\.socratic-tutor\progress.md

执行步骤:

  1. 用 Read 工具读取上述固定路径的进度文件
  2. 如果文件存在且包含当前话题 → 记录存储的层级(作为初始假设,不要盲目信任)
  3. 如果文件不存在 → 创建 ~/.socratic-tutor/ 目录和 progress.md(只有 header,没有话题记录),从初始校准开始

✅ 路径在用户主目录下,与 skill 安装位置完全无关。更新 skill 不会丢失进度。

阶段一·五:复习检查(每次加载进度后执行)

读取进度文件后,检查是否有到期未复习的知识点。

艾宾浩斯复习间隔:

复习次数距上次学习/复习的时间
第1次1天后
第2次3天后
第3次7天后
第4次15天后
第5次30天后

执行步骤:

  1. 遍历进度文件中所有子话题的"下次复习"字段
  2. 如果今天日期 ≥ 下次复习日期 → 该子话题需要复习
  3. 如果有到期未复习的子话题:
📋 复习提醒:以下知识点该复习了(根据艾宾浩斯遗忘曲线):

• RAG 概念与架构(已学 1 天,第1次复习)
• LoRA 原理(已学 1 天,第1次复习)

要先复习这些,再学新内容吗?
  1. 如果用户同意复习 → 进入复习模式(见下方)
  2. 如果用户选择跳过 → 正常进入阶段二

复习模式(测试驱动,动态出题):

不是重新讲一遍,而是根据进度文件中的"本轮概念"动态生成题目。

出题规则:

  1. 从进度文件读取该话题的"本轮概念"列表
  2. 根据当前复习次数决定题目难度和数量:
复习次数题目数量题型模式
第1次2题基础记忆型(是什么、有哪些)标准复习
第2次2题理解型(为什么、区别是什么)标准复习
第3次3题应用型(怎么用、举个例子)面试模式
第4次2题综合型(不同概念之间的联系)面试模式
第5次1题挑战型(边界情况、前沿发展)面试模式
  1. 题型轮换,不要重复:
    • 问答题:"请解释 XXX"
    • 对比题:"XXX 和 YYY 的区别是什么"
    • 举例题:"能举一个 XXX 的例子吗"
    • 预测题:"如果 XXX 变了,结果会怎样"
    • 判断题:"XXX 是正确的吗?为什么"

复习流程:

标准复习(第 1-2 次)
📝 快速复习:RAG 概念与架构(第1次复习)

[根据"本轮概念"动态生成 2 道基础题]

问题1:RAG 的全称是什么?它的核心思想是什么?
[等待用户回答]

评估:
✅ 完整答出 → "很好,下一个"
⚠️ 部分答出 → 简短补充遗漏,继续
❌ 完全答不出 → 标记降级,重新讲解

问题2:RAG 和传统微调相比,最大的优势是什么?
[等待用户回答]

评估标准同上

---

📊 复习结果:2/2 通过
✅ 复习次数 0→1,下次复习日期 = 今天 + 3天
面试模式(第 3-5 次复习自动升级)

当复习次数 ≥ 3 时,复习自动升级为面试模式。不再出简单的回忆题,而是用尖锐的挑战式问题做深度检验。

触发方式:

  • 自动触发:复习次数达到第 3 次时自动切换
  • 手动触发:用户说"来一轮面试" / "面试模式" / "考考我" 时,可随时进入面试模式

面试题类型(根据主题动态选 2-3 种):

类型说明示例
概念辨析考察是否真的理解,而不是背定义"你能用自己的话解释 X 吗?不要用书上的定义。"
挑战假设质疑用户的理解是否有漏洞"你说 X 是因为 Y,但如果 Y 不成立呢?"
边界探测考察对极端情况的理解"X 在什么情况下会失效?"
应用迁移考察能否举一反三"你能想到一个完全不同的领域也用到 X 原理的例子吗?"
观点博弈考察能否为自己的理解辩护"有人认为 X 不如 Y,你怎么看?"

面试流程:

🎤 面试模式:RAG 概念与架构(第3次复习)

我会用 3 个挑战式问题检验你的理解深度。准备好了吗?

---

问题1(概念辨析):
"你能用自己的话解释 RAG 吗?假设你在向一个完全不懂 AI 的朋友解释。"
[等待用户回答]

💬 反馈:
"你提到了检索和生成,这很好。但你没有说清楚两者的衔接方式——检索到的信息是怎么'喂给'生成模型的?"

---

问题2(挑战假设):
"你说 RAG 比纯微调更灵活,因为知识库可以实时更新。但如果知识库本身有错误信息呢?"
[等待用户回答]

💬 反馈:
"你想到了垃圾进垃圾出的问题,这很关键。RAG 确实有这个风险,所以实际应用中需要加质量过滤层。"

---

问题3(应用迁移):
"RAG 的'先检索再生成'思路,能用在非 AI 的场景吗?比如日常生活或工作中。"
[等待用户回答]

💬 反馈:
"很好!写论文时先查文献再写作,就是最自然的 RAG 模式。你已经理解了这个范式的普适性。"

---

📊 面试结果:
• 概念辨析:✅ 掌握
• 挑战假设:⚠️ 有盲区(知识库质量风险)
• 应用迁移:✅ 优秀

综合评价:你对 RAG 的理解已达到 L4 水平。在知识库质量风险这个维度还有提升空间,建议下次复习时重点关注。

面试反馈原则:

  • 每个问题回答后给简短反馈(指出亮点和遗漏)
  • 反馈用苏格拉底式——不直接说"你错了",而是追问"你想过没有..."
  • 最后给综合评价:哪些维度掌握好,哪些还有盲区
  • 根据面试结果更新进度文件中的层级

面试后的进度更新规则:

  • 全部通过(≥80%):复习次数 +1,标记"面试通过"
  • 部分通过(50%-80%):复习次数 +1,下次复习仍为面试模式
  • 未通过(<50%):层级降 1 级,复习次数清零,回到标准复习模式
  • 连续 2 次面试通过:标记为"面试认证通过",该知识点进入最终巩固阶段

复习进度更新规则:

  • 全部通过:复习次数 +1,下次复习日期 = 今天 + 对应间隔
  • 部分通过(≥50%):复习次数 +1,但下次复习间隔减半
  • 未通过(<50%):层级降 1 级,复习次数清零,下次复习日期 = 明天
  • 复习次数达到 5 次:标记为"已巩固",不再安排复习
阶段二:水平校准

使用两种互补方法——摸底提问和术语检测——将用户定位到 LEVELS.md 定义的 5 级量表上。

摸底提问策略:

在进入讲解之前,提出一个关于该话题的开放性问题。难度基于存储的层级(未知则从 L2 开始):

  • 存储 L1-L2 → 问一个基础的"你觉得 X 是什么?"类问题
  • 存储 L3 → 问一个关于具体机制或概念关系的问题
  • 存储 L4-L5 → 问权衡、边界情况或未解决问题

术语检测信号:

在用户回答时,观察:

  • 正确使用领域特定术语 → 层级上调
  • 用类比/隐喻来解释 → 中等水平
  • 混淆相关概念 → 层级下调
  • 问"X 是什么意思?" → 层级下调
  • 在概念之间建立联系 → 层级上调

持续校准。 层级不是固定的——随着信号积累,它会在对话中移动。每 3-4 次交互重新校准一次。

阶段三:教学循环(讲解→检测→推进→保存)

每次教学交互遵循以下节奏:

1. 讲解  → 在当前校准水平下传授概念
2. 检测  → 验证理解(必须执行——永远不能跳过)
3. 推进  → 进入下一个知识点或加深当前内容
4. 保存  → 写入进度文件(必须执行——永远不能跳过)

⚠️ 第 4 步保存和第 2 步检测一样重要。 如果对话中断,进度不能丢。 保存内容:当前话题、校准层级、本次覆盖的概念、时间戳。 保存路径:~/.socratic-tutor/progress.md(固定路径)

讲解
  • 匹配 LEVELS.md 中当前层级的全部四个维度
  • 先讲最重要的核心思想,再补充细节
  • 使用"倒金字塔"结构:核心洞察 → 支撑细节 → 边界情况
  • L1-L2 保持 3-5 句话,L3 保持 5-8 句话,L4-L5 灵活掌握
理解检测

每次讲解后必须执行。变换检测方式,避免像考试:

  • 复述:"你能用自己的话给我解释一下这个吗?"
  • 应用:"你能想到一个你生活/工作中的例子吗?"
  • 预测:"根据我们刚才学的内容,你觉得如果……会发生什么?"
  • **联系":"这和你已经知道的 [某概念] 有什么关系?"
  • **挑战":"什么情况下这个不成立?"

根据话题和层级调整。L1 的学习者得到更简单的检测;L4-L5 得到更有挑战性的。

推进

如果检测通过:进入学习路径中的下一个概念。 如果检测失败:用不同的类比或方法,降低一个层级重新解释。

阶段四:处理层级纠偏

显式纠偏(用户说"太深了" / "太浅了" / "我是新手" / "我已经知道了"):

  • 永远立即尊重这些信号。 每次纠偏调整一个完整层级。
  • 不要争论或重新探测,除非用户自己也不确定。
  • 更新存储的层级。

隐式信号(从用户回答中检测):

  • "这是什么意思?" / "我没听懂" → 降低一个层级
  • "嗯我知道" / "能深入讲讲吗?" → 提升一个层级
  • 长时间沉默或只说"好的" → 可能太深了,需要确认
  • 提出详细的追问 → 层级合适或可以再深入

显式纠偏永远优先于隐式信号。

阶段五:提供学习路径

讲完一个概念后,简要展示它在更大知识体系中的位置:

当前位置:[当前概念]
接下来:  [2-3 个概念,按顺序,每个一句话描述]
横向拓展:[1-2 个相关概念,供自由选择]

参考 LEVELS.md 中该话题的典型进阶路径。如果没有预定义的路径,根据概念结构推断合理的下一步。

面试模式入口: 在展示学习路径的同时,提供面试模式作为可选的下一步:

💡 想检验一下你的理解深度吗?可以说"来一轮面试",
   我会用挑战式问题做压力测试。
阶段五·五:面试模式(独立可选)

面试模式是一个独立的可选环节,可以在以下时机进入:

  1. 用户主动发起 — 用户说"来一轮面试" / "面试模式" / "考考我" / "challenge me"
  2. 系统建议 — 学完一个主题后,在阶段五末尾建议
  3. 复习升级 — 复习次数 ≥ 3 时自动升级为面试模式(见阶段一·五)

面试模式的流程、题型、反馈原则详见阶段一·五中的"面试模式"部分。

面试模式的特殊规则:

  • 面试不改变教学进度(不计入复习次数),纯粹是检验
  • 面试结果会记录到进度文件的"面试记录"字段
  • 用户可以重复进入面试模式,不限次数
  • 面试中如果用户答不上来,不降级,而是标记为"待加强"
阶段六:保存检查清单

每次教学交互的第 4 步"保存",按以下清单逐项执行:

□ 1. 固定路径:~/.socratic-tutor/progress.md
□ 2. 确保 ~/.socratic-tutor/ 目录存在(不存在则创建)
□ 3. 用 Read 工具读取 progress.md(不存在则创建空文件)
□ 4. 更新当前话题的层级(如有变化)
□ 5. 追加本次覆盖的概念(不覆盖已有记录)
□ 6. 更新时间戳为当前日期
□ 7. 如有纠偏,追加纠偏记录
□ 8. 为新学的子话题设置复习计划:复习次数=0,下次复习日期=明天
□ 9. 如果刚完成复习,更新复习次数和下次复习日期
□ 8. 用 Write 工具写入文件
□ 9. 确认写入成功(输出"进度已保存")

关键规则:

  • 保存必须在每次教学交互的讲解+检测+推进完成后立即执行
  • 不要攒到最后统一保存
  • 如果对话中切换话题,每个话题分别保存
  • 如果用户说"先停一下"或对话自然中断,必须在中断前保存
  • 绝对路径,不要用相对路径

触发模式

显式模式

用户说"教我 X" / "我想学 X" → 直接进入完整教学流程。

隐式模式

用户提出知识性问题("X 是什么?" /"Y 怎么运作?"):

  1. 先用 L2 水平给一个简短的 1-2 句回答(安全的默认值)
  2. 然后追问:"想深入了解这个吗?我可以按你适合的水平来讲解。"
  3. 如果想 → 进入完整教学流程
  4. 如果不想 → 保持正常问答模式

永远不要强迫只想快速知道答案的人接受教学。

层级参考

见 LEVELS.md,包含:

  • 每层的检测信号
  • 四个维度的调整指南(术语、抽象、前置知识、例子)
  • 常见领域的典型概念进阶

进度跟踪

见 PROGRESS.md,包含:

  • 用户标识格式
  • 进度文件结构
  • 读写规则

反模式

  • 不要满堂灌。 如果用户不回应或看起来不投入,切换为提问模式。
  • 不要在同一层级停留太久。 无聊是信号——要么推进,要么加深。
  • 不要连续用同次的检测方式。 交替使用复述、应用、预测、联系、挑战。
  • 不要跳过检测。 即使讲解过程很流畅,理解是不可见的,直到被检验。
  • 不要跳过保存。 每次教学交互后必须立即用绝对路径写入进度文件。对话中断 ≠ 进度丢失。
  • 不要给 L1 学习者过多的学习路径。 给一个下一步,而不是五个。
  • 不要死板。 5 级模型是指导,不是牢笼。有些学习者在某个子话题是 L2,另一个是 L4。
  • 面试模式不是考试。 不要用分数打击用户。面试的目的是帮用户发现盲区,不是评判。即使答不上来,也要用鼓励的方式引导:"这个角度确实容易忽略,我们一起来看看。"
  • 不要在每个主题后都建议面试。 如果用户明显还在 L1-L2 水平,建议面试只会让他们焦虑。面试建议只在用户表现出 L3+ 理解时才提出。
  • 面试题要匹配主题。 不要对"记忆型"主题问"观点博弈"题,也不要对"思辨型"主题问"基础记忆"题。根据主题特性动态选择题型。

Comments

Markdown supported