☰
AI Skills实战:数学竞赛教研与学案制作一体化
2026/10/1 4:21:46 网站建设 项目流程

1. 项目缘起:当数竞教研撞上AI技能生态

数学竞赛教研这份活儿,干得越久越有体会:真正耗时间的往往不是“想题”,而是“把想法变成一份能直接发给学生的讲义/学案/课后练习”。一道改编题从灵感到成型,要查资料、调难度、排版、配答案、写解析,琐碎到让人怀疑人生。这两年AI辅助编程、AI辅助写作的 skills 生态逐渐成熟,我就在想:能不能把“竞赛教研+学案制作”这套流程本身,也封装成一组可复用的 skills?

于是就有了“学案的革命(数竞版):竞赛教研与学案制作一体化 skills”这个项目。简单说,它做的是三件事:第一,把“出题→改编→命制”这套教研动作标准化;第二,把“学案结构设计→内容生成→排版输出”这套文档生产动作流程化;第三,把两套动作合并进同一个可调用的技能库,让一个指令就能跑完一轮从“教研分析”到“成品学案”的完整闭环。

适合谁来参考?两类人。一类是像我这样长期带竞赛、需要高频产出讲义和题单的教练/老师;另一类是正在研究 skills 开发的开发者,尤其是想用 Claude Code、Codex 这类工具做垂直领域技能封装的朋友。项目本身不依赖特定平台,核心是“把领域经验结构化”这件事,方法论可以迁移到任何学科、任何工种。

我自己的使用场景很直接:周末要出一份高联一试风格的“不等式综合练习”,过去从找题、改题、排版到校对,至少三四个小时;现在跑一遍这套 skills,十几分钟能拿到初稿,再花半小时人工复核打磨,效率和质量的平衡点比纯手工好得多。这篇就把整个项目的设计思路、核心技能拆解、实操流程和踩坑记录完整写一遍,给想自己搭一套“教研+生产一体化 skills”的朋友做个参考。

2. 项目整体设计与方案选型

2.1 为什么选“skills”而不是传统提示词模板

先聊一个关键决策:为什么要把这套东西做成 skills,而不是继续用十几页的提示词模板?这是项目开始前我反复纠结的问题。

传统提示词模板的本质是一份“一次性说明书”,你把它粘贴给AI,它按你的要求完成当前这轮任务。问题在于:每个新任务都要重新粘贴、重新解释背景、重新校准输出格式,而且一旦任务链条变长(比如先分析学情→再命制试题→再排版→再配解析),单条提示词根本控不住节奏,写到后面上下文早就乱了。

而 skills 的本质是“可复用的能力包”:把特定任务的背景知识、执行步骤、输出规范、参考样例、校验标准全部封装成独立模块,AI 在需要时按名调用。这就相当于从“每次重新交代需求”升级成“给它一个工具箱,它自己知道什么时候拿哪把扳手”。对竞赛教研这种步骤多、专业术语密、输出格式要求高的场景,skills 的模块化优势非常明显:改动一个环节不影响其他环节,复制给同事也只需要打包一次。

我实际对比过:同一个“命制一份数论综合练习”的任务,用传统提示词模板跑,第一遍往往结构松散,要来回修正三四轮;拆成 skills 跑,输出稳定性明显更高,因为每个子技能的职责边界是预先定义好的,AI 不会在“出题”环节突然跑去“排版”。

2.2 技能包的模块划分与调用关系

整个技能包我拆成四个核心模块,外加一个总控调度:

模块技能名职责边界
教研分析olympiad-research-skill学情诊断、知识点拆解、难度定位、选题策略
命题制卷olympiad-item-bank-skill原创题命制、经典题改编、参数随机化、难度校准
学案生成olympiad-handout-skill学案结构设计、例题讲解编排、练习分层、答案解析生成
排版发布olympiad-format-skillMarkdown/LaTeX 结构规范、公式检查、打印适配、版本记录
总控调度olympiad-pipeline-skill接收任务指令、按顺序调用上述模块、中间产物校验、最终交付

调用关系上,总控调度是入口,其他模块不直接互相调用,而是通过“标准中间产物”衔接。比如教研分析模块输出一份《学情与考点分析单》,命题模块读这份分析单来定题目范围;命题模块输出《试题明细表(含答案)》,学案模块再基于它组织讲解框架;最后排版模块统一处理成可打印的文档结构。这样做的最大好处是每个模块都能独立测试,出问题了能精准定位是在哪一环,而不是整个流程都跟着崩掉。

这个设计也贴合实际的工作习惯:竞赛教研本身就不是流水线,一个老师可能这周只研究“不等式放缩”这一个专题,那我只调命题模块,不走全流程,效率更高。

2.3 领域建模:竞赛数学的“考点—难度—题型”三维坐标

封装 skills 最关键的一步,是把领域知识结构化成机器可读的“坐标系”。数学竞赛内容庞杂,我不能让 AI 去茫然地“出一套题”,我必须先给它一把标尺。

我从多年的教研经验里提炼出三个维度,作为所有命题和学案生成的底层坐标:

第一个维度是考点体系。我把竞赛数学分为代数、几何、数论、组合四大板块,每个板块再细分二三级考点。比如代数里有不等式(均值、柯西、排序、凸函数、切比雪夫),数论里有同余、二次剩余、不定方程、丢番图逼近。这个层级结构用来约束“AI 不会跑偏到考点之外”。

第二个维度是难度分层。用 1 到 10 分量化:1-3 对应高联一试基础,4-6 对应一式中档到二试入门,7-8 对应二试中高档,9-10 对应国决及以上。难度不是凭感觉拍的,而是根据不同竞赛层次的真实题目难度和一个多年教练的经验标签来锚定。

第三个维度是题型模板。选择题、填空题、解答题、证明题四大类,每类再区分考察方式(计算型、构造型、反证型、归纳型等)。AI 命题时至少要在三维坐标里锁定一个点:“代数—不等式—柯西变形—难度6—证明题”,才不会凭空乱出。

这个三维坐标本身也构成了一份数据集规范:以后每生成一道题,都会附带这三个维度的元数据标注,形成可检索的题库索引。这套思路是从软件开发里的“数据建模”借来的——没有数据模型,任何技能都只是玩具;有了数据模型,技能才谈得上“产业级”。

3. 核心技能拆解:命题、学案、格式三件套

3.1 教研分析技能:把学情“翻译”成语境参数

教研分析模块是整个链路的第一站,也是最容易被忽视的一站。很多人做学案生成就直接让AI“出几道难题”,但缺少学情约束,产出的内容要么太难要么太简单,根本不能用。我的做法是给AI一组“学情翻译参数”。

这些参数通过一个标准问题清单来收集:学生的竞赛目标层级(一试冲满分?二试保送?国集?)、当前薄弱板块(是数论的同余理解不到位,还是几何的辅助线构造没感觉?)、最近一次模拟的得分率区间、可用的课后时长(每周2小时还是8小时)、学生的计算功底(代数变形熟练度)等。

这些非结构化的“学情描述”会被模块内部翻译成结构化参数输出,比如“目标层级=二试中档”“薄弱板块=组合计数”“难度区间=4-6”“题量=12题”“答案详尽度=中等(关键步骤步骤化解释)”。这个翻译过程非常关键——它是把人类教练的经验直觉量化成机器可操作的条件。

我在这套参数里还塞了一个“负向约束清单”,专门用来防止AI乱来。比如:不能出偏题怪题、不能使用超出竞赛大纲的高等数学工具(特殊情况除外,且需标注)、每一道题必须有明确的考点标签、选项设置必须有干扰项逻辑。没有这些负向约束,AI出题自由发挥起来,经常给你冒出一个用微积分硬解的“不等式”,情绪很复杂。

3.2 命题模块:原创、改编、难度漂移校准

命题学案的制作其实指向一个更刚需的能力:快速产生高质量、难度可控的题目。命题模块这套技能目前包含三个专项:逆推改编、参数化模板、难度漂移校准。

先讲逆推改编,这是我最常用的一个专项。给定一道竞赛真题,它能反向拆解:原题考了什么核心方法?用了什么结构?有没有可替换的背景知识?然后在这个框架下做等价变形。比如一道经典的柯西不等式题,可以把目标式从“和的最小值”改成“乘积的最大值”,把约束条件从线性改成分式,把变元数目从2个提升到3个。这种改编保留了原题的内在结构,但外部形态几乎全新,是竞赛教研里最常见的“出新题”手段。

参数化模板专项适合大批量组卷。我预先整理了几十个经典的“题根结构”,每个结构里预留参数位。比如“给定 a+b+c=1,求 (a/(b+c)) + (b/(c+a)) + (c/(a+b)) 的最小值”这个结构,参数可以随意替换比例、替换变元数量,核心逻辑不变。用代码的方式理解:这就像写了一个泛型函数,把变形参数传入,自动生成具体实例。这个专项在初次应用时评估过,生成速度比手动快5倍以上,质量也基本可控。

难度漂移校准是我最看重的质量关卡。AI改编题目时经常出现“看似相似但难度暴增”或“看似复杂但实际简单”的漂移。我的做法是让 AI 在出题后自答一遍,把解题路径完整写出来,然后根据“解题路径中步骤数、关键技巧层次、计算量”来估算实际难度,和目标难度对比,超过正负1档就回炉重改。这个自我校准机制很重要,它让AI从“生成题目”升级到“生成符合质量要求的题目”。

3.3 学案模块:知识讲解+例题阶梯+练习分层的三维结构

学案生成模块做的事情,是把试题组织成一份能真正用于课堂教学的文档。我总结了一线学案的核心诉求:既要给出题和答案,更要给出“怎么讲”的完整脉络。

学案模块输出的标准结构是三维一体的:知识要点讲解区、例题阶梯区、练习分层区。第一个区是开胃菜:这个专题的核心知识点,用尽量精炼的语言讲清楚定理、公式、适用条件和常见陷阱。第二个区是主菜:按难度从易到难排列的例题,每题配“思路分析”“完整解答”“易错点提示”三个子环节。第三个区是饭后甜点加压力测试:基础巩固题、进阶挑战题、高难压轴题三个子层。

这个结构的核心是**“例题阶梯”里的过渡语言**——也就是一道例题讲完后,如何引导到下一道难度更高的例题。我会在技能里明确要求AI在相邻两道题之间用一两句话说明关联:“上一题的放缩方法换一种方式使用,就得到下面这道……”这能让学案的逻辑脉络完全打通,而不是ABCD四道题的简单堆叠。

值得说明的是:模块化生成学案时,AI生成的内容不是一次成型的,需要反复校验。我会要求模块输出时附上“教学备注”,比如“本题建议用时8分钟”“这题的另一种解法会在下一讲展开”,这些备注给到了老师极大的调整自由,同时AI生成的学案也更有“血肉感”。

3.4 排版模块:从Markdown到可打印文档的适配

排版模块看着不起眼,实际是学案制作里最容易翻车的地方。数学学案的排版要求和普通文章完全不同,核心痛点就一个字:公式。

我先定了一个最稳妥的公式书写规范:所有行内公式用 $...$ 包裹,所有独立公式用 $$...$$ 包裹,不依赖特定排版软件,纯 Markdown+LaTeX 语法。这样做的好处是兼容所有主流的 Markdown 预览和转换工具,从 Typora 到 VS Code 到 Obsidian 都能直接渲染,后续转 PDF 也顺畅。

模块内部还会执行一套排版检查清单:公式括号是否成对、求和上标下标是否完整、分数结构是否有多余花括号、汉字和公式之间的空格是否符合排版习惯、图表编号是否连续、难度标签是否完整。这些检查用脚本也可以跑,但我更倾向于让 AI 在生成阶段就遵守规范,减少后期清理成本。

另外我设了一级“打印适配规则”:页面边距用标准 Word 兼容默认值、标题层级不超过三级(否则打印出来视觉会很乱)、题目统一加"题号."格式、答案解析统一排在练习题之后。这些规则看着琐碎,但决定了这份学案是不是能被老师拿去直接印刷分发。

4. 实操过程全记录:从技能配置到完整产出

4.1 技能包的调试与文件组织

实装这套 skills 的时候,第一步是把技能文件组织成清晰的目录结构。我的工程目录长这样:

olympiad-skills/ ├── skills/ │ ├── olympiad-research-skill.md │ ├── olympiad-item-bank-skill.md │ ├── olympiad-handout-skill.md │ ├── olympiad-format-skill.md │ └── olympiad-pipeline-skill.md ├── data/ │ ├── knowledge-graph.json # 考点三维坐标系 │ ├── difficulty-calibration.json # 难度校准规则 │ └── item-templates.json # 参数化题根模板 ├── examples/ │ ├── sample-handout-good.md # 正面样例 │ └── sample-handout-bad.md # 反面样例 └── README.md

每一个技能文件,我要求自己严格遵守一种结构:先写“背景与目标”,明确这个技能解决什么问题;再写“输入参数规范”,定义它接收哪些结构化字段;接着写“执行步骤”,按顺序描述内部推理流程;最后写“输出格式规范”和“质量标准”。这套结构在给到 AI 工程师朋友看时,他们说基本就是“接口文档+状态机”的思路,AI 调用起来很顺。

调试过程远比想象中要费时:一开始调度到第三步“命题模块”经常返回空或不符合格式,原因在于我没有给技能文件里写足够明确的“输出字段约束”——它不知道自己必须返回包含题号、考点、难度、题干、答案、解析这几个字段的JSON对象。后来我在每个专项内部都增加了“输出JSON Schema示例”字段,AI 才有章可循。

4.2 一个完整的命题学案生成示例

来演示一次实际调用,输入指令是:“为高二数竞班出一份《均值不等式进阶》专题学案,目标难度4-6,题量8题,含2道例题+6道练习,要求2道练习是原创改编题。”

整个流程的中间产物,我记录大致如下:

教研分析模块输出诊断单:目标学生水平对应高联一试以上,二试未开始;薄弱点:变量替换意识弱;目标难度4-6;建议讲解重点:均值链的取等条件分析。(这个诊断单为后面命题框定了边界。)

命题模块开始干活。它从参数化题根模板中调用了三个均值不等式经典结构,做了改编:(1)把加权均值里的权重改成未知参数,要求求参数取值范围;(2)把“三个正数”推广成“三个正数加一个约束条件”,形成新的不等式链;(3)原题中的取等条件被改写为“证明等号不成立”,从而规避了直接送分。这里每道题都自答一遍校准难度,确认在4-6区间。

学案模块基于上述题目组装整份文档:先是知识点讲解区,讲了均值链的完整结构、配凑技巧、常见错误;再是例题阶梯区,第一道例题带完整的“思路分析→解答→易错点提示”;第二道例题难度更进一档;练习区分成“基础巩固”(3题)、“进阶挑战”(2题)、“拓展思考”(1题)。每道题之间都有承接语。

排版模块最后统一公式格式和结构编号,输出干净的Markdown文档。我复制进 Typora 后转 PDF,一页 A4 印三五道题,页边距正常,公式渲染无异常。整体从发指令到拿成品,大致15分钟。

4.3 质量校验清单:每一份学案交付前我都查什么

AI能把初稿做出来不算本事,真正决定能不能用的在于质量校验。我个人坚持用一套检查清单来把关:

命题质量维度:每道题是否有明确的考点标签?是否在考纲范围内?题干有无歧义?答案是否唯一(或说明多解)?难度标注和实际自答步骤数是否匹配?

学案质量维度:知识讲解是否简明,会不会直接长段摘抄教材?例题是不是有阶梯递进,还是三题并列等难度?练习分层是否合理,有没有出现“基础题比进阶题还难”的倒挂?解析是不是“跳步式解答”,有没有保留关键推导?

排版质量维度:公式是否全部用规范的LaTeX包裹?括号是否配对?题目编号是否连续?图表有没有丢失?输出格式是不是 Markdown(方便再编辑)?

这一套清单我在技能设计阶段就写进“查询规范”里,AI 每次输出都会自查。就我实测效果来看,最管用的反而是最简单的那条:“每道题AI必须自己先做一遍”。只要它做过一遍,很多明显的逻辑漏洞和不合理难度就会暴露。

5. 技术实现细节与参数计算

5.1 技能调用方式与上下文注入

在实际使用中,这套 skills 的调用方式可以分为三种模式。第一种是全流程模式:输入一个高度概括的任务描述,总控调度模块自动拆解步骤并依次调用四个模块,适合完整学案的生产。第二种是单模块模式:只调用某一个专项,比如只做试题改编,输出试题清单而不做学案组织。第三种是交互模式:每跑一步都让AI解释中间产物,我确认无误后再执行下一步。前两种适合日常批量操作,第三种适合给学生单独出诊断性练习的时候,因为需要充分人工判断。

调用时的上下文注入我做了优化:不把全部知识图谱JSON丢进技能描述里,而是只加载当前任务需要的板块数据。比如这份学案是《均值不等式进阶》,那就只加载“代数-不等式-均值不等式”这一支路的考点及其关联知识点,压缩上下文占用,让AI能更专注在具体任务上。这个技巧既提升了运行速度,也降低了跑偏概率。

5.2 难度数值模型与校准公式

刚才反复提到的“难度4-6”,落到实现上不能是一句空话,要看具体怎么算。我把难度拆成三个可量化的因素:考点复杂度C、解题步骤数S、技巧新颖度N。综合公式近似为:

D = round((0.3×C + 0.4×min(S, 12)/12 + 0.3×N)×10, 0)

三个因素说明一下:考点复杂度C由这道题涉及的核心二级考点个数和其中是否含跨板块综合来定,单考点为1,双考点为2,三考点以上为3;解题步骤数S是AI解题路径中的关键有效推导步骤个数,12步封顶;技巧新颖度N是人工校验时根据“是否涉及二试以上常见高级技巧”给出1到3的评级。

举个例子:一道“用均值不等式求三元分式最值”的题,单考点复杂度C=1;自答路径7个关键步骤,S=7;技巧属于常见的配凑,新颖度N=1。带入公式:D=(0.3×1+0.4×7/12+0.3×1)×10≈7.3,按小数位归零取整,计算难度约7,判断为略偏难。这时候就要调整:把技巧新颖度或步骤数降低一档,或者把变元个数从3改回2,让难度落到6左右。

这个数学模型当然不是绝对科学,但它的价值在于给了AI一个“可调谐”的机制:当我反馈“这批题难了”,它不是盲目地整体降低数量或换简单题,而是能精确定位到“减少跨考点复杂度”或“压缩步骤数”这两个旋钮上。这在批量命题的时候非常实用。

5.3 学案知识图谱的构建与维护

知识图谱是整个技能包的地基,也是我最花时间维护的数据资产。目前我的knowledge-graph.json里记录了四大板块下共 87 个二级考点、310 个三级考点的标注,以及每个考点常考的题型、难度均值、相邻考点关联关系。

举个例子,“数论中同余”节点会关联到“剩余系”“费马小定理”“阶与原根”等子节点,难度区间被标记为6-9,常考题型是“证明题”和“综合题”。当教研模块接收到“数论基础薄弱”的反馈时,它不只是记忆“弱点”二字,而是能定位到具体的关联考点网络,为后续命题圈定更合理的范围。

这个图谱不是一次性构建完就完事的。每次我发现一批新的经典题或考点联系,就会更新进 JSON 里;遇到新题型也补充一条“题型-考点”的新映射。维护成本不算高,但长期坚持下来,这套技能包的内容深度会远超任何一个静态提示词所能承载的知识量。更关键的是:这些数据是结合具体的考试大纲、真题分布、学生反馈持续迭代出来的,有真实的教研经验温度在里面。

6. 常见问题与排查技巧实录

6.1 调用顺序混乱:技能执行中途“串台”

第一版技能包运行最常出的问题就是:明明调用命题模块,AI 却自动开始排版;明明在出题目,突然又给你讲一段学情分析。根本原因在于总控调度模块的技能描述里,“职责边界”写得太模糊,而我没有给它足够的“禁止性指令”。

解决办法是在所有技能文件里都新增了一个“禁止项”段落。举例:在命题模块的规范里我写上:禁止输出学案结构,禁止输出排版建议,只允许输出题目及解析;在排版模块里则反过来禁止输出任何教学案例分析。这个看似简单的“权限收缩”让每个模块都变得又专又稳。

6.2 难度标注漂移:AI自估难度与学生实际感受脱节

第二种常见问题,是AI在命题模块内部进行自答校准后给出的难度标签,与老教练的实际经验判断差出一个档位甚至更多。我排查下来,核心原因在于AI自答时往往会略掉“自己已经会的技巧细节”——它天然觉得某一步很简单,但学生没这个背景,实际会很费力。

我的修正方案是双轨制:AI自估难度校准时,必须列出“推导过程中每一步用到的具体知识点”,我会人工核对这串知识点是否在该层次学生的已知范围内。如果知识点跨度太大,而AI仍打出低难度,就强制把难度调回正确档位。这套双轨校验,说白了就是把“AI盲估”和“人工审校”合并到流程里,减少纯靠模型的偏差。

6.3 公式渲染兼容性:线上预览和线下打印不一致

还有一个很磨人的痛点:同一份Markdown学案,在线上预览器里公式正常,线下Word排版时却会出现公式乱码、行距错乱。跟排版模块强绑定已久,我的经验是:在生成学案时,就把排版环境需求写清楚,尽量保持纯LaTeX语法,回避复杂的自定义宏定义。对于确实需要用到的特殊符号(如数论里的同余三元组),我会在生成阶段控制成通用写法,确保主流渲染器都能识别。

这条建议在实操中真的帮我省掉了很多跟同事来回校对格式的时间:现在大家约定俗成,学案预览就直接用同一个工具链,虽然少了灵活性,但换来极高的一致性,反而更适合团队协作。

6.4 多任务并发时的上下文“串味”

当老师在同一对话里连续生成多份不同专题的学案(比如上午出《不等式》下午出《数论》),偶尔会出现上一份学案的题目混进下一份的情况。原因并不神秘:长对话的上下文记忆太强,AI误以为这些话题有关联。

我的处理方法是加一道“任务隔离”指令:每份学案开始前,强制清理对话历史,把知识图谱数据和任务描述作为新上下文的开头。或者更干脆的做法:每次新任务开新会话,不沿用旧上下文。虽然略微牺牲了连续对话的便利性,但产出的内容边界非常干净。我也找到了折中办法:在总控模块里要求“每个任务输出完成后,AI需要对任务核心字段(专题名、考点、难度)输出一条定界摘要”,这个摘要相当于在对话流里打了一个“分隔符”,大大降低串味概率。

7. 后续演进方向:从“能用”到“好用”还差什么

当前版本已经能稳定产出可用的学案初稿,但我心里很清楚,它距离一个真正“产业级”的教研系统还有不少路要走。我自己最期待的是以下三个方向。

第一是从“生成学案”进化到“自动记录教研轨迹”。每一份学案产生过程中,AI 留过什么题、剔除过什么题、校准过多少次难度、学生的后续反馈是什么,这些轨迹值得被采集下来,沉淀成“教研过程数据”,而不仅是“教研成果数据”。有了过程数据,才能做更细的学情纵向追踪。

第二是和真实教学反馈闭环。我计划下一步给技能包增加一个“学生反馈模块”,输入学生的完成正确率和错题分布,学案模块便能反向调整后续的命题策略。这样一来,整套 skills 就不再是单向的“AI出题→学生做”,而是一个“出题→做题→反馈→再命题”的正向螺旋上升。这个闭环一旦跑通,才说得上真正“一体化”。

第三是跨学科迁移。现在整个技能包的设计是基于语文数学物理化学等学科的底层逻辑,但如果把考点坐标换成“物理力学中的受力分析”“化学有机反应的断键机理”,几乎同样格式的坐标体系可以无缝迁移。路径里我已经预留了“知识领域映射”的参数入口,未来换学科时,主要替换知识图谱和题根模板,整体框架不用推倒重来。

我个人在实际操作中的体会是:做这类 skills 项目,真正的胜负手并不在写技能提示词本身,而在于领域知识是否被结构化得足够细、足够准。技能文件只是“管道”,管道再漂亮,里面没有经过沉淀的、严谨标注的知识数据,流出来的还是水。如果你也想做一套学科教研类 skills,我的直接建议是:至少预留三分之一的时间去搭建和维护知识图谱,它才是这套技能的“灵魂”。

最后再分享一个小技巧:每份学案生成后,留出五分钟做“反向阅读”检验——自己以学生身份把学案从头到尾做一遍。这一步不花太多时间,却能暴露AI所有潜在问题。作为一个带竞赛多年的教练,我依然相信:任何工具都替代不了老师在真实教学现场里的专业判断,但把判断力封装成可以复用的流程,是能让整个教研团队共同受益的事。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询