Research, data and financeOpen source

DSH Math Modeling Team

Mathematical modeling team

Two role presets for modeling and coding, plus paper production, with collaborative project folders and a vision subagent.

Project README

View on GitHub

DSH 数学建模团队插件包

🌍 English: README_en.md — bilingual docs: team-collaboration.md · vision-subagent.md · attribution.md · sample-run.md

面向 DeepSeek Harness 的团队化数学建模工作流插件包。把参考成熟数学建模 Skill 仓库的方法论,整理成 2 套可直接安装的 Agent 预设(preset),配合团队 Gitee/GitHub 多文件夹协同,实现多人在各自独立工作区互不干扰地协作完成数学建模竞赛题。

本仓库挂载于 GitHub Topic:dsh-plugin

这是什么

在 DeepSeek Harness 中,一个Agent 预设(preset)就是一套岗位配置:包含 persona(角色职责)、可用的工具集、以及随预设安装的 Skills(岗位能力文档)。每个会话选择某个预设,就获得了该岗位的全部能力。

本包提供 2 套岗位预设

预设目录岗位面向核心能力
presets/model-code建模+编程 Agent2 名建模编程成员(共用)题目分析与建模、Python/MATLAB 求解、结果与图表产出、复现清单;含建模手/编程手/算法资料/可视化文档
presets/paper论文 Agent1 名论文成员论文撰写(Word/LaTeX)、证据检索核验、独立评审质检门禁;含论文手/获奖评审/证据检索文档

每套预设包含

  • agent.cordis.yml — Harness 能力基线(源自部署的 cordis 预设,含 shell / fs / jobs / 子代理协作 / 网页搜索 / skill 加载等)
  • preset.yml — 预设元数据(名称、描述)
  • skills/<name>/SKILL.md — 岗位主技能(职责、流程、质量门禁、协同规则)
  • skills/<name>/references/ — 随预设安装的方法论文档(按需加载)

关键特性

  • 团队协同:预设内置"Gitee 仓库三独立文件夹"协同协议(member-a/ member-b/ member-c/),各成员只提交自己文件夹,互不干扰
  • 质量门禁:建模终检 M1 / 最小可运行 P1 / 稳健性攻击终检 M2 / 编程终检 P2 / 证据大纲 W1 / 论文终检 W2
  • M2 稳健性攻击终检:对每个核心模型做系统性"攻击"——提出模型 → 攻击模型 → 换方法验证 → 加误差 → 样本外检验 → 写清适用边界,防止"模型怀疑不足",把经不起追问的结论拦在论文之外(含 2023 C 题真实攻击案例)
  • 识图子代理(强制图审门禁):当主模型不支持图像输入时,用 workflow 派生一个当前环境可用的视觉模型子代理审查图表(自动探测 inputModalitiesimage 的模型,本环境已验证 opencode-go/mimo-v2.5,但不硬编码模型名)。所有正式图在 P2/W2 前必须逐张经识图审核 PASS 并记录在案;FAIL 走「修改 → 重审」复验闭环直至 PASS——未走图审的图不能通过终检门禁
  • 独立模型审查(对抗式评审):用与产出方不同厂商的模型做对抗式挑错——事实性/一致性/完备性/模型攻击/引用核验,编造数据当场拦截(本环境推荐 kimi-coding/k3-256k

独立审查模型(对抗式评审)

为什么需要:同一个模型既生产又验收,天然缺乏批判距离,编造的数值、口径不自洽、前后矛盾自己发现不了。换一个不同厂商的模型从零审视,等于换了一双眼睛。

怎么做:用 workflowagent(prompt, { provider, model }) 派发审查子代理,指定与产出方不同的模型(本环境推荐 kimi-coding/k3-256k,不硬编码——换部署后先用 llm 服务探测可用的不同厂商模型)。

审查维度

  • 事实性:headline 数值能否溯源到 results/ 与图表?有无编造?
  • 一致性:口径/符号/结论在摘要、正文、表、图之间是否自洽?
  • 完备性:是否覆盖全部子问题?
  • 模型攻击:针对每个核心模型质疑假设(工具变量成立性/关键参数取值/基准依赖/缺货截断/份额稳定),核对论文是否给出适用边界
  • 引用核验:参考文献真实存在且被正确引用?

拦截实例(2023 C 题跑题实录):论文初稿出现编造数值"0.78",独立审查发现该数在数据中不存在 → 拦截删除,改为诚实区间 (0.7,0.8)。

与 M2 的关系:M2(建模岗)在产出侧主动攻击模型;独立审查(论文岗)在交付侧用不同模型复检论文——两道防线,一前一后。

可复用全局 skill

仓库自带一个可做全局 skill 安装的目录(放到 DSH 共享用户 skill 根,任何预设都能发现):

  • skills/vision-subagent/ — 识图子代理(视觉质检)。安装:
    # 复制到 DSH 共享用户 skill 根,任意预设会话自动发现
    cp -R skills/vision-subagent ~/.agents/skills/vision-subagent
    # Windows:
    # Copy-Item -Recurse .\skills\vision-subagent "$env:USERPROFILE\.agents\skills\vision-subagent"
    
    DSH 的 dsh-skill-filesystem 会扫描 ~/.agents/skills/~/.dsh/skills/、项目 .dsh/skills 等共享根,放好后即被自动发现,无需改配置。

安装

前提

  • 已安装 DeepSeek Harness(dsh)
  • 关闭 dsh 进程,或安装后重启会话使其生效

方式一:一键安装脚本(推荐)

presets/ 复制到本机用户预设根目录:

# Windows
Copy-Item -Recurse .\presets\model-code "$env:USERPROFILE\.dsh\.agent-presets\model-code"
Copy-Item -Recurse .\presets\paper "$env:USERPROFILE\.dsh\.agent-presets\paper"
# macOS / Linux:复制到 $HOME/.dsh/.agent-presets/
mkdir -p "$HOME/.dsh/.agent-presets"
cp -R presets/model-code presets/paper "$HOME/.dsh/.agent-presets/"

方式二:手动复制

presets/model-codepresets/paper 两个文件夹原样放入 ~/.dsh/.agent-presets/,保持目录名不变。

验证安装

重启 dsh 并新开会话,预设选择器中应出现 建模编程 Agent论文 Agent。用 agentPresets 服务可校验挂载:

await agentPresets.standingKeyFor('model-code')  // 不抛错即成功
await agentPresets.standingKeyFor('paper')

快速开始(团队协同模式)

  1. 在 Gitee/GitHub 建一个空私有仓库(团队共享)
  2. 首次 clone 后按 docs/团队协同.md 初始化 member-a/ member-b/ member-c/ 三文件夹基线
  3. 2 名成员开 model-code 预设会话在各自独立工作区 clone,分别产出建模+编程交付物到自己的 member-* 文件夹并 push
  4. 论文成员开 paper 预设会话,git pull 拉取 A、B 交付物,在 member-c/ 撰写论文并 push
  5. 全程只提交自己那个 member-* 文件夹,互不干扰

各岗位的开工口令模板见 docs/团队协同.md

完整工作流(两套预设 + 团队协同)

流程图(细化版)

flowchart LR
    subgraph team["团队(3 人 · 3 独立工作区)"]
        direction TB
        A["成员 A(model-code 预设)"]
        B["成员 B(model-code 预设)"]
        C["成员 C(paper 预设)"]
    end

    subgraph mc["📐 建模编程岗(model-code)"]
        direction TB
        S1["① 建模阶段<br/>读题 → 检查附件 → 拆子问题<br/>→ 选模型 → 设计求解与验证方案"]
        G1["M1 建模终检<br/>题目要求有无遗漏?<br/>子问题覆盖?口径正确?"]
        D1["交付:题目分析报告.md<br/>术语表格.md"]
        S2["② 编程起步<br/>数据准备(清洗/退货/异常)<br/>→ 最小可运行代码 → 真实运行"]
        G2["P1 最小可运行<br/>能出真实结果?"]
        S3["③ M2 稳健性攻击终检<br/>识别攻击点 → 换法验证 → 加区间<br/>→ 样本外检验 → 写适用边界"]
        G3["M2 通过标准<br/>攻击清单/换法/区间/样本外<br/>/适用边界 五样齐备"]
        S4["④ 全量计算与出图<br/>三类图(raw/process/result)<br/>每类≥3 张覆盖全部子问题"]
        S5["⑤ 图表质检<br/>识图子代理逐张审核(强制)"]
        G4["P2 编程终检<br/>真实结果 · 复现清单完整<br/>未走图审的正式图不过"]
        D2["交付:results/ 结果表+复现清单.json<br/>figures/ 三类图"]
        S1 --> G1 --> D1 --> S2 --> G2 --> S3 --> G3 --> S4 --> S5 --> G4 --> D2
    end

    subgraph pp["📄 论文岗(paper)"]
        direction TB
        T1["① 拉取 A/B 交付物<br/>git pull member-a/b"]
        T2["② 建立证据支撑<br/>读分析报告/results/figures<br/>逐子问题记录证据清单 + 登记缺口"]
        T3["③ 证据检索与核验<br/>多源检索 → 综合去重 → 交叉核验引用"]
        T4["④ W1 证据大纲<br/>论文结构 × 证据映射<br/>+ 模型辩护清单(对应 M2)"]
        G5["W1 通过标准<br/>每章有证据 · 无孤立结论<br/>模型辩护清单齐备"]
        T5["⑤ 撰写论文<br/>Word(OMML)/ LaTeX(可选)<br/>官方模板适配 → 渲染 PDF"]
        T6["⑥ 图表质检<br/>识图子代理逐张审核(强制)"]
        T6b["⑦ 渲染 PDF 逐页审查(强制)<br/>每页转图 → 识图子代理逐页审<br/>表格超限/异常字体/过小字体/排版/空白页"]
        T7["⑧ 独立审查<br/>不同厂商模型对抗式评审<br/>(kimi-coding/k3-256k)"]
        G6["W2 论文终检<br/>公式↔结果一致 · 无空表空图<br/>编号引用连续 · 适用边界已写清<br/>图审记录在案 · 渲染审查PASS · 独立评审 PASS"]
        D3["交付:完整论文.docx/pdf<br/>评审记录.md · 代码附录 · AI使用声明"]
        T1 --> T2 --> T3 --> T4 --> G5 --> T5 --> T6 --> T6b --> T7 --> G6 --> D3
    end

    D2 -->|"git add member-a/b<br/>commit · push"| REPO["Git 仓库<br/>member-a / member-b / member-c"]
    REPO -->|"git pull(只读他人文件夹)"| T1
    V1["🖼️ 识图子代理(全局 skill)<br/>探测视觉模型 → read_image<br/>FAIL → 修改 → 重审 → PASS"]
    V2["⚔️ 独立审查模型<br/>事实性/一致性/完备性<br/>模型攻击/引用核验"]
    V1 -.-> S5
    V1 -.-> T6
    V2 -.-> T7

门禁检查项明细

门禁所属岗检查什么
M1 建模终检建模编程题目要求是否全部有对应模型/方案;子问题有无遗漏;约束与评价口径是否理解正确
P1 最小可运行建模编程全量计算前先跑通最小可运行代码,确认能出真实结果
M2 稳健性攻击终检建模编程核心模型经受系统性攻击:识别威胁(3-5 个攻击点,如工具变量成立性/弹性取值/基准依赖/缺货截断/份额稳定)→ 换方法验证 → 加不确定区间 → 样本外检验 → 写清适用边界;攻击清单五样齐备才过
P2 编程终检建模编程所有子问题有真实运行结果与图表;数字有源;复现清单完整;全部正式图经识图审核 PASS 且记录在案
W1 证据大纲论文论文结构 × 证据(图/表/结论)映射;无孤立结论;含模型辩护清单(对应 M2 攻击结果)
W2 论文终检论文公式↔结果一致;无空表空图;图表覆盖全部子问题;编号引用连续;参考文献双向对应;模型适用边界已写清;全部配图经识图审核 PASS 且记录在案渲染 PDF 逐页审查 PASS 且记录在案(表格超限/异常字体/过小字体/排版/空白页);独立评审结果并入

强制图审 / 渲染审查 / 独立审查(贯穿全局)

  • 识图子代理(强制图审门禁):主模型不读图时,自动探测 inputModalitiesimage 的视觉模型(本环境已验证 opencode-go/mimo-v2.5,不硬编码),用 workflow 派生视觉子代理逐张审核正式图(标题/坐标轴/图例/数据/空白遮挡/是否支撑结论)。FAIL → 按缺陷修改 → 重审,循环直至 PASS;每次"FAIL 原因 → 修改动作 → 重审结果"记录在案。P2 和 W2 都强制:未走图审的图不能通过终检门禁。
  • 渲染 PDF 逐页审查(强制):成稿 PDF 后,把每一页渲染成图片(pdftoppm/PyMuPDF,300 DPI),用识图子代理逐页审查——表格超限/溢出/截断、异常字体(乱码/缺字)、过小字体不可读、排版不规范(重叠/错位/孤行孤页)、空白页/重复页、页眉页脚异常、图片模糊裁切、分页不合理。FAIL → 修正排版 → 重新渲染 → 重新逐页审,直至全部 PASS;记录留痕。W2 强制:未做渲染逐页审查的论文不通过。(更多检查项见 自审框架.mdLaTeX格式规范.md
  • 独立审查模型(对抗式评审):用与产出方不同厂商的模型(本环境推荐 kimi-coding/k3-256k)做对抗式评审——事实性(数值可溯源/无编造)、一致性(口径符号自洽)、完备性(子问题覆盖)、模型攻击(质疑工具变量成立性/参数取值/基准依赖/缺货截断/份额稳定)、引用核验(真实存在且引用正确)。W2 前必须执行,编造数据当场拦截。

团队协同要点

  • 3 个独立工作区 + 1 个 Git 仓库 + 3 个文件夹(member-a/b/c),三人各提交自己的文件夹,互不干扰
  • 交付物契约:建模编程岗 6 件(分析报告/术语表/脚本/results/figures/复现清单);论文岗 4 件(证据大纲/论文/评审记录/AI声明)
  • 有界迭代:单轮评审最多 2 轮修复;预算耗尽输出决策备忘,绝不无限打磨

文档

English docs: team-collaboration.md · vision-subagent.md · attribution.md · sample-run.md

示例展示

用 2023 高教社杯 C 题真实跑通的成果展示(完整链路与数据见 全流程跑通记录):

  • 论文示例 examples/论文示例.pdf — 33 页成稿论文(XeLaTeX 编译 + 18 幅正式图)
  • examples/figures/ 收录 15 幅成果图,涵盖 原始数据(raw) / 建模过程(process) / 最终结果(result) 三阶段,覆盖 Q1–Q3 全部子问题:

Q1 品类/单品销量分布与关系

Q1 品类销量集中度

Q1 品类相关热力图

Q1 季节因子Q1 周内因子
季节因子(夏/春节双高)周内因子(周末高峰)
Q1 聚类树状图Q1 原始日销量
品类聚类原始日销量时序

Q2 品类量价与补货定价

Q2 回测收益对比

Q2 量价弹性Q2 品类定价加成
价格弹性估计品类成本加成定价

Q3 单品补货与定价

Q3 单品补货量Q3 单品收益
入选单品补货量单品收益
Q3 单品定价Q3 灵敏度分析
单品定价满足率-收益灵敏度

方法论来源

本包的岗位方法论文档整理自(仅文档,脚本/工具源码未搬运):

License

MIT(最宽松许可证,仅要求保留版权声明)