cn-math-taxonomy 开源中小学知识图谱,2615 个知识点与 3003 条先修边
[链接] 6.5k Star!AI家教终于有了教科书大脑
作者 xiaoyang111222 开源 cn-math-taxonomy 中小学知识图谱,含 2615 个知识点、约 3003 条先修边和 6723 道题,以纯静态 JSON 形式在浏览器中运行诊断回溯,已获 6550 Star。
📦 cn-math-taxonomy
开源的中小学知识图谱:2615 个知识点、约 3003 条先修边、6723 道题,纯静态 JSON,浏览器里直接跑诊断回溯。
⭐ 6550 Star🔺 2615 知识点3003 条先修边CC BY-NC 4.0
🚀 一、它讲得越顺,你越听不懂
我侄子问我二次函数,我让他先看配方。他卡住了。不是卡在配方,是卡在完全平方公式——初二的东西。
大模型没这个问题。你问它二次函数,它从配方讲到判别式再讲到顶点式,一气呵成,逻辑挑不出毛病。它默认你会一切前置知识,因为它不知道你不会什么。
这大概就是“AI 家教”喊了两年还没真正落地的地方。模型本身够聪明,缺的是一张地图:知识之间谁先谁后。
传统题库按章节排,通用模型按概率续写,真正在算先修关系的只有商业自适应系统,而那套东西历来是机构的核心资产,闭源、不外传、六位数起。
现在有人把它开源了。
📊 二、一个仓库,2615 个点
项目叫 cn-math-taxonomy,作者 xiaoyang111222[1]。2026 年 10 月 18 日建仓,半个月 6550 star、1695 fork。Python 写的,仓库 41.5 MB,纯静态挂在 Cloudflare Pages 上(math.pansgo.com)[2]。
数据量:知识点 2615 个(元数据里还是 1644 的旧口径,README 统计已扩到 2615 且还在长),先修边约 3003 条,hard 1808、soft 1195。题库 6723 道,数学占 3627。课标条目 627 条(数学 314、英语 116、物理 197),知识点映射覆盖 1818/1820。
范围从小学一年级“1 到 5 各数的认识”一直排到人教 A 版选择性必修的导数、圆锥曲线、随机变量,横向还铺到了英语、语文、物理、化学、生物、历史、地理、科学、道法。
看到“语文”和“道法”也在里面的时候我愣了一下。先修关系在文科里到底怎么定义,这事我持保留意见。
🕸 三、边是怎么画的
核心就两个文件,topics.json 和 dependencies.json。一条边长这样:
{"topicId": "A", "prerequisiteId": "B", "strength": "hard", "reason": "一句中文理由"}意思是学 A 之前需要 B。hard 表示不会 B 基本学不了 A,soft 表示有帮助但不是硬门槛。
真正见功夫的是传递约简。hard 边只有在存在另一条全 hard 路径时才删,soft 边只要存在任何其他路径就删。这么处理完,平均每个点只剩 1.60 条先修。这是给算法跑的图,不是给人看的目录。人看的目录会写得很全,图必须尽量干净,否则诊断一跑就是几百条候选路径。
scripts/validate.py 做硬检查:无自环、无重复边、无环(有环会直接把环路打出来)、非根节点必须有先修边或 root_reason、不允许完全孤立节点。全图只有 9 个根,数学的根是 cnm_p001,就是“1 到 5 的认识”,英语的根是字母表。
这个细节挺有意思:数学整棵树是从认识数字 1 到 5 长出来的。
🔍 四、答错一次,往上挖到小学
diagnose/engine.js 是纯函数,浏览器和 Node 共用。逻辑是带剪枝的向上搜索。
同一知识点连对 3 题(开始页可选 2/3/5)就判掌握,整棵祖先子树直接剪掉。答错的话,再出一道同级或更简单的确认题。确认题也错,判“薄弱”,沿先修边回溯,hard 优先于 soft。确认题答对,标“不稳”,不回溯。
那个确认题是关键。它把“手滑”和“真不会”分开了。没这一步,一次误判就能污染整条学习路径,而误判在真实场景里极其常见,小孩状态差的时候连着错三道太正常了。
最终给你的是按年级从低到高排的根因清单和学习路径,不是一个分数。
演示就摆在那:?target=cnm_221&demo=1,从“配方法”一路回溯到“完全平方公式”。我跑了一遍,路径是通的。
🧪 五、它敢说自己不确定
作者没把 AI 生成的数据包装成权威。
每道题带 verify 表达式,verify_questions.py 用受限表达式求值自动核验,当前 auto_verified 2823 条、mismatch 0。另外跑了一轮独立盲解复核(second_pass.py),解题的人只看题干重算,再比对答案。
课标条目一律 verbatim: false,页码写“待核”;高中、英语、历史等章节直接说明“未与官方 PDF 逐页核对”。README 里白纸黑字写着:
💡 README 原文:先修关系、hard/soft 强度、诊断题难度,都需要一线教师审核后才能用于教学。
在“AI 生成即真理”的氛围里,这种自我否认反而让我更信它一点。当然,也可能是我太容易被这种姿态打动,毕竟标了“待核”的东西,核不核是另一回事。
🧭 六、能干什么,不能干什么
和传统题库、通用大模型、商业自适应系统比,它最本质的差别在知识结构。题库是章节树,模型没有结构,商业系统有图但闭源。它有图,JSON 全量可查,换教材只改 JSON。
定位也很明确:不抢“讲题”,抢的是“讲给谁、从哪讲”这一层,也就是 RAG 里最贵的那个检索骨架。
🎯 适合的人
想做 AI 家教的创业者,可以直接当知识层,接任意模型;教研和教务,能拿先修边做分层作业和补偿路径;独立开发者,纯静态 JSON 塞进小程序或 PWA 成本极低;还有想先跑一次诊断再决定刷什么的家长。
坑也得说清楚。
许可证是 CC BY-NC 4.0。个人学习、教学、研究免费,付费课程、付费 App、机构收费服务必须单独授权,作者留了邮箱和 Issue 通道。这条别忽略,见过太多人栽在这上面。
先修边没经过教师审核。上生产前务必让学科老师过一遍 hard 边,尤其是初中到小学的 45 条、必修跨学段 54 条、选必跨模块 46 条。
题量偏小。每个知识点 4 题,诊断最多问 2 题,只能当线索,不能当测评。指望它出一份可信的成绩报告不现实。
科目之间不连边。物理用到的数学写在 mathLinks 字段里,不参与诊断回溯,别指望它自动跨科补基础。
⚡ 七、跑起来
git clone https://github.com/xiaoyang111222/cn-math-taxonomy.git cd cn-math-taxonomy && python3 -m http.server 8000 # 打开 http://localhost:8000/diagnose/?target=cnm_221&demo=1 python3 scripts/validate.py && node tests/test_engine.js无数据库、无后端、无 API Key。浏览器直接 fetch 本地 JSON,带 PWA 离线缓存,诊断进度只写 localStorage,一条统计请求都不发。
🌱 最后
2615 个点、3003 条边。对学科专家团队是几年工作量,对一个人加 AI 是几个月。
我不太确定这算不算“护城河被填平”。领域知识的结构化一直很难,画边不难,画对边难。这个项目的边还没被教师审过,这个前提不能忘。但至少它把最难标准化的那部分摊开了:先修关系变成可校验、可约简、可回溯的图,每一条的不确定性都写在字段里。
如果真有人接着往下做,我只希望下次我侄子卡住的时候,能有个东西直接告诉他该回去补哪一页。
🔗 引用链接
[1] GitHub 仓库 xiaoyang111222/cn-math-taxonomy: https://github.com/xiaoyang111222/cn-math-taxonomy
[2] 在线演示(Cloudflare Pages): https://math.pansgo.com
来源:我 AI 我家公众号 · mp.weixin.qq.com