Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,5 @@ skills/5writing/templates/**/missfont.log
# LaTeX 模板编译生成的 PDF(保留 huaweibei 的 logo.pdf 和 title.pdf 模板资源)
skills/5writing/templates/**/main.pdf

__pycache__/
*.py[cod]
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,14 @@ MathModelAgent SKILL —— 直接在 Harness 中驱动的数学建模自动化
完全开源免费,可接入任何模型。

**🧠 端到端自动化**
从问题分析、建模、编码、绘图到论文排版和验收,一条 `/1start-mathmodel` 命令全自动完成,中间阶段自动串联,无需人工干预
从问题分析、建模、编码、绘图到论文排版和验收,一条 `/1start-mathmodel` 命令自动串联;国赛任务还会根据全过程证据自动生成 AI 使用详情

**📄 17 套 Typst 论文模板**
内置中英文主流赛事模板(国赛、华数杯、华为杯、MCM/ICM 等),自动匹配赛事类型,生成排版精良、可直接提交的 PDF 论文。

**🧾 国赛 AI 使用详情**
国赛任务从开始阶段持续记录真实 AI 使用情况;完整论文验收后自动归纳采纳、迭代修正与实际核验,并隐藏核心建模细节,同时生成 `paper/main.pdf` 和名称准确的 `supporting_materials/AI 工具使用详情.pdf`,缺少任一文件都不会报告最终完成。

**📐 内置建模知识库**
包含完整的建模规范、模型选择决策树(AHP、TOPSIS、ARIMA、GA 等)、常见易错模式和 MCM/ICM 评分标准,每个阶段自动参考,降低模型幻觉。

Expand Down Expand Up @@ -148,6 +151,7 @@ codex: $start-mathmodel 完成这个数学建模任务
```
/doctor: 检查环境配置
/typst-author: typst 知识
/7ai-disclosure: 持续记录 AI 使用并生成“AI 工具使用详情.pdf”
```


Expand Down
3 changes: 3 additions & 0 deletions README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@

The desktop app bundles Claude Code and the full set of MathModelAgent SKILLS. No Python / Node.js / Redis installation and no manual SKILL setup — install it, add one model API key, and start modeling.

For CUMCM tasks, the workflow records actual AI use throughout the run, automatically summarizes evidence-backed adoption, revisions, and checks without exposing core modeling details, and requires both `paper/main.pdf` and `supporting_materials/AI 工具使用详情.pdf` before reporting final completion.

| OS | File |
|----|------|
| macOS (Apple Silicon) | `mathmodel-<version>-arm64.dmg` |
Expand Down Expand Up @@ -62,6 +64,7 @@ Automatically generate an award-level modeling paper
- Local Interpreter: Based on Jupyter, code saved as notebook for easy editing
- Cloud Code Interpreter: [E2B](https://e2b.dev/) and [daytona](https://app.daytona.io/)
- 📝 Generate a well-formatted paper
- 🧾 Generate the required CUMCM AI-usage disclosure PDF from confirmed run records
- 🤝 Multi-agents: modeling expert, coding expert, paper expert, etc.
- 🔄 Multi-LLMs: Different models for each agent
- 🤖 Support for all models: [litellm](https://docs.litellm.ai/docs/providers)
Expand Down
32 changes: 30 additions & 2 deletions skills/1start-mathmodel/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: 1start-mathmodel
description: "数学建模竞赛工作流入口。用于启动完整建模流程:询问用户偏好,生成 plan.md 和 todo.md,并按阶段调用赛题分析、建模、代码与图表、流程图、论文撰写、验证验收等 skills。"
allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetch
description: "数学建模竞赛工作流入口。用于启动完整建模流程:询问用户偏好,生成 plan.md 和 todo.md,并按阶段调用赛题分析、建模、代码与图表、流程图、论文撰写、验证验收及 AI 使用披露等 skills。"
allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, AskUserQuestion, WebSearch, WebFetch
---

# 数学建模工作流
Expand All @@ -12,12 +12,20 @@ allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetc

如需领域判断,读取 `../_references/math_modeling_norms.md`。该文件只提供数学建模基本规范和防错知识,不改变本 skill 的阶段顺序和产出约定。

## 国赛识别与强制披露

- 用户选择 `CHINA`、国赛、CUMCM 或全国大学生数学建模竞赛时,立即将任务标记为国赛,并强制加载 `7ai-disclosure`。
- 明确为其他赛事时,不生成国赛专用的 `AI 工具使用详情.pdf`。
- 无法判断赛事时,在开始阶段询问一次赛事类型,不得等到论文完成后再判断。
- 桌面 Agent 正在参与论文生成时,视为实际使用了 AI,不得走“全程未使用 AI”分支。

## 必须产出

在当前工作目录中创建或更新以下文件:

- `plan.md`:整体流程方案、建模方向、阶段顺序、预期产物和风险控制。
- `todo.md`:具体待办事项列表,记录每个阶段的任务和状态。
- 国赛任务的 `reports/AI_USAGE_LOG.md`:赛中持续维护并在终检时自动归纳的 AI 工具使用过程记录。

## 工作流

Expand Down Expand Up @@ -57,6 +65,7 @@ workflow:
3. 流程与架构图绘制 - `4drawio`
4. 竞赛论文撰写 - `5writing`
5. 验证和验收 - `6verity`
6. AI 使用详情终检与生成 - `7ai-disclosure`(仅国赛强制)
```

## 项目目录结构
Expand All @@ -72,6 +81,7 @@ workflow:
│ ├── RESULTS_REPORT.md # 2: 结果报告(3coding-visual)
│ ├── DRAWIO_REPORT.md # 3: 非数据图说明(4drawio)
│ ├── VERIFY_REPORT.md # 5: 验收报告(6verity)
│ └── AI_USAGE_LOG.md # 国赛全程: AI 使用记录(7ai-disclosure)
├── code/ # 2: 代码(3coding-visual)
│ ├── problem1.py
│ ├── problem2.py
Expand All @@ -85,6 +95,9 @@ workflow:
├── paper/ # 4: 论文(5writing)
│ ├── main.typ / main.tex # 论文主文件(按用户选择的引擎)
│ └── sections/ # 各节文件(.typ 或 .tex)
└── supporting_materials/ # 6: AI 使用支撑材料(确有使用 AI 时)
├── AI 工具使用详情.tex
└── AI 工具使用详情.pdf
```

方案必须明确每个阶段由哪个下游 skill 负责,以及该阶段应产出什么文件。
Expand All @@ -101,6 +114,7 @@ workflow:
- [ ] 3. 流程与架构图绘制 - `4drawio`
- [ ] 4. 竞赛论文撰写 - `5writing`
- [ ] 5. 验证和验收 - `6verity`
- [ ] 6. AI 使用详情终检与生成 - `7ai-disclosure`(仅国赛强制)
```

每完成一个阶段,都要更新 `todo.md` 中对应任务的状态。
Expand All @@ -116,6 +130,20 @@ workflow:
| 流程与架构图绘制 | `4drawio` | 在论文确实需要时,绘制方法流程图、架构图和非数据型概念图。 | `figures/*.drawio`, `figures/*.pdf`, `DRAWIO_REPORT.md` |
| 竞赛论文撰写 | `5writing` | 基于分析、建模、代码结果和图表撰写最终竞赛论文,并按章节直接插入图表。 | `paper/` |
| 验证和验收 | `6verity` | 检查可复现性、一致性、产物完整性、格式规范和提交就绪状态。 | `VERIFY_REPORT.md` |
| AI 使用详情终检与生成(仅国赛强制) | `7ai-disclosure` | 校验全过程记录,生成并验收赛事要求的 AI 使用支撑材料。 | `AI_USAGE_LOG.md`, `AI 工具使用详情.pdf` |

## AI 使用记录衔接

以下规则只对国赛任务强制执行:

1. 启动时加载 `7ai-disclosure`,从其模板初始化 `reports/AI_USAGE_LOG.md`。优先根据本次任务的真实模型配置创建工具条目;无法获得版本元数据时写“运行环境未提供具体版本”。
2. `2analysis-modeling`、`3coding-visual`、`4drawio`、`5writing` 和 `6verity` 每个阶段结束后,立即调用 `7ai-disclosure record`,根据真实对话、模型配置和产物追加记录;不得等到赛后凭记忆补造。
3. `6verity` 首先完成论文验收并得到 `PAPER_PASS`。此状态只表示论文通过,不能表示整个国赛提交包已经完成。
4. 随后调用 `7ai-disclosure finalize`。它根据本次会话、文件、运行结果和验收记录自动归纳并脱敏,不为填写详情另行询问队员。
5. 自动归纳只能陈述有证据的采纳、迭代修正和核验;没有人工修改证据时省略该句,不得补造人工经历。通过最终校验后运行确定性生成脚本。
6. 只有 `paper/main.pdf` 与名称完全一致的 `supporting_materials/AI 工具使用详情.pdf` 都存在并通过检查,才把 `todo.md` 的最后一步标记完成,并在 `reports/VERIFY_REPORT.md` 写最终 `PASS`。

若不是桌面 Agent 参与生成、且队伍能够确认全程未使用任何 AI,才允许不生成空白详情 PDF,并在验收报告中写明确认依据。

## 阶段边界

Expand Down
26 changes: 21 additions & 5 deletions skills/6verity/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
---
name: 6verity
description: "数学建模竞赛最终验证和验收阶段,支持 Typst 和 LaTeX 双引擎。用于论文写完后检查章节数量、标题顺序、图表引用、数值一致性、占位符、内部文件泄露、参考文献、代码可复现性、编译和提交就绪状态。"
description: "数学建模竞赛论文验证和验收阶段,支持 Typst 和 LaTeX 双引擎。用于论文写完后检查章节数量、标题顺序、图表引用、数值一致性、占位符、内部文件泄露、参考文献、代码可复现性、编译、AI 支撑材料状态和提交就绪状态。"
allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetch
---

# 验证和验收(Typst / LaTeX)

本 skill 是完整工作流的最后一关。它不重新建模、不生成新结果、不代替写作阶段重写论文;它负责发现硬错误、修复可直接修复的问题,并输出 `reports/VERIFY_REPORT.md`。
本 skill 是论文与项目产物的验收门禁。它不重新建模、不生成新结果、不代替写作阶段重写论文;它负责发现硬错误、修复可直接修复的问题,并输出 `reports/VERIFY_REPORT.md`。若项目使用过 AI,随后还必须由 `7ai-disclosure` 完成支撑材料终检与生成

## 数学建模规范参考

Expand All @@ -16,6 +16,7 @@ allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetc

- 本阶段负责:结构验收、文本质量门禁、图表引用检查、结果一致性检查、Typst/LaTeX 编译检查、PDF 视觉检查、提交清单。
- 本阶段不负责:重新设计模型、重新跑大规模实验、重新组织整篇论文。
- 本阶段只核对 AI 使用日志和支撑材料状态,不补写或猜测 AI 使用记录;自动归纳由 `7ai-disclosure` 根据实际产物和检查证据完成。
- 发现硬错误时,优先做小范围修复;如果需要回到前序阶段,写入 `reports/VERIFY_REPORT.md` 并标记为未通过。

## 输入
Expand All @@ -29,6 +30,7 @@ allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetc
5. 图表目录
6. 可复现代码目录。
7. 编译后的 PDF,或可由入口文件编译得到的输出 PDF。
8. 国赛任务必须提供 `reports/AI_USAGE_LOG.md`;最终验收还必须提供 `supporting_materials/AI 工具使用详情.tex` 和 `supporting_materials/AI 工具使用详情.pdf`。其他赛事仅在实际存在时检查。

不要假设论文目录一定叫 `paper/`,也不要假设结果文件一定在项目根。若项目使用不同命名,按实际结构传参并在 `reports/VERIFY_REPORT.md` 中说明。

Expand Down Expand Up @@ -185,15 +187,25 @@ fi

如果模型没有视觉能力,必须在 `reports/VERIFY_REPORT.md` 中明确写出“未执行视觉检查”的原因,并至少完成 PDF 非空、页数、页面尺寸等可程序化检查。

### Step 9: 写验收报告
### Step 9: 检查 AI 使用支撑材料状态

- 先读取 `plan.md` 的竞赛类型。`CHINA`、国赛、CUMCM 或全国大学生数学建模竞赛均按国赛处理。
- 国赛任务必须能够加载 `7ai-disclosure`,并存在 `reports/AI_USAGE_LOG.md`。桌面 Agent 参与论文生成时,不得写“全程未使用 AI”。
- 首次验收论文时,用 `record` 模式检查日志。论文自身全部通过可以记录为 `PAPER_PASS`,但此状态不是最终提交 `PASS`。
- `7ai-disclosure` 完成证据驱动的自动归纳、脱敏和 PDF 生成后,再用 `finalize` 模式检查日志,并检查 `supporting_materials/AI 工具使用详情.pdf` 文件名完全一致。
- 检查该 PDF 非空、可提取文本、页面为 A4、包含规定四部分且无占位符或疑似密钥,并逐页查看是否越界、重叠、裁切或乱码。
- 国赛任务只有 `paper/main.pdf` 与 `supporting_materials/AI 工具使用详情.pdf` 均通过检查,整体状态才能写 `PASS`。
- 非国赛任务只有在用户明确要求时才检查该国赛支撑材料。

### Step 10: 写验收报告

创建 `reports/VERIFY_REPORT.md`:

```markdown
# 验证和验收报告

## 结论
PASS / FAIL
PAPER_PASS / PASS / FAIL

## 检查项
| 检查项 | 结果 | 说明 |
Expand All @@ -211,10 +223,12 @@ PASS / FAIL

## PDF 视觉检查

## AI 工具使用支撑材料

## 仍需处理的问题
```

只有当硬错误都修复、文本门禁通过、核心图表都引用、数值一致、编译通过或明确说明不可编译原因、视觉检查通过或明确说明无法执行原因时,才写 `PASS`。
论文自身通过、但国赛 AI 支撑材料尚未完成自动归纳或尚未生成时,只能写 `PAPER_PASS`。只有全部硬错误都修复,且国赛要求的两个 PDF 均通过最终检查时,才写 `PASS`。

## 硬错误标准

Expand All @@ -232,6 +246,8 @@ PASS / FAIL
- 编译器可用但论文编译失败。
- 编译后的 PDF 为空、缺页、页数异常或页面尺寸异常且无法解释。
- 视觉检查发现正文、表格、图片、公式、页眉页脚、页码等关键元素重叠、裁切、越界或乱码。
- 日志表明使用过 AI,但最终提交缺少名称完全一致的 `AI 工具使用详情.pdf`。
- AI 使用日志仍有待确认或未归纳内容、未经证据支持的人工表述、核心建模细节或疑似密钥,却将整体提交状态标记为 `PASS`。

## 警告标准

Expand Down
72 changes: 72 additions & 0 deletions skills/7ai-disclosure/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
name: 7ai-disclosure
description: "全国大学生数学建模竞赛 AI 工具使用过程记录与支撑材料生成。国赛论文工作流启动时自动启用,根据任务证据持续记录并自动归纳工具、用途、提示过程、采纳、修正和核验,在隐藏核心建模细节后生成四部分简版“AI 工具使用详情.pdf”。"
allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob
---

# AI 工具使用记录与详情生成

本 skill 有 `record` 和 `finalize` 两种模式。国赛任务由 `1start-mathmodel` 强制调用;其他赛事只在用户明确要求时使用。它只整理本次任务中可观察的 AI 使用,不补造记录,也不自动宣称合规。整个披露流程无人值守,不为填写详情另行询问用户。

桌面 Agent 正在参与国赛论文生成时,视为实际使用了 AI,不得生成“全程未使用 AI”的空记录。

## 输出约束

最终 PDF 只包含标题、页眉页码和以下四个一级部分:

1. 所用 AI 工具名称、版本或型号;
2. 具体使用目的和环节;
3. 主要提示方式与使用过程说明,可附非表格的典型交互示例;
4. 对 AI 输出的采纳、人工修改和核验的主要情况,语言润色除外。

第一部分使用“编号、AI 工具名称、版本或型号”三列表格;第二部分使用“工具编号、使用环节、具体使用目的”三列表格。工具编号采用 `TOOL-01`、`TOOL-02` 等,第二至第四部分必须引用对应编号。禁止写入密钥、密码、完整聊天记录、模型私有思维链或无关个人信息。

详情 PDF 只写阶段级概括。即使日志或论文中存在,也不得写入赛题条件、原始数据、模型或算法名称、公式、关键假设、参数、数值结果、结论以及足以复原解题方案的连续提示。使用“辅助方案梳理”“辅助代码实现与调试”“辅助结果一致性检查”“辅助论文结构与表达优化”等概括表达。

## record:持续记录

1. 若 `reports/AI_USAGE_LOG.md` 不存在,从 `templates/AI_USAGE_LOG.md` 复制创建。
2. 查看当前阶段的真实对话、运行配置、文件差异、运行结果和产物。工具名称与模型优先读取本次任务的真实配置或响应元数据;不可获得时写“运行环境未提供具体版本”,不得根据供应商或界面猜测版本。
3. 复用已有 `TOOL-xx`;新工具使用下一个连续编号,编号必须从 `TOOL-01` 开始连续递增。
4. 追加一个连续编号的 `AI-xxx` 记录,写明工具编号、使用环节、具体目的、提示方式、使用过程、采纳情况、迭代修正、核验方法、证据文件和记录状态。
5. 采纳情况根据内容是否进入最终文件以及后续是否被替换、删除或修正归纳。迭代修正只写文件差异或重新运行能够支持的事实;核验只写实际执行成功并有结果记录的检查。
6. 只有会话中存在队员明确修改指令时,才可增加“人工修改内容”和“人工修改依据”。没有此类证据时直接省略这两个字段,不写任何“未记录人工修改”的提示。
7. 仅用于语言润色时,将“是否仅用于语言润色”写为“是”,迭代修正和核验字段可以省略。
8. 典型交互为可选项;如记录,只保留脱敏的提示、输出和处理结果摘要,不复制全部对话。
9. 阶段处理中使用“记录中”;阶段证据归纳完成后使用“已归纳”。不得推断队员完成了未留下证据的人工操作。
10. 每个国赛阶段结束后立即运行记录校验:

```bash
PYTHON_BIN="$(command -v python3 || command -v python)"
"$PYTHON_BIN" "<本 skill 目录>/scripts/validate_ai_usage_log.py" reports/AI_USAGE_LOG.md --mode record
```

## finalize:生成支撑材料

1. 自动读取运行时元数据、各阶段报告、最终文件、代码执行结果和 `reports/VERIFY_REPORT.md`,逐条归纳工具版本、采纳、迭代修正和核验情况,不向用户发起确认或补充提问。
2. 将所有公开描述改写为阶段级概括,删除核心建模细节。没有版本元数据时使用“运行环境未提供具体版本”;没有人工修改证据时删除人工修改字段,不输出否定性说明。
3. 若缺少核验证据,先执行安全、可复现的轻量检查并保存结果,再填写实际结果;不得把计划中的检查写成已经完成。完成后把记录状态更新为“已归纳”。
4. 运行最终校验:

```bash
PYTHON_BIN="$(command -v python3 || command -v python)"
"$PYTHON_BIN" "<本 skill 目录>/scripts/validate_ai_usage_log.py" reports/AI_USAGE_LOG.md --mode finalize
```

存在待确认、缺项、无效工具引用、未归纳记录、疑似密钥、未经证据支持的人工表述或核心建模细节时停止生成。

5. 最终校验通过后,必须调用确定性生成脚本,不再让模型自由复制或手填模板:

```bash
"$PYTHON_BIN" "<本 skill 目录>/scripts/generate_ai_usage_pdf.py" \
reports/AI_USAGE_LOG.md \
--output-dir supporting_materials
```

生成脚本负责日志到四部分模板的映射、LaTeX 转义、XeLaTeX 两遍编译、Tectonic 回退,以及文件名、非空、A4、文本层、规定部分、占位符和疑似密钥检查。典型交互使用正文段落,不使用表格;证据文件和内部状态只用于校验,不写入最终 PDF。

6. 必须得到名称完全一致的 `supporting_materials/AI 工具使用详情.pdf`,再逐页检查是否存在越界、重叠、裁切或乱码。
7. 在 `reports/VERIFY_REPORT.md` 记录自动归纳、日志校验、编译、程序化 PDF 检查和逐页视觉检查结果。
8. 只有 `paper/main.pdf` 与 `supporting_materials/AI 工具使用详情.pdf` 均通过检查,国赛提交包才能标记最终 `PASS`。

仅当本任务并非由桌面 Agent 生成、且队伍确认全程未使用任何 AI 时,不生成空白详情 PDF,并在验收报告中记录确认依据。
Loading