微信小程序 · 开发中 · 敬请期待 WeChat Mini Program · In Development · Coming Soon

把每一份真题,
变成会生长的题库。
Turn every past paper
into a question bank that grows.

ExamFlow 是一款正在开发中的微信考培刷题小程序:试卷自动切片入库,AI 变造命题、双盲校验后进入题库;再配合错题本与「一键举一反三」,把刷过的每一题都吃透。 ExamFlow is a WeChat mini program for exam practice, now in development: past papers are sliced into a structured bank automatically, AI-derived questions pass a double-blind check before entering, and a wrong-question book plus one-tap similar-question drills help you truly master every question you answer.

1452题库题目questions in bank
16覆盖考种exam types
3练习模式practice modes
11后端 API 接口backend API endpoints

产品形态示意(纯 CSS 绘制)· 实际界面以正式发布版本为准 Stylized UI sketch (pure CSS) · the released app may differ

特性Features

三大练习模式,加一个 AI 杀手锏 Three practice modes and one AI ace

小程序端共三个页面:首页考种导航、卡片式刷题、错题本。围绕它们,是这些已经实现的能力(在本地联调中全部可跑通)。 The mini program has three pages — exam-type home, card-based quiz, wrong-question book — and these capabilities, all working in local integration today.

历年真题演练Past-paper drills

按考种随机抽 10–20 题组卷;卡片式作答,单选 / 多选 / 判断实时判分(多选须集合完全一致),交卷即得得分汇总与正确率。 Pull 10–20 random questions per exam type and answer card by card. Single, multiple and true/false questions are graded instantly — multiple-choice answers must match exactly as a set — with a score summary when you finish.

考点专项特训Knowledge-point training

输入知识点关键词,跨考种检索同考点题目集中突破;每道题都带考点标签,薄弱点逐个击破。 Enter a knowledge-point keyword to pull matching questions across every exam type. Each question carries its knowledge-point tag, so weak spots get picked off one by one.

我的错题本Wrong-question book

答错自动进本(复习次数 +1),答对自动置为已掌握;「待攻克 / 已掌握 / 全部」三态过滤,支持去重练与一键清零重练。 Wrong answers file themselves in (review count +1) and correct ones mark questions as mastered. Filter by pending, mastered or all, then de-duplicate and reset the whole book for a fresh round.

一键举一反三One-tap derived questions

对任意一题,AI 提取核心考点、更换背景场景、加入强干扰项,实时变造出同类新题;无库存时后台异步生成(HTTP 202 + 前端每 2 秒轮询),做完原题立刻能练同类。 For any question, the AI extracts the core knowledge point, swaps the scenario and adds strong distractors to mint fresh variants. If none are in stock, the backend generates them asynchronously (HTTP 202 + 2-second client polling), so the follow-up drill is ready right after you finish the original.

核心亮点The highlight

PDF 试卷导出PDF paper export

把当前考种随机抽 20 题生成可打印 PDF:题目在前、答案与解析在后,中文字体内嵌,可在微信里下载、预览与转发。 Export 20 random questions of the current exam type as a printable PDF — questions first, answers and analyses at the back, embedded Chinese font — downloadable, previewable and shareable inside WeChat.

可打印 · 可转发Printable & shareable

公式不再乱码Formulas that just render

题干与详解完整渲染 Markdown 排版;LaTeX 数学命令先离线转换为 Unicode 数学符号(√x、½、R₁ × R₂…),零外网依赖,真机与审核都稳,异常时自动回退纯文本。 Stems and analyses render full Markdown, and LaTeX math is converted offline into Unicode symbols (√x, ½, R₁ × R₂…) before rendering — zero network dependency, safe on real devices and in review, with automatic fallback to plain text.

智能流水线The Pipeline

一套全自动的「真题 → 题库」流水线 A fully automated paper-to-bank pipeline

从试卷文件到可刷的题,中间没有人工搬运。FastAPI 后端用三个 Agent 串起切片、命题与盲测校验。 From raw paper files to drillable questions with no manual copywork in between. A FastAPI backend chains three agents for slicing, deriving and blind verification.

切片入库Slice & import

上传 .pdf / .txt / .md 试卷,自动清洗页眉页脚与干扰字符;LLM 强制输出严格 JSON(json-repair 降级 + 最多重试 3 次),经 Pydantic 校验后入库为 original 真题。 Upload a paper in .pdf / .txt / .md; headers, footers and noise are scrubbed automatically. The LLM is forced to emit strict JSON (json-repair fallback, up to 3 retries), validated by Pydantic, then stored as an original question.

POST /api/pipeline/extract

变造命题Derive

命题 Agent 提取原题核心考点,更换背景场景、保留考点、加入强干扰项,生成 3–5 道「同考点、不同皮」的高仿衍生题。 The deriver agent extracts the original's core knowledge point, swaps the scenario, keeps the point and adds strong distractors to create 3–5 look-alike questions.

POST /api/pipeline/derive

双盲自测Double-blind check

盲测 Agent 不看标准答案、独立作答;与标准答案一致才允许入库(source_type = derived 并记 parent_id),不一致则弃用重来,整体最多 3 轮。 A separate blind-tester agent answers without ever seeing the key. Only questions whose answer agrees with the official one enter the bank as derived (with parent_id recorded); the rest are discarded and retried, up to 3 rounds.

blind_tester agent

组卷与闭环Drill & close the loop

随机组卷接口按考种 / 知识点抽题,交卷判分并同步错题本;衍生题无库存时返回 202 后台生成,前端轮询取题,练完即闭环。 The random-paper API draws by exam type or knowledge point, grading on submit and syncing the wrong book; missing derived questions trigger a 202 background job the client polls — closing the loop right after practice.

GET /api/exams/random

两种运行模式Two operating modes

Mock:零 Key 跑通全链路Mock: full loop, zero keys 真实:OpenAI 兼容端点Real: OpenAI-compatible APIs

Mock 模式(LLM_MOCK=true)不需要任何 API Key,就能完整跑通切片、衍生命题与盲测闭环,适合演示与自动化测试;真实模式接入任意 OpenAI 兼容端点(DeepSeek / Qwen / Moonshot 等),带 60 秒超时与指数退避重试,未配置 Key 时返回清晰的中文错误而非崩溃。 Mock mode (LLM_MOCK=true) runs the entire pipeline — slicing, deriving, blind testing — with zero API keys, ideal for demos and automated tests. Real mode plugs into any OpenAI-compatible endpoint (DeepSeek / Qwen / Moonshot…) with a 60-second timeout, exponential-backoff retries, and a clear Chinese error message instead of a crash when the key is missing.

题库样例Sample & Bank

从当前题库里,抽一道给你看 A real question, pulled from the bank

下面这道单选题及其解析,逐字来自当前题库(GAOKAO-Bench 高考数学真题,题目 ID 1355,经切片流水线入库)。LaTeX 源文本已按小程序同款规则离线转换为 Unicode 数学符号——你看到的就是小程序里的样子。 The question and analysis below come verbatim from the current bank (GAOKAO-Bench real gaokao math, question ID 1355, imported via the slicing pipeline). The LaTeX source has been converted offline to Unicode math symbols exactly as the mini program renders it.

单选题Single choice 高考数学真题 考点:综合知识Point: general

(5 分)曲线 y = x / (x + 2) 在点 (−1, −1) 处的切线方程为(   ) (5 pts) The tangent line to the curve y = x / (x + 2) at the point (−1, −1) is (   )

A.y = 2x + 1
B.y = 2x − 1
C.y = −2x − 3
D.y = −2x − 2
查看答案与解析Reveal answer & analysis
正确答案:ACorrect answer: A 解析:∵ y = x / (x + 2),∴ y′ = 2 / (x + 2)²;切线斜率 k = y′|x = −1 = 2。切线方程为 y + 1 = 2 × (x + 1),即 y = 2x + 1。故选 A。 Analysis: y = x / (x + 2) gives y′ = 2 / (x + 2)², so the slope at x = −1 is k = 2. The tangent is y + 1 = 2(x + 1), i.e. y = 2x + 1. Answer: A.

在小程序里,这道题答错会自动进入错题本,并能一键举一反三生成「同考点、换场景」的新题。 In the mini program, a wrong answer files this question into the wrong book, and one tap derives fresh questions with the same knowledge point in a new scenario.

题库现状Bank today

16 个考种,1452 道题 16 exam types, 1,452 questions

以下数字直接读取自本地题库(2026-10-24 实测),其中 3 道为已通过双盲校验的 AI 衍生题;题库随导入持续增长。 Figures below are read directly from the local bank (measured 2026-10-24); 3 of them are AI-derived questions that passed the double-blind check, and the bank keeps growing with every import.

单选题Single choice 1418 多选题Multiple choice 28 判断题True / false 6

各考种题量(共 16 个)Questions per exam type (16 in all)

行测逻辑真题Civil-service logic 1039
考研政治Postgrad politics 52
高等数学Calculus 50
高考数学真题Gaokao math 50
高考物理真题Gaokao physics 50
大学物理College physics 40
机器学习Machine learning 40
计算机综合CS fundamentals 40
软考架构师Software architect exam 26
行测Civil-service aptitude 14
大学生竞赛Student contests 10
数据结构Data structures 10
考研数学Postgrad math 10
考研英语Postgrad English 10
英语四六级CET-4 / CET-6 10
导入真题Manual import 1

条长按题量线性缩放(最大考种 1039 题为满格);考种名称以题库原始记录展示。 Bar length scales linearly with count (the largest type, 1,039 questions, fills the track); exam-type names are shown as stored in the bank.

LogiQAGitHub 开源数据集

公务员行测逻辑推理真题数据集(约 8700 题),已写好转换器接通并导入 1000+ 题。 Open dataset of civil-service logical-reasoning questions (~8,700); a converter is wired up and 1,000+ questions already imported.

GAOKAO-BenchGitHub 开源数据集

2010–2022 高考真题集;已导入高考数学真题 50 题、高考物理真题 50 题,均带真题解析。 2010–2022 gaokao papers; 50 real math questions and 50 real physics questions imported, each with its official-style analysis.

CMMLU大学学科评测集

已映射 6 个学科:高等数学、大学物理、计算机综合、机器学习、考研政治,logical 并入行测逻辑真题(按题干去重)。 Six subjects mapped in: calculus, college physics, CS fundamentals, machine learning and postgrad politics, with logical merged into the civil-service logic type (deduplicated by stem).

自建样例卷与演示种子Self-built papers & seeds

考研、四六级、行测、高等数学、数据结构、大学生竞赛、软考架构师等科目的自建模拟卷与演示种子题。 Hand-built mock papers and demo seed questions across postgrad entrance, CET, civil service, calculus, data structures, student contests and the software-architect exam.

首页分类导航Home categories 🎓 考研Postgrad 🌍 四六级CET-4/6 🏛️ 考公考编Civil service 🏆 学科竞赛Contests ✏️ 高考Gaokao 📖 期末冲刺Finals 💼 考证Certificates
开发状态Status

诚实的开发状态 An honest look at where it stands

以下是仓库提交记录(2026 年 10 月)能印证的真实进度,以及接下来的计划。 Real progress as evidenced by the repository's commit history (October 2026), plus what comes next.

本项目仍在本地开发与联调阶段,小程序尚未发布上线。当前在后端服务 + 微信开发者工具中跑通全部功能;本页为项目介绍页,会随开发进度更新。 The project is still in local development and integration — the mini program has not been released. All features currently run against a local backend inside WeChat DevTools; this page is the project's introduction and will be updated as work progresses.

10-02

全栈基线Full-stack baseline

FastAPI 后端流水线 + 小程序三个页面,端到端冒烟自检通过。 FastAPI pipeline backend + three mini-program pages, with the end-to-end smoke test passing.

10-02

富文本渲染Rich rendering

接入 towxml 渲染题干与详解,LaTeX 离线转 Unicode,Markdown 完整排版。 towxml integrated for stems and analyses, LaTeX converted offline to Unicode, full Markdown layout.

10-04

全考种覆盖Full exam-type coverage

新增 8 考种 84 题样例卷,首页按分类关键词自动归类的考种导航上线。 Sample papers for 8 more subjects (84 questions) and keyword-based category navigation on the home page.

10-04

真题数据供给Real-question supply

接入 LogiQA 数据集转换器,并沉淀了一份真题获取渠道指南(官方 / 开源数据集 / 社区)。 LogiQA dataset converter connected, plus a written sourcing guide (official / open datasets / community channels).

10-04

UI 与导出升级UI & export upgrade

三页设计系统 token 化重做(配色 / 卡片 / 选项 / 导航),新增 PDF 试卷导出(中文字体内嵌)。 All three pages restyled on a tokenized design system (colors, cards, options, nav), and PDF paper export added with an embedded Chinese font.

当前Now

本地开发与联调中In local development

题库已积累 16 考种 1452 题;继续打磨体验、扩充题库,为上线做准备。 The bank has grown to 16 exam types and 1,452 questions; polishing experience and expanding content while preparing for release.

接下来的计划What's next

间隔重复复习调度Spaced-repetition scheduling

引入 SM-2 / FSRS 算法(参考 open-spaced-repetition 开源实现),按遗忘曲线自动安排每日错题复习队列。 Adopt SM-2 / FSRS (following the open-spaced-repetition implementations) to schedule a daily wrong-question review queue along the forgetting curve.

更多开源数据集More open datasets

按渠道指南陆续接入 LogiQA 2.0(中英双语 ~15k 题)、AGIEval、RACE、C-Eval 等数据集。 Following the sourcing guide: LogiQA 2.0 (bilingual, ~15k), AGIEval, RACE, C-Eval and more.

上线发布Public release

真实 LLM 模式的服务化部署、域名与 HTTPS,以及小程序提审发布。 Production deployment for real-LLM mode, domain and HTTPS, then submitting the mini program for review and release.

已知边界Known boundaries

简答题不自动判分Essays are not auto-graded 提交后直接展示参考答案与解析,供自评;不写入答题记录与错题本。 Reference answers and analyses are shown for self-assessment; essays don't enter records or the wrong book.
扫描件 PDF 暂不支持Scanned PDFs not supported yet 图片型扫描试卷需要 OCR,超出当前范围;文字版 .pdf / .txt / .md 均可导入。 Image-only scans need OCR, which is out of scope today; text-based .pdf / .txt / .md all import fine.
Mock 盲测的边界What the mock blind test proves Mock 模式的盲测由确定性规则通过,验证的是闭环机制本身;真实模型能力以接入真实 LLM 后为准。 In mock mode the blind test passes via deterministic rules — it proves the loop, not the model; real capability is only meaningful once a real LLM is attached.
技术栈Tech stack

一套朴素可靠的技术选型A deliberately boring, dependable stack

后端Backend

Python 3.10+FastAPISQLiteSQLAlchemyPydantic v2httpxpymupdfjson-repairreportlab

小程序Mini program

微信原生 WXML / WXSS / JSNative WXML / WXSS / JStowxml 3LaTeX → Unicode 离线转换Offline LaTeX → Unicode

质量保障Quality

smoke_test.py 端到端冒烟自检end-to-end smoke test tests/rich_smoke.js 渲染层冒烟测试render-layer smoke test 独立测试库isolated test database
反馈Feedback