README file from
GithubSmart Question Tutor — 智学助手
AI-powered, spaced-repetition study plugin for Obsidian
English | 中文
What is it?
Smart Question Tutor turns your Obsidian Markdown notes into an active-study machine. It reads your local knowledge base, uses AI (local Ollama or any OpenAI-compatible API) to generate quiz questions, records wrong answers into a spaced-repetition review loop, builds a knowledge-tag graph, and lets you export to Markdown / Word / PDF.
Features
AI Question Generation
- Generate quizzes from any Markdown note with 5 question types: single choice, multiple choice, true/false, fill-in-the-blank, short answer.
- Supports Ollama (local, private) and OpenAI-compatible endpoints (DeepSeek, etc.) via custom base URL, model, API key and temperature.
- AI auto-extracts knowledge tags and writes
[[wikilinks]]so everything appears in your Obsidian graph view. - Customize per-type counts, run in batch over multiple files, and sort results by source / tag / date.
Full Exam Recognition
- Extract every question from a complete exam paper or question bank via AI, preserving original question types and formatting.
- Large files are chunked (15,000 chars per chunk, 2,000 overlap) to avoid truncation.
- Existing answers are kept as-is; missing answers are auto-generated by the AI.
- Handles Markdown, txt, RTF, docx, PDF and images.
Answering Mode
- Start answering any generated result or saved question file in one click.
- Instant grading with the correct answer and explanation.
- Objective questions are auto-scored; subjective questions can be manually marked correct/wrong — missed ones go straight to the wrong-answer book.
Wrong Answer Book (SM-2 spaced repetition)
- Answer correctly → interval advances; answer wrong → resets to day 1.
- Three interval presets per module — Slow / Standard / Fast — with Chinese hints for each phase of exam prep.
- Wrong answers carry
[[knowledge tags]]and sync into the knowledge folder for the graph. - Automatic review reminders when the plugin loads.
Study Notes
- Generate condensed study notes from any Markdown file, any existing question/wrong-answer/note.
- Notes participate in the same spaced-repetition review schedule.
- Search, filter and export.
Review Dashboard
- One unified list of every due review item (wrong answers + questions + notes), filterable and sortable by source / tag / date.
- One-click Done per item advances it to the next review cycle.
Learning Heatmap
- GitHub-style annual contribution graph on the Home tab.
- Horizontal scrollbar, auto-positioned to today; follows the sidebar width, always staying pinned to the current day.
- Color intensity tiers by activity count.
Knowledge Graph
- A single knowledge-tag index folder; each tag gets an auto-generated MOC note with 相关题目 / 相关笔记 / 相关错题 sections.
- Rebuild the index on demand: it scans every folder's tags, recreates all index notes, and cleans up stale ones in one pass.
- Handwritten notes in the knowledge folder are never touched.
Export
- Export to Markdown, Word (.docx) or PDF.
- Answer-free exports are available for self-testing.
🌐 Bilingual UI (Chinese / English)
- One-click interface language switch in Settings — the whole UI flips between 中文 and English instantly.
- The switch is also available right inside the sidebar settings; command palette names update after a plugin restart.
- AI prompts are bilingual too while keeping the "language follows the material" rule: Chinese material still produces Chinese questions, English material produces English questions.
- English parsing & export support (
Answer:,Explanation:,Answer Summary, ...) — English-material exams parse and export correctly. - Missing translations fall back to the original Chinese text, so the UI never goes blank.
Repository
GitHub: https://github.com/xxinjie21/Smart-Quiz-Tutor
Installation
From Obsidian Community Plugins
- Open Settings → Community plugins → Browse
- Search for Smart Question Tutor
- Click Install, then Enable
Manual Installation (GitHub Release)
Download the main.js, manifest.json and styles.css from the latest Release, then copy them into:
your-vault/.obsidian/plugins/smart-quiz-tutor/
├── main.js
├── manifest.json
└── styles.css
Then enable the plugin in Settings → Community plugins → Installed plugins.
Quick Start
- Configure AI — open Settings → Smart Question Tutor; choose Ollama or OpenAI and set the API URL, model, and API key (if needed).
- Generate questions — click the ribbon icon to open the sidebar; in the 题目 tab pick a Markdown source file, choose question types & counts, click Generate.
- Start answering — click 开始答题 after generation finishes.
- Review mistakes — wrong answers are auto-saved with spaced-repetition scheduling; open the 错题 tab to review now.
- Track progress — check the 复习 tab for due items, or read the heatmap on 首页.
Commands
| Command | Action |
|---|---|
| 打开智学助手侧边栏 | Open the main sidebar |
| 基于当前文档生成试题 | Open the generator for the active file |
| 识别当前文件试卷 | Run full-exam recognition on the active file |
| 查看错题本 | Open the wrong-answer list |
| 查看题目生成历史记录 | Open generation history |
| 重建知识点索引 | Rebuild all knowledge-index MOC notes |
Hotkeys
| Hotkey | Action |
|---|---|
Ctrl+Q |
Open the generator for the current document |
Customizable in Settings → Hotkeys.
Settings
Core
| Setting | Description | Default |
|---|---|---|
| 界面语言 | Interface language (中文 / English) |
中文 |
| 接口类型 | Ollama or OpenAI-compatible | Ollama |
| 接口地址 | API service URL | http://127.0.0.1:11434 |
| 模型名称 | AI model | qwen2:7b |
| API Key | Required only for hosted providers | (empty) |
| Temperature | Randomness (0–2) | 0.1 |
| 根文件夹 | Parent folder for all modules | 智学助手 |
| 题目文件夹 | Generated-question folder | 题目 |
| 错题文件夹 | Wrong-answer folder | 错题 |
| 笔记文件夹 | Study-note folder | 笔记 |
| 知识点文件夹 | Knowledge-index folder | 知识点 |
| 排除文件夹 | Folders excluded from scanning | .trash, 模板, templates |
Review Interval Presets
| Module | Slow | Standard | Fast |
|---|---|---|---|
| 错题 | 2,5,10,20,40,60 |
1,2,4,7,15,30 |
1,1,3,5,10,20 |
| 题目 | 10,20,40,80,120 |
7,15,30,60,90 |
4,8,18,40,60 |
| 笔记 | 3,8,20,45,80 |
2,6,14,35,70 |
1,1,2,3,5 |
Interface
The sidebar has 6 tabs:
| Tab | Content |
|---|---|
| 🏠 首页 | Stats overview (4 cards) + learning heatmap + review reminders + quick actions |
| 📝 题目 | Generation settings, question files, file picker |
| 📋 笔记 | Create study notes from files, note management |
| ❌ 错题 | Wrong-answer list, detail, review, export, regeneration |
| 📊 复习 | Unified due-review dashboard with filter / sort / one-click completion |
| ⚙️ 设置 | All configuration |
Tech Stack
| Technology | Purpose |
|---|---|
| Obsidian API | Plugin platform |
| TypeScript | Development |
| esbuild | Bundler |
| docx | Word document generation |
| SM-2 | Spaced-repetition algorithm |
Changelog
v2.1.0
- One-click Chinese/English language switch — ~500 UI strings across all tabs now go through a zh/en dictionary; switch instantly from Settings (or the in-sidebar settings).
- Bilingual AI prompts — question generation, exam extraction, note generation and tag suggestion support both languages, keeping the "language follows the material" rule.
- English parsing & export support — the question parser and exporter now recognize
Answer:/Explanation:/Answer Summaryetc., so English-material questions parse and export correctly. - Dictionary fallback — missing translations show the original text, so the UI never goes blank.
- Made the dynamic-script strip regex minifier-agnostic, keeping
createElement("script")at 0 for the Obsidian review lint. - 153 tests pass (new: dictionary integrity, placeholder replacement, bilingual prompts, English parsing);
tsc0 errors, ESLint 0 errors.
v2.0.1
- Removed the remaining dynamic
<script>injection (from thesetimmediatedependency) that Obsidian's review lint flagged as an error —createElement("script")went from 3 to 0, unblocking community review.
v2.0.0
- Knowledge-index rebuild is now resilient — a single failed tag write no longer aborts the whole rebuild; stale index files are cleaned up in one pass.
- Review progress persists across sessions — interval / correct-count are stored as numbers, so your spaced-repetition streak is no longer reset on reload.
- Responsive heatmap — uses a scrollbar, auto-positions to today, and stays pinned to today as you resize the sidebar.
- Added comprehensive test suites (knowledge index, document service, note service, fixes).
Support
If this plugin helps your studies, consider giving it a star on GitHub!
GitHub: https://github.com/xxinjie21/Smart-Quiz-Tutor
For issues and feature requests, please open an issue.
License
这是什么?
智学助手 把你的 Obsidian Markdown 笔记变成一台主动学习机:读取本地知识库,用 AI(本地 Ollama 或任意 OpenAI 兼容接口)生成试题,把错题纳入间隔重复的复习循环,构建知识点图谱,并可导出 Markdown / Word / PDF。
功能
🧠 AI 试题生成
- 基于 Markdown 笔记原文,AI 自动出题,支持 5 种题型:单选 / 多选 / 判断 / 填空 / 简答。
- 支持 Ollama(本地、离线、隐私)与 OpenAI 兼容接口(如 DeepSeek 等),可自定义接口地址、模型、API Key、Temperature。
- AI 自动提取知识点标签并写入
[[双向链接]],融入 Obsidian 图谱视图。 - 每种题型可独立设置数量,支持多文件批量生成,结果可按源文件 / 知识点 / 时间排序。
📄 整卷识别
- 从完整试卷 / 题集中 AI 提取全部题目,保留原题型与格式。
- 大文件自动分块处理(每块 15000 字符、重叠 2000 字符),避免内容截断。
- 原卷已有答案原样保留,缺答案由 AI 自动补全。
- 支持 Markdown、txt、RTF、docx、PDF 与图片。
✍️ 答题模式
- 一键开始对刚生成的结果或已保存的题目文件答题。
- 即时批改,展示正确答案与解析。
- 客观题自动计分,主观题可手动标记正误;答错自动进入错题本。
📘 错题本(SM-2 间隔重复)
- 答对 → 间隔递增;答错 → 重置为第 1 天。
- 每个模块提供 慢速 / 标准 / 快速 三套间隔预设,并附各备考阶段的中文说明。
- 错题携带
[[知识点标签]],自动同步到知识点文件夹,图谱可见。 - 插件启动时自动提醒到期复习。
📓 学习笔记
- 从任意 Markdown 文件,或已有题目 / 错题 / 笔记一键生成浓缩知识点笔记。
- 笔记同样纳入间隔重复复习体系。
- 支持搜索、筛选、导出。
📊 复习看板
- 统一展示所有到期复习项(错题 + 题目 + 笔记),可按源文件 / 知识点 / 时间筛选排序。
- 每项一键「已完成」,自动推进到下一复习周期。
📈 学习热力图
- 首页 GitHub 风格年度活跃图。
- 横向滑动条,自动定位到当天;随侧边栏宽度自适应,始终钉在当天。
- 颜色按活动频次分级。
🔗 知识点图谱
- 统一的知识点索引文件夹;每个知识点自动生成 MOC 索引笔记,含 相关题目 / 相关笔记 / 相关错题 三个分区。
- 支持一键重建知识点索引:扫描各文件夹标签、重建全部索引、并一次性清理过期索引。
- 知识点文件夹中的手写笔记永远不会被误删。
📤 专业导出
- 支持导出 Markdown、Word (.docx)、PDF。
- 可导出无答案版用于自测。
🌐 中英文双语界面
- 设置页一键切换界面语言,整个界面在 中文 / English 间即时切换。
- 侧边栏设置内也可直接切换;命令面板中的命令名在重启插件后更新。
- AI 提示词同样双语化,同时保留「语言与材料一致」规则:中文材料仍出中文题,英文材料出英文题。
- 英文解析与导出兼容(
Answer:、Explanation:、Answer Summary等)——英文材料的试卷可正常解析与导出。 - 漏翻的文案自动回退显示中文原文,界面永不空白。
仓库地址
GitHub: https://github.com/xxinjie21/Smart-Quiz-Tutor
安装
从 Obsidian 社区插件安装
- 打开 设置 → 社区插件 → 浏览
- 搜索 Smart Question Tutor
- 点击 安装,然后 启用
手动安装(GitHub Release 下载)
从最新 Release 下载 main.js、manifest.json 和 styles.css,放入:
your-vault/.obsidian/plugins/smart-quiz-tutor/
├── main.js
├── manifest.json
└── styles.css
然后在 设置 → 社区插件 → 已安装插件 中启用。
快速开始
- 配置 AI — 打开 设置 → Smart Question Tutor,选择 Ollama 或 OpenAI,设置接口地址、模型、API Key(如需要)。
- 生成题目 — 点击左侧栏图标打开侧边栏,在「题目」Tab 选择 Markdown 源文件,选择题型与数量,点击「生成」。
- 开始答题 — 生成完成后点击「开始答题」。
- 复习错题 — 错题自动按间隔重复计划保存;打开「错题」Tab 可立即复习。
- 跟踪进度 — 在「复习」Tab 查看待复习项,或在首页查看热力图。
命令
| 命令 | 说明 |
|---|---|
| 打开智学助手侧边栏 | 打开主界面侧边栏 |
| 基于当前文档生成试题 | 基于当前活动文件打开出题器 |
| 识别当前文件试卷 | 对当前文件执行整卷识别 |
| 查看错题本 | 打开错题列表 |
| 查看题目生成历史记录 | 打开生成历史 |
| 重建知识点索引 | 重建所有知识点索引笔记 |
快捷键
| 快捷键 | 功能 |
|---|---|
Ctrl+Q |
为当前文档打开出题器 |
可在 设置 → 快捷键 中自定义。
配置
核心设置
| 设置项 | 说明 | 默认值 |
|---|---|---|
| 界面语言 | 界面语言(中文 / English) |
中文 |
| 接口类型 | Ollama 或 OpenAI 兼容 | Ollama |
| 接口地址 | API 服务地址 | http://127.0.0.1:11434 |
| 模型名称 | AI 模型 | qwen2:7b |
| API Key | 仅在托管服务需要时填写 | (空) |
| Temperature | 随机性 (0–2) | 0.1 |
| 根文件夹 | 所有模块文件夹的父目录 | 智学助手 |
| 题目文件夹 | 生成题目保存路径 | 题目 |
| 错题文件夹 | 错题保存路径 | 错题 |
| 笔记文件夹 | 学习笔记保存路径 | 笔记 |
| 知识点文件夹 | 知识点索引保存路径 | 知识点 |
| 排除文件夹 | 不参与扫描的文件夹 | .trash, 模板, templates |
复习间隔预设
| 模块 | 慢速 | 标准 | 快速 |
|---|---|---|---|
| 错题 | 2,5,10,20,40,60 |
1,2,4,7,15,30 |
1,1,3,5,10,20 |
| 题目 | 10,20,40,80,120 |
7,15,30,60,90 |
4,8,18,40,60 |
| 笔记 | 3,8,20,45,80 |
2,6,14,35,70 |
1,1,2,3,5 |
界面
侧边栏共有 6 个 Tab:
| Tab | 功能 |
|---|---|
| 🏠 首页 | 统计概览(4 卡片)+ 学习热力图 + 复习提醒 + 快捷操作 |
| 📝 题目 | 出题设置、题目文件管理、文件选择器 |
| 📋 笔记 | 从文件创建学习笔记、笔记管理 |
| ❌ 错题 | 错题列表、详情、复习、导出、重生成 |
| 📊 复习 | 统一改版到期复习看板,支持筛选 / 排序 / 一键完成 |
| ⚙️ 设置 | 所有配置项 |
技术栈
| 技术 | 用途 |
|---|---|
| Obsidian API | 插件平台 |
| TypeScript | 开发语言 |
| esbuild | 构建工具 |
| docx | Word 文档生成 |
| SM-2 | 间隔重复算法 |
更新日志
v2.1.0
- 一键中英文切换 — 全部 Tab 约 500 条 UI 文案接入中英文字典,在设置页(或侧边栏设置内)一键切换、即时生效。
- AI 提示词双语化 — 出题、识别试卷、生成笔记、添加标签的提示词支持中英文,保留「语言与材料一致」规则。
- 英文解析与导出兼容 — 题目解析器与导出器识别
Answer:/Explanation:/Answer Summary等英文标签,英文材料出的题可正常解析与导出。 - 字典回退机制 — 漏翻文案自动显示原文,界面永不空白。
- 动态脚本剥离正则改为与 minifier 变量名无关,
createElement("script")始终保持 0 处,满足 Obsidian 审核 lint。 - 153 项测试全部通过(新增:字典完整性、占位符替换、提示词双语、英文解析);
tsc0 错误、ESLint 0 errors。
v2.0.1
- 清除
setimmediate依赖残留的动态<script>注入(Obsidian 审核 lint 报错的靶点),createElement("script")由 3 处降为 0 处,解除社区审核阻塞。
v2.0.0
- 知识点索引重建更可靠 — 单个标签写入失败不再中断整个重建;过期索引一次性全部清理。
- 复习进度跨会话持久化 — 间隔 / 答对次数以数字存储,间隔重复连续记录不再因重载被重置。
- 热力图响应式 — 使用滑动条、自动定位当天,并在调整侧边栏时始终钉在当天。
- 新增系统化测试套件(知识点索引、文档服务、笔记服务、修复验证)。
支持
如果这个插件对你的学习有帮助,欢迎在 GitHub 上给一个 ⭐!
GitHub: https://github.com/xxinjie21/Smart-Quiz-Tutor
如有问题或建议,请 提交 Issue。