用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/lix965996-art/MMM --skill comp-prob-analysis命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Use when main results pass result-to-claim (claim_supported=yes or partial) and ablation studies are needed for paper submission. Codex designs ablations from a reviewer's perspective, CC reviews feasibility and implements.
Analyze ML experiment results, compute statistics, generate comparison tables and insights. Use when user says "analyze results", "compare", or needs to interpret experimental data.
Search, download, and summarize academic papers from arXiv. Use when user says "search arxiv", "download paper", "fetch arxiv", "arxiv search", "get paper pdf", or wants to find and save papers from arXiv to the local paper library.
基于 SOC 职业分类
正在显示 SKILL.md
| name | comp-prob-analysis |
| description | 数学建模竞赛赛题分析。拆解子问题、定义变量、拟定建模思路。Use when user says "赛题分析", "problem analysis", "分析题目". |
| argument-hint | ["competition-problem-text"] |
| allowed-tools | Bash(*), Read, Write, Edit, Grep, Glob, WebSearch, WebFetch, Agent |
对以下赛题进行深度分析:$ARGUMENTS
COMPETITION / PROBLEM_ID / LANGUAGE — 从 Additional Parameters 读取
TOOLS — 默认 python
CUSTOM_REQUIREMENTS — 用户自定义要求
赛题文本($ARGUMENTS 或 user_data/ 中的 PDF/Word 文件)
附件数据(user_data/*.csv 等)
⛔ 赛题读取优先级(严格按此顺序,不要跳过):
# 第一步:检查是否有 Vision OCR 提取的文本(公式最准确)
echo "=== 检查赛题文本 ==="
for f in user_data/*_extracted.txt; do
[ -f "$f" ] || continue
echo "找到提取文本: $f"
head -3 "$f" # 查看是否有 "Vision OCR" 标记
done
user_data/*_extracted.txt(最高优先级) — 系统已用 Vision AI 识别 PDF 生成,公式为 LaTeX 格式(如 $k = 2 \times 10^7$),直接 Read 读取
user_data/*.pdf — ⛔ 禁止直接用 Read 工具读 PDF! PDF 的数学公式会变成乱码(如 7210 实际是 $7 \times 10^2$)。如果没有 _extracted.txt,用下面的脚本提取
$ARGUMENTS 文本 — 用户在创建工作流时输入的文字
⛔ 绝对不要直接 Read PDF 文件。 PDF 中的上标、下标、数学符号无法正确提取,会导致参数值错误(如 $10^7$ 变成 "107")。必须读 _extracted.txt。
如果 TOPIC_PLAN.md 存在(统计建模选题规划),先读取它,确保分析方向与选题规划一致:
[ -f TOPIC_PLAN.md ] && echo "=== TOPIC_PLAN.md exists ===" && cat TOPIC_PLAN.md || echo "No TOPIC_PLAN.md (normal for math modeling competitions)"
只有在没有 _extracted.txt 时才尝试提取:PDF 用 pdftotext 或 PyPDF2,Word 用 python-docx。
提取:背景信息、核心问题、已知条件、评价标准。
⛔ 子问题数量识别规则(必须严格遵守):
只有赛题中明确编号的顶层问题才算子问题。常见格式:
"问题一"、"问题二"、"问题三"(中文编号)
"问题1"、"问题2"、"问题3"(阿拉伯数字)
"Problem 1"、"Problem 2"(英文)
"(一)"、"(二)"、"(三)"(带括号中文编号)
不要把子问题内部的小问 (1)(2)(3) 或 a/b/c 当成独立子问题——它们是同一个子问题的不同部分
不要把背景描述、数据说明、提交要求当成子问题
如果赛题只有 2 个问题,就是 2 个,不要凑成 3-4 个
识别完后在报告开头明确写出:"本赛题共 X 个子问题"
核心原则:拿到题后先花时间做"假设预检",不要急着建模。一个关键假设选错,后续所有结果都会偏离题目设计意图。
1. 识别模糊表述,列出多种解释:
逐句读题目,找出所有可能有歧义的表述。对每个模糊点,列出至少两种合理解释:
模糊表述清单:
1. "[原文引用]"
- 解释A: ...
- 解释B: ...
- 初步倾向: A/B,理由: ...
2. "[原文引用]"
- 解释A: ...
- 解释B: ...
常见歧义类型:
数量歧义:"各类设备完成工程量"→ 每类 1 台 vs 每类多台并行?
范围歧义:"优化方案"→ 只优化顺序 vs 同时优化数量和顺序?
约束歧义:"不超过预算"→ 总预算 vs 每期预算?
时间歧义:"完成时间最短"→ 最后一个完成的时间 vs 所有任务总时间?
2. 对关键歧义做快速验算(两种解释都算一遍问题一):
对影响最大的 1-2 个歧义点,用最简单的方法(手算/Excel/10 行 Python)把两种解释都在问题一上算一遍:
假设预检结果:
- 解释A: 问题一结果 = XXX
- 解释B: 问题一结果 = YYY
- 选择: B,理由: [结果更合理 / 更符合后续问题递进设计 / ...]
3. 检查问题递进性(最关键的验证手段):
竞赛题的问题一般层层递进。在你选定的假设下,预判每个问题的结果应该如何变化:
问题递进性预判:
- 问题一(基础场景)→ 结果: 基准值
- 问题二(增加约束/扩大规模)→ 结果应该: 比问题一差/好,因为...
- 问题三(进一步变化)→ 结果应该: 比问题二有明显变化,因为...
- 问题四(花钱/加资源)→ 结果应该: 比问题三明显改善,因为...
⛔ 递进性退化检测: 如果在你的假设下,某个后续问题的结果和前一个问题几乎相同(新增的变量/资源对目标函数没有边际效益),说明你的假设大概率有问题。立刻回头检查基础假设,不要继续往下做。
4. 在 PROBLEM_ANALYSIS.md 中显式记录假设预检结果:
## 假设敏感性预检
### 模糊表述及解释
[列出每个歧义点和选择的解释]
### 快速验算对比
[两种解释在问题一上的结果对比]
### 问题递进性预判
[每个问题的预期结果变化方向]
### 最终假设选择及理由
[选择了哪种解释,为什么]
每个子问题明确:
输入/输出
难度(简单/中等/困难)
建议方法
与其他子问题的关系(依赖/独立/递进)
检查 user_data/ 中是否有附件数据。
有数据:分析数据规模、字段含义、数据质量、数据特征。
无数据(纯建模题):标注"本题无附件数据",在建模思路中说明需要自行构造参数/初始条件(如优化问题的约束参数、微分方程的初始值、蒙特卡洛的分布假设等)。
⛔ 数据探索的边界: 本步骤只做描述性统计和初步特征识别(数据规模、缺失率、分布形态、相关性矩阵、异常值检测),不要做建模求解。以下行为属于越界:
拟合模型(线性回归、周期函数拟合、移动平均预测等)→ 留给 comp-modeling
写独立的 .py 文件保存到 code/ 目录 → 留给 comp-code
优化求解(遗传算法、线性规划等)→ 留给 comp-code
如果需要用 Python 做简单的描述性统计(如 df.describe()、df.isnull().sum()),可以用 Bash 内联一次性脚本,但不要创建独立文件
| 符号 | 含义 | 单位 | 类型 |
|------|------|------|------|
每个子问题 1-2 种候选方法,标注推荐方案。
常用模型类型:优化类、预测类、评价类、分类/聚类、图论/网络、随机/统计、微分方程。
在输出分析报告前,先读取参考资料了解可用的图表类型:
# 1. 读范例和套餐:了解各方法类型推荐的图表组合
cat _utils/figure_exemplars.md 2>/dev/null || cat skills/shared-scripts/figure_exemplars.md
# 2. 读选择指南:了解每种图表的适用场景、数据特征匹配、配色规则
cat _utils/figure_style_guide.md 2>/dev/null || cat skills/shared-scripts/figure_style_guide.md
图表规划方法(按分析步骤推导,不要套模板):
先读 figure_exemplars.md 中的"按研究方法的图表套餐":
匹配套餐(A-F)→ 以必选项为基础,根据具体选题增减
不匹配 → 用下面的"数据形态推导法"
再读 figure_style_guide.md 的 "By data shape" 决策表,对每个分析步骤做推导:
| 分析步骤输出 | 数据形态 | 推荐图表 |
|------------|---------|---------|
| 多变量时间趋势 | 时间×值 | 折线图 basic #3 |
| 变量相关系数矩阵 | N×N 矩阵 | 聚类热力图 advanced #14 |
| 多模型多指标数值 | 方法×指标矩阵 | 分组柱状图 basic #1 或 方法对比热力图 advanced #16 |
| 系数±标准误 | 系数+CI | 森林图 empirical #1 |
| 正负方向效应值 | 正负差值 | 发散柱状图 advanced #20 |
| 多组分布形态 | 多组连续值 | Ridgeline advanced #23 或 Grouped Violin advanced #24 |
| 地理空间数据 | 地理×值 | 地图热力图 competition #7 |
| 排名数据 | 名称×单一数值 | 棒棒糖图 advanced #1 |
| 模块增量贡献 | 步骤×增量 | Waterfall advanced #6 |
⛔ 每张图必须写明配方编号和选择理由,格式:
fig_xxx — 发散柱状图 (advanced #20) — 效应分解有正有负,发散柱状图能直观展示方向 — 章节: 实证结果
⛔ 配方编号是必填项! 格式为 (类别 #编号),如 (advanced #1)、(basic #3)、(empirical #1)、(competition #7)。系统会根据配方编号自动注入对应的代码模板到 Claude 的 prompt 中。如果不写配方编号,Claude 将无法获得配方代码,只能从零写图表脚本,质量无法保证。如果图表类型不在配方库中,写 (custom) 标注。
配方库是"菜单"不是"菜谱"——知道有哪些图表可用,但根据你的数据和选题自主决定。如果你认为某种不在配方库里的图表更适合,也可以用。
硬规则(只有这几条必须遵守):
同一种图表类型不超过 3 次(如已有 3 个柱状图,下一个对比换别的类型)
每张图必须指定具体类型(不能写"对比图",要写"分组柱状图"或"发散柱状图"或"雷达图")
至少 1 张 DrawIO 技术路线图(放问题重述章节末尾 1_restatement.tex)
如果涉及空间数据,必须有空间分布可视化(地图热力图/LISA图)
如果涉及模型对比(≥3个模型),至少用 2 种不同的对比图表类型
如果涉及前后/分组对比,考虑发散柱状图、Back-to-Back Bar、配对点图等方向性图表
在 PROBLEM_ANALYSIS.md 中输出图表预规划清单:
## 图表预规划
### 数据图表清单
对每张图写明:文件名 — 具体图表类型 (配方编号) — 展示什么数据/传达什么信息 — 放在哪个章节
示例(根据实际选题自由发挥,每张图必须带配方编号):
- fig_xxx — 棒棒糖图 (advanced #1) — 方法排名对比 — 章节: 模型对比
- fig_yyy — 森林图 (empirical #1) — 回归系数及置信区间 — 章节: 实证结果
- fig_zzz — 可行域图 (competition #28) — 约束条件与最优解 — 章节: 模型求解
- TABLE_xxx — [表格描述] — [章节位置]
### DrawIO 架构图清单
对每张 DrawIO 图写明:编号 — 图类型 — 展示什么内容 — 放在哪个章节。
**⛔ 语言规则:DrawIO 图中的所有文字(节点标签、箭头标注、分组框标题)必须与论文语言一致。**
- 中文赛题(国赛/数维杯中文/MathorCup/长三角/五一/华为杯等)→ 图中文字用中文
- 英文赛题(MCM/ICM/APMCM/数维杯英文/认证杯英文等)→ 图中文字用英文
必须规划(所有赛题):
- DrawIO-1: 技术路线图 — 整体求解思路 → 问题重述章节末尾 (1_restatement.tex)
竞赛多问题赛题额外规划(每个子问题都需要求解流程图):
- DrawIO-2: 问题一求解流程图 → fig_flow_q1.drawio → 问题一章节开头
- DrawIO-3: 问题二求解流程图 → fig_flow_q2.drawio → 问题二章节开头
- DrawIO-4: 问题三求解流程图 → fig_flow_q3.drawio → 问题三章节开头
- ...(有几个子问题就规划几张,一一对应)
按需规划(根据赛题特征判断,写明理由):
- DrawIO-N: [模型架构图/变量关系图/算法流程图/Pipeline图/概念框架图] — [展示什么] → [章节位置] — 理由: [为什么需要这张图]
### 图表多样性检查
[列出每种图表类型的使用次数,确认无重复超过 3 次]
总计: ~X 数据图 + ~Y 表 + Z DrawIO + P TikZ + W GPT Image
GPT Image 只用于场景示意图(物理/工程类赛题的问题背景图)。技术路线图、求解流程图、架构图等结构化图表使用 DrawIO。
GPT Image 场景示意图(按需,仅物理/工程类赛题):
仅当赛题有具体的物理/工程空间场景时才规划(光学、无人机、传感器网络、交通流、热传导、管道网络等)
纯数据/统计类赛题(蔬菜定价、人口预测等)不需要
最多 1-2 张,放在问题重述章节(1_restatement.tex)的问题背景描述之后
DrawIO / TikZ / GPT Image 图类型与适用场景(按赛题特征选择):
| 图类型 | 推荐工具 | 适用场景 | 放置位置 | 是否必须 |
|--------|---------|---------|---------|---------|
| 技术路线图 | DrawIO | 所有赛题 | 问题重述章节末尾(1_restatement.tex),国赛/竞赛没有单独问题分析章节时放问题重述 | ✅ 必须(1张) |
| 子问题求解流程图 | DrawIO | 竞赛多问题赛题,每个子问题一张 | 各子问题章节开头 | ✅ 每个子问题必须 |
| 数据处理 Pipeline | DrawIO | 涉及多阶段数据清洗/特征工程 | 数据预处理章节 | 按需 |
| 概念框架图(简单分层) | DrawIO | 涉及理论模型/研究框架构建(无复杂连线) | 引言或理论分析章节 | 按需 |
| 指标体系层次图 | DrawIO | 涉及 AHP/熵权法/TOPSIS/模糊综合评价等评价类问题 | 模型构建章节 | 评价类必须 |
| 模型选择决策树 | DrawIO | 涉及多种候选模型需要对比选择 | 模型构建章节 | 按需(≥3候选模型时推荐) |
| 甘特图/调度方案图 | DrawIO | 涉及排程/调度/资源分配/时间规划 | 求解结果章节 | 调度类必须 |
| 网络拓扑图(≤15节点) | DrawIO | 涉及图论/物流网络/社交网络 | 问题描述或求解结果章节 | 图论类必须 |
| 方法对比矩阵图 | DrawIO | 涉及多方法优缺点对比 | 模型构建章节 | 按需 |
| 模型架构图 | TikZ | 涉及神经网络/深度学习/集成模型 | 模型构建章节 | 按需 |
| 变量关系/因果路径图 | TikZ | 涉及因果推断/中介效应/SEM | 理论框架或模型设定章节 | 按需 |
| 算法流程图(带公式) | TikZ | 涉及自定义算法/迭代优化/启发式搜索 | 算法描述章节 | 按需 |
| 几何示意图(2D 平面) | TikZ | 涉及平面几何关系(三角形、圆、角度标注、坐标系) | 问题描述章节 | 按需 |
| 几何示意图(3D 空间) | GPT Image | 涉及 3D 空间几何(圆柱体、球面、反射/折射、空间坐标系) | 问题描述章节 | 按需 |
| 概念框架图(复杂连线) | TikZ | 有跨层箭头+标注系数的理论框架 | 理论框架章节 | 按需 |
| 网络拓扑/路径图(>15节点或需标注路径) | TikZ/matplotlib | 节点多或需要精确标注最优路径+权重 | 求解结果章节 | 按需 |
| 场景示意图 | GPT Image | 涉及物理/工程空间场景(无人机/传感器/交通等) | 问题重述章节 | 按需(仅物理/工程类) |
速查:需要公式→TikZ,需要精确连线→TikZ,需要写实渲染→GPT Image,其余→DrawIO
⛔ TikZ vs GPT Image 判断(几何示意图必须过这条规则):
图中有圆柱体、球体、锥体、曲面等 3D 立体 → GPT Image(TikZ 画 3D 透视会变形、标注重叠)
图中有反射/折射光线在 3D 空间中传播 → GPT Image
图中只有 2D 平面元素(圆、三角形、直线、角度标注、坐标轴)→ TikZ
不确定时 → GPT Image(比 TikZ 画 3D 安全得多)
⛔ 按赛题特征自动判断(规划时必须逐条过一遍,符合条件的必须规划):
一、所有赛题必须:
二、按赛题类型触发(逐条检查,符合就加):
赛题有多个子问题 → 每个子问题都必须有一张求解流程图,放在对应章节开头。简单问题的流程图可以简化(3-4 个节点),但不能省略
赛题涉及评价/排名/打分(AHP/熵权法/TOPSIS/模糊综合评价/灰色关联) → 加指标体系层次图(目标层→准则层→指标层)
赛题涉及深度学习/集成学习/多模型融合 → 加模型架构图(TikZ)
赛题涉及因果推断/路径分析/中介效应/SEM → 加变量关系图(TikZ)
赛题涉及自定义迭代算法(遗传算法/模拟退火/强化学习/粒子群/蚁群) → 加算法流程图(TikZ,带公式)
赛题涉及复杂多阶段数据预处理(爬虫→清洗→特征工程→建模) → 加 Pipeline 图
赛题需要构建理论框架(经管/社科类,有假设推导) → 加概念框架图
赛题涉及图论/网络优化/物流配送/社交网络 → 加网络拓扑图或路径图
赛题涉及排程/调度/资源分配/生产计划 → 加甘特图
赛题涉及物理/工程空间场景(光学/无人机/传感器/交通/热传导) → 加场景示意图(GPT Image)或几何示意图(TikZ)
赛题有 ≥3 种候选模型需要对比选择 → 加模型选择决策树(展示选模型的逻辑)
赛题涉及空间数据/地理分布 → 加空间分布示意图(可用 matplotlib 地图热力图代替)
⛔ 每张 DrawIO 图必须在清单中写明文件名,格式为 fig_xxx.drawio,流程与架构图绘制 步骤会按此清单逐条生成并校验。
在 PROBLEM_ANALYSIS.md 中输出:
### GPT Image / DrawIO / TikZ 图清单
**语言: [中文/English]**(与论文语言一致,图中所有文字使用此语言)
DrawIO 图(技术路线图/流程图/Pipeline/指标体系/决策树/甘特图/网络图):
- DrawIO-1: 技术路线图 → fig_roadmap.drawio → 问题重述章节末尾 (1_restatement.tex) [必须]
- DrawIO-2: 问题一求解流程图 → fig_flow_q1.drawio → 问题一章节开头 [按需]
- DrawIO-3: 指标体系层次图 → fig_index_hierarchy.drawio → 模型构建章节 [评价类必须]
- DrawIO-4: 数据处理Pipeline → fig_pipeline.drawio → 数据预处理章节 [按需]
- DrawIO-5: 模型选择决策树 → fig_model_decision.drawio → 模型构建章节 [按需]
- DrawIO-6: 甘特图/调度方案 → fig_gantt.drawio → 求解结果章节 [调度类必须]
- DrawIO-7: 网络拓扑/路径图 → fig_network.drawio → 问题描述或结果章节 [图论类必须]
- DrawIO-8: 概念框架图 → fig_framework.drawio → 理论分析章节 [按需]
TikZ 图(模型架构图/变量关系图/算法流程图/几何示意图,需要精确连线或公式):
- TikZ-1: [图类型] → tikz_diagrams.tex → [章节位置] [按需]
GPT Image 场景示意图(仅物理/工程类赛题):
- GPTIMG-1: {场景名}示意图 → fig_scene.png → 问题重述章节 (1_restatement.tex) [按需]
总计: N 张 DrawIO + P 张 TikZ + M 张 GPT Image
输出前自检:
每个子问题是否都有明确的建模方法建议(不是"待定")?
变量定义表是否覆盖了赛题中出现的所有关键量(≥15 个变量)?
数据探索是否发现了有价值的模式(不是只列基本统计量)?
子问题间的依赖关系是否标注清楚(哪个先做、哪个依赖哪个的结果)?
每个子问题是否预标注了需要的图表类型和数量?
工作计划是否包含时间分配?
⛔ 非数据图规划是否完整?逐条过了 13 条触发规则?至少有技术路线图 1 张?
⛔ 图表总数是否合理?(竞赛论文通常 8-15 张数据图 + 2-5 张非数据图 + 3-8 张表)
保存到 PROBLEM_ANALYSIS.md:赛题概述、子问题拆解、数据探索摘要、变量定义、建模思路(含图表预规划)、工作计划。
⛔ 分段写入规则(防止输出截断导致空工具调用):
PROBLEM_ANALYSIS.md 通常很长(3000-8000 字),必须分段写入,每段 < 150 行:
# 第 1 段:赛题概述 + 子问题拆解
cat << 'EOF' > PROBLEM_ANALYSIS.md
# 赛题分析报告
## 一、赛题概述
...
## 二、子问题拆解
...
EOF
# 第 2 段:数据探索 + 变量定义
cat << 'EOF' >> PROBLEM_ANALYSIS.md
## 三、数据探索
...
## 四、变量定义与符号表
...
EOF
# 第 3 段:建模思路 + 图表预规划
cat << 'EOF' >> PROBLEM_ANALYSIS.md
## 五、建模思路
...
## 六、图表预规划
...
EOF
# 第 4 段:工作计划 + 合理性审查
cat << 'EOF' >> PROBLEM_ANALYSIS.md
## 七、工作计划
...
EOF
⛔ 禁止一次性用 Write 工具写完整个文件。 如果内容超过 150 行,必须用多次 cat << 'EOF' >> file 追加。一次性写太长会导致输出 token 截断,触发空工具调用循环。
不要跳过数据探索
子问题间的逻辑关系很重要
建模思路要具体(不要只写"用机器学习")
时间紧迫,分析要高效
⛔ Markdown 中的 LaTeX 公式:$$ 块级公式单独成行且前后空行,行内用 $...$,\begin{aligned} 等多行环境用块级,避免 \text{} 包裹中文
⛔ 主输出文件:PROBLEM_ANALYSIS.md。不要在根目录写额外报告
⛔ 不要创建独立的 .py 文件。 本步骤只输出 PROBLEM_ANALYSIS.md。数据探索用 Bash 内联 Python 一次性脚本即可,不要保存为 code/*.py。建模求解和编程实现是后续步骤的职责
⛔ 分段写入:每次 Bash heredoc < 150 行。 不要一次性写完整个报告,分 3-4 段追加写入(>> 而非 >)