乐于分享
好东西不私藏

数学教师用AI做一套好题自动入库系统

数学教师用AI做一套好题自动入库系统

我最近把 GPT、Codex、Hermes、Mathpix API、GitHub 和自己的私人题库网站串在一起,搭出了一套真正能为数学备课服务的工作流,先说整个系统的起点。在本地的 Codex 上操作云端服务器,并在云端服务器安装了 Codex CLI。如下图:

并不是在电脑上临时跑一个脚本,也不是单纯调用某个聊天机器人,而是把云端服务器变成一个24小时在线的数学题处理中心。

本地的 Codex 负责和我对话、理解我要改什么;云端服务器上的 Codex CLI 负责真正执行、调试、修改脚本、重启服务、查看日志。这样一来,我在本地说一句话,远端的 Hermes 智能体就可以被持续迭代。

这也是后面所有自动化的基础。


一、不是“识别一道题”,而是“沉淀一套题库”

以前遇到好题,最常见的场景是这样的:看到一道题,随手发到微信;学生或同事发来一张截图;公众号、PDF、试卷里看到一个不错的题型,先截图保存;有时还会临时把题目转成文字,放进某个文档。问题是,这些内容很快就会散落在聊天记录、相册、文件夹和临时笔记里。单独看,每一道题都不难保存;但从长期积累的角度看,真正麻烦的是:

  • 图片题无法直接搜索;
  • 数学公式需要转成 LaTeX;
  • 题目要按知识点分类;
  • 每道题要有编号、来源、难度、标签;
  • 后续还要能组卷、备课、复用;
  • 最好还能同步到 GitHub,留下版本记录。

所以我真正想做的,不是一个“拍照识题”的小工具,而是一套从聊天入口到题库沉淀的自动化系统。

我希望以后看到一道题,只要把它发给微信或飞书里的机器人,它就能自动完成后面的事情。


二、把微信、飞书和 Hermes 绑定到一起

我把微信、飞书和 Hermes 绑定起来,让它们变成题库的入口。下图是今天复旦数学营开营的几何面积题入库过程:

平时真正高频使用的不是某个后台管理页面,而是微信和飞书。数学题通常也不是“规规矩矩”出现在某个上传界面里,而是以截图、聊天消息、PDF 截屏、临时文字的形式出现。所以我让机器人适应我的工作习惯,而不是让我迁就系统。现在的基本流程是:

在微信或飞书里发题的图片或者PDFHermes 接收消息云端服务器处理图片或文字Mathpix API 负责把图片转成 LaTeXGPT 5.5 负责理解、校正、分类和生成元数据系统把结果推送到 GitHub 仓库自华数学馆前端网站读取仓库内容并展示

这套流程跑通以后,微信和飞书变成了我的数学题库入口。


三、云端服务器:24h在线干活

云端服务器负责长期运行 Hermes 相关服务,是为了防止本地部署智能体会将电脑搞成肉机,更重要的是,它必须得 24 小时在线,持续为我服务。

第一,接收来自微信和飞书机器人的消息。

第二,判断消息类型:是图片、文字,还是入库指令。

第三,如果是图片,就调用 Mathpix API 做数学 OCR 和 LaTeX 转写。

第四,把识别结果交给 GPT 5.5 进一步处理,包括公式校正、题目拆分、标签生成、分类判断。

第五,把生成好的 problem.texmeta.yamlsource.jpg 等文件放入 GitHub 仓库的对应目录。

第六,自动提交并推送到 GitHub。

这套流程最重要的一点是:它不是一次性脚本,而是一套可以持续维护的系统。

比如我后来想修改编号规则、调整分类目录、增加 meta.yaml 字段、修正某个入库逻辑,都可以直接让 Codex 帮我在云端改。

它不是简单地“帮我写代码”,而是接近于一个可以协助运维的开发搭档。


四、Mathpix API:把数学图片变成 LaTeX

数学题自动化里最难的一步,其实不是保存图片,而是把图片转成可编辑、可搜索、可复用的 LaTeX,普通 OCR 对数学题并不友好。 尤其是分式、根号、上下标、几何符号、不等式、递推式、复杂排版,一旦识别错了,后面就很难继续结构化处理。所以我这里接入了 Mathpix API。在我的流程里,Mathpix 主要负责第一层识别:

  • 从图片中提取题目文字;
  • 把公式转成 LaTeX;
  • 尽量保留原题的数学结构;
  • 为后续 GPT 5.5 校正和整理提供基础文本。 但 Mathpix 不是终点。

Mathpix 给出的是“识别结果”,GPT 5.5 要继续做第二层处理:判断题目类型、修正不合理的公式、拆分题目和解析、生成适合入库的 LaTeX 文件。当然,这也和 GPT 的 API 费用比较高有关系,我觉得还是 Mathpix 的性价比更高,把它理解成:

Mathpix 负责看清楚题目,GPT 负责读懂题目。

这两者结合起来,才比较接近我想要的数学题自动入库效果。


五、GPT5.5智能纠错

这套系统里让我印象很深的一点,是 GPT 并不是机械执行我的命令。

有一次,我发了一道题,并给了一个入库路径:

algebra/egyptian_fraction/P-0005

但系统分析图片后发现,这道题并不是埃及分数问题,而是一道和四次方和、同余有关的数论题。

于是它没有直接把题目塞进错误目录,而是先停下来提醒我:

你刚发的图对应的是四次方和等于 1599 的题,但你现在给的入库路径是 algebra / egyptian_fraction / P-0005,这两者不是同一类题。你要我执行哪一种?

这件事很能说明GPT智能系统的价值。如果只是普通脚本,它会机械地按照我给的路径执行。我让它进代数目录,它就进代数目录;我编号写错了,它也照样写错。但 GPT 加入以后,系统开始有了“语义判断”。它能看懂题目内容,也能看懂目录名,还能判断两者是否冲突。最后我选择让它按照题目内容重新分类。

系统把这道题放进了更合适的位置:tex/number_theory/modular_arithmetic/P-0001同时生成了:

  • problem.tex
  • meta.yaml
  • source.jpg

并推送到 GitHub。这就是我认为它最有价值的地方:  它不是只帮我省几步操作,而是在关键节点帮我避免错误沉淀。


六、自动维护 GitHub 仓库

除了录入新题,我还可以直接在微信里对 GitHub 仓库做一些维护操作。

例如有一次,我发现一组题目的编号顺序不合适,就直接在微信里说:

p0004~p0012 请你帮我在 git 仓库里改一下,改为 p0001 到 p0008

系统理解后,把原来的编号重新调整,并推送到 GitHub。

这种体验和传统后台管理很不一样。

传统做法是:

打开仓库,找到文件夹,逐个重命名,检查引用关系,提交 commit,再确认有没有漏掉。

现在变成:

我用自然语言说明意图,Hermes 调用云端流程,完成仓库修改,并反馈处理结果。

当然,这里不是说所有操作都应该完全自动化。涉及大批量修改时,系统仍然需要尽量给出清晰的反馈,最好有确认机制。

但对于日常题库维护来说,这已经大幅降低了摩擦。


七、GitHub仓库:让每道题有结构、有版本、有历史

我把题库内容放在 GitHub 仓库里,而不是只存在某个数据库中。

第一,GitHub 天然适合版本管理。每一道题什么时候入库、谁修改了什么、目录结构如何变化,都可以通过 commit 记录追踪。

第二,LaTeX 文件本身就是文本。这意味着它非常适合 diff、搜索、批量处理和后续自动化。

第三,仓库结构可以长期演化。目前我的目录已经开始按学段和主题拆分,例如:

  • tex/junior/
  • tex/senior/
  • algebra/
  • geometry/
  • number_theory/

每道题不只是一个图片,而是一组结构化文件。我希望一题至少包含三类内容:

  • problem.tex:题目本体,使用 LaTeX 保存;
  • meta.yaml:题目元数据,包括知识点、难度、来源、标签等;
  • source.jpg:原始图片,方便回溯和人工校验。

这样一来,题目就从“聊天里的图片”变成了“可管理的数学资源”。


八、自华数学馆:让 GitHub 仓库进入前端网站

我还建立了一个私人网站,叫做 自华数学馆(本校以仁爱自华为文化核心)。

虽然GitHub 适合存储和管理,但不适合直接拿来备课和组卷。真正使用题库时,我需要一个前端界面:

  • 可以按初中、高中切换;
  • 可以按几何、代数、数论、组合等主题浏览;
  • 可以查看题目的知识点、难度和来源;
  • 可以把题目加入组卷;
  • 可以预览和下载组好的试卷;
  • 可以查看 LaTeX 源码和解析。

所以我把 GitHub 仓库里的 LaTeX 内容和“自华数学馆”前端对接起来。只要仓库里新增一道题,前端网站就能读取并显示出来。 这意味着,整个闭环就形成了:

微信 / 飞书发题云端自动识别Mathpix 转 LaTeXGPT 5.5 分类打标签GitHub 自动入库自华数学馆前端展示最终用于组卷和备课

这不是单纯的“AI 识题”,而是一个面向真实教学工作的题库生产线。


九、成本

这套系统看起来很复杂,但核心成本其实并不夸张。我主要用到的是:

  • GPT Plus;
  • Codex / Codex CLI;
  • Mathpix API;
  • 云端服务器;
  • GitHub 仓库;
  • 自己搭建的前端网站。

GPT Plus 官方价格是每月 20 美元,并且包含 Codex 使用额度。对我来说,这一点非常关键,因为 Codex 不只是“写代码工具”,而是我持续维护云端服务器和 Hermes 智能体的重要入口。后期随着题目的增多,我可能会升级到100美元每月的 GPT Pro 套餐。

Mathpix API 的启用成本大约也是 20 美元级别。它的作用是解决数学图片到 LaTeX 的识别问题,这部分如果没有可靠工具,后面所有自动化都会变得很脆弱。

如果只看单点功能,20 美元可能只是一个工具订阅。 但如果把它放到整个系统里看,它带来的不是一次性输出,而是持续积累能力。

对我来说这套系统最值钱的地方是:每遇到一道好题,我都可以用极低的边际成本,把它变成可检索、可分类、可组卷、可复用的长期资产。


十、这套系统改变了什么

我觉得这件事最有意思的地方,不是“AI 又多会写代码了”,也不是“某个机器人很酷”。

真正改变的是工作方式。

以前的数学题积累,更像是手工整理:

看到题,保存图片;有空时,手动转文字;再有空时,手动分类;需要组卷时,再到一堆资料里翻。

现在变成:

看到题,直接发给微信或飞书;系统自动识别、转写、分类、入库;GitHub 负责长期沉淀;自华数学馆负责前端展示和组卷使用。

这中间最关键的变化是:我不再需要等到“有空整理”的时候,才开始整理。

只要题目出现,就可以立刻进入系统。这对于数学老师、教研人员,或者任何长期积累题目的人来说,意义很大。因为资料积累最难的不是某一天整理十道题,而是几年如一日地持续沉淀。而AI工作流真正有价值的地方,就是把这种低频、繁琐、容易中断的事情,变成一个随手触发的动作。


十一、展望未来

搭建这套体系的最终目的,还是为了服务于我们的学生。下学期我可能会带领十几位数学资优生在某次专项课时进入我校的数学实验室,利用AI工具极大提升他们的学习效率,满足他们强烈的好奇心与求知欲,从而将知识的学习从统一的课堂转换为私人定制。我做的私人网站后期会有一个端口向我校学生开放,在数学实验室里,将统一使用我题库里的习题,满足学生的数学竞赛各个板块的训练需求。


结尾:搭建自己的数学基础设施

这件事情最开始只是一个很小的想法:能不能把微信里随手发的数学题,自动转成 LaTeX?随着不断的摸索和尝试,逐渐变成了一套完整流程:

  • 从本地 Codex 操作云端服务器,
  • 到云端安装 Codex CLI,
  • 到 Hermes 绑定微信和飞书,
  • 到 Mathpix API 识别数学图片,
  • 到 GPT 5.5 自动分类和纠错,
  • 到 GitHub 仓库沉淀 LaTeX,
  • 再到自华数学馆前端展示和组卷。

AI时代只要用心,大家都能成为全栈开发者,用程序员的思路去解决问题。AI的浪潮已经袭来,工业流水线式的每个老师站上讲台的时代可能会逐渐被取代。AI要服务于学生的个性化需求,同时AI也要服务于教师的个性化需求。我们只有拥抱 AI,站在时代的最前沿,才有可能会做出新的成绩。