本地优先的 AI 备考与训练桌面应用
智能出卷 · AI 辅导 · 自定义练习 · 成长体系 · 本地持久化
OpenExam 是一个基于 Electron + React + SQLite 的桌面端学习平台,面向考公、考证、刷题训练与 AI 辅导场景,提供从题库导入、智能组卷、答题分析到成长追踪的一体化学习链路。官方题库以压缩 SQLite 种子库内置到应用中,首启自动初始化到本地用户目录,兼顾离线可用与后续扩展。
学习中心 · 我的成长 · AI 智能导师 · 成就系统 · 深色模式
AI 出卷:根据知识点、难度、题型快速生成试卷与练习。AI 导师:支持讲题、追问、知识点梳理、举一反三。自定义试卷:用户可保存自定义试卷与自定义练习,并持久化到本地。题库导入:支持图片 OCR、PDF、Excel、CSV、JSON 等多种来源。错题闭环:记录答题结果、错因与练习历史,形成复习闭环。成长体系:等级、成就、学习日历、阶段目标统一沉淀。本地优先:学习数据默认保存在本地,更适合个人长期积累。
| 层级 | 方案 |
|---|---|
| 桌面容器 | Electron |
| 前端界面 | React + Vite |
| 本地数据库 | SQLite + better-sqlite3 |
| 状态与数据 | 本地 Store + Renderer 页面状态 |
| AI 模型 | OpenAI / Claude / DeepSeek / 豆包 / Kimi / 通义千问 / 智谱 GLM |
官方题库:仓库内保存压缩种子库data/openexam.seed.db.gz,不再维护超大总 JSON。首启初始化:应用首次启动时自动解压种子库到用户目录openexam.db。题图离线化:题图单独存放在question-assets/,题目 HTML 中引用openexam-asset://question-assets/...。本地解析:Electron 主进程负责把资源协议映射到本地文件,开发环境与打包环境统一可用。更新链路:抓取流程为“爬题 → 本地化题图 → 生成种子库 → 同步本地 SQLite”,数据结构更稳定。
npm install
npm run dev# 构建前端
npm run build
# 重建 Electron 原生依赖
npm run rebuild:electron
# 从本地官方库重建种子库
npm run build:saduck-seed
# 将种子库同步到本地用户数据库
npm run sync:saduck-seed
# 重新抓取官方题库并更新种子库/本地库
npm run crawl:saduck
# 本地打包 macOS
npm run dist:mac
# 本地打包 Windows
npm run dist:win项目已接入 GitHub Actions 自动构建与 Release 打包:
- 推送
v*标签后自动触发构建。 - 自动产出
macOS安装包与Windows安装包。 - 构建产物自动上传到 GitHub Release。
- Release 页面自动附带 macOS 首次打开说明。
git tag v0.2.1
git push origin main
git push origin v0.2.1- 最新版本说明见
CHANGELOG.md。
当前自动构建的 macOS 包未做 Apple notarization。若系统拦截,可按以下方式处理:
- 在 Finder 中右键
OpenExam.app,选择“打开”。 - 若仍被拦截,可执行:
xattr -dr com.apple.quarantine /Applications/OpenExam.app- 公务员考试 / 行测刷题
- 教师资格证 / 法考 / 考研
- IT 认证 / 通用知识训练
- 自定义题库与长期练习
GPL-3.0-or-later
- 本仓库代码采用 GNU GPL v3 或更高版本授权。
- 第三方题库数据、图片资源与外部抓取内容不默认归入 GPL 授权范围,需遵循其各自来源与许可说明。




