6verity

star 2.4k

数学建模竞赛最终验证和验收阶段。用于论文写完后按实际项目结构检查 Typst 章节数量、标题顺序、图表引用、数值一致性、占位符、内部文件泄露、参考文献、代码可复现性、Typst 编译和提交就绪状态。

jihe520 By jihe520 schedule Updated 6/5/2026

name: 6verity description: "数学建模竞赛最终验证和验收阶段。用于论文写完后按实际项目结构检查 Typst 章节数量、标题顺序、图表引用、数值一致性、占位符、内部文件泄露、参考文献、代码可复现性、Typst 编译和提交就绪状态。" allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, WebSearch, WebFetch

验证和验收

本 skill 是完整工作流的最后一关。它不重新建模、不生成新结果、不代替写作阶段重写论文;它负责发现硬错误、修复可直接修复的问题,并输出 reports/VERIFY_REPORT.md

数学建模规范参考

如需领域判断,读取 ../_references/math_modeling_norms.md 中的“论文验收与一致性”小节。该文件只是规范知识库,不是固定执行流程;具体目录、入口文件、结果文件和图表目录由当前项目结构决定。

阶段边界

  • 本阶段负责:结构验收、文本质量门禁、图表引用检查、结果一致性检查、Typst 编译检查、PDF 视觉检查、提交清单。
  • 本阶段不负责:重新设计模型、重新跑大规模实验、重新组织整篇论文。
  • 发现硬错误时,优先做小范围修复;如果需要回到前序阶段,写入 reports/VERIFY_REPORT.md 并标记为未通过。

输入

由模型先根据当前工作区判断项目布局,再把实际路径传给检查脚本。常见输入包括但不限于:

  1. Typst 入口文件,例如某个 main.typ
  2. 正文章节目录或若干正文 .typ 文件。
  3. 参考文献文件。
  4. 前序阶段的分析、建模、结果、图示报告。
  5. 图表目录
  6. 可复现代码目录。
  7. Typst 编译后的 PDF,或可由入口文件编译得到的输出 PDF。

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

工作流程

Step 1: 运行文本质量门禁

优先运行本 skill 的脚本,但必须把上一步识别出的路径作为参数传入:

set -o pipefail
SCRIPT_PATH="<按当前 skill 实际位置确定>/scripts/writing_check.sh"
bash "$SCRIPT_PATH" \
  --paper-dir "$PAPER_DIR" \
  --main "$MAIN_FILE" \
  --sections-dir "$SECTIONS_DIR" \
  --references "$REFERENCES_FILE" \
  --figures-dir "$FIGURES_DIR" \
  --results-file "$RESULTS_FILE" \
  --problem-analysis "$PROBLEM_ANALYSIS_FILE" \
  --all-results "$ALL_RESULTS_FILE" \
  | tee _tmp/writing_check.log

如果本 skill 被复制到其他目录,使用实际脚本路径。可以先运行 bash <script> --help 查看参数。不要把脚本路径、论文目录或文件名写死在验收逻辑中。

脚本只扫描文本,不生成论文,也不编译 PDF。它的 FAIL 属于硬错误,必须修复后重跑。

Step 2: 章节数量和标题顺序

重点检查:

  • 入口 Typst 文件中 #include("...") 的数量是否与实际正文结构匹配。
  • include 顺序是否符合文件名前缀顺序,例如 1_..., 2_..., 3_...
  • 章节文件是否缺失、重复引用、未被引用。
  • 每个 section 是否有明确一级标题。
  • 标题顺序是否符合所选论文类型:
    • 数学建模中文常规:问题重述/分析、总体思路、假设、符号、问题一、问题二、问题三、评价推广。
    • 统计建模:引言、数据与方法、建模、结果、结论。
    • 英文 MCM/APMCM:Introduction、Assumptions、Notations、Model、Results、Sensitivity、Strengths、Conclusion。
  • 如果题目不是三问,不强行要求三段问题章节;按 PROBLEM_ANALYSIS.md 的子问题数量核对。

Step 3: 图表和章节匹配

检查:

  • 图表目录中的论文用 PDF 是否在正文中被引用。
  • #figure(image(...), caption: [...]) 的图片是否真实存在。图片路径必须相对于写入该 image(...).typ 文件。
  • 数据图是否放在对应结果/分析章节,非数据流程图是否放在方法/总体思路章节。
  • 连续图表之间是否有足够解释文字。
  • caption 是否过长、过泛或与图意不一致。
  • 图表编号、正文引用和章节语义是否一致。

不要生成 *_typst_includes.typ;图表必须直接嵌在对应 section 中。

Step 4: 写作质量和泄露检查

检查并修复:

  • TODOPLACEHOLDER待补充待续写示例数据 等占位符。
  • 论文正文出现内部工作流文件名、临时目录名、代码目录名或结果 JSON 路径。
  • 过多列表式写作,特别是正文大量 #listenum、项目符号堆叠。
  • 段落反复以“如图”“由图”“图 X 展示了”开头。
  • 图表后没有解释、公式后没有变量含义、结论只报数不解释。

Step 5: 数值和结果一致性

检查:

  • 论文中的关键数值必须来自当前工作流声明的结果记录或结果 JSON。
  • 目标函数值、误差指标、排名、权重、阈值、灵敏度结果不得与结果记录冲突。
  • 如果存在汇总结果 JSON,抽取关键指标并确认论文正文中有对应结果。
  • 公式中的符号应在符号说明或正文首次出现处解释。

发现数值冲突时,不要自行发明新结果;应回到结果记录或代码输出修正论文。

Step 6: 引用和模板规范

检查:

  • 参考文献文件是否存在,或模板是否采用了其他真实参考文献机制。
  • 正文引用标记是否能对应到真实参考文献。
  • 中文论文 caption、表题、摘要语言保持中文;英文论文保持英文。
  • 选定的 Typst 入口是否保留所选比赛模板的必要封面、摘要、编号、页眉页脚或提交格式。
  • 不要把模板结构误删成普通空白 Typst 文档。

Step 7: Typst 编译

如果 Typst 可用,编译论文:

command -v typst >/dev/null 2>&1 && typst compile "$MAIN_FILE" "$OUTPUT_PDF"

注意字体引用

编译失败必须修复语法、路径、图片引用或模板问题后重跑。编译通过后确认输出 PDF 非空。

Step 8: PDF 视觉检查

如果模型有视觉能力,必须把编译后的 PDF 每页导出为 PNG 并逐页查看。这个步骤用于发现纯文本扫描和 Typst 编译无法发现的版式错误。

优先使用系统已有工具导出页面 PNG;不要为了视觉检查引入沉重依赖。可选命令示例:

mkdir -p _tmp/pdf-pages
if command -v pdftoppm >/dev/null 2>&1; then
  pdftoppm -png -r 160 "$OUTPUT_PDF" _tmp/pdf-pages/page
elif command -v mutool >/dev/null 2>&1; then
  mutool draw -r 160 -o _tmp/pdf-pages/page-%03d.png "$OUTPUT_PDF"
elif command -v magick >/dev/null 2>&1; then
  magick -density 160 "$OUTPUT_PDF" _tmp/pdf-pages/page-%03d.png
else
  echo "No PDF rasterizer found; record visual check as not run."
fi

导出后逐页检查:

  • 页面是否空白、缺页、页数异常或页面尺寸异常。
  • 标题、摘要、正文、页眉页脚、页码是否被裁切或位置明显错误。
  • 表格是否超出页边距,单元格文字是否重叠、溢出、被截断。
  • 图片、图题、表题、公式、编号是否与正文重叠。
  • 公式是否越界,长公式是否压到页边距或下一段文字。
  • 列表、段落、脚注、参考文献是否出现异常大空白、重叠或孤立残行。
  • 中文/英文/数学符号字体是否明显缺字、乱码或 fallback 异常。
  • 封面、摘要页、目录、附录等模板关键页面是否保留比赛要求的视觉结构。

如果是模板转换或已有 LaTeX 参考 PDF 的项目,还应将 LaTeX PDF 和 Typst PDF 都逐页导出 PNG,按页对比版式差异;页数或页面尺寸不一致必须记录为硬错误或明确说明原因。

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

Step 9: 写验收报告

创建 reports/VERIFY_REPORT.md

# 验证和验收报告

## 结论
PASS / FAIL

## 检查项
| 检查项 | 结果 | 说明 |
| --- | --- | --- |

## 章节结构

## 图表引用

## 数值一致性

## 文本质量门禁

## Typst 编译

## PDF 视觉检查

## 仍需处理的问题

只有当硬错误都修复、文本门禁通过、核心图表都引用、数值一致、Typst 编译通过或明确说明不可编译原因、视觉检查通过或明确说明无法执行原因时,才写 PASS

硬错误标准

以下问题必须判定 FAIL

  • 缺少选定的 Typst 入口或核心正文。
  • Typst 入口 include 的章节文件不存在。
  • 正文章节缺少一级 Typst 标题,或标题等号后缺少空格。
  • 章节顺序明显错误或重复。
  • 正文仍有占位符。
  • 正文泄露内部工作流文件名。
  • 引用的图片不存在。
  • 关键数值与结果记录冲突。
  • Typst 可用但论文编译失败。
  • 编译后的 PDF 为空、缺页、页数异常或页面尺寸异常且无法解释。
  • 视觉检查发现正文、表格、图片、公式、页眉页脚、页码等关键元素重叠、裁切、越界或乱码。
  • 模板转换任务中,Typst PDF 与 LaTeX 参考 PDF 的关键页面结构明显不一致且未修复。

警告标准

以下问题可判定为 WARN,但应尽量修复:

  • 未引用的备用图片。
  • 某章节过短或明显不均衡。
  • caption 偏长。
  • 参考文献偏少。
  • 图表后解释文字不足。
  • 视觉检查工具不可用,但已经记录原因并完成基础 PDF 元数据检查。
  • 代码完整复现耗时过长,只做了轻量检查。
Install via CLI
npx skills add https://github.com/jihe520/MathModelAgent --skill 6verity
Repository Details
star Stars 2,368
call_split Forks 278
navigation Branch main
article Path SKILL.md
More from Creator