备课到凌晨两点,对着答案排版把一道几何题的辅助线画歪了,然后又花半小时重画——这种“学案苦力”的日子,我干了五年。直到我把整个竞赛教研流程拆成一套“一体化 skills”,才真正把时间从重复劳动里抢了回来。这套东西不是简单的 LaTeX 模板,也不是丢给 AI 一句“帮我出题”就完事的玩具,而是把“教研分析—选题改编—学案生成—分层作业—讲评预案”整条链路做成可复用的技能包,专门面向数学竞赛教练和硬核数学老师。
写这篇东西,是想把“学案的革命(数竞版)”这个项目的完整思路、技能架构和踩坑实录摊开来讲。它能解决的问题很具体:你的教研时间到底被什么吃掉了?学案制作的瓶颈究竟卡在哪一步?如果你平时用 Claude、Codex 这类带 skills 机制的 AI 工具,或者正在做数学类的 AI 工作流,这篇东西应该能给你一份直接能抄的作业。文章不会绕圈子讲大道理,全是实际跑过、验证过的东西。
1. 项目整体设计与思路拆解
1.1 为什么“学案革命”的突破口是 skills
先说结论:学案制作的成本,大头从来不在“打字排版”,而在“教研决策”。今天这道题要不要放在入门部分?这个知识点学生刚学过,应该出成复习型还是拓展型?几何题的标准答案里,辅助线为什么偏偏从那个中点连过去?这些决策背后是大量的知识判断和教学经验。
日常做法是教练自己心里过一遍,然后手动编排。AI 工具如果只是聊天框,一个最大的问题就是“没记性”和“没边界”——这次让它出题,它不知道你上节课讲到哪里;下次让它排版,它又忘了你常用的题目来源格式。Skills 机制解决的就是这个问题:把一套“决策流程+提示词模板+数据结构约定+知识边界”打包成模块,AI 每次调用时都按这套规则办事。
数学竞赛教研的痛点,恰恰非常适合用 skills 来结构化。因为竞赛内容的类型高度固定:一试的代数题、解析几何题,二试的平面几何、数论、组合。出题方向有明确的难度档位(联赛一试 60%、二试 40%),题目来源相对集中(历年真题、经典竞赛书籍、改编题)。这些规则一旦固化,AI 执行起来就非常稳,不会今天这样明天那样。
1.2 数竞教研的独特需求与常规学案生产的差异
普通课内学案和竞赛学案有一个根本差异:普通学案强调“知识覆盖”,竞赛学案强调“思维密度”。竞赛中的一道好题,往往在一道题里同时容纳了 3 到 4 个知识点交织的思维路径,比如一道解析几何题里融合了几何对称、代数配方和不等式估计三个层面。这就导致竞赛学案在制作时,对题目的“归属分析”和“难度定位”要求极高。
还可以从一个更操作化的角度看差异。我们知道普通学案的生产带有周期性特征:每周按教材章节出,结构类似“知识回顾+例题精讲+随堂练习”。这种生产完全可以模板化,AI 参与的空间也大。但是竞赛学案,除了周期性训练,还有大量“专题式深度素材”,比如“奇偶分析法在数论证明中的十三种典型用法”“从一道联赛几何题看旋转全等的构造时机”。这类内容高度依赖教研积累,AI 如果只靠即时生成,很容易产出“看起来完整、实际上浅薄”的内容。
这套“一体化 skills”的设计初衷就是:把教练脑子里那套判断逻辑,固化成 AI 可执行的流程,同时保留人对关键节点的控制权。技能包不是在替代教练,而是当一个“具备竞赛教研常识的高级助教”——给它一个任务边界,它能在边界内把 80% 的重复性工作做得又快又好。
1.3 一体化工作流的整体框架
整个 skills 体系的核心是一个“三段式”结构:输入层、处理层、输出层。
输入层负责接收最原始的需求,比如“今天想给学生练平面几何的线段相等证明,难度接近联赛二试第一题”。处理层启动一系列子技能:先查知识库定位难度坐标,再检索题目库筛选合适的母题,然后按学案模板生成内容。输出层负责格式化:LaTeX 编译检查、公式清洗、图表占位、分层作业设计。
这个框架里最关键的认知是:学案制作不是一次性写出全部内容,而是多轮加工的过程。每一轮加工都有一个明确的“质检点”。我的实际做法是分四轮:第一轮选题,第二轮解析编写,第三轮学案排版合成,第四轮答案与详解拆分。每一轮对应一个独立的 skill 模块,模块之间通过统一的“题目数据格式”传递信息。
2. 核心技术与工具选型
2.1 Skills 能力模型拆解
很多人问我“skills 到底是什么,和普通提示词有什么区别”。用一个笨一点的比喻:普通提示词是“这次请帮我做这件事”,skills 是“以后凡是我把这件事相关的东西扔给你,你都按这套流程来做,并且记住我用过的偏好和资料格式”。
在我这套数竞学案 skills 里,一共拆出了 8 个子技能模块,它们组合起来才是完整的工作流:
- 题库检索 skill:从本地题库中检索符合条件的母题,支持按知识点、难度档位、年份、来源检索
- 难度标定 skill:给题目打难度标签,区分一试基础、一试强化、二试入门、二试综合
- 解析生成 skill:生成完整解析,包含“思路分析”和“规范解答”两层
- 学案排版 skill:按学案模板生成版式,包含标题层级、例题区、练习区、留白区
- 答案分离 skill:从学案中抽出答案,生成独立的教师版解析文档
- 学情预估 skill:根据题目特征预估学生的易错点和卡点
- 变式改编 skill:对母题做场景替换、数值变化、条件增减,生成变式题
- 主题矩阵 skill:将一个专题下的知识点和能力维度生成矩阵式分布图数据
你可能会问,为什么要把一个“出学案”的事情拆得这么碎?直接给一个大型提示词不行吗?实际测试下来不行。原因很简单:你给 AI 一个 3000 字的综合提示词,它执行到第 2000 字时就已经忘了前面某条规定了。拆成子技能后,每次只执行一个单一职责的任务,执行精度显著提升。
2.2 数学计算引擎与符号计算集成
竞赛学案没法回避数学公式的处理,而公式处理往往是最容易出错的地方。我的方案是集成两类工具:符号计算引擎和公式渲染引擎。
在解析生成环节,尤其是代数、数论、不等式这类需要大量符号变形的内容,直接用语言模型推算答案会有风险。比如一道含参不等式恒成立问题,AI 可能推导得头头是道但漏掉一个分类讨论的分支。我的做法是:用 Python 的 sympy 库做符号计算验证关键步骤,特别是等式变形、因式分解、多项式整除判断,这些是纯机械的符号操作,机器比人脑可靠得多。
公式渲染方面,我用的是 LaTeX + MathJax 双轨方案。学案源文件用 LaTeX 编写,预览时同时用 MathJax 在浏览器里快速渲染。这里有一个非常实用的细节:LaTeX 在数学竞赛中有一套“排版方言”,比如题目中经常出现“如图,在三角形 ABC 中”,需要插图引用环境;解析中经常出现分情况讨论,需要对齐的分步算式。这些如果不做专门约束,AI 生成出来的 LaTeX 代码经常语法不达标。
2.3 几何可视化在学案里的处理方式
平面几何是数竞的大头,而几何题最棘手的地方在于图形。如果 AI 只生成文字而不会生成配图,学案的价值就折损一半。我的解决思路是分层处理:标准几何图用几何画板或 Python 的 matplotlib 生成,AI 负责自动生成绘图代码;示意图则用 TikZ 绘制,AI 根据题目条件自动推导点的坐标和线段的相对位置。
这里要特别提醒一个坑:TikZ 绘图代码的容错率很低。如果 AI 想当然地给了一个不闭合的坐标关系,编译出来的图可能完全不是题目描述的样子。我的解决方案是给绘图 skill 加了一条硬性规则:所有 TikZ 图中的坐标必须先通过几何关系计算,禁止“目测坐标”。也就是说,AI 必须先用逻辑推导出各点的确切位置(尽管可以是相对位置),再生成图代码。
这套几何可视化的价值不只是“让学案好看”,更是帮助学生建立图形直觉。一份好的竞赛学案,图应该体现“有助于发现辅助线的那一个视角”,而不是单纯的示意图。
3. 实操落地:技能创建与学案生成全流程
3.1 技能包的文件结构与加载方式
先讲最基础的东西:一个 skills 技能包在文件结构上是什么样子。我采用的是比较通用的 SKILL 规范,也就是一个目录算一个技能,里面包含一个主描述文件,以及若干资源文件。
competition_math_case/ ├── SKILL.md ├── assets/ │ ├── templates/ │ │ ├── lesson_case.tex │ │ └── answer_sheet.tex │ ├── data/ │ │ ├── knowledge_graph.json │ │ └── difficulty_calibration.json │ └── scripts/ │ ├── verify_solution.py │ └── gen_tikz.pySKILL.md 是这个技能的说明书,里面写清楚这个技能是干什么的、接收什么输入、输出什么格式、调用哪些附属脚本。下面是一个简化版的核心内容,体现关键约定:
--- name: competition_math_case description: 生成数学竞赛专题学案与教师解析文档 --- # 能力边界 本技能负责从“专题需求描述”到“完整学案+答案详解”的全流程生成。 # 输入格式 - topic: 专题名(如“平面几何·线段相等证明”) - level: 难度档位(一试基础/一试强化/二试入门/二试综合) - period: 建议课时数 - source_preference: 题目来源偏好(联赛真题/改编/自编) # 处理流程 1. 调用题库检索模块匹配母题 2. 对母题做难度标定和学情预估 3. 生成详细解析与思路分析 4. 按学案模板合成版式 5. 拆分教师版答案文档 # 输出规范 - 学案端:LaTeX 源码 + PDF 预览文件 - 教师端:Markdown 解析文档 + 变式题建议 - 所有几何题必须附 TikZ 图源码加载方式上,不同工具的 skills 安装路径不太一样。Claude Code 这类工具一般把技能包放到项目根目录的.claude/skills/下;Codex 则有自己的插件目录规则。实际做法是:无论是在哪个平台,核心都是修改全局配置或项目配置,将技能包路径加入加载列表。
3.2 从零创建一个数竞学案技能的完整步骤
现在说操作流程。如果你不想直接抄我现成的技能包,想从零搭自己的,下面这七步可以直接照着做。
第一步,梳理你的“教研单点流程”。拿出一份你做得最满意的学案,逆推它的生产步骤。我当时的案例是一份“数列递推与不动点法”专题学案,我拆出六个步骤:定位考点→筛选母题→设计变式→编写解析→排版学案→编写教师说明。
第二步,确定数据接口。明确每个步骤之间传递的数据长什么样。我用一个 JSON 对象描述一道题的全部信息,包括题干、答案、难度、来源、考点列表、易错点列表。这个结构是所有子技能之间的“共同语言”。
第三步,写核心技能文件。把第一步的流程和第二步的数据结构写入 SKILL.md。
第四步,编写辅助脚本。比如自动校验 LaTeX 语法的脚本、符号计算验证脚本。这一步决定了你的技能质量上限。纯靠语言模型硬生成数学解析,错误率太高,必须让脚本做一次“机械验证”。
第五步,准备模板库。把你常用的学案版式做成 LaTeX 模板,注意预留填空位置、答案位置、留白区域。
第六步,建立知识库。把你手头多年的教研笔记、经典题集、真题分类整理成一个可供检索的索引文件。这里不要求把全部题目原文塞进去,只需要有“题目 ID、来源、考点、难度”几个关键字段,原题可以放在本地题库系统里。
第七步,迭代修正。给定一批标注好的测试需求,每测试一轮,就把出错的地方补进 SKILL.md 的“常见的坑”清单。
3.3 关键调用示例与参数配置
实际操作中,我给 AI 的输入不会是一句话,而是一个结构化描述片段。下面是一个实际跑通过的输入示例:
{ "topic": "平面几何·线段相等的证明策略", "level": "二试入门", "period": 2, "source_preference": ["历年联赛真题", "改编题"], "student_profile": { "base_level": "一试稳定,平面几何推理速度中上", "weak_points": ["辅助线构造角度单一", "等腰三角形条件不敏感"] }, "output_format": ["latex_case", "teacher_answer", "tikz_figures"] }这个输入传递给技能包后,AI 会依次完成检索母题、改编设计、解析生成、学案排版。值得强调的是student_profile这个字段——这是我后期加上去的,作用是让学案真正做到“分层”。很多通用的学案生成器都忽视了这一点,导致题目千篇一律,没有照顾到具体学生的薄弱环节。
参数配置上有一个经验值:给 AI 的约束不是越多越好,而是“关键规则强硬、细节规则宽松”。我在早期版本里把学案的字号、边距、页眉都写死在技能描述里,结果 AI 经常为了塞内容破坏版式。后来改成一种平衡策略:版式核心参数固化在模板里,AI 只负责填充内容,而不是重新创造版式。
体验这个完整流程大概是什么感觉?以一次实操为例:我要求生成一份“平面几何·线段相等证明策略”的两课时学案。这个需求对资深教练来说,脑海里可能会有大致的框架:第一节课讲等腰三角形中两腰相等的识别;第二节课讲全等构造证明线段相等,引入旋转和截长补短两种辅助线技术。
AI 在技能包驱动下生成的学案基本符合预期。它挑了三道联赛真题作为例题,两道改编题作为随堂练习,并且在每道题后都附上了“出题意图”和“学生可能卡住的点”。最关键的是,它生成的 TikZ 图形代码编译通过,辅助线的标记也准确。整个过程大约花了四十分钟人工校对,而如果是自己从头做起,至少要四个小时。
3.4 模板设计与分层作业生成
学案的版式设计是一门被低估的学问。竞赛学案的版式不只是“美观问题”,它直接影响课堂使用的效率。我的模板有几个关键设计:
标题区包含专题名、适用难度、建议课时、目标知识点四个要素。这是我踩过坑后总结出来的——早期版本只有专题名,拿到学案的老师根本不知道这堂课适合哪个阶段的学生。例题区每条例题前都有一个小标签,类似“例 2(联赛改编·中等)”,让学生在动笔之前就对这题的难度有一个预期。练习区不留提示,纯粹是干净题面,这是为了课堂上真实限时训练。最下方有一个教师专用区域,横线下方是“易错诊断”和“变式建议”,学生使用版会裁掉这块区域,教师版则完整保留。
分层作业的设计也放在技能里。我的做法是用难度标定模块算出一个“梯度分布目标”:如果一份作业是 10 道题,按照 3-4-2-1 的分布,落在三个送分档(热身、基础、中坚)和两个拔高档(冲刺、压轴),比例大致是 30% 基础、40% 中档、20% 综合、10% 压轴。技能包在选题时自动按这个比例约束。这比“随便找几道题凑一份”要科学得多。
4. 常见问题与排查技巧实录
4.1 数学解析验证的三大经典翻车场景
我实际使用这套 skills 的过程中,翻车最多的场景集中在以下三个。先讲原委,再给解决方案。
场景一:LaTeX 公式渲染出错。经常出现的问题包括:花括号不匹配、命令名拼写错误、\frac分子分母用成一行导致公式超长。解决的思路是:技能描述里写死一条规则——“所有数学公式必须使用标准数学环境,且每个公式单独一行,不与其他文字混排”,同时配一个自动检测脚本,用 pylatexenc 库扫描 LaTeX 源文件,识别未闭合的环境和非法命令。
from pylatexenc.latex2text import LatexNodes2Text import re def check_braces(tex_content): balance = 0 for ch in tex_content: if ch == '{': balance += 1 elif ch == '}': balance -= 1 if balance < 0: return False, "右花括号多余" return balance == 0, "花括号平衡" if balance == 0 else f"缺少 {balance} 个右花括号"场景二:解析步骤过度“魔幻”。语言模型生成的解析,有时会出现“从上一步到下一步之间跳过了不可或缺的变形”,在数学上不是错误,但教学上是大问题。竞赛教练能看懂,学生绝对跟不上。排查方法是增加一个“步骤完整性校验”脚本,它检查解析文本中是否频繁出现“显然”“同理”“不难得出”这类缩写词。一旦高频出现,就把解析退回给生成模块,要求补充详细步骤。
场景三:难题“伪通用”。AI 有时候会把一个专题的题目生成得过于雷同,比如讲“数列放缩”时,四道例题全部用同一种放缩技巧。这个问题的根源在于技能包里的出题多样性约束不够。我的修复办法是引入“知识策略矩阵”,在选题阶段就要求覆盖至少三种不同解题策略。经验值是:四道例题中,策略分布趋于 2-1-1 的形态,即两个主策略变体、一个跨知识点策略、一个逆向思维策略。
4.2 技能使用中的常见错误与修偏策略
除了数学本身的问题,技能使用中还会遇到流程层面的坑。这里把我认为最值得说的几条列出来。
- 过度依赖题库检索。有时题库里根本没有合适的母题,但技能包会硬凑——它可能把一个“数论同余”母题强行改编成“不定方程”题,改编过程中逻辑漏洞百出。后来我加了一条硬约束:如果检索不到合适母题,允许“自编题模式”,但自编题需要通过符号计算验证初等计算部分。
- 分课时破碎感。如果需求指定“三课时讲完”,技能包生成的学案偶尔会出现三节课内容脱节的情况。比如第一节课还在讲基础概念,第二节课突然跳到一个高阶综合题。修正方案是在技能描述中明确要求“每节课的题目必须使用前节课的知识作为已知项”。
- 忽略教师版价值。我测试的前几个版本,教师版解析文档只是学生版的答案集合,完全没有“教学提示”价值。后来在技能输出规范里增加了一条:每道例题必须附加“讲解时间预估、讲解切入点、学生常见错误预警”,这样教师版才是真正的“教案”,而不只是“答案册”。
另外有一个非常值得分享的排查技巧:把 AI 的推理过程记录下来。很多 skills 平台支持查看执行日志,每次生成学案后,花五分钟看一遍日志,能发现很多隐藏问题,比如 AI 是不是在某一步突然换了一种解读方式。我统计过,大约有四分之一的“看起来正常但实际偏差”的问题,都能在日志里找到根源。
4.3 课程适配与考试接轨经验
把技能生成的内容直接用于课堂,还有最后一道关卡:学案与真实考试标准的接轨。竞赛教练都知道,不同考试的命题风格差异很大,联赛一试偏重计算能力与熟练度,二试偏重思辨深度与构造能力。一套学案如果“通吃”,其实哪个都不讨好。
我为此写了一个“命题风格对齐”子功能。输入目标考试(比如“全国高中数学联赛二试”),技能包自动调整选题偏好、解析风格和题量配置。比如联赛二试的平面几何题,通常起点并不高,但落点要求很高,辅助线构造需要一定创造性。那匹配的学案里,例题解析部分就会侧重“思路探索过程”,详细写出从条件出发如何联想到某条辅助线,而不是直接扔出“连接某两点”这种结果。
竞赛考试近年的另一个趋势是“反套路”,出题人会有意规避常见的模型化构造,转而结合新颖的命题背景。这一点我也纳入到技能包的变式生成策略中。变式改编不能停留在“换个数字”层面,要能在“保持核心知识点不变的情况下,更换外衣”。比如把一道经典的“角平分线+垂直”问题,改造成“内心+外接圆”背景的等价问题。
5. 从个人工作流到团队协作的扩展思考
5.1 单机技能向团队知识库的演化
我刚才讲的都是个人工作流形态。如果你是一个竞赛教研组的负责人,想让这套技能在团队里落地,事情会变得更有意思,也更有挑战。
团队形态下最大的变化是“知识库成为公共资产”。个人用技能,知识库索引文件存在自己本地,够用;但团队多人共用时,每个人的题目标注习惯、难度理解可能不一样。一定要先做“标定校准”,把团队里两位资深教练各自对 20 道典型题目的难度判定录进来,让 AI 作为标尺对齐。否则技能包在 A 老师那里认为“中等”的题,在 B 老师那里可能直接变成“压轴挡”。
团队协作的另一个要素是版本管理。我建议把技能包和题库全部纳入版本管理仓库,每次修改技能描述或者调整模板,都形成一次可回溯的提交记录。实际遇到过的情况是:某次修改例题模板时,不小心改变了留白区域的尺寸,导致几天内所有新生成的学案都在教师版区域和学生版区域重叠。如果没有版本管理,这个错误可能要过很久才会被发现。
5.2 技能组合与跨学科延伸
这套数竞技能包的架构,本质上是一种“领域知识+生成规则+验证工具”的复合形态。这个架构可以复制到其他学科,比如物理竞赛的建模题、信息学竞赛的算法题。物理竞赛的学案难点在于公式推导的可视化,信息学竞赛则在于代码示例的验证。它们的共同点是:领域知识严密、规则繁多、容错率低,正好需要这种“技能化+脚本验证”的解决思路。
我目前正在做的一个延伸是把“学情预估”这个子技能独立出来,作为一个通用的学科诊断模块。它不依赖数竞内容,而是接收“学生的错题记录+日常作业表现”作为输入,输出一份结构化诊断报告,指出薄弱能力的优先级排序。这样一来,学案生成就真正进入了“学情驱动”阶段。
6. 实战效果与复盘
过去一个学期,我用这套技能包支撑了大约 40 份竞赛学案的生产。对比手工作业,时间投入的变化可以量化:一份两课时的专题学案,手工作业耗时大约 6 到 8 小时(包括选题、做题、写解析、排版、核对),熟练运用技能后,人工干预时间被压缩到 1.5 小时,主要是审题和微调。质量方面,学生课堂反馈良好,教师版解析里的“易错诊断”板块,对助教备课的帮助也很大。
不过我也要泼一盆冷水:这套东西解决的是“制作效率”,不是“教研质量”。选题的品味、对学生的了解、对竞赛方向的理解,依然是教练的核心能力。AI 技能包能把“已经想清楚的东西”快速变成学案,但它不能替你想清楚。真正能产生“革命”效果的用法,是把你手头最重要、最经典的几套教研思路先固化下来,让你的时间被释放出来,去沉淀更高质量的教研内容。
一个具体的个人体会是:技能包第一次测试跑通时,我的第一感觉不是“AI 真厉害”,而是“原来我的教研方法论是可以被显式化描述的”。当我把一道道题背后的难度判断、选题偏好、解析风格说明白之后,我对自己教学体系的理解也更深了一层。这可能才是这个项目带给我的最大收获。
最后再分享一个实践细节:技能的调优不要用“等到不好用了再改”的心态维护,而是每生成 5 份学案就回头做一次审查,把 AI 出现的任何小毛病(哪怕只是标点符号层面的)记录到 SKILL.md 的“负面清单”里。这样过两三个月,技能会稳定在一个相当高的水平上,而你得到的不只是一个越来越好的工具,更是一套越来越清晰的教学方法论。