2026年7月4日
数学建模:AI 大练兵与抽奖
一篇写给数学建模新手的 AI 工作流笔记:从电脑基础、项目结构到 Claude Code、DeepSeek 和建模 Skill。
光电24级 任作霖
我对于 AI 的感想后续可能有更新,欢迎大家访问我自己的服务器网站:ZL Ren’s Blog
文章一共两个部分,前3点是我写的感想与思考,后面GPT写的教程,内容很基础,面向没怎么接触过电脑的同学们,篇幅限制难免会有疏漏。如果你觉得你有更好的想法或者问题,也欢迎私聊我。要是认为你做的更好也可以写一下相关的教程分享出来。
在此特别感谢我的数学建模队友 电信24级林感 光电24级李威卓,每次数学建模就是我们一起学习AI使用的过程。
笔者前言
我在网上看到有关AI的话题时,经常会看到一句话:学得越慢,学得越快。同学们可能一开始不太理解这句话是什么意思,我先举个例子。
我读高二那年,也就是2022年,ChatGPT因为帮一位国外的文科大学生完成毕业论文而引起关注。后来教授发现这篇论文写得太好,和这位学生平时的水平严重不符,于是在调查原因时发现了GPT,并向大众提出了疑问。在我心目中,从这个问题登上知乎热榜第一的那一刻起,人类的AI时代就已经开启了。
之后AI的发展速度远超很多人的想象。2022年的AI主要还只是能写一些文稿;到了2024年,AI已经可以比较准确地读取图片里的全部内容;到了2026年,无论是高数题,还是类似模电这种包含复杂电路图的题目,最新一代AI模型基本都已经能处理得相当不错。当然,这里有一个前提:你用的是国外最新发布的顶级模型,在思考和视觉方面,国内的模型大概落后1年的水平,不过在视频生成方面国内模型一直全球第一。
我写这篇文章的时间是2026年7月3日。在这个时间点,OpenAI已经发布了GPT5.6,另外,此前遭美国政府禁用A\的Fable5也重新发布。这两个模型的能力都非常强,很多任务基本可以做到“一遍过”。但问题也很现实:它们非常贵,而且大多数同学其实很难直接接触到。
这篇文章选择DeepSeek,一方面是因为我想推荐一下国产模型,也是因为市面上ds的生态还不错,教程非常多,大家如果看不懂我这个,也可以去B站搜或者网上找。国产模型现在真的已经非常不错了。在中国整体算力不如国外御三家(OpenAI、google、A\)任意一家的情况下,还面临美国芯片制裁和后发劣势,国产AI仍然能发展到今天这种百花齐放的状态,我实实在在为中国感到骄傲。除了DeepSeek V4 pro,在我写这篇文章的时候,另一个国产模型GLM5.2也同样值得推荐(最新的排名榜单可以去 Agent Arena | AI Agent Performance Leaderboard看看,这个里面介绍了每个模型的特长)。
另一方面,从现实使用角度来说,现在大家如果想接触国外模型,基本只有两个渠道。第一个渠道是自己订阅国外AI的月费会员,同时准备一个稳定的节点和国外手机号(每个月还没用上AI就要花30多)。如果你像我一样愿意折腾,当然可以自己去寻找相关信息。第二个渠道是使用中转站。但中转站可能涉及潜在的信息泄露问题,也可能存在“给模型掺水”的情况,还有敏感的黑灰产问题;另外我也不想在这里给任何平台打广告。所以,如果大家确实有使用国外AI的需求,可以自行了解和判断,然后如果要使用,我的建议是gpt5.5-high+codex-desktop或者opus4.6+claude code,这2个组合还是很好用的。
本文之所以选择claude code,绝对不是我对于A\这个“冷战思维”公司有什么好感,只是codex是要用gpt才好用或者说才能用,而且其他模型公司对于这个claude code这个框架适配性更好,我也推荐大家在掌握vibe coding基础上后去使用codex(这个使用方式比较敏感,自己寻找使用方式,如果你不找就说明你没有这个需求罢了,网上教程很多)。
总之,这篇指南不会一上来就推荐大家去追最贵、最新、最难接触的模型。我的目标是首先教大家AI相关的电脑知识,因为你不可能指望一个连电脑都不会用的人拿很好的奖项。然后用相对现实、相对容易获得的工具,帮助大家理解如何把AI真正用到数学建模中,而不是只停留在网页聊天和复制粘贴的层面,掌握基本的技能后,无论AI发展多快,我们都能有自己的方式去驾驭,站在巨人的肩膀上,我们慢慢掌握的技能,在AI性能提升下能获得快的提升,
教程与资料
AI学习与环境配置
学习AI的最好方法就是让AI教你怎么用它,下面是我精选的一些环境搭建教程,我本人是看 菜鸟教程 学习的,我建议各位也可以好好利用里面的教程。
Claude Code 安装 + Skill 配置指南(简要版):
Claude Code 系统学习指南(最好这个教程的每个文章大概看过一遍,不可能你一点不了解就去使用):
至于后面文章提到的skill安装可以让AI帮你安装,你可以直接复制github仓库地址让他给你装好。环境配置好了之后理论上全部问题都可以问AI。权限如果你看不懂的话默认无需审核,也永远不要忘了每次对话后记得配置git结构(可以理解成存档点,不知道这个是什么就问AI),方便回滚版本。
Codex 系统学习指南:
附:claude code推荐使用cc-switch管理api-key,codex如果使用中转站推荐使用codex++管理api-key,永远不要让本地AGENT扫盘或者帮你请垃圾文件,否则可能造成不必要的损失,数据无价!
AI大模型的核心原理科普:
https://mp.weixin.qq.com/s/3Pcs0W-kaf2Pt73kobi5hw
文章提到的数学建模skill的github仓库链接:
https://github.com/zhnnky329/MathModeling-skills
要是你对AI或者技术感兴趣,也可以看看一些论坛,比如LinuxDO,v2ex,小红书,知乎等等(虽然跟我们专业关系不大就是😀),还有一些微信公众号,比如 鱼皮程序员,逛逛github 等等,我个人希望数模的AI使用能够惠及大创做项目的代码部分,主要让大家了解做项目的范式,这个也是我标题写AI大练兵的原因。
数学建模
我之前咸鱼买的清风数学网课:
【超级会员V1】通过百度网盘分享的文件:清风!
链接:https://pan.baidu.com/s/1DWlJkyM2e1Y9X6BZ15J-NQ?pwd=as89
复制这段内容打开「百度网盘APP 即可获取」
公众号 有 数学建模老哥。
这些资料都是在AI时代之前的数学建模资料,讲的是各种数据处理的基本算法,还有matlab(学校为我们买了正版matlab👍,直接去mathworks用学校邮箱注册账号然后下载正版就行,尽量下载b版,去年或今年的都行),stata,SPSS的使用教程。学习这些基本算法,就跟你学微积分一样,有了微积分的基础,才能学习其他理工科内容,但是你要是基础数据处理算法都不知道,那确实只能纯让AI定方案了,自己没准备也别指望拿很好的奖(当然也有可能,毕竟数模在AI时代本来就有点纯抽奖),也别指望使用相同的AI,给你的回复会比那些懂建模的,会写专业AI提示词的回复更好(笑
另外,AI不懂创新,但是懂严谨(举个例子,我自己打美赛,AI修饰文章滴水不漏并声称O奖潜质,最终喜提S奖)。剑走偏锋的创新建模观点说不定会拿更好的奖,但是要是你基本算法都不明白,你自己是不是剑走偏锋,你自己也不知道,对吗?
写在前面:这不是“让AI替你建模”
很多同学第一次接触AI建模,最熟悉的方式就是打开网页或者用手机app(豆包,deepseek等),把赛题或者问题复制进去,然后等AI回答。这当然有用,而且非常方便。但是如果真的参加数学建模比赛,只靠这种“问一句、答一句”的网页AI,很快就会遇到瓶颈。
因为数学建模不是一道普通问答题。它不是问AI一句“这个题怎么做”,然后AI给一个答案就结束了。真正的数学建模是一个连续流程:读题、拆题、整理数据、建立假设、选择模型、写代码、跑结果、画图、分析误差、写论文、改格式、检查逻辑。中间还会不断返工,比如结果不对、代码报错、图片不好看、论文说不清楚。
所以这篇指南想讲的不是“怎么和AI聊天”,而是“怎么让AI真正进入你的建模工作流”。
这里我们会用到两个东西:
第一个是Claude Code(后面简称为cc)。你可以把它理解成一个能在你电脑项目文件夹里干活的AI助手。它不只是回答问题,还可以读文件、改代码、运行程序、看报错、整理结果。Claude Code官方文档也把它定义为一种agentic coding tool,可以读取代码库、编辑文件、运行命令,并和开发工具配合使用,你可以把他理解为一个模型与你交互的平台,跟APP差不多,有了这个你就能跟这个ai对话,让AI操作你的电脑,我们可以借用这个壳子,调用不同的模型,包括A\自家的fable,opus,sonnet,还有国产的deepseek,glm等(注:cc极其不推荐使用gpt)。
第二个是DSV4Pro,也就是DeepSeek-V4-Pro。这里我们主要把它当作ClaudeCode背后的模型大脑。DeepSeek官方API文档目前写明,DeepSeekAPI兼容OpenAI/Anthropic格式,模型名包括deepseek-v4-pro和deepseek-v4-flash,怎么配置见上面的链接。
不过先说清楚:AI再强,也不是最终负责人。数学建模里最重要的判断,比如问题怎么抽象、模型假设是否合理、结果是否可信、论文逻辑是否站得住,仍然要由人负责。AI可以当队友,可以当工具人,可以当代码助理,可以当论文助理,但不能当甩锅对象,我们是站在巨人肩膀,不要以为你就这么高,没打好基础都是空中楼阁,甚至到最后提示词都不会写。我严厉一点说,自己一行代码不写,从头到尾用ai,就别把ai生成的当作自己的知识产权!!!
后面的内容由我写提示词,gpt5.5生成,配合菜鸟教程的指南一起看更佳。
1.先别急着学命令,先把电脑理解成一个厨房
我个人比较喜欢一个比喻:
网页AI像你去别人餐馆吃饭。
你坐在餐桌前,看看菜单,点一道菜,服务员把菜端上来。这个方式很方便,门槛很低,适合快速问问题、查概念、改句子、要灵感。但是它也有很多限制:菜单不是你定的,厨房你进不去,锅具你不能换,食材也不是你的。你想让它用你电脑里的某个Excel、某段Python代码、某张结果图,它其实并不能直接碰到,只能靠你复制粘贴。
本地Agent像你请厨师来你家做饭。
厨师到了你家之后,可以看到你的食材、你的锅、你的厨房、你的冰箱。你可以说:“这几个菜是现有数据,这口锅是Python,这个盘子是论文,这几张图是结果,你帮我把这一桌饭做出来。”这时候AI就不只是回答问题,而是能围绕你的真实项目持续干活。
对应到数学建模里:
你的电脑(准确说是命令行窗口)=厨房。
项目文件夹=操作台。
赛题PDF、数据表、论文要求=食材。
Python、Excel、VSCode=厨具。
Claude Code=上门厨师。
DSV4Pro=厨师的大脑。
Skill=提前写好的菜谱。
如果你把所有东西乱扔在桌面上,赛题PDF在下载文件夹,数据在微信文件夹,代码在桌面,论文在另一个盘,图片又不知道保存到了哪里,那么再厉害的AI也会很痛苦。就像厨师进你家以后发现菜在客厅,锅在卧室,盐在阳台,天然气还没开,那它当然做不好饭。
所以,使用ClaudeCode之前,最重要的不是马上背命令,而是先养成一个基本习惯:
每个建模项目都应该有一个干净、独立、结构清楚的项目文件夹。
注:下面2-23节由我写提示词,gpt生成。
2.新手最需要懂的几个电脑概念
这一章不是要把大家教成程序员,也不是要系统讲Windows使用教程。我们只讲几个以后一定会遇到的概念。你不需要马上精通它们,但至少要知道它们大概是什么。否则后面看到“打开终端”“进入项目目录”“用管理员身份运行”“编辑Markdown文件”这种话,很容易直接卡住。
2.1文件夹:项目的家
数学建模一开始,建议先新建一个总文件夹,比如:
MathModeling_Project/
不要把所有东西堆在桌面上,也不要一边下载一边乱改。一个项目就放在一个文件夹里,这样你自己找东西方便,AI找东西也方便。
推荐结构如下:
MathModeling_Project/
├─problem/ 放赛题PDF、题目附件、比赛通知
├─data/ 放原始数据和处理后的数据
├─code/ 放Python代码
├─figures/ 放生成的图片
├─paper/ 放论文草稿、最终论文
├─notes/ 放读题笔记、建模思路、分工记录
└─README.md 写项目说明和当前进度
刚开始不用追求特别专业,但至少做到一件事:数据、代码、图片、论文不要混在一起。
如果所有东西都乱放,就像厨房里食材、锅、碗、调料全堆在地上。你自己找东西会崩溃,ClaudeCode也很容易找错文件、改错代码、生成一堆乱七八糟的结果。
2.2路径:电脑找文件的地址
人找文件可能靠感觉:“我记得好像在桌面左上角。”但电脑找文件靠路径。
比如:
C:\Users\ren\Desktop\MathModeling_Project\data\data.xlsx
这就是一个路径。它的意思是:电脑从C盘开始,一层一层进入文件夹,最后找到data.xlsx这个文件。
以后你让ClaudeCode处理数据时,它也需要知道文件在哪里。如果你说“帮我分析那个表格”,但项目里有十几个表格,名字还都叫“新建MicrosoftExcel工作表.xlsx”,那它很容易搞错。
所以文件名尽量清楚,比如:
raw_population_data.xlsx
cleaned_population_data.xlsx
q1_prediction_result.csv
文件名不需要很高级,但要让人和AI一眼看出它大概是什么。
2.3当前文件夹:AI现在站在哪张操作台前
使用ClaudeCode时,有一个很重要的概念叫“当前文件夹”。你可以理解为:现在AI站在哪个操作台前干活。
比如你以后可能会看到:
cd MathModeling_Project
claude
这里的意思不是让你背命令,而是:
cd MathModeling_Project
相当于走进MathModeling_Project这个厨房。
claude
相当于把ClaudeCode这个厨师叫进来。
如果你在错误的文件夹里启动ClaudeCode,它看到的就不是你的建模项目。就像你把厨师叫到别人家厨房,它当然找不到你的食材。
所以以后用ClaudeCode时,一定要养成一个习惯:先确认自己是不是在正确的项目文件夹里。
2.4命令行:用文字操作电脑的地方
平时我们用电脑,大多数时候是用鼠标点:双击打开文件,点按钮运行程序,拖动文件复制粘贴。
命令行则是另一种操作电脑的方式:用文字让电脑做事。
比如:
python code/q1_model.py
这句话的意思是:让Python运行code文件夹里的q1_model.py。
新手一开始看到命令行,可能会觉得它像黑客界面,其实没那么神秘。它只是把“点按钮”换成了“输入一句命令”。
ClaudeCode为什么离不开命令行?因为它要在你的电脑里干活,就需要能运行代码、查看文件、创建文件、读取报错。这些事情很多都发生在命令行里。
所以,命令行可以理解为:ClaudeCode进入你电脑厨房的门口,也是它和电脑沟通的地方。
2.5cmd和PowerShell:Windows里的两种命令窗口
在Windows电脑里,大家可能会看到两个常见名字:
cmd
PowerShell
它们都属于命令行工具,都可以输入命令让电脑做事。
cmd比较老,可以理解为Windows早期常用的命令窗口。
PowerShell更现代,功能更强,现在很多教程会默认使用PowerShell。
对于新手来说,暂时不需要纠结它们底层有什么区别。你只需要知道:
cmd和PowerShell都是命令窗口。
很多命令两者都能用,但有些命令写法可能不一样。
如果教程明确写PowerShell,那就打开PowerShell;如果教程写cmd,那就打开cmd。
在这篇指南里,我们默认使用PowerShell,因为Windows现在更推荐它,而且很多AI工具、开发工具教程也会用它。
2.6管理员身份:拥有更高权限的运行方式
有时候安装软件、修改环境变量、配置系统工具时,教程会说:
请用管理员身份运行PowerShell
这是什么意思?
普通打开软件,就像你是这个厨房的普通使用者,可以切菜、洗碗、做饭。
管理员身份运行,就像你拿到了房主权限,不仅能做饭,还能改水电、换灶台、装新设备。
所以管理员身份权限更高,但也更危险。你不应该随便用管理员身份运行来路不明的命令。
简单记住:
安装软件、修改系统配置时,可能需要管理员身份。
普通写代码、运行Python、使用ClaudeCode,一般不需要管理员身份。
看到网上教程让你用管理员身份运行时,要确认来源可靠,不要乱复制陌生命令。
如果不知道需不需要管理员身份,优先普通运行。只有明确报权限错误,或者官方教程要求时,再考虑管理员身份。
2.7Markdown:写给人看,也方便AI读的文本格式
Markdown是一种很轻量的文本格式。它本质上还是普通文字,但可以用一些简单符号表示标题、列表、代码块、加粗等结构,本文就是基于md编辑器typora然后转pdf生成。
比如:
# 一级标题
## 二级标题
- 第一条
- 第二条
- 第三条
**这里是加粗内容**
```python
print("Hello World")
数学建模里,Markdown特别适合用来写:
```text
README.md
notes/problem_reading.md
notes/data_report.md
notes/model_plan.md
paper/draft.md
为什么推荐Markdown?
因为它比Word轻便,比纯txt有结构,而且AI很容易读懂,并且市面上AI输出的文字你复制下来会发现就是md格式。你可以把读题笔记、建模方案、实验记录都写成Markdown文件。ClaudeCode读取这些文件时,也能很清楚地理解标题、列表、代码和说明。
可以简单理解为:
Word适合最终排版。
Markdown适合过程记录。
数学建模过程中,不要一上来就把所有东西都写进Word。前期的思路、实验记录、模型方案,用Markdown会更清楚,也更适合和ClaudeCode配合。
2.8README.md:给人和AI看的项目说明书
在项目根目录里,建议放一个README.md文件。
它就像贴在厨房门口的一张说明:
这个项目是什么?
现在做到哪一步?
每个文件夹放什么?
目前采用什么模型?
下一步要做什么?
比如可以这样写:
# MathModeling_Project
## 项目说明
这是一次数学建模训练项目,目标是完成赛题中的三个问题。
## 文件夹说明
- problem/:赛题和附件
- data/:原始数据和处理后的数据
- code/:Python代码
- figures/:结果图
- paper/:论文草稿
- notes/:读题笔记和实验记录
## 当前进度
- 已完成赛题阅读
- 已完成数据初步检查
- 正在设计问题1的模型
## 注意事项
- 不要修改原始数据
- 处理后的数据放到data/processed/
- 每次实验结果要记录到notes/
这样做的好处是,你自己过几天回来还能看懂项目进度,ClaudeCode也可以先读README.md来快速理解当前项目。
2.9一句话总结
这一章的重点不是让大家背概念,而是建立一个最基础的电脑工作意识:
文件夹是项目的家。
路径是文件的地址。
当前文件夹决定AI在哪里干活。
命令行是用文字操作电脑的地方。
cmd和PowerShell都是Windows里的命令窗口。
管理员身份代表更高权限,不要乱用。
Markdown适合记录建模过程。
README.md是项目说明书。
理解这些之后,再去用ClaudeCode,就不会觉得它是在一个神秘黑框里乱跑。你会知道它在哪里、能看到什么、正在运行什么、结果应该保存到哪里。
这时候,AI才真正从“网页聊天对象”变成了“能在你项目里干活的队友”。
3.网页AI和本地Agent到底差在哪
如果只是问一个概念,比如“什么是层次分析法”“线性规划和整数规划有什么区别”,网页AI已经很好用了。
但数学建模真正麻烦的地方通常不是“知道一个方法”,而是“把方法落地”。
举个例子。
你问网页AI:
请帮我用随机森林预测销量。
它可以给你一段代码。但是这段代码不一定知道你的数据文件叫什么、列名是什么、有没有缺失值、训练集和测试集怎么分、结果图保存在哪里。
你问ClaudeCode:
请阅读
data/sales.xlsx,检查字段含义和缺失值,建立一个随机森林预测模型,把训练结果、误差指标和特征重要性图保存到figures/,并在notes/model_report.md里解释结果。
这时候ClaudeCode就更像在项目里干活。它可以先读文件,再写代码,再运行代码,再看报错,再修改代码,最后把结果保存到指定位置。
这就是网页AI和本地Agent的核心区别:
网页AI主要是聊天。
本地Agent主要是干活。
当然,干活也可能干错。所以人要检查它的代码、结果和论文逻辑,不能闭眼相信。
4.ClaudeCode是什么
ClaudeCode可以理解为一个能进入你项目文件夹的AI编程助手。它可以帮助你完成很多和建模有关的事情:
读赛题,提取目标、约束、变量、评价指标。
整理项目文件夹,建议数据、代码、论文怎么放。
阅读数据表,检查缺失值、异常值、字段含义。
写Python代码,比如数据清洗、拟合、预测、优化、可视化。
运行代码,根据报错继续修改。
生成图表,比如折线图、热力图、残差图、对比图。
整理实验结果,写成论文里的分析段落。
检查论文逻辑,比如前后符号是否统一、假设和模型是否对应。
它不是只能写代码。对数学建模来说,ClaudeCode真正有价值的地方是:它能围绕同一个项目文件夹持续工作。
你不用每次都把上下文重新复制给它。你可以让它读README.md,读notes/idea.md,读paper/draft.md,然后继续改。
官方文档里也提到,ClaudeCode支持通过CLAUDE.md记录项目说明、编码标准、架构决策和检查清单;也支持用Skill封装可重复工作流。
5.DSV4Pro在这里是什么角色
如果ClaudeCode是上门厨师,那么DSV4Pro就是厨师的大脑。
ClaudeCode负责进入项目、调用工具、读写文件、运行命令。
DSV4Pro负责理解问题、规划步骤、生成代码、解释结果、写文字。
也就是说:
ClaudeCode是工作环境。
DSV4Pro是模型能力。
你的项目文件夹是实际战场。
DeepSeek官方给出了ClaudeCode连接DeepSeek模型的环境变量配置方式。Windows用户可以通过设置ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_MODEL等变量,把ClaudeCode的后端指向DeepSeekAnthropicAPI;官方示例里使用了deepseek-v4-pro[1m]和deepseek-v4-flash等配置。
这里不建议大家死记网上某篇教程里的命令,因为模型名、价格、接口规则都有可能更新。真正要装的时候,以DeepSeek官方API文档和ClaudeCode官方文档为准。
你现在只需要理解一句话:
DSV4Pro不是另一个软件界面,而是ClaudeCode背后的模型大脑。
6.为什么我要推荐使用Skill完成数学建模
到这里,大家已经知道:
网页AI像去餐馆吃饭。
ClaudeCode像请厨师来你家做饭。
项目文件夹像厨房。
DSV4Pro像厨师的大脑。
那Skill是什么?
Skill就是一张固定菜谱。
数学建模比赛里,我们每次都会重复很多固定流程:
读题要提取什么?
建模前要检查什么?
代码结果要保存到哪里?
论文必须包含哪些部分?
每次跑实验后要记录什么?
哪些地方不能让AI瞎编?
如果这些要求每次都靠你手动提醒AI,很麻烦,而且容易漏。于是我们可以提前写一个数学建模Skill,让ClaudeCode每次处理建模任务时都按照这套流程走。
ClaudeCode官方文档对Skill的解释也类似:创建一个SKILL.md文件,把可重复的说明、清单、多步骤流程封装起来;Claude可以在相关场景自动使用它,也可以通过/skill-name直接调用。
我下面以github项目GitHub - zhnnky329/MathModeling-skills: 面向数学建模竞赛的 Claude Code / Codex Skills ,支持分阶段建模流程与 Python、MATLAB/北太天元代码分支。 · GitHub项目为例来介绍skill的使用。
它的作用不是“自动给出最终答案”,而是强制AI按照规范流程帮你建模。
7.新手不建议自己写Skill:先用现成的
前面我们说过,Skill可以理解成一张固定菜谱。它会告诉ClaudeCode:数学建模应该按什么流程走,哪些步骤不能跳,哪些东西必须检查,哪些内容不能瞎编。
但是这里要提醒大家一句:刚开始用ClaudeCode时,不建议新手自己从零开始写Skill。
原因很简单。你如果还没真正用ClaudeCode做过完整项目,就很难知道一个好Skill应该写什么。就像你刚开始学做饭,还没炒过几个菜,就让你写一本厨房管理规范,这肯定不现实。你可以写,但大概率会漏掉很多关键环节,比如代码审查、结果冻结、论文数字一致性、参考文献真实性、原始数据保护等等。
所以更合理的方式是:
先用现成的Skill。
先跟着成熟流程跑一遍。
等你真的知道哪里不顺手,再考虑自己改。
这里推荐一个现成项目作为例子:MathModeling-skills。这个项目是面向数学建模竞赛设计的一套ClaudeCode/CodexSkills。它不是让AI一键代写整场比赛,而是把AI放回“辅助”的位置,让使用者自己负责关键判断,比如选择什么方法、为什么选、结果是否可信。项目README里也明确说,这一版已经从“自动驾驶”改回“skills辅助”,主导仍然是使用者本人。
如果继续用厨房比喻来讲:
ClaudeCode是上门厨师。
DSV4Pro是厨师的大脑。
你的项目文件夹是厨房。
而MathModeling-skills不是一张简单菜谱,而是一整套后厨流程:先检查食材,再试做小样,再决定主菜,再正式烹饪,再检查摆盘,最后还有几个人分别检查有没有漏菜、错菜、菜品说明对不上。
这比我们自己随手写一个modeling-pipeline要完整得多。
8.MathModeling-skills解决的是什么问题
很多同学以为数学建模翻车,是因为“模型不够高级”。其实很多时候不是。
真正容易出问题的地方往往是:
题目问的是A,队伍理解成了B。
没有跑baseline,上来就用复杂模型,最后没人能解释为什么这么做。
论文里写了一个数字,但回头查代码,发现没有任何脚本输出过这个数。
截止前一晚修了bug,但论文里还保留着修bug之前的旧结果。
AI生成了看似很自然的结论,但其实没有数据支撑。
参考文献看起来很像真的,但实际查不到。
MathModeling-skills这个项目的设计思路,就是把这些容易“悄悄发生”的问题用流程卡住。项目README中也提到,数模翻车常见原因包括误读题目、不跑baseline、论文数字无法追溯、bug修复后论文仍保留旧数字等;它把这些视为流程问题,而不只是建模能力问题。
所以它的价值不是“让AI变得无敌”,而是:
让AI不容易乱来。
让队伍不容易跳步。
让论文里的数字和代码结果能对上。
让关键判断回到人手里。
这一点非常重要。数学建模比赛不是比谁最会让AI瞎跑,而是比谁能把问题理解清楚、把模型讲明白、把结果做扎实。
9.这套Skill的大致流程
MathModeling-skills不是一个单独的Skill,而是一组Skills。项目README中写到,它目前包含28个Skill,并按建模阶段组织。它的整体流程大致是:
读题与分类
↓
整理符号表和模型假设
↓
审计和清洗数据
↓
提出候选方法,并用真实数据跑小型PoC
↓
由人决定最终方法
↓
生成代码
↓
代码审查
↓
整理结果、稳健性分析、图表生成
↓
冻结论文数字
↓
撰写论文分节
↓
润色、文献管理、一致性检查、完整性检查、最终QA
它里面有几个设计我个人觉得很适合数学建模。
第一个是workflow-orchestrator,也就是流程总管。它会跟踪每个子问题进行到哪一步,并检查当前阶段能不能进入下一阶段。项目README里也把它放在流程开头,用来确认环境并推进gate检查。
第二个是problem-parser和problem-classifier。这两个主要负责读题和分类,避免一上来就建模。对新手来说,这一步特别重要,因为很多题不是不会做,而是从第一步就读歪了。
第三个是data-auditor-cleaner。它会审计原始数据,并生成清洗后的副本。原始数据不要直接改,这个习惯非常重要。项目README里也强调原始数据data_raw/保持只读。
第四个是method-selector。它不会直接替你拍板选方法,而是给出候选方法,并要求每个候选方法都有不超过30行的PoC,在真实清洗数据上跑出具体结果。也就是说,不能只说“这个模型理论上很好”,还得先证明它在当前数据上真的能跑。
第五个是frozen_numbers.json。这个东西可以理解成论文数字的“冻结清单”。论文里出现的关键数字,应该能在这里找到来源。如果后面改了bug,数字变了,就要重新冻结,而不是在论文里手改。项目README明确说,论文中每个数字都须出现在frozen_numbers.json,且该文件不允许手工编辑。
第六个是最后的三个审计:consistency-auditor、completeness-auditor、quality-assurance-auditor。这相当于交卷前的三道检查。项目README中写到,三个独立审计必须全部通过,论文才能进入最终组装。
这套流程听起来可能比“让AI直接写论文”麻烦,但它更接近真正靠谱的数学建模工作流。
10.推荐安装方式:放进当前比赛项目里
对新手来说,我不建议一上来就全局安装。全局安装的意思是把这些Skill装到整个ClaudeCode环境里,以后所有项目都能用。这个方式当然方便,但对新手来说也更容易混乱。
我更推荐项目README里的方案A:把仓库克隆到当前比赛项目里使用。这样CLAUDE.md、.claude/settings.json等项目规则会跟着当前项目走,不容易影响其他项目。项目README也把“克隆到比赛项目里”列为推荐方案。
假设你现在有一个数学建模项目文件夹:
MathModeling_Project/
建议你先在里面建立比赛资料的位置:
MathModeling_Project/
└─workspace/
├─problem/
└─data_raw/
其中:
workspace/problem/放赛题PDF、题目说明、附件说明。
workspace/data_raw/放原始数据。
注意:原始数据不要改。后面AI如果要清洗数据,应该生成清洗后的副本,而不是直接修改原始文件。
然后在这个项目文件夹里打开PowerShell,执行:
git clone https://github.com/zhnnky329/MathModeling-skills.git .skills-tmp
Move-Item .skills-tmp\.claude .\.claude
Move-Item .skills-tmp\.codex .\.codex
Move-Item .skills-tmp\CLAUDE.md .\CLAUDE.md
Move-Item .skills-tmp\AGENTS.md .\AGENTS.md
Move-Item .skills-tmp\docs .\skills-docs
Remove-Item -Recurse -Force .skills-tmp
这里简单解释一下:
第一行是把项目下载到.skills-tmp这个临时文件夹。
后面几行是把ClaudeCode和Codex需要用到的Skill、规则文件、说明文档移动到当前项目。
最后一行是删除临时文件夹。
如果你看到网上教程使用的是:
mv
rm -rf
那一般是Linux/macOS或者GitBash风格的命令。在WindowsPowerShell里,更推荐使用上面这种Move-Item和Remove-Item写法。功能是一样的,只是命令写法更适合Windows新手。
11.安装完成后,项目大概长什么样
安装完成后,你的项目里不只是多了一个Skill文件,而是多了一整套规则和工作目录。项目README给出的workspace结构大致包括:
project/
├─planning/
├─methods/Qx/
├─code/
├─results/Qx/
├─robustness/Qx/
├─paper/
├─workspace/
│ ├─data_raw/
│ ├─data_clean/
│ └─archived/
└─scratch/
这些文件夹看起来多,但它们各有作用。项目README里也说明了这些目录的含义,例如planning/用于题目解析、分类、符号表和假设,methods/Qx/用于候选方法和最终方法解释,results/Qx/用于实验结果和冻结数字,paper/用于论文分节、图表和审计文件。
对新手来说,一开始不用全部记住。你只要先知道几个最关键的:
workspace/problem/:放题目。
workspace/data_raw/:放原始数据。
workspace/data_clean/:放清洗后的数据。
planning/:放读题、分类、符号表、假设。
methods/:放候选模型和最终模型说明。
code/:放代码。
results/:放结果、报告、冻结数字。
paper/:放论文相关内容。
scratch/:临时探索区,这里面的东西不一定保证可复现。
如果继续用厨房比喻:
workspace/data_raw/就是没动过的原始食材。
workspace/data_clean/就是洗好切好的食材。
planning/是菜单和备菜计划。
methods/是几种做法的试菜记录。
code/是正式烹饪步骤。
results/是每道菜做出来后的记录。
paper/是最后给评委看的菜单说明和成品介绍。
scratch/是临时试验台,里面可以乱一点,但不能把里面的东西直接当最终结果。
12.第一次启动ClaudeCode时怎么说
安装好Skill之后,用ClaudeCode打开当前项目文件夹。
新对话的第一句话不要问:
这个题怎么做?
这样太宽泛了,AI很容易直接开始给方案,甚至跳过读题和查数据。
更推荐按项目README给出的思路,先让它读规则,再调用流程总管。README中的中文开场示例是:
读一下 CLAUDE.md,然后调用 workflow-orchestrator。我们的题目在 workspace/problem/,按 gate 顺序走,不要跳步。
这个开场很重要。它相当于告诉AI:
先读项目规则。
先启动流程总管。
题目在workspace/problem/。
按gate顺序走。
不要跳步。
也就是说,别让AI一进厨房就直接开火,先让它看菜谱、检查厨房、确认今天要做什么菜。
13.第一阶段:读题,不要急着建模
启动流程后,第一阶段应该是读题和分类。
这里对应的Skill包括:
problem-parser
problem-classifier
related-paper-analyzer
symbol-table-builder
model-assumptions-builder
data-auditor-cleaner
这些Skill主要做前期准备:题目到底问什么,每个子问题属于哪一类,有哪些数据可用,符号怎么统一,哪些假设是必要的,哪些假设只是为了简化。项目README也把这些放在第1阶段“前期准备”中。
你可以这样对ClaudeCode说:
请先按workflow-orchestrator的流程推进第一阶段。先调用problem-parser和problem-classifier,整理题目背景、每个子问题的目标、输入输出、约束条件、评价指标和可能的题型。不要写代码,不要直接推荐最终模型。
这一步的目标不是解决问题,而是确保大家理解的是同一个题目。
输出结果一般会落到planning/相关目录中。你们队伍应该认真看这部分,而不是直接跳过。尤其是:
每个问题到底要求输出什么。
有没有隐藏约束。
题目有没有指定评价标准。
每个附件对应哪个问题。
哪些地方需要自己做合理假设。
这一步做不好,后面代码写得再漂亮也没用。
14.第二阶段:查数据,让AI先看食材
读完题之后,下一步不要急着让AI写代码,而是先让它检查数据。
可以这样说:
请继续按workflow-orchestrator推进数据审计。调用data-auditor-cleaner检查workspace/data_raw/中的原始数据。请说明每个数据文件对应哪个子问题、字段含义、缺失值、异常值、单位、是否需要清洗,以及清洗后的数据应该保存到workspace/data_clean/。不要修改原始数据。
这一步相当于让厨师先检查食材:
食材有哪些?
有没有坏的?
够不够做这几道菜?
哪些要清洗?
哪些不能用?
哪些字段可能被理解错?
数学建模里很多错误都来自数据阶段。比如把单位看错,把年份当编号,把类别变量当连续变量,把缺失值当0,把某个附件用到了错误的问题里。
所以数据审计不能跳过。
15.第三阶段:让AI提出候选方法,但由人拍板
很多新手最容易犯的错误是:AI推荐一个模型,大家觉得听起来高级,就直接用了。
这很危险。
MathModeling-skills里面比较好的设计是:它不会让AI直接替你决定最终方法。method-selector会为每个子问题提出2到4个候选方法,并且每个候选方法都要配一个不超过30行的PoC,在真实清洗数据上跑出一个具体结果。PoC跑不通的方法会被标记为[REJECTED]并归档。最终选哪个方法、为什么选,仍然要由使用者在GateG2.5里写明。
你可以这样说:
请进入方法验证阶段。对每个子问题调用method-selector,提出2到4个候选方法。每个候选方法都要包含:适用原因、所需数据、预期输出、风险、不超过30行的PoC,以及在真实清洗数据上跑出的初步结果。不要替我们直接拍板最终方法。
这一步非常适合队伍讨论。
你们可以看AI给出的候选方法,然后自己判断:
哪个模型最容易解释?
哪个模型最容易跑通?
哪个模型对数据要求太高?
哪个模型适合放进论文?
哪个模型虽然高级,但可能不稳?
最后由人来写选择理由。
可以继续对ClaudeCode说:
我们选择Q1使用XXX方法,理由是:……请调用modeler-decision-logger记录这个决策。注意不要改写我们的理由,只做记录和格式整理。
这里不要偷懒。方法选择理由最好由人自己写。
因为评委真正看的不是“你用了多高级的模型”,而是“你为什么这么建模”。
16.第四阶段:生成代码,但必须审查
确定方法后,才进入代码阶段。
这时可以说:
请进入Q1的代码实现阶段。先调用model-code-analyzer规划实验目录和run_summary.json字段,再使用python-model-code-generator生成Python代码。代码应读取workspace/data_clean/中的数据,输出保存到results/Q1/experiments/round1/。生成后请运行代码,并记录运行日志。
如果你们使用MATLAB或者北太天元,也可以改成:
请进入Q1的代码实现阶段。目标语言使用MATLAB/北太天元。请调用matlab-model-code-generator生成兼容比赛环境的.m文件,避免使用LiveScript、AppDesigner等不一定支持的功能。
项目README中也写到,这套Skill同时支持Python和MATLAB/北太天元代码分支;其中python-model-code-generator会生成.py,matlab-model-code-generator会生成.m,并避免比赛环境可能不支持的MATLAB功能。
代码生成之后,不要直接相信。继续让它审查:
请调用code-reviewer审查刚才生成的Q1代码。要求输出具体审查文件,至少列出5条检查项,并标注对应的file:line。重点检查数据读取、变量含义、约束方向、随机种子、结果保存路径。
这一步对应厨房里的“试吃”和“检查火候”。不是做出来就完事,而是要看有没有夹生、有没有放错调料。
17.第五阶段:结果、稳健性和图表
代码跑通之后,不要急着把结果写进论文。
先让AI整理结果:
请调用result-report-generator整理Q1的实验结果。请比较不同方法或不同参数设置,标记[CHOSEN]、[BACKUP]、[REJECTED],并说明每个结果的含义和风险。
然后做稳健性分析:
请调用robustness-checker对Q1结果做稳健性分析。至少包括敏感性分析、误差分析、与baseline的对比。请把报告保存到robustness/Q1/q1_robustness_report.md。
再规划图表:
请调用figure-table-planner规划Q1论文中需要使用的图和表。请区分诊断图、对比图、论文图和附录图。诊断图不要放进论文正文。
最后生成论文图:
请调用math-figure-generator生成Q1论文图。要求图中文字不重叠、不超出画布,字号不能过小,生成后进行render_check。
项目README中提到,figure-table-planner会把图分成诊断、对比、论文、附录四类,诊断图不会进入论文;math-figure-generator会用matplotlib出图,并检查文字重叠、超出画布、字号过小等问题。
这一步很重要。很多论文不是模型差,而是图表混乱。图看不懂、字太小、图例挡住曲线、论文里没有解释图,这些都会影响评审观感。
18.第六阶段:冻结结果,再写论文
在写论文之前,先冻结数字。
可以这样说:
请调用solution-package-builder整理Q1的论文材料包,并生成frozen_numbers.json。之后论文中出现的关键数字必须从frozen_numbers.json中引用,不要手工编写或临时改动。
为什么要冻结数字?
因为数学建模最后经常出现这种情况:代码改了,结果变了,但是论文里的数字没改;或者论文手随手改了一个数,代码根本复现不出来。
frozen_numbers.json就是为了避免这种问题。它相当于成品菜的“称重记录”:论文里说这盘菜300克,就要能在记录里查到,不允许临时乱写。
冻结之后,再让AI辅助写论文:
请调用paper-section-writer,根据Q1的solution package和frozen_numbers.json起草Q1论文部分。注意:每个数值结果都要说明其意义,不能只报数字;不要夸大结论;需要人工判断的地方请标记为[需要人工填写]。
然后再润色:
请调用paper-polisher检查Q1论文部分,重点检查措辞是否过度、公式符号是否一致、结论是否有数据支撑。
如果涉及参考文献:
请调用reference-manager整理参考文献。要求核查引用真实性,不允许编造参考文献。
项目README中也说明,reference-manager会生成BibTeX并核查引用真实性,虚构引用会被判为blocking。
这一点一定要重视。AI编参考文献非常常见,而且编得很像真的。凡是论文里出现的文献,都必须能查到真实来源。
19.第七阶段:最终审计,不要自己感觉“差不多了”
数学建模最后阶段,最危险的想法就是:
“应该差不多了吧。”
这时候应该让Skill进入审计层:
所有Qx章节起草完毕。请依次运行consistency-auditor、completeness-auditor、quality-assurance-auditor。重点检查论文数字是否全部来自frozen_numbers.json,图表是否被正文引用,符号是否一致,所有问题是否回答完整,是否存在AI编造内容。
项目README中的常用后续指令也给了类似用法:所有Qx章节起草完毕后,依次跑consistency-auditor、completeness-auditor、quality-assurance-auditor。
这三个审计可以理解成:
consistency-auditor:查前后是否一致。数字、文件名、符号有没有对不上。
completeness-auditor:查东西是否齐全。该有的review、audit、报告有没有漏。
quality-assurance-auditor:查整体质量。流程有没有跳步,有没有编造,有没有明显不靠谱的结论。
最终审计特别适合发现这类问题:
论文里写“如图3所示”,但图3不存在。
表格里的数字和代码结果不一致。
前面定义x_i,后面写成X_i。
某个模型假设没有在后文使用。
某个结论没有数据支撑。
参考文献是AI编的。
摘要吹得太满。
某个小问没有真正回答。
这些问题不一定难,但非常容易扣分。
20.一套完整实战指令
下面给一套可以直接照着用的流程。注意,这里不再使用我们自己写的/modeling-pipeline,而是让现成项目里的workflow-orchestrator和各个Skill按阶段推进。
20.1开场
读一下CLAUDE.md,然后调用workflow-orchestrator。我们的题目在workspace/problem/,原始数据在workspace/data_raw/。请按gate顺序走,不要跳步。遇到需要人判断的地方,请先停下来问我们。
20.2读题
请调用problem-parser和problem-classifier,整理题目背景、每个子问题的目标、输入输出、约束条件、评价指标、可能题型和需要进一步确认的信息。不要写代码,不要直接推荐最终模型。
20.3整理符号和假设
请调用symbol-table-builder和model-assumptions-builder,建立全队统一的符号表,并区分必要假设和简化假设。请指出哪些假设需要我们人工确认。
20.4检查数据
请调用data-auditor-cleaner检查workspace/data_raw/中的数据。请说明每个文件对应哪个子问题、字段含义、缺失值、异常值、单位和清洗建议。不要修改原始数据,清洗后的数据保存到workspace/data_clean/。
20.5提出候选方法
请调用method-selector,为每个子问题提出2到4个候选方法。每个候选方法都要包含适用原因、所需数据、预期输出、风险、不超过30行的PoC,以及在真实清洗数据上跑出的初步结果。不要替我们直接决定最终方法。
20.6记录人工决策
我们决定Q1采用XXX方法,理由是:……请调用modeler-decision-logger记录这个决策。注意不要替我们重写理由,只做格式整理和追踪记录。
20.7生成代码
请调用model-code-analyzer规划Q1实验目录和run_summary.json字段,然后使用python-model-code-generator生成代码。代码读取workspace/data_clean/中的数据,结果保存到results/Q1/experiments/round1/。生成后请运行,并记录运行日志。
20.8审查代码
请调用code-reviewer审查Q1代码。要求生成审查文件,至少列出5条具体检查项,并标注file:line。重点检查数据读取、变量含义、约束方向、随机种子、结果保存路径。
20.9整理结果和稳健性分析
请调用result-report-generator整理Q1实验结果,并调用robustness-checker做敏感性分析、误差分析和baseline对比。请说明结果是否可信,以及是否需要迭代。
20.10生成图表
请调用figure-table-planner规划Q1图表,再调用math-figure-generator生成论文图。请区分诊断图、对比图、论文图和附录图,诊断图不要进入论文正文。
20.11冻结数字
请调用solution-package-builder生成Q1论文材料包和frozen_numbers.json。之后论文中出现的关键数字必须来自frozen_numbers.json,不允许手工编写或临时改动。
20.12写论文分节
请调用paper-section-writer,根据Q1的solution package和frozen_numbers.json起草Q1论文部分。每个数值结果都要解释其意义,不要只报数字。需要人工判断的地方请标记为[需要人工填写]。
20.13润色和文献检查
请调用paper-polisher检查措辞、公式、符号和结论是否一致。若涉及参考文献,请调用reference-manager核查引用真实性,不允许编造参考文献。
20.14最终审计
所有Qx章节起草完毕。请依次运行consistency-auditor、completeness-auditor、quality-assurance-auditor。重点检查论文数字是否全部来自frozen_numbers.json,图表是否被正文引用,符号是否一致,所有问题是否回答完整,是否存在AI编造内容。
21.新手最容易犯的几个错误
错误1:把Skill当成自动代写器
MathModeling-skills不是一键生成论文的工具。项目README里也明确写了,它不会一键生成整篇论文,不会编造数据、结果或引用,也不会在结果跑出来之前把数字写进论文。
正确理解应该是:
它是流程辅助工具,不是代写工具。
错误2:跳过workflow-orchestrator
很多人装完Skill以后,会直接调用某个Skill,比如上来就让python-model-code-generator写代码。
这不推荐。
最好先让workflow-orchestrator总管流程。因为数学建模不是单点任务,而是一整条链路。跳过前面的读题、数据审计、方法验证,后面代码再快也可能是错的。
错误3:不写人工选择理由
这套流程里有些gate是故意交给人的,比如方法选择和结果判定。AI可以建议,但人必须拍板。项目README里也强调,方法选择由使用者决定,AI只给候选和可行性结果;选择理由为空或照抄AI内容都不应通过GateG2.5。
所以不要偷懒。你们队伍要自己写:
为什么选这个模型?
为什么不用另一个模型?
这个结果为什么可信?
这个模型的局限是什么?
这些才是真正体现建模能力的地方。
错误4:修改原始数据
原始数据不要直接改。放在workspace/data_raw/里,后续清洗结果放到workspace/data_clean/。
这就像实验里的原始记录,不能随便涂改。你可以生成处理后的副本,但不要动原件。
错误5:论文数字手动乱改
论文里的关键数字应该来自frozen_numbers.json。如果代码改了,结果变了,就重新生成和冻结,不要在论文里凭感觉改。
错误6:相信AI编的参考文献
任何参考文献都要能查到真实来源。不要因为AI写得像真的,就直接放进论文。
错误7:把APIKey发到群里
APIKey就像账号密码。不要截图发群,不要写进公开代码,不要上传到GitHub。
22.推荐的人机分工方式
使用ClaudeCode+DSV4Pro+MathModeling-skills,不代表队伍里的人可以躺平。
比较合理的分工是:
队长负责总逻辑:题目到底问什么,每个问题怎么接起来,论文主线怎么讲。
建模手负责模型判断:候选模型是否合理,假设是否过强,最终选哪个方法。
代码手负责运行验证:代码能不能跑,结果是否稳定,数据处理有没有错误。
论文手负责表达和排版:论文是否通顺,图表是否清楚,格式是否规范。
AI负责提高效率:读材料、列清单、写初版代码、解释报错、生成图表、润色段落、检查一致性。
一定要记住:
AI适合做快活、杂活、重复活。
人负责方向、判断、取舍和最终确认。
23.最后总结
这篇指南的核心其实就几句话。
网页AI像去餐馆吃饭,方便,但限制很多。
ClaudeCode像请厨师来你家做饭,它可以进入你的项目环境,用你的文件、数据和工具干活。
DSV4Pro是这个厨师背后的模型大脑,负责理解、规划、生成和解释。
项目文件夹是厨房,必须提前收拾干净。数据、代码、图片、论文要分开放。
数学建模Skill是一张固定菜谱,可以让AI按规范流程工作,避免一上来就乱建模、乱写代码、乱下结论。
真正的数学建模能力仍然属于人。AI能让你更快,但不能替你判断。会用AI的人,不是把任务丢给AI的人,而是能把AI放进正确流程里的人。
如果你刚上大一,电脑基础不太好,也不用害怕。你不需要一开始就成为程序员,也不需要马上理解所有命令。你只需要先记住这件事:
把项目整理好,把问题说清楚,把流程固定住,然后让AI一步一步干活。
这就是ClaudeCode+DSV4Pro在数学建模里最实用的打开方式。