Omni Quiz
approvedby pavel
Render interactive single-choice quizzes from Markdown quiz blocks and persist answer progress. - This plugin has not been manually reviewed by Obsidian staff.
Omni Quiz
Omni Quiz 把 Markdown 中的 quiz JSON 代码块渲染成可交互测验。它支持快速单选和混合题型标准测验,并在本地记录每次完整测验及每道题的全部尝试。插件不会修改 Quiz Markdown,也不依赖 AI 或网络请求。
功能
- 单选、多选、判断和填空题
L1–L4认知等级- 即时判定、答案解释和重新作答
- 本次得分与首次正确率
- 独立测验会话和完整尝试历史
- 自动恢复旧版单选题和答题记录
- 主页面板浏览整个知识库中的测试题
- L1–L4 首次正确率、题型构成和测验进度可视化
知识复习台
点击左侧 Ribbon 的柱状图图标,或从命令面板运行“打开测试面板”。面板会自动索引 Vault 中所有 Markdown quiz 代码块,并提供:
- 复习、主题、题库和统计四个入口
- 最近一次作答仍错误的错题索引,并可定位回原题
- 从笔记 frontmatter 和正文标签建立的层级主题索引
- 测试题总数、题目总数、已测试数量和完成次数
- 全局及 L1–L4 首次正确率
- 单选、多选、判断和填空题分布
- 最近 8 个自然周的首次回答量和正确率趋势
- 按标题、Quiz ID、文件路径或主题搜索
- 模式、主题和学习状态筛选,以及最近学习、待复习、正确率和标题排序
- 当前进度、最近活动和一键打开原笔记
- 无效 Quiz block 与重复 Quiz ID 提示
面板统计只关联知识库中仍然存在的题目。“首次正确率”按每次测验会话中每道题的第一次回答计算,重新作答不会覆盖薄弱点数据。错题集只保留跨会话最新一次作答仍错误的问题;后续答对后会自动移除。
安装和验证
当前目录可直接作为 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
Schema v2 示例
```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[] | 任一答案匹配即正确;默认忽略大小写和首尾空格 |
学习记录
- Markdown 是题目内容的唯一来源。
- 插件
data.json是学习进度的唯一来源。 - 记录以
文件路径::quiz.id、测验会话和question.id组织。 - 重新作答会追加一次尝试,不会覆盖首次错误。
- “首次正确率”按每题在当前会话中的第一次回答计算。
- 点击“完成测验”后会锁定本次会话;“开始新测验”会创建独立记录。
- 旧版数据会自动迁移,但旧格式只保存最后一次答案,因此无法还原升级前每次尝试的具体内容。
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.