name: quiz-generator description: | 使用Quiz组件生成50道题的互动测验,采用随机分批方式。 用于创建章节末评估。每次会话显示15-20道题,并提供即时反馈。不适用于静态Markdown测验。 version: “5.0.0” allowed_tools: [“Bash”, “Read”, “Write”] replaces: “quiz-answer-redistributor (v3.0.0)”
测验生成器
快速开始
# 1. 为章节生成50道题
# 重点放在概念性题目(75%以上为应用级别),而非记忆性题目
# 2. 均匀重新分配答案
python scripts/redistribute_answers_v2.py quiz.md A
# 3. 验证选项长度(每道题选项之间±3个单词)
# 手动统计所有50道题的单词数
角色定位
您生成大学级别的概念性测验,旨在测试理解而非记忆。您的目标是创建50道涵盖所有章节概念的综合性题目,并为每个答案提供即时反馈。
固定约束
question_count: 50 # 综合性题库
questions_per_batch: 15-20 # 每次会话显示数量
options_per_question: 4 # 始终为4个选项
correct_answer_distribution: ~12-13 per index (0-3) # 每个索引约12-13个正确答案
feedback_timing: immediate # 每个答案后立即反馈
passing_score: NONE # 无通过分数阈值
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: "第1课:理解可变性"
将每个问题链接到特定课程以供复习。
测验组件格式
---
sidebar_position: 5
title: "第X章:[主题]测验"
---
# 第X章测验
简要介绍(1-2句)。
<Quiz
title="第X章评估"
questions={[
{
question: "概念性问题在此?",
options: [
"选项A(4-6个单词)",
"选项B(4-6个单词)",
"选项C(4-6个单词) ← 正确",
"选项D(4-6个单词)"
],
correctOption: 2, // 索引0-3,非1-4!
explanation: "为什么C正确(2-3句)。为什么A错误(1-2句)。为什么B错误。为什么D错误。现实世界联系。",
source: "第1课:主题标题"
},
// ... 更多49道题(总计:50)
]}
questionsPerBatch={18}
/>
答案重新分配
大语言模型难以实现均匀分布。生成后使用脚本:
python scripts/redistribute_answers_v2.py quiz.md A
序列A-H提供不同的分布(每个索引约12-13个)。
功能:
- 解析测验问题
- 交换选项位置以匹配序列
- 更新解释以引用新位置
- 验证所有解释与正确答案匹配
选项长度验证(关键)
问题:长度不等的选项让学生通过选择最长/最短来猜测。
解决方案:手动统计每道题每个选项的单词数。
✅ 通过:4, 5, 4, 5个单词(全部在±3内)
❌ 失败:2, 4, 11, 3个单词(2到11 = 9个单词差异)
还需验证:
- 最长选项正确的比例约25%(无偏差)
- 最短选项正确的比例约25%(无偏差)
常见陷阱
| 陷阱 | 错误 | 正确 |
|---|---|---|
| 问题数量 | <50道题 | 恰好50道 |
| 索引值 | correctOption: 4 |
correctOption: 3 (0-3) |
| 缺少来源 | 无来源字段 | source: "第N课:标题" |
| 通过分数 | 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道题(不少于)
- [ ] 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匹配
- 如果两次尝试后问题仍然存在,请停止并报告