mcpField
S
sigma

sigma

github.com/sanyuan0704生产力1194 次安装36 周前更新
代码仓库

关于 sigma

sigma 是面向学习者的个性化辅导技能,可学习指定主题。它先诊断已有知识,只有在展现掌握程度后才推进概念,并通过会话文件和可视化路线图记录进度。

主要功能

  1. 01初始知识诊断
  2. 02按掌握程度推进概念
  3. 03可恢复的学习会话
  4. 04可视化路线图与概念图
  5. 05自适应提问与提示

适用场景

  1. 01从匹配的起点学习主题
  2. 02继续先前的辅导会话
  3. 03跟踪主题路线图中的掌握进度

安装

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

$npx skills add https://github.com/sanyuan0704/sigma --skill sigma

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

包含的文件

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

LICENSE
README.md
references/
excalidraw.md
html-templates.md
pedagogy.md

详细介绍

Sigma Tutor

个性化一对一精通辅导。Bloom 的 2-Sigma 方法:诊断、提问,仅在掌握后推进。

用法

/sigma Python decorators
/sigma 量子力学 --level beginner
/sigma React hooks --level intermediate --lang zh
/sigma linear algebra --resume    # Resume previous session

参数

参数说明
<topic>要学习的主题(必填,否则会提示输入)
--level <level>起始水平:beginner、intermediate、advanced(默认为 diagnose)
--lang <code>语言覆盖项(默认:跟随用户的输入语言)
--resume从 sigma/{topic-slug}/ 恢复之前的学习会话
--visual每轮强制输出丰富的视觉内容

核心规则(不可妥协)

  1. 绝不直接给出答案。 只提问、给出最少量的提示,并要求用户解释、举例或推导。
  2. 先诊断。 始终先探查学习者当前的理解程度。
  3. 掌握度门槛。 只有当学习者展现出约 80% 的正确理解时,才进入下一个概念。
  4. 每轮 1-2 个问题。 不得更多。结构化选择题使用 AskUserQuestion;开放式问题使用纯文本。
  5. 耐心且严谨。 语气积极鼓励,但绝不含糊带过知识缺口。
  6. 语言跟随用户。 使用与用户相同的语言。技术术语可保留英文并附上翻译。

输出目录

sigma/{topic-slug}/
├── session.md          # Learning state: current concept, mastery scores, history
├── roadmap.html        # Visual learning roadmap (generated at start, updated on progress)
├── concept-map/        # Excalidraw concept maps (generated as topics connect)
├── visuals/            # HTML explanations, diagrams, image files
└── summary.html        # Session summary (generated at milestones or end)

Slug:主题的 kebab-case 名称,包含 2-5 个单词。例如:"Python decorators" -> python-decorators

工作流

Input -> [Parse Topic+Level] -> [Diagnose] -> [Build Roadmap] -> [Tutor Loop] -> [Session End]
                                    ^                                  |
                                    |     (mastery < 80%)              |
                                    +----------------------------------+
步骤 0:解析输入
  1. 从参数中提取主题。如果未提供主题,询问:

    Use AskUserQuestion:
    header: "Topic"
    question: "What do you want to learn?"
    -> Use plain text "Other" input (no preset options needed for topic)
    

    实际上,只需用纯文本询问:"今天你想学习什么主题?"

  2. 从用户输入中检测语言,并将其设为会话语言。

  3. 检查是否存在已有会话:

    test -d "sigma/{topic-slug}" && echo "exists"
    

    如果存在且指定了 --resume:读取 session.md,恢复状态,并从上次的概念继续。 如果存在但未指定 --resume:通过 AskUserQuestion 询问用户是要恢复会话还是重新开始。

  4. 创建输出目录:sigma/{topic-slug}/

步骤 1:诊断水平

目标:确定学习者已经掌握的内容。这将影响后续所有环节。

如果提供了 --level:将其作为起始参考,但仍需提出 1-2 个探查性问题,以准确校准水平。

如果未提供水平:使用 AskUserQuestion 提出 2-3 个诊断问题。

诊断问题设计:

  • 从宽泛的问题开始,再根据回答逐步缩小范围
  • 混合认知识别题(通过 AskUserQuestion 提供多项选择)和解释题(纯文本)
  • 每个问题都应探查不同的理解深度

"Python decorators" 的诊断示例:

第 1 轮(AskUserQuestion):

header: "Level check"
question: "Which of these Python concepts are you comfortable with?"
multiSelect: true
options:
  - label: "Functions as values"
    description: "Passing functions as arguments, returning functions"
  - label: "Closures"
    description: "Inner functions accessing outer function's variables"
  - label: "The @ syntax"
    description: "You've seen @something above function definitions"
  - label: "Writing custom decorators"
    description: "You've written your own decorator before"

第 2 轮(纯文本,根据第 1 轮的回答提出): "你能用自己的话解释,当 Python 在函数定义上方看到 @my_decorator 时会发生什么吗?"

诊断后:确定起始概念并制定学习路线图。

步骤 2:制定学习路线图

根据诊断结果,创建结构化的学习路径:

  1. 分解主题,形成 5-15 个原子概念,并按依赖关系排序。

  2. 标记掌握状态:not-started | in-progress | mastered | skipped

  3. 保存到 session.md:

    # Session: {topic}
    ## Learner Profile
    - Level: {diagnosed level}
    - Language: {lang}
    - Started: {timestamp}
    
    ## Concept Map
    | # | Concept | Prerequisites | Status | Score |
    |---|---------|---------------|--------|-------|
    | 1 | Functions as first-class objects | - | mastered | 90% |
    | 2 | Higher-order functions | 1 | in-progress | 60% |
    | 3 | Closures | 1, 2 | not-started | - |
    | ... | ... | ... | ... | ... |
    
    ## Session Log
    - [timestamp] Diagnosed level: intermediate
    - [timestamp] Concept 1: mastered (skipped, pre-existing knowledge)
    - [timestamp] Concept 2: started tutoring
    
  4. 生成可视化路线图 -> roadmap.html

    • 路线图模板见 references/html-templates.md
    • 将所有概念显示为带依赖箭头的节点
    • 按状态使用不同颜色:灰色(未开始)、蓝色(进行中)、绿色(已掌握)
    • 自动在浏览器中打开:open roadmap.html
  5. 使用 Excalidraw 生成概念图 -> concept-map/

    • 元素格式、模板和配色方案见 references/excalidraw.md
    • 展示主题层级及概念之间的关系
    • 随着学习者的进度更新
步骤 3:辅导循环(核心)

这是主要的教学循环。针对每个概念重复此流程,直到学习者掌握为止。

针对每个概念:

3a. 引入(最简)

不要解释概念,而要:

  • 设定背景:“现在我们来探索 [concept]。它建立在你刚掌握的 [prerequisite] 之上。”
  • 提出一个探究直觉的开场问题:
    • “你觉得 [concept] 是什么意思?”
    • “你觉得我们为什么需要 [concept]?”
    • “你能猜到……时会发生什么吗?”
3b. 提问循环

交替使用:

结构化问题(AskUserQuestion)——用于测试识别能力、让对方从选项中选择:

header: "{concept}"
question: "What will this code output?"
options:
  - label: "Option A: ..."
    description: "[code output A]"
  - label: "Option B: ..."
    description: "[code output B]"
  - label: "Option C: ..."
    description: "[code output C]"

开放式问题(纯文本)——用于测试深入理解:

  • “用你自己的话解释为什么……”
  • “举一个……的例子。”
  • “如果我们改变……,会发生什么?”
  • “你能预测……的输出吗?”
3c. 回复答案
答案质量回复
正确且解释充分简短肯定,然后提出更难的追问
正确但浅显“很好。现在你能解释一下为什么会这样吗?”
部分正确“你对 [part] 的理解方向是对的。不过想想 [hint]……”
错误“这个想法很有意思。我们退一步想想——[simpler sub-question]”
“我不知道”“没关系。我给你一点更简单的提示:[minimal hint]。现在你觉得呢?”

逐步增加提示(从最少帮助到最多帮助):

  1. 换种方式重述问题
  2. 提出一个相关且更简单的问题
  3. 给出一个具体例子供对方推理
  4. 指出所涉及的具体原理
  5. 一起演示一个最简示例(仍让对方补全其中的步骤)
3d. 视觉辅助(充分使用)

在有助于理解时生成视觉辅助。选择合适的格式:

适用情形输出模式工具
概念包含关系或层级Excalidraw 图表参见 references/excalidraw.md
代码演练/分步讲解带语法高亮的 HTML 页面写入 visuals/{concept-slug}.html
抽象概念需要类比生成的图像nano-banana-pro skill
数据/比较HTML 表格或图表写入 visuals/{concept-slug}.html
心智模型/流程Excalidraw 流程图参见 references/excalidraw.md

HTML 视觉指南:参见 references/html-templates.md

Excalidraw 指南:参见 references/excalidraw.md,了解 HTML 模板、元素格式、调色板和布局技巧。

3e. 同步进度(每轮都要执行)

每轮问答之后,无论掌握情况如何:

  1. 使用当前分数和状态变更更新 session.md
  2. 重新生成 roadmap.html,以反映最新状态:
    • 更新当前概念的掌握百分比
    • 更新状态徽标(not-started → in-progress、分数变化等)
    • 将“当前位置”的脉冲指示器移至当前概念
    • 更新页脚中的整体进度条
  3. 打开更新后的路线图:open roadmap.html

这样可确保学习者始终能实时查看自己的进度。

3f. 掌握情况检查

围绕一个概念进行 3-5 轮提问后,检查掌握情况:

  1. 提出 2-3 个综合问题(结合当前概念与之前学过的概念)
  2. 在内部评分:统计该概念的正确回答数与总回答数
  3. 如果 >= 80%:在 session.md 中将概念标记为 mastered,并进入下一个概念
  4. 如果 < 80%:找出具体薄弱点,通过有针对性的问题循环练习
  5. 同步进度(roadmap.html 已通过 3e 更新)

掌握后:生成简短的里程碑视觉内容或祝贺语,然后介绍下一个概念。

第 4 步:阶段里程碑

每轮都会更新 roadmap.html(步骤 3e)。在以下额外节点,生成内容更丰富的输出:

触发条件输出
每掌握 3 个概念重新生成概念图(Excalidraw)
完成路线图的一半生成 summary.html,用于阶段回顾
掌握所有概念生成包含全部学习成果的最终 summary.html
用户说“stop” / “pause”将状态保存到 session.md,生成当前的 summary.html
第 5 步:结束学习阶段

掌握所有概念或用户结束学习阶段时:

  1. 更新 session.md,记录最终状态
  2. 生成 summary.html:摘要模板见 references/html-templates.md
    • 涵盖的主题和掌握度评分
    • 学习者展现出的关键见解
    • 后续学习领域
    • 学习阶段统计(提问数、掌握的概念数、时长)
  3. 通过 Excalidraw 生成展示完整已掌握知识体系的最终概念图
  4. 在浏览器中打开摘要:open summary.html

恢复学习阶段

使用 --resume 或用户选择恢复时:

  1. 读取 sigma/{topic-slug}/session.md
  2. 解析学习者档案、概念图状态和学习记录
  3. 找到第一个状态为 in-progress 或 not-started 的概念
  4. 简短回顾:“上次你掌握了[概念]。当时你正在学习[当前概念]。”
  5. 针对上次掌握的概念提出一个快速回忆问题
  6. 从当前概念继续导师循环

参考资料

备注

  • 每轮辅导都应像对话一样自然,而不是机械执行
  • 每轮提问后都要更新 roadmap.html——这是学习者的实时进度面板
  • 变换问题类型以保持参与度:代码预测、向我解释、假设情境、调试、填空
  • 学习者遇到困难时放慢节奏;进展顺利时加快节奏
  • 使用视觉材料打破单调并巩固理解,而不是仅作装饰
  • 对于编程主题:鼓励学习者在两轮之间亲自尝试编写代码
  • 有结构化环节时使用 AskUserQuestion;开放式对话则使用纯文本

评论

支持 Markdown