pavel47 downloadsRender interactive single-choice quizzes from Markdown quiz blocks and persist answer progress.
Omni Quiz 把 Markdown 中的 quiz JSON 代码块渲染成可交互测验。它支持快速单选和混合题型标准测验,并在本地记录每次完整测验及每道题的全部尝试。插件不会修改 Quiz Markdown,也不依赖 AI 或网络请求。
L1–L4 认知等级点击左侧 Ribbon 的柱状图图标,或从命令面板运行“打开测试面板”。面板会自动索引 Vault 中所有 Markdown quiz 代码块,并提供:
面板统计只关联知识库中仍然存在的题目。“首次正确率”按每次测验会话中每道题的第一次回答计算,重新作答不会覆盖薄弱点数据。错题集只保留跨会话最新一次作答仍错误的问题;后续答对后会自动移除。
当前目录可直接作为 Vault 插件目录:
Vault/.obsidian/plugins/omni-quiz/
npm install
npm test
npm run build
Obsidian 实际加载 main.js、manifest.json 和 styles.css。构建后重新加载 Obsidian 窗口即可载入新代码。
工程开发请从 AGENTS.md 开始,架构边界见 ARCHITECTURE.md。标准验证入口:
./scripts/verify-quick.sh
./scripts/verify-full.sh
```quiz
{
"schemaVersion": 2,
"id": "state-pattern-001",
"title": "状态模式测试",
"mode": "standard",
"difficulty": { "min": "L1", "max": "L3" },
"questions": [
{
"id": "q1",
"type": "single",
"level": "L1",
"question": "状态模式主要解决什么问题?",
"options": [
{ "id": "A", "text": "复杂状态分支" },
{ "id": "B", "text": "资源加载" }
],
"answer": "A"
},
{
"id": "q2",
"type": "multiple",
"level": "L2",
"question": "哪些情况适合考虑状态模式?",
"options": [
{ "id": "A", "text": "行为随状态改变" },
{ "id": "B", "text": "存在复杂条件分支" },
{ "id": "C", "text": "读取静态配置" }
],
"answer": ["A", "B"]
},
{
"id": "q3",
"type": "true_false",
"level": "L2",
"question": "状态模式与所有有限状态机完全等价。",
"answer": false
},
{
"id": "q4",
"type": "fill_blank",
"level": "L3",
"question": "将行为封装到独立的 _____ 对象中。",
"answers": ["状态", "State"],
"caseSensitive": false
}
]
}
```
完整示例见 sample-standard-quiz.md。原有未声明 schemaVersion、type 和 level 的单选题仍然有效,默认按 quick、single、L1 解析。
| 题型 | 必需答案字段 | 说明 |
|---|---|---|
single |
answer: string |
答案必须对应一个选项 ID |
multiple |
answer: string[] |
必须选择完全相同的一组选项,顺序不影响判分 |
true_false |
answer: boolean |
使用 JSON 布尔值 true 或 false |
fill_blank |
answers: string[] |
任一答案匹配即正确;默认忽略大小写和首尾空格 |
data.json 是学习进度的唯一来源。文件路径::quiz.id、测验会话和 question.id 组织。