ARTICLE · 1221262
孩子数学越学越懵?根源可能在小学三年级! | 这个开源「中小学数学知识图谱」能一键回溯到知识断层(674 个知识点 + 2843

一、痛点与破局
你有没有遇到过这样的场景:孩子上高中了,函数概念怎么讲都懵;初中生解一元二次方程,配方法永远出错。你盯着他刷题刷到深夜,却发现真正的问题根本不在这一章——他可能连小学的「完全平方公式」都没真正掌握。
问题在于:数学是一门极度依赖先修知识的学科,但没有任何一本教材会告诉你「这个知识点背后挂着哪些更早的知识」。于是孩子的知识断层被一层层新知识盖住,越学越吃力。
GitHub 上的开源项目 cn-math-taxonomy(中小学数学知识图谱) 就是为解决这个问题而生的。它对齐《义务教育数学课程标准(2022 年版)》和人教 A 版(2019)必修教材,把小学、初中、高中必修的知识点组织成一张先修关系 DAG(有向无环图),并附上一个自适应诊断工具:答错一道题,它会沿着先修边一路回溯——从高中、初中,一直问到具体的小学知识点,最后给出按年级从低到高排列的学习路径。
一句话总结:这不是又一个刷题网站,而是一张能定位「知识断层根因」的数学知识地图。
二、核心功能深挖
1. 覆盖完整的中小学知识 DAG:674 个知识点、1105 条先修边
这个图谱不是简单的知识点列表,而是带先修关系的有向无环图。规模如下:
几个值得注意的设计细节:
- 先修边分
hard和soft两级: hard表示「不会 B 基本无法学 A」,soft表示「会了明显有帮助但不是硬门槛」。 - 只保留直接先修,做了传递约简
: hard边仅在存在另一条全hard路径时才被删除,避免图被冗余边塞满。 - 全图只有一个根节点
: cnm_p001(1到5各数的认识),先修的年级不高于后续知识点——整张图严格「向下生长」。
2. 对齐官方课标:278 条课标条目映射
数据不是拍脑袋来的,而是挂靠在官方课标上:
义务教育部分对齐教育部《义务教育数学课程标准(2022 年版)》第一至四学段的【内容要求】,共 230 条(如 cms-2022:4.NA.01)。高中部分对齐《普通高中数学课程标准(2017 年版 2020 年修订)》必修五个主题,共 48 条(编号 cms-2017:H.<PRE|FUN|GA|PS|MI>.NN)。每个知识点通过 standards数组挂接课标条目,标注exact(条款正文直接点名)或inferred(推定映射,必须写 note)。覆盖率:初中 315 个知识点中 313 个(99.4%) 有映射。
3. 自适应前置诊断:错一道题,挖到小学的根
这是整个项目最亮眼的功能。诊断逻辑(核心算法在 diagnose/engine.js,纯函数,浏览器与 Node 通用):
第一题答对 → 判定掌握,跳过全部祖先节点; 第一题答错 → 再出一道同级或更容易的题(每个知识点最多问 2 题); 第二题也错 → 判定为薄弱,沿先修边回溯(hard 边优先于 soft 边); 第二题答对 → 标为「不稳」,不回溯。
最终输出:薄弱根因、不稳的知识点、按年级从低到高排列的学习路径、相关课标条目原文,以及一张用 Cytoscape 绘制的路径图(薄弱根因红框标出)。进度存在 localStorage,可导出 JSON 或打印。
实际效果举例:诊断高中「配方法」,如果答错,工具会一路回溯直到定位到初中的「完全平方公式」。
4. 带自动核验的题库:2843 道题,mismatch 为 0
小学每点 4 题(864 题)、初中每点 4–5 题(1407 题)、高中必修每点 4 题(572 题)。 numeric 题带 verify表达式,脚本自动重算核验:全库 auto_verified 2311,mismatch 0。小学题和初中题还做了独立第二遍盲解复核( second_pass.py出盲解题、比对答案),不一致 0 条。数据格式参考 Marble 的 os-taxonomy,topics.json+dependencies.json两个文件就是全部数据,字段清晰(mastery_criteria≈evidence,diagnostic_question≈assessmentPrompt),方便二次开发。
三、实战演示:五分钟跑起来
方式一:在线直接用(推荐)
在线诊断演示(配方法):https://math.pansgo.com/diagnose/?target=cnm_221&demo=1 知识图谱浏览:https://math.pansgo.com/explore/
方式二:本地部署(纯静态,可离线)
页面通过 fetch 读取 data/*.json,浏览器不允许 file:// 直接打开,需启动一个静态服务器:
python3 -m http.server 8000# 首页 http://localhost:8000/# 知识图谱 http://localhost:8000/explore/# 诊断 http://localhost:8000/diagnose/ (演示:?target=cnm_221&demo=1)运行数据校验与题库核验:
python3 scripts/validate.py # 校验 DAG:id 唯一、无环、边完整、字段合法python3 scripts/verify_questions.py # 题库答案自动核验,mismatch 为 0 才打印 VERIFICATION PASSEDnode tests/test_engine.js # 诊断引擎测试(Node,无依赖)validate.py 会检查 JSON 合法性、id 唯一性、无自环无重复边、无环(有环会打印环路)等,全部通过输出 VALIDATION PASSED。
部署也很简单,仓库自带 Cloudflare Pages 脚本:
./scripts/deploy-cf.sh知识图谱浏览页用 Cytoscape 3.30.4 + dagre 0.8.5 渲染(库已随仓库分发在 assets/vendor/,不从外网 CDN 加载任何脚本,可以完全离线使用),默认只画当前知识点的局部图:向上 2 层先修、向下 1 层,硬先修实线、软先修虚线,小学青绿、初中蓝、高中品红分色。
四、避坑指南与总结
几个必须知道的坑:
- 这是 AI 生成的初稿,未经任何教师审核
。先修关系的 hard/soft 划分、诊断题难度都没有经过真实教学检验,不能直接用于正式教学或测评。 - 高中只覆盖必修,且只用人民教育出版社 A 版(2019)
。选择性必修(圆锥曲线、导数、数列等)整段空缺。 - 部分教材目录是第三方来源、标了「待核」
:九下目录、部分小学册次、高中章节目录都不是人教社官方逐页核对的。 - 高中题没有做盲解复核
: verify和答案来自同一条表达式。 - 许可证是 CC BY-NC 4.0
:可免费用于个人学习、教学、研究,但不能商用(付费课程、售卖题库等),商用需联系作者授权。
适合谁用?
家长:帮孩子定位「为什么高中数学学不动」的真正根因; 教师:作为知识点先修关系与课标映射的参考底稿(建议参与审核共建); 教育科技开发者:干净的两文件数据结构 + 无外部依赖的静态页面,非常适合二次开发。
数学学习最怕的不是难题,而是不知道自己哪里不会。这张开源知识图谱,把「知识断层」变成了可以被算法定位、被一条路径修复的东西。项目还在早期(作者也在积极征求教师审核反馈),值得关注。
GitHub开源地址:https://github.com/xiaoyang111222/cn-math-taxonomy















































































