mcpField
Q
quiz-generator

quiz-generator

github.com/panaversity其他58 次安装
代码仓库

关于 quiz-generator

quiz-generator 是用于制作大学水平概念测验的技能,强调应用理解而非记忆。它规定题目设计、答案分布、即时反馈、解析和校验要求。

主要功能

  1. 01每章 50 道题的结构
  2. 02侧重应用层级的概念题
  3. 03即时反馈与解析
  4. 04均衡调整答案位置
  5. 05校验选项长度与来源

适用场景

  1. 01制作完整的章节测验
  2. 02检查题目是否偏向记忆
  3. 03均衡正确答案位置
  4. 04审核干扰项与解析

安装

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

$npx skills add https://github.com/panaversity/agentfactory --skill quiz-generator

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

包含的文件

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

references/
answer-distribution.md
bias-detection-checklist.md
example-quiz.md
file-naming.md
generation-process.md
option-length-validation.md
pitfalls-and-solutions.md
quality-checklist.md
scripts/
redistribute_answers.py
redistribute_answers_v2.py

详细介绍

测验生成器

快速开始

# 1. Generate 50 questions for chapter
# Focus on conceptual (75%+ Apply level), not recall

# 2. Redistribute answers evenly
python scripts/redistribute_answers_v2.py quiz.md A

# 3. Validate option lengths (±3 words per question)
# Manually count words for ALL 50 questions

角色设定

你负责生成大学水平的概念测验,考查理解而非记忆。目标是出 50 道全面覆盖所有章节概念的题目,并针对每个答案提供即时反馈。

固定约束

question_count: 50  # Comprehensive bank
questions_per_batch: 15-20  # Displayed per session
options_per_question: 4  # Always exactly 4
correct_answer_distribution: ~12-13 per index (0-3)
feedback_timing: immediate  # After each answer
passing_score: NONE  # No threshold
file_naming: ##_chapter_##_quiz.md

分析问题

1. 这是概念题(而非回忆题)吗?
类型示例有效?
回忆“什么是 Python 列表?”❌
概念“哪种操作会暴露可变性问题?”✅

目标:75% 以上的题目达到“应用”或更高层级

2. 选项长度是否相当(相差不超过 3 个单词)?
选项单词数有效?
A:“是” / B:“它会异步处理”2 vs 4✅
A:“是” / B:“该框架会异步处理请求”2 vs 6❌

规则:所有选项的长度都必须相差不超过 3 个单词,以防学生通过模式猜答案

3. 答案是否均匀分布?
索引数量有效?
012-13✅
112-13✅
212-13✅
312-13✅

规则:不得连续 3 题或以上使用相同索引,不得出现明显模式

原则

原则 1:必须有 50 道题
  • 全面覆盖(所有章节概念)
  • 间隔重复(每次重做时题目不同)
  • 组件会随机排序,并在每次测验中显示 15-20 道题
原则 2:即时反馈

每道题作答后立即显示(而不是在测验结束时):

  • ✅ 高亮显示正确选项(绿色)
  • ❌ 说明错误原因(答错时)
  • 解释(100-150 个单词)
原则 3:涵盖所有选项

每段解释都必须涵盖:

  1. 为什么正确选项正确(2-3 句话)
  2. 每个干扰项为什么错误(每个 1-2 句话,共 3 个)
  3. 与现实世界的联系(1-2 句话)
原则 4:注明来源
source: "Lesson 1: Understanding Mutability"

将每道题关联到具体课程,方便复习。

测验组件格式

---
sidebar_position: 5
title: "Chapter X: [Topic] Quiz"
---

# Chapter X Quiz

Brief intro (1-2 sentences).

<Quiz
  title="Chapter X Assessment"
  questions={[
    {
      question: "Conceptual question here?",
      options: [
        "Option A (4-6 words)",
        "Option B (4-6 words)",
        "Option C (4-6 words) ← CORRECT",
        "Option D (4-6 words)"
      ],
      correctOption: 2,  // Index 0-3, NOT 1-4!
      explanation: "Why C is correct (2-3 sentences). Why A is wrong (1-2 sentences). Why B is wrong. Why D is wrong. Real-world connection.",
      source: "Lesson 1: Topic Title"
    },
    // ... 49 more questions (total: 50)
  ]}
  questionsPerBatch={18}
/>

重新分配答案

大模型难以实现均匀分布。生成后请使用此脚本:

python scripts/redistribute_answers_v2.py quiz.md A

序列 A-H 提供不同的分布(每个索引约 12-13 次)。

功能:

  1. 解析测验题目
  2. 调换选项位置,使其符合序列
  3. 更新解释,使其引用新的选项位置
  4. 验证所有解释都与正确答案相符

验证选项长度(重要)

问题:选项长度不一致会让学生通过选择最长或最短的选项来猜答案。

解决方案:手动统计每道题中每个选项的单词数。

✅ PASS: 4, 5, 4, 5 words (all within ±3)
❌ FAIL: 2, 4, 11, 3 words (2 to 11 = 9-word spread)

还需确认:

  • 最长选项约有 25% 的概率是正确答案(无偏差)
  • 最短选项约有 25% 的概率是正确答案(无偏差)

常见陷阱

陷阱错误做法正确做法
题目数量少于 50 道题恰好 50 道
索引值correctOption: 4correctOption: 3(0-3)
缺少来源没有来源字段source: "Lesson N: Title"
及格分数passingScore={70}不传该属性(已移除)
回忆题“什么是 X?”“哪种情况会暴露 X 问题?”
解释不充分只解释正确选项涵盖全部 4 个选项
答案模式0,1,2,3,0,1,2,3...随机分布,每个索引约 12-13 次
选项长度2 个 vs 11 个单词所有选项长度相差不超过 3 个单词

文件命名

格式:##_chapter_##_quiz.md

章节课程文件名
2405_chapter_02_quiz.md
5607_chapter_05_quiz.md
14506_chapter_14_quiz.md

交接检查清单

内容:

  • 50 道题(不得少于 50 道)
  • 75% 以上达到应用层级或更高
  • 涵盖所有主要主题
  • 不包含记忆题

分布:

  • correctOption 使用 0-3(而非 1-4)
  • 每个索引约 12-13 道题
  • 不得连续 3 道或更多题使用相同索引

选项长度:

  • 已统计所有选项(全部 50 道题)
  • 所有选项的长度差均在 ±3 个词以内
  • 最长选项不偏向正确答案
  • 最短选项不偏向正确答案

解释:

  • 每条解释为 100-150 个词
  • 解释正确答案的原因
  • 说明每个干扰项的问题
  • 联系实际应用场景

格式:

  • JSX 语法有效
  • 每道题恰好有 4 个选项
  • 全部 50 道题均包含 source 字段
  • 不得使用 passingScore 属性
  • 文件名正确

如果验证失败

  1. 运行重新分配脚本:python scripts/redistribute_answers_v2.py quiz.md A
  2. 手动重新统计选项长度
  3. 检查解释中提及的答案是否与 correctOption 一致
  4. 如果尝试 2 次后问题仍未解决,停止并报告

评论

支持 Markdown