
带着竞赛班最磨人的一件事就是把一道好题变成一份能直接用的学案。你花两个小时挑题、做题、想变式还得再花两个小时写解析、调排版、补评分标准最后发到教研群里还有同事问“这一步怎么跳过去的”。数竞老师的工作日常至少三分之一耗在“把脑子里的题搬到纸上”这个环节。我试过用通用的 AI 对话框直接生成讲义结果它在关键步骤编错了答案排版更是随缘。直到我把一套按“读题—命题—解析—变式—排版”拆成 skills 的提示词链装进常用的 AI 环境里才算体会到什么叫“竞赛教研与学案制作一体化”。这篇文章不科普 AI 是什么而是把这套“学案的革命数竞版”集成 skills 的思路、配置过程、踩过的坑完整写一遍。适合给竞赛数学老师、教研组长以及帮理科老师做 AI 落地的朋友参考。1. 学案为什么难难在哪几个环节1.1 一道好题不等于一份好学案很多老师以为学案难在“找题”。其实找题只占三分后面七分是加工。一道竞赛题拿到手要让它变成学生能用的学案至少得经过五道工序判断它适合哪个年级、哪个知识模块确认难度档位和目标人群把解析步骤拆成学生能复现的“思路链”设计至少两个变式防止学生背套路最后排成页面干净、公式可读的电子稿。任何一道工序没做好学生拿到手的学案就是“题目有趣过程劝退”。我见过不少老师直接用竞赛原题做学案解析只写“易证”答案就一个数。这种材料给竞赛班尖子生看都有门槛更不用说普通学生了。真正的问题不是题目质量而是“题目到学案的加工深度”。学案革命要解决的就是把这个加工过程标准化。1.2 通用 AI 对话的三个不靠谱用通用聊天框随手生成学案刚开始会觉得挺爽。你丢一句“出三道数竞均值不等式题”它秒回三道。但用几轮就会发现三个问题。第一答案不校验。它自认为算对但你把中间步骤代入原式经常出现系数差了二分之一、漏了一个负号这种低级错误。第二解析风格不可控。第一次给你写出详细步骤第二次就写“由柯西不等式显然”你根本没法预期它下一次输出什么格式。第三变式质量靠运气。它默认的“变式”经常只是换个数字而不是换解题入口训练价值很低。问题的根源在于通用对话没有固定“岗位职责”。你既让它审题又让它出题还让它排版它只能临时拼凑一套行为效果自然随机。要解决得把角色拆清楚让每一道工序有独立的“技能包”。1.3 把“学案制作”拆成流水线我的做法是参照工厂流水线把学案制作拆成独立工序。每条工序给 AI 配一套固定的行为规范包括对输入的要求、对输出的要求、必须遵守的质量标准、禁止出现的动作。这样每次调用都像启动一台专用机器而不是指挥一个全能学徒。这条流水线我分成六个节点知识点解析、难度映射、选题出题、解析生成、变式扩展、排版输出。每个节点对应一个 skill。前一个 skill 的输出是后一个 skill 的输入数据格式在 skill 之间的共享说明里提前定好。这样一来哪怕中途换了题目只要知识标签和难度档位不变整条链路依然稳定跑通。1.4 为什么“做题的人”要关心“skills 生态”顺便说一句很多人听到 skills 就以为这是程序员的东西看到热词里一堆前端开发、安卓脱壳、数学建模觉得和自己没关系。但实际上 skills 是一套“给 AI 定规矩”的通用机制。前端有前端的技能包数学建模有数学建模的技能包数竞教研同样可以有自己的技能包。你只需要把“怎么做竞赛教学案”这个经验写成一份结构化的说明文件AI 就能在一个稳定框架内执行。换句话说skills 本身就是教研经验的一种封装方式。今天你能在社区找到各种领域的 skills数学建模 skills 里的公式规范、数据校验思路拿过来改一改就能用到数竞学案里。2. “数竞版 skills”到底是什么结构2.1 skills 的本质带前置信息的指令包说白了一个 skill 就是一个文件夹里面通常有一个说明文件外加若干脚本、模板、示例。说明文件写明这个技能是干什么的、什么时候触发、输出格式是什么、有哪些禁忌。AI 工具在对话开始后会根据上下文判断要不要加载这个说明文件加载之后就按里面的规矩办事。这和普通提示词的根本区别是“模块化”。普通提示词是一段一次性指令改了就得整段重写而 skill 是独立文件可以像搭积木一样组合。你单独修改一个“排版技能”不会影响“出题技能”的行为。这也让团队协作变得可行教研组长把技能库放在公共目录组员各自调用谁都能改改完提交更新大家同步。2.2 我搭的数竞学案技能树以下是目前我用的一棵简化技能树目录结构长这样math_contest_lesson/ ├── _shared/ │ ├── 数学表达规范.md │ └── 难度系数表.md ├── 01-知识拆解/ │ └── SKILL.md ├── 02-难度映射/ │ └── SKILL.md ├── 03-选题出题/ │ └── SKILL.md ├── 04-解析生成/ │ └── SKILL.md ├── 05-变式扩展/ │ └── SKILL.md └── 06-排版输出/ └── SKILL.md_shared 目录放公共规范比如公式书写规则、难度档位定义。其它技能目录各自独立通过读取 _shared 里的规范保持一致。这样设计的好处是改难度定义时只动一个文件所有技能都会跟着调整。2.3 一个典型的 SKILL.md 长什么样拿“解析生成”这个技能举例它的说明文件里最关键的部分大概是这样的name: 数竞学案-解析生成 description: 根据题目题干和答案生成竞赛级别的逐步解析 trigger: 输入包含题目文本或题目图片描述 input: - 题干 - 答案 - 目标年级 output: - 思路引导 - 完整步骤 - 关键点提示 rules: - 每步必须给出等价变形依据 - 禁止使用“显然”“易得”作为跳步理由 - 涉及不等式时必须给出取等条件这里我特别强调“禁止跳步”。因为竞赛解析最容易被 AI 糊弄的地方就是中间过程。AI 很喜欢写“由韦达定理易得”但学生并不知道这个“易得”到底怎么得。所以我把“给出依据”和“禁止显然”写进 rule保证输出的解析对学生真的有指导价值。2.4 为什么这套结构比“复制粘贴提示词”稳一次性的提示词你写一百次就有一百次的不确定性。技能包则是把规则固化了。AI 每次加载同一个技能输出的结构高度一致。我第一次测试的时候连续让同一个“选题出题”技能生成了十道不等式题十道的格式几乎一样都是“题干、答案、难度、知识标签”四件套这就给后续自动化打好了基础。另外技能包方便做回归测试。我改一版解析技能会拿以前出过的三道老题重新跑一遍看输出有没有更清晰。这在纯提示词时代是做不到的因为你没有固定档案可以回溯。3. 实操把技能包装进你的教研环境3.1 准备一个干净的项目目录我不建议把技能散落在各个对话工具里。我的习惯是在本机建立一个统一的目录比如D:\math-research\skills或~/math-research/skills按工具规范配置技能目录。主流 AI 编码助手和知识型 Agent 都支持自定义技能目录有的放在项目目录下有的放在全局用户目录下你把技能文件夹放进去就能被识别。如果你是从社区下载别人做好的 skills注意看作者的说明。有些技能包带脚本需要确认运行环境有些只是纯说明文件当前主流工具可以直接读。第一次引入时我建议只装一两个尝试别一下子装几十个不然工具会变慢而且技能之间可能抢触发。3.2 手动安装 GitHub 上的 skills 的通用套路在 GitHub 上找技能包的通用流程是先看仓库说明确认它支持的技能格式然后用git clone或直接下载压缩包把文件夹放到你的技能目录最后重启对话工具输入一句测试指令看技能有没有被正常触发。我踩过一个小坑下载压缩包后直接解压里面嵌套了一层父目录导致技能变成“文件夹套文件夹”工具识别不到。正确做法是检查目录层级确保技能说明文件直接位于技能目录内里一层而不是被多余的目录隔开。这个细节写在文档里的不多实际操作时特别坑。3.3 自己写第一个数竞学案技能如果你不想用社区现成的从零写一个“难度映射”技能也很简单。先准备一个难度系数表划分成五个档位对应不同年级和竞赛层次档位名称适用对象典型考点L1联赛基础高一刚接触竞赛数论整除、代数变形L2联赛提升系统训练半年以上不等式、组合计数L3联赛冲刺冲击省一数论综合、几何变换L4高联加试目标冬令营组合极值、不等式加固L5国决难度集训队水平多模块交叉压轴然后把这个表写进技能说明里要求 AI 根据“目标赛事、年级、近三次测试情况”输出一个难度档位建议。这样一来后续的出题技能就能以档位为输入把题目难度锁定在合理区间。3.4 生成一份完整学案的执行顺序我自己现在用技能包生成学案时按顺序执行以下动作先让“知识拆解”技能把当天要讲的知识点拆成若干子模块。再让“难度映射”技能确定学生适合的档位。把知识子模块和难度档位交给“选题出题”技能生成三到五道核心题。把核心题丢给“解析生成”技能产出逐步解析。针对每道核心题调“变式扩展”技能生成两道变式并在说明里指定“改变入口而非改变数字”。最后把全部内容交给“排版输出”技能统一成 Markdown 学案。每一步我都手动检查一次。别嫌烦AI 技能再怎么强也不能替你判断“这道题对你们班学生是不是真有训练价值”。人机配合的正确姿势是AI 做执行你做决策。4. 实录一道不等式如何变成一份三页学案4.1 我给的输入为了让你直观看到效果这里我给出一段真实的输入目标是 L2 档的均值不等式学案请用“知识拆解”技能拆解均值不等式在竞赛代数中的应用模块 然后按 L2 档位生成一道经典考题和两道变式。 学生已经学过基本不等式但不会拆凑和配系数。这个输入里包含技能名、目标档位、学生背景信息很明确。AI 先加载知识拆解技能把“均值不等式”拆成了“直接套用”“配凑”“系数平衡”“取等验证”四个模块然后它根据 L2 档位生成了一道配凑型题目。4.2 生成题目后的双向校验AI 生成的题目是已知 (a,b,c0)且 (abc1)求 (\frac{1}{a}\frac{1}{b}\frac{1}{c}) 的最小值。这道题本身没有错但我习惯做一次“双向校验”第一验答案是否成立第二验题目是否超出目标档位。最小值按柯西不等式算答案是 9取等条件 (abc\frac13)显然是 L2 范畴。如果 AI 生成一道需要构造函数的难题即使答案对我也会换掉。这个双向校验是学案制作里最不能省的环节。AI 出题速度很快但“题目合理性和档位匹配度”仍然需要人来把关。我见过 AI 生成一道看似简单实则涉及琴生不等式的题答案没错但学生根本无从下手这就是档位失控。4.3 解析步骤的“强制可读化”接下来我把这道题交给“解析生成”技能AI 给出的解析流程被规整成这样写出目标结构目标式是 (\sum \frac1a)与条件 (\sum a1) 结合后天然联想到柯西不等式。使用柯西不等式的分式形式 [ \left(\sum \frac1a\right)\left(\sum a\right)\ge (111)^29 ] 因为 (\sum a1)所以 (\frac1a\frac1b\frac1c\ge 9)。说明取等条件当且仅当 (abc\frac13) 时等号成立。这个解析跳步很少而且每一步都写了“为什么这么做”。我在技能里强制它先写“思路引导”再写“严格步骤”最后写“关键点提示”。这样就算学生没看懂步骤也能从思路引导里知道这一类题应该从哪个方向入手。4.4 变式扩展不是换数字变式扩展技能是我改得最多的一个。默认的变式经常是“把 1 改成 2”一点训练价值都没有。我重新定义了变式的三个方向改变条件结构、改变目标形式、改变取等条件。于是它给的第一道变式是已知 (a,b,c0) 且 (abbcca1)求 (\frac1a\frac1b\frac1c) 的最小值。这题就需要先做等价变形因为条件从“和”变成“两两乘积之和”入口完全不同。第二道变式改成已知 (x,y0)求 (\frac{x}{y}\frac{y}{x1}) 的最小值这就要用配系数和导函数了。同样是均值不等式三个方向产生了三种解题入口训练价值明显拉开了。学生拿到变式后能感受到“不是换个数”而是“换个角度想问题”。4.5 排版与输出最后排版技能会把以上所有内容统一成学案的 Markdown 文档。我要求它把“题干”“思路引导”“完整解析”“变式训练”四部分用清晰的小标题分隔数学公式统一用 LaTeX 语法包裹关键结论加粗取等条件放在单独一行。排好版后我会复制到常用的 Markdown 编辑器里预览一遍确认公式渲染正常再导出成 PDF 或者发到学习群。整个过程从选题到出稿稳定情况下十五分钟搞定。以前手工做最少也是一小时起。5. 常见问题与排障手册5.1 数学公式渲染乱码最常遇到的问题就是公式渲染乱码。症状是 (a) 后面跟着一串逃逸字符或者 (\frac) 显示成纯文本。原因一般是排版技能输出的 LaTeX 命令不完整或者把\( \)写成了单反斜杠。我的排查步骤是先看 HTML 预览再把公式复制到在线公式编辑器里试编译最后检查原始文本里有没有双反斜杠被吞。解决办法是重新调用排版技能并且在规则里明确“所有公式必须使用\(...\)和\[...\]包裹不允许出现裸写反斜杠”。5.2 解析跳步与系数幻觉AI 最让我头疼的不是不会做题而是“会做但跳步”。它默认学生和它一样能一眼看懂代数变形。我在解析技能里写过“禁止使用显然、易得、易知作为理由”但还是偶尔漏。后来我加了一条硬规矩每一步必须附带“等价变形依据”例如“两边同乘 (ab)”“由平均值不等式可得”。至于系数幻觉那是必须人工验算的硬伤。AI 在长算式中偶尔会忘记去括号时变号或者把 (2ab) 写成 (ab)。我的习惯是拿到解析后挑中间一步代入原题验一遍不验不发布。5.3 OCR 旧题导入后坐标混乱教研组里积压了大量纸质老题我试过用 OCR 把旧题转成文本喂给“解析生成”技能效果很不稳定。公式容易识别成乱码比如把 (x^2) 识别成 (x\textsuperscript{2})把 (\frac12) 识别成 (1/2)。我现在的做法是OCR 只用来识别题干文字公式部分一律手动补成 LaTeX。不要指望 OCR 一步到位毕竟学案需要的公式准确率是百分之百容错率很低。5.4 skills 更新后不生效缓存问题有一次我改了“变式扩展”里的 rule重新生成变式发现输出跟之前一模一样。排查之后发现是技能缓存的问题。主流工具会在对话开始前扫描技能文件已经在进行中的会话不会重新加载必须新开对话或者手动清缓存。我的经验是技能文件改完之后先检查文件保存编码是不是 UTF-8再重启工具。不要在一个长会话里反复改技能规则这样既测不准也容易把上下文搞乱。5.5 团队复用时的路径与权限问题教研组多人共用一套 skills 时最容易出现“他改了你不知道”的情况。我建议把技能库放进 Git 仓库每次提交写明改动原因。谁想改规则先建分支改完合并大家拉取更新。别用微信群传文件传着传着就不知道哪个是最终版。另外不同老师的表达习惯不同有人喜欢“解析语速慢一点”有人喜欢“直接给结论”。技能库里最好放一份“个性化偏好模板”让每个老师自己覆盖规则而不是直接改公共文件。5.6 别忽视“格式之外”的教研判断最后一条排障经验跟技术无关但我想提一句技能包能做格式、步骤、变式但它做不了“学情判断”。你比 AI 更清楚班里的学生容易在哪一步卡壳哪个孩子的代数基本功弱。学案的最优解不是 AI 给的标准解析而是你在 AI 给的版本上再手动插入两句“脚注式提示”“这里换成你最熟悉的换元法看看”“别急着配方先观察次数”。我把这套技能包用了两个月之后最大的变化不是产学案的速度而是我把省下来的时间花在了真正的教研上反思哪个知识点学生上手慢琢磨下一讲该设计什么认知台阶。工具不会替你思考但它能把你从重复劳动里解放出来让那部分该由人来做的事被你真正接住。