xzwwwwww/dsh-mathmodeling-workflow:一个赛题文件夹跑完 8 步数学建模流水线

前言

数学建模竞赛(CUMCM / MCM / 国赛等)的常见痛点是:赛题、数据、代码、图表、论文散在多个工具里,agent 每次从零开始。已经有人做的是把建模拆成一个长提示词,让 LLM 一口气写完,但结果不可复现、中间产物没有验收。dsh-mathmodeling-workflow 是 DSH 上的一个工作流插件,维护者是 xzwwwwww,它把整条链路固化成一个确定性 8 步流水线:赛题分析、建模求解、编程实现、数据图、流程图、逻辑对抗复核、论文撰写、编译 PDF。下面介绍这个插件是什么、怎么装、怎么用。

这是什么

一句话:把一个赛题文件夹当作输入,插件逐号子代理串行跑完 8 个步骤,最终产出一份 LaTeX 论文 PDF,以及全部源码、图表和中间产物。它不是另一种模型,也不是通用 agent 框架,而是挂在 DSH 插件机制上的一个 bundle。

仓库地址:https://github.com/xzwwwwww/dsh-mathmodeling-workflow
目录页:https://www.skillhub.cn/plugins/xzwwwwww/dsh-mathmodeling-workflow
分类是「工作流」,GitHub 星标 1,许可证 MIT,npm 版本 0.3.11。

它解决的具体问题是:建模结果是「跑完一轮后」才有的,而现有做法缺少分步验收节点。这个插件每一步结束都有确定性闸门检查,不通过就带着修复提示重派,最多重试 2 次,主会话只做调度和验收。

核心功能

1. 8 步流水线

# 步骤 干什么
01 赛题分析 拆子问题、定义变量、规划建模思路和图表清单
02 建模求解 假设、模型建立、求解、检验、逻辑合同
03 编程实现 写可运行代码、跑出结果、生成结果 JSON
04 图表生成 数据图(matplotlib,按 manifest 对账)
05 流程图/架构图 DrawIO 或 HTML 引擎画流程、架构、TikZ 图
06 逻辑对抗复核 六类逻辑缺口复核(方向反、跨问矛盾、任务读歪…)
07 论文撰写 LaTeX 正文、摘要、图表嵌入、引用;strict 时做数据真实性核对
08 编译与合规检查 XeLaTeX 编译、模板完整性、图嵌入、AI 声明合规

步骤可以被开关裁掉:flowchart_engine=html 把第 05 步换成 HTML 引擎;skip_figures 去掉 04 和 05;enable_comp_review=false 去掉 06;fast 模式跳过 06 的深度复核和数据核对。

2. 闸门验收

每个步骤结束由确定性闸门验收,检查点包括产物是否存在、图表是否对账、正文页数是否达标、逻辑合同是否建立、AI 声明是否合规、数据是否经过核对。不通过就带着修复提示重派,最多重试 2 次。

3. 赛项适配

competition 开关支持 11 种赛项(cumcm、wuyi、huazhong、apmcm_zh、diangong、mathorcup、zhongqing、yangtze、liaoning、huashu、huawei、generic),每个赛项对应不同的竞赛规则、默认正文页数和 LaTeX 模板。多数赛项默认正文 30 页,apmcm_zh 是 25 页。

安装与启用

前置条件:DSH(桌面版或 Web 版)。用 npx 方式安装需要 Node.js + pnpm;如果只有纯 Node 环境,先 npm i -g pnpm。DSH 桌面版自带 pnpm。

其余依赖按需安装,缺哪个只影响对应那一步:

  • Python 3.10+(可 import matplotlib):数据图、结果核对
  • XeLaTeX(TeX Live / MiKTeX):编译论文 PDF
  • Chromium 内核浏览器(Edge / Chrome):仅 flowchart_engine=html 时需要
  • 中文字体:编译中文模板(初始化时会尝试从系统字体回填)

兼容性:README 注明已在 DSH 0.2.2-rc.1 实测通过(工具注册、系统提示注入、8 步流水线、提问中转、开关改写、闸门验收全部正常)。升级 DSH 后如果插件管理里显示未启用,重新启用一次即可,因为升级可能重置 profile 里的 bundle 选择。

方式一:npx 一条命令(推荐)

npx -y @deepseek-ai/dsh plugin --profile desktop add github:xzwwwwww/dsh-mathmodeling-workflow

这条命令会拉取仓库、装进 desktop profile、自动注册进 bundle 列表。Web 版把 desktop 换成 web。

方式二:从本地目录装

先克隆仓库:

git clone https://github.com/xzwwwwww/dsh-mathmodeling-workflow.git

然后在 DSH 里二选一。桌面端在插件管理 → 安装 bundle,目标填克隆下来的目录;Agent 侧直接调用:

plugin_manager({ action: "install_bundle", target: "<克隆目录的绝对路径>" })

更新:方式一重跑 npx 命令;方式二 git pull 后把插件关闭再启用一次(或重启 DSH)。卸载:插件管理里移除,或 plugin_manager({ action: "remove_bundle", target: "@local/dsh-mathmodeling-workflow" })。

典型用法

1. 把赛题和数据放进一个文件夹

2026国赛A/
├─ 赛题A.docx          # 赛题原文:PDF / DOCX / MD 都行
├─ 数据.csv            # 附件数据:csv / xlsx / json
└─ 自定义要求.md        # 可选:导师规范、评审偏好、必须包含的内容

2. 在 DSH 里说一句话

最简调用,全部开关走默认值:

用建模插件跑这个赛题:D:\2026国赛A

带要求的调用,只写在意的部分:

用建模插件跑:D:\2026国赛A,国赛 A 题,正文 25 页,
数据图用 nature 风格,流程图用 HTML 引擎,严格审查

agent 收到后会回显最终开关,然后生成工作区,目录名形如 modeling-2026国赛A-<时间戳>/。

3. 一个完整示例

用建模插件跑:D:\2026国赛A,国赛 A 题,正文 25 页,
数据图用 nature 风格,流程图用 HTML 引擎(modern 版式),
AI 声明按"使用过 AI 工具"写,开启逻辑对抗复核,
自定义要求:摘要不超过一页,必须包含灵敏度分析。

agent 会回显开关摘要,例如:

赛项:国赛 (CUMCM)(cumcm) | 题号=A | 页数(正文)=25 | 数据图风格=nature
流程图=html/modern | 丰满模式=关 | 审查=strict | AI声明=used | 对抗复核=开
→ 8 步,工作区 modeling-2026国赛A-20261104-2030/

4. 跑起来之后的工作方式

  • 每步一个子代理、串行执行,上一步闸门通过才进下一步,主会话只做调度和验收。
  • 子代理拿不准关键信息(题号口径、数据取舍、硬性要求)会先来问,拿到回答再继续;能靠合理假设推进的,会在产物里写明假设。
  • 随时可以问进度:看下当前进度,会列出 8 步状态、产物大小和待答问题。
  • 工作区根目录有 PROBLEM_ANALYSIS.md、MODELING_REPORT.md、RESULTS.md、code/、figures/、paper/main.pdf。

开关一览(20 个)

初始化参数只有 3 个不是开关:input_dir(必填,赛题目录)、workspace_name(工作区目录名,默认按目录名+时间戳)、overwrite(工作区已存在时是否重建)。

主要开关:

开关 取值 默认 用途
competition 11 种赛项 cumcm 决定竞赛规则、默认页数、LaTeX 模板
problem_id A/B/C… 空 题号,写进参数和规则段
title 任意字符串 空(取目录名) 论文标题 / 赛题简称
max_pages 正整数 赛项默认 正文页数目标(下限),不含摘要/目录/参考文献/附录/AI 声明
figure_style default / nature default 数据图风格
flowchart_engine drawio / html drawio 流程图引擎;drawio 产物可拖拽编辑
diagram_style mono / plain / modern mono 流程图版式,仅 html 引擎生效
rich_mode true / false false 丰满模式:正文 40-60 页、30+ 图、摘要 1500-2200 字
validation_mode strict / fast strict strict 含论文数据真实性核对;fast 跳过复核和深度自修
enable_comp_review true / false true 是否插入逻辑对抗复核步
ai_disclosure off / none / used off AI 声明:off 不写且不许残留;none 一句话
skip_figures true / false false 跳过两个图表步
skip_drawio true / false false 只跳过流程图步
flow_per_problem true / false false 逐问流程图
min_figures / min_tables / min_models 整数 或 auto auto 数量下限参考,写进 CLAUDE.md 供技能自检
custom_requirements 自由文本 空 自定义要求,最高优先级,会进 CLAUDE.md

可选:生成概念图 / 机理图 / 逐问框架图

数据图和流程图都是全本地的(matplotlib / 本机浏览器渲染),不需要任何 key。只有「概念图 / 场景图」这类需要图像模型,工作区里已经带了配置文件:

<workspace>/_utils/_gpt_image_config.json
{
  "api_key": "",
  "base_url": ""
}

api_key 从中转站或官方取得;base_url 中转站给接口地址就填,留空则用官方 https://api.openai.com/v1。也可以不改文件,直接设环境变量 GPT_IMAGE_API_KEY / GPT_IMAGE_BASE_URL,环境变量优先级更高。检查是否配好:python _utils/gpt_image.py --check。没配也能跑,规划里的概念图会被自动跳过,不影响其余步骤。

场景图和机理图分别注入固定风格(MCM Academic Illustration / Scientific Mechanism Diagram),你只需写内容主题。逐问框架图(--style framework)默认关闭,只有 flow_per_problem: true 且 custom_requirements 里明确写了用 image 才会规划。

适用场景与注意

适合谁:在 DSH 里做数学建模竞赛、需要可复现的赛题到论文流水线的用户;想用 agent 产出结构化 LaTeX 论文、又要求中间产物可验收的场景。

注意事项:

  • 插件以当前 DSH 进程权限运行,安装第三方 bundle 前应先检查源码与许可证。许可证为 MIT。
  • 编译 PDF 依赖 XeLaTeX,没有 TeX 环境时第 08 步会失败;中文模板还需要系统中文字体。
  • 数据图的第 04 步需要 Python 3.10+ 且 import matplotlib 可用。
  • flowchart_engine=html 额外依赖 Chromium 内核浏览器。
  • 20 个开关中 max_pages 是正文页数下限,不是全文上限,避免按「不超过 N 页」来理解。
  • custom_requirements 优先级最高,写进 CLAUDE.md,子代理会照它执行。
  • 升级 DSH 后若 bundle 显示未启用,重新启用即可。

结尾

这个插件的价值在于把建模竞赛的一次性长任务拆成 8 个有闸门的步骤,每步产物落盘、对账后再进下一步,降低返工成本。它仍依赖本机 LaTeX、Python、浏览器等环境,且是社区作者维护的工作流,不是 DeepSeek 官方应用。你可以通过目录页或 GitHub 仓库查看完整说明并装来试用。

目录页:https://www.skillhub.cn/plugins/xzwwwwww/dsh-mathmodeling-workflow
GitHub:https://github.com/xzwwwwww/dsh-mathmodeling-workflow

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜