关于 quiz-generator
quiz-generator 是用于制作大学水平概念测验的技能,强调应用理解而非记忆。它规定题目设计、答案分布、即时反馈、解析和校验要求。
主要功能
- 01每章 50 道题的结构
- 02侧重应用层级的概念题
- 03即时反馈与解析
- 04均衡调整答案位置
- 05校验选项长度与来源
适用场景
- 01制作完整的章节测验
- 02检查题目是否偏向记忆
- 03均衡正确答案位置
- 04审核干扰项与解析
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ panaversity/ agentfactory --skill quiz-generator安装后在 Claude Code 中输入/quiz-generator确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/answer-distribution.mdbias-detection-checklist.mdexample-quiz.mdfile-naming.mdgeneration-process.mdoption-length-validation.mdpitfalls-and-solutions.mdquality-checklist.mdscripts/redistribute_answers.pyredistribute_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. 答案是否均匀分布?
| 索引 | 数量 | 有效? |
|---|---|---|
| 0 | 12-13 | ✅ |
| 1 | 12-13 | ✅ |
| 2 | 12-13 | ✅ |
| 3 | 12-13 | ✅ |
规则:不得连续 3 题或以上使用相同索引,不得出现明显模式
原则
原则 1:必须有 50 道题
- 全面覆盖(所有章节概念)
- 间隔重复(每次重做时题目不同)
- 组件会随机排序,并在每次测验中显示 15-20 道题
原则 2:即时反馈
每道题作答后立即显示(而不是在测验结束时):
- ✅ 高亮显示正确选项(绿色)
- ❌ 说明错误原因(答错时)
- 解释(100-150 个单词)
原则 3:涵盖所有选项
每段解释都必须涵盖:
- 为什么正确选项正确(2-3 句话)
- 每个干扰项为什么错误(每个 1-2 句话,共 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 次)。
功能:
- 解析测验题目
- 调换选项位置,使其符合序列
- 更新解释,使其引用新的选项位置
- 验证所有解释都与正确答案相符
验证选项长度(重要)
问题:选项长度不一致会让学生通过选择最长或最短的选项来猜答案。
解决方案:手动统计每道题中每个选项的单词数。
✅ 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: 4 | correctOption: 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
| 章节 | 课程 | 文件名 |
|---|---|---|
| 2 | 4 | 05_chapter_02_quiz.md |
| 5 | 6 | 07_chapter_05_quiz.md |
| 14 | 5 | 06_chapter_14_quiz.md |
交接检查清单
内容:
- 50 道题(不得少于 50 道)
- 75% 以上达到应用层级或更高
- 涵盖所有主要主题
- 不包含记忆题
分布:
- correctOption 使用 0-3(而非 1-4)
- 每个索引约 12-13 道题
- 不得连续 3 道或更多题使用相同索引
选项长度:
- 已统计所有选项(全部 50 道题)
- 所有选项的长度差均在 ±3 个词以内
- 最长选项不偏向正确答案
- 最短选项不偏向正确答案
解释:
- 每条解释为 100-150 个词
- 解释正确答案的原因
- 说明每个干扰项的问题
- 联系实际应用场景
格式:
- JSX 语法有效
- 每道题恰好有 4 个选项
- 全部 50 道题均包含
source字段 - 不得使用
passingScore属性 - 文件名正确
如果验证失败
- 运行重新分配脚本:
python scripts/redistribute_answers_v2.py quiz.md A - 手动重新统计选项长度
- 检查解释中提及的答案是否与 correctOption 一致
- 如果尝试 2 次后问题仍未解决,停止并报告
评论
支持 Markdown