by Lucasuiii
Contest-native, evidence-focused math modeling workflow for Codex and Claude Code
# Add to your Claude Code skills
git clone https://github.com/Lucasuiii/modeling-workbenchGuides for using ai agents skills like modeling-workbench.
Last scanned: 9/19/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-09-19T08:32:59.030Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how modeling-workbench compares with popular alternatives.
modeling-workbench is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Lucasuiii. Contest-native, evidence-focused math modeling workflow for Codex and Claude Code. It has 169 GitHub stars.
Yes. modeling-workbench passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/Lucasuiii/modeling-workbench" and add it to your Claude Code skills directory (see the Installation section above).
modeling-workbench is primarily written in Python. It is open-source under Lucasuiii on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh modeling-workbench against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
See comparison
简体中文 | English
从赛题到论文,让 AI 辅助建模有据可查。
面向数学建模比赛的 Codex / Claude Code 工作流。提供官方赛题与附件,由 agent 按阶段完成问题拆解、模型比较、计算、复核和中英文 LaTeX/PDF 交付;你在三个关键节点审阅并决定是否继续。
读题 → 比较模型 → 运行计算 → 独立复核 → 写论文 → 检查并交付 PDF
工作流帮助组织和核验过程;模型是否合理、结论是否成立,仍需要结合题意与证据判断。
快速开始 · 比赛支持 · 架构与七个阶段 · 完整走查 · 开发说明
准备好 Codex 或 Claude Code,把官方赛题、附件和当届提交要求放进同一个文件夹。 接下来复制两段提示词即可,无需先安装 Skill、填写契约或逐个运行脚本。
在一个可写的本地目录中打开对话,发送:
请下载或复用 https://github.com/Lucasuiii/modeling-workbench 到独立工具目录,
先检查已有仓库,不覆盖本地改动。完整读取仓库中的
.agents/skills/cumcm-workflow/SKILL.md,按说明检查 Python 3.10+、
Python 依赖、MATLAB 或 Python 计算后端、XeLaTeX 和 PDF 渲染工具;
先运行 Skill 中的 scripts/doctor.py,说明哪些阶段可用、哪些依赖缺失。
需要安装或修改环境时,先列出变更并等我同意。
本次只准备环境,不初始化赛题;完成后报告工具目录、版本和缺失项。
如果 agent 下载仓库遇到网络问题,可以改用下面的 ZIP 补充方式完成第一步;原来的启动方式仍然可用。
先在浏览器中打开仓库主页,选择 Code → Download ZIP,完整解压后再让 agent 操作。已有完整本地副本可直接使用,无需重新下载。
将解压后的工作流放在独立工具目录,例如 数学建模/modeling-workbench-main/;官方材料另放一个目录,第二步的项目输出目录使用尚不存在的新目录。提供包含 README.md 和 .agents/ 的那一层路径,不要提供 ZIP 文件或它的上级目录。.agents 是隐藏目录,解压时也需要保留。
在环境准备对话中,用下面的提示词替代第一步原提示词:
请使用已下载并完整解压的本地 Modeling Workbench 准备环境。
工作流工具目录:/绝对路径/modeling-workbench-main
不要联网克隆仓库或检查更新,也不要尝试其他下载地址。
完整读取工具目录中的 .agents/skills/cumcm-workflow/SKILL.md,
先运行 scripts/doctor.py,报告可用阶段和缺失依赖。
若本地文件不完整,说明缺失项并停止获取仓库的尝试。
已有依赖不要重复安装;需要安装或修改环境时先列出变更并等我同意。
本次只准备环境,不初始化赛题;完成后报告实际工具目录、版本和缺失项。
随后继续原来的第二步,将工具目录替换为实际解压路径。ZIP 下载仍需要浏览器能访问 GitHub;这条路径避免 agent 反复尝试获取仓库,不代表依赖安装也能离线完成。缺少 LaTeX 等论文工具时,可以先开展基础环境支持的读题与建模,进入论文阶段前再补齐。
环境就绪后,新开一个对话,替换下面三处路径并发送。工具目录用第一步返回的路径;输出目录使用尚不存在的新目录,与工具和材料目录分开。
请使用 Modeling Workbench 开始本次建模任务。
工作流工具目录:/绝对路径/modeling-workbench
官方材料目录:/绝对路径/赛题资料
新项目输出目录:/绝对路径/新项目
完整读取工具目录中的 .agents/skills/cumcm-workflow/SKILL.md。
先检查环境与官方材料,不覆盖已有内容;环境缺失则报告,不在此对话安装。
从材料识别比赛、年份、论文语言和提交要求,不明确时问我。
按 Skill 初始化并开始问题拆解,在模型选择、写论文前的结论、
最终交付三个节点等我明确确认。
接下来你只需跟随阶段提示审阅材料。 同一环境再次使用时可直接从第二步开始。中断后,提供项目输出目录并说“继续 cumcm-workflow”;已有项目应恢复,不要重新初始化。
你也可以随时说“检查环境”或“这个项目现在做到哪了”。agent 会调用环境体检或项目状态工具,报告缺失依赖、证据问题和待确认事项;工具不会自动安装软件、修改项目或替你确认。
S 为工作流工具目录下 .agents/skills/cumcm-workflow/scripts 的绝对路径:
python3 "$S/doctor.py"
python3 "$S/project_status.py" --project /绝对路径/已有项目
加 --json 可查看完整结构化结果。环境体检按阶段报告缺失项,缺 LaTeX 不妨碍先建模;状态检查截至当前阶段,并区分检查结果与行动关卡。退出码为 0 仍可能需要人工确认。详见诊断工具说明。
/Users/你的名字/Documents/赛题资料。/mnt/c/Users/你的名字/Documents/赛题资料;新项目可放在 /home/你的WSL用户名/modeling-projects/2026B。可用 Codex 的 $cumcm-workflow 或 Claude Code 的 /cumcm-workflow 触发,仍需提供材料目录和新项目目录,并确认实际 Skill 路径及环境可用。
仓库名为 modeling-workbench,Skill 调用名、目录和 .cumcm 工作区格式保持不变。当前版本 v0.6;不支持旧于 v0.6 的工作区。此次多比赛扩展保留 CUMCM/中文默认值,现有 v0.6 工作区无需迁移。
从 CUMCM 国赛流程扩展而来,其他比赛可共用建模、计算、复核和中英文论文交付链。
| 比赛或任务 | 已提供的支持 | 需按当届要求适配 |
|---|---|---|
| CUMCM 国赛 | 完整流程,默认中文论文骨架 | 官方模板与提交要求 |
| 华为杯、MathorCup、电工杯及区域建模赛 | 通用建模与验证指导、中文 PDF 与源码交付 | 专用排版、附件和结果文件 |
| MCM/ICM、APMCM 等英文任务 | 英文写作指导、英文 PDF 与源码交付 | 摘要页、页数统计、附加文书 |
| 泰迪杯及其他数据分析任务 | 数据处理、评价指导,共用论文交付工具 | 结果表、数据字段和提交包 |
| 统计建模及自主选题任务 | 选题、数据可得性与研究设计指导 | 官方主题、数据来源与结论范围 |
华为杯中文排版模板会在初始化识别到比赛名称时自动启用(可用 --template generic 改回通用模板),预设标题、正文、摘要和题注字号,支持按当届要求调整;另有交付适配指南:可装入按当届官方模板填写的封面 PDF,检查摘要页数、正文身份信息、提交文件名及附件,并记录最终 PDF 的 MD5。规则由项目提供,版式仍需逐页核对;这不代表已完成华为杯真题验收。
通用论文骨架不等于官方模板。 当届官方要求优先;DOCX 导出与任意官方模板的自动转换尚未提供。比赛名称与论文语言由 agent 在论文阶段传入,不需要你手动运行初始化命令。详见比赛适配指南。
已验证中英文骨架的实际编译、渲染和打包,以及其他比赛的合成 finalizing 流程和原有关卡。这不代表逐赛事、逐年份的官方格式认证,也不代表已完成每类比赛的完整赛题求解验收。
让模型自由发挥地做数模,典型失败不是"算错",而是这五种:
| 失败 | 表现 | 本工作流的应对 |
|---|---|---|
| 答非所问 | 建了个漂亮模型,但没回答题目问的那个量 | 每个小问必须有 capability 负责,且带一个可能失败的验收检查 |
| 结论没有计算支撑 | 论文写了个数,但没有一次运行产生过它 | 结论只能引用成功的 official run,数值由脚本从输出里读回 |
| 代码和结论对不上 | 改完代码忘了重跑,论文还是旧数 | official run 绑定源码树快照,一改就报 stale |
| 越界宣称 | 在受限策略类里找到最优,写成"全局最优" | 强断言必须带 certificate 和适用范围 |
| 自说自话的评审 | "我检查过了" | 复核在独立上下文进行,独立性字段必须被正面声明 |
它不保证的:模型在数学上正确、全局最优、统计设计合理。检查通过只意味着"结构、来源、执行记录和已记录的评审边界是一致的"。
整个 v0.6 就是这两句话的展开。
| 脚本观察并写入 | 你写 |
|---|---|
| argv、工作目录、起止时间、退出码、stdout/stderr | 这次运行是干什么的 |
SHA-256、sha256-tree-v1 源码树快照 |
哪些文件是 formal input / claim-bearing output |
| 从 locator 读回的结果数值 | 结果的名字、单位、适用范围 |
| PDF 页数、PDF 哈希、逐页渲染图 | 版面能不能看的最终判断 |
| 编译日志里的 overfull / 未定义引用 / 缺字 / 字体错误 | 题意、模型、claims、论文正文 |
你永远不需要手算一个哈希。如果某个改动会让 agent 把 SHA-256、退出码、页数或结果数值敲进 JSON,那个改动是错的——去扩展记录器。
真实建模不是"先写对合同再执行",而是:
Problem Analysis
│
▼
Model Design ─────► 候选 A / 候选 B
│ · 为什么值得考虑(why_considered)
│ · 用什么证据区分(discriminating_evidence)
▼
Computation ──────► 低成本 exploratory evaluation
│ record_run.py --candidate CAND-A
│ record_run.py --candidate CAND-B
▼
选择 A ───────────► status: selected
│ decision_rationale 说明凭什么选它
│ evaluation_run_ids 指向那两次探索运行
▼
A 做 official computation
│ record_run.py --official
▼
Validation
这条链在 v0.6 里是有结构、被检查的,不只是一段建议:
selected(MODEL-E013);MODEL-W014);MODEL-E014);MODEL-W012);cumcm_check.py 在报告里打印整张对比表(model_candidates)。working 期这些是 warning,冻结时变成 error。只有一个候选是允许的(只提示 MODEL-W007)——本工作流不逼你凑候选,它只是不让你声称一场没做过的比较。
intake → problem-analysis → model-design → computation → validation → paper → delivery
| 阶段 | 做什么 | 产出 | 谁写 |
|---|---|---|---|
intake |
把官方题目/附件/格式文件复制进来并按字节固定身份 | problem/SOURCE_MANIFEST.json |
init_project.py |
problem-analysis |
拆小问、抽事实(带页/表/单元格出处)、标歧义、定验收目标 | PROBLEM_FACTS.json、TASK_CAPABILITIES.json |
agent |
model-design |
提出候选、说明区分证据;选定后冻结正式合同 | MODEL_CONTRACT.json |
agent |
computation |
探索评估候选 → 选定 → 正式实现并运行 | runs/*/RUN_MANIFEST.json、RESULTS_INDEX.json |
record_run.py、index_result.py |
validation |
打包证据交给独立上下文复核,落成 claims | 复核包/结果、CLAIM_LEDGER.json |
脚本打包,agent 写 claims |
paper |
选论断、选表达、写作、编译、逐页 QA | PAPER_PLAN.json、LaTeX、PAPER_QUALITY_REPORT.json |
agent + init_latex_paper.py、record_compile.py |
delivery |
对照官方规则冻结提交版本 | COMPILE_RECEIPT.json、DELIVERY_MANIFEST.json |
record_compile.py + agent |
原则上 modeling、computation、validation、paper 分别在不同的 fresh task 里做。跨职责只通过四个 handoff 传递,新 task 先读 handoff、再按指针补读,不扫描整个工作区:
modeling-computation computation-validation validation-paper paper-delivery
handoff 只带路径、角色、摘要和一个 upstream digest;不带完整日志、失败运行、调试历史或旧复核对话。任一上游产物变了,handoff 立刻 stale,必须重建。
| 等级 | 含义 | 是否阻断 |
|---|---|---|
| P0 / hard invariant | 数据或计算错误、答非所问、关键结论无证据、代码与结果不符、provenance 失效、伪造审批或复核、最终版本不一致 | 阻断 |
| P1 / warning | 假设强、baseline 弱、验证或敏感性不足、拟合有限、章节单薄;以及探索运行的一切问题 | 可见,不阻断 |
| P2 / suggestion | 措辞、排版、可选图表、额外实验 | 不进入 gate |
RESULTS_INDEX.json → 被引用的 run_id → official_run:true 且 exit 0
→ 当前有效的 sha256-tree-v1 源码快照
→ locator 指向该运行声明的 claim_bearing_output
computation→validation handoff、独立复核包、paper→delivery handoff 三个消费者共用同一个解析器。任何一环缺失、失败、非 official 或 stale,三处一起明确失败——不会一个忽略、另一个才报错。
record_run.py --project <p> -- python3 code/try.py
零 flag,产出一份合法的 official_run: false 记录。它被记录、不被信任、永不阻断:断言失败、非零退出、缺日志、缺 capability,全都是 warning。它也不进入阶段批准范围——新增探索运行不会让已批准的 computation 失效。
这是有意的:Deferred Model Selection 的全部收益都来自"试算便宜"。
--rerun 不覆盖,它追加一个新运行(RUN-Q1-001 → RUN-Q1-002),parent_run_id 指向被取代的那个。父运行连同日志原封不动留下——"改代码之前那次正式运行算出了什么"永远答得上来。
每次运行还会把 --source 和 --output 冻结进自己的目录,镜像原来的相对路径:
runs/RUN-Q1-002/
├── RUN_MANIFEST.json
├── stdout.log stderr.log
├── source/code/solve.py ← 执行时那一版代码的副本
└── outputs/results/q1.json ← 那次产出的副本,locator 指这里
冻结副本不可变,所以被保留的运行永远可验证。而"改了代码却没重跑"这条最有价值的检查并没有丢——它改成比对冻结副本与当前活文件:
ERROR RUN-E020 the working tree no longer matches this official run: code/solve.py
remediation: record_run.py --rerun RUN-Q1-001 --official
被取代的运行豁免这条(它当然不一样,这正是你取代它的原因);反过来,改动冻结副本本身是另一类失败 RUN-E021(证据被篡改)。
superseded 由 parent_run_id 链推导,绝不回写旧 manifest——回写会改变它的哈希,把已经绑定它的 accepted decision 全部打成 stale。结果仍指着被取代的运行时报 RESULT-E017,用 index_result.py --follow-lineage 显式重新指向:换哪次运行支撑结论是语义判断,不能让工具偷偷替你做。
problem/official/ 下的 input 就地取哈希(不可变契约已保护,且附件可能很大);其余 formal input(data/cleaned.csv 这类会被重新生成的)同样冻结,有体积上限。
还有两条记录期的硬规则,都是防伪造:
--rerun 永不继承父运行的 assertions。新代码没有被旧的 pass 验证过,继承它等于凭空给 MODEL-E009(冻结模型必须有已执行的验证)喂证据。--assert x=pass 记为 declared(调用者备注),--assert-file 读程序自己写出的判决、记为 recorded。只有 recorded 能满足冻结模型的 verification_plan;offici