数模全流程总指挥
本技能是编排者:建运行目录、生成密封输入、调用阶段执行技能、守门禁、核验回执并记录流程。各阶段(含论文三段与结果驱动的模型复盘)的专业工作由全新独立会话完成;总指挥不得自己产出模型、代码、论文、数据分析或评审结论。
总指挥只传递任务和证据,不替执行技能做领域判断。四个核心执行 Skill(建模、方案评价、代码编写、代码评价)的内容保持独立;cumcm-paper-writer 是论文阶段的独立执行 Skill,由总指挥按 S5a/S5b/S5c 调用,不把写作逻辑内嵌到总指挥。
CLI 工具(工程外壳)
安装包附带 工具/cumcm-flow(Windows 优先,也提供 PowerShell/Unix 启动器)。CLI 是 Command-Line Interface,即命令行界面;它只负责工程操作,不建模、不写代码、不评审、不写论文,也不替代本总指挥或四个核心 Skill。
陌生机器先运行:
cumcm-flow doctor
cumcm-flow doctor --json
常用工程命令:
cumcm-flow init <运行目录>
cumcm-flow seal S1 --run-dir <运行目录>
cumcm-flow verify S1 --run-dir <运行目录>
cumcm-flow status <运行目录>
doctor 检查 Python、六个 Skill、总指挥脚本、包元数据、常用可选依赖、Pandoc/Git、写权限和历史机器路径提示;--strict 与 --network 用于更严格的部署检查。缺少 MATLAB、OCR、LibreOffice 或某些科学计算包时,CLI 只报告事实,不能把它们伪装成已内置。Windows 安装器完成复制、备份和安装后体检;CLI 不改变阶段顺序、门禁或独立会话要求。
依赖技能
按名称查找技能目录:先 $CODEX_HOME/skills/<名称>/SKILL.md,找不到再查当前工作区同名目录。缺任何一个都先停下报告,不要用近似技能顶替。
| 阶段 | 技能 | 职责 | 执行者 |
|---|---|---|---|
| S1 | 数学模型建立 |
拆题(逐问四遍复读)、数学化、检索、取数,产出建模方案与数据文档 | 全新子代理 |
| S2 | cumcm-model-review |
逐问重读原文 + 四遍分析,逐模型/算法联网查证,出诊断分与修改方案 | 独立子代理(禁止看到作者推理) |
| S3 | cumcm-code-writer |
按定稿方案写代码,三轮自测,出附录与结果文档 | 全新子代理 |
| S4 | cumcm-code-reviewer |
8 点链检测;必须干净副本复跑 + 独立复算 | 独立子代理 |
| S4R | 数学模型评价(cumcm-model-review,结果驱动复盘) |
前置:S4 判定代码合格。逐问重读原文 + 四遍分析后,拿到真实结果回看模型:假设是否被推翻、结构是否缺机制、参数与灵敏度是否需要调整;给出可执行优化方案与"是否需要返工"结论 | 独立子代理 |
| S5a | cumcm-paper-writer(起草) |
按格式与风格基线成文 | 全新子代理 |
| S5b | cumcm-paper-writer(改写) |
只按体检报告与改写手册降 AI 味,不得改数字/公式/结论 | 独立子代理 |
| S5c | cumcm-paper-writer(校验) |
格式 + 风格 + 数字集合一致性三重校验 | 独立子代理 |
阶段隔离(硬要求)
派发一律通过一个独立任务适配器完成:适配器选择当前平台可用的独立会话 API(例如独立子代理或独立任务线程),但不得把本线程历史带给执行者。适配器必须返回并记录 session_id/thread_id;不能确认上下文隔离或不能传递任务正文时,停止并报告,不能由总指挥自行执行该阶段。
执行者输入只能是:
- 赛题目录(
00_题目/); _handoff/<阶段>_manifest.json登记的密封产物(含 SHA-256 与 evidence/lead 角色);- 本阶段技能的
SKILL.md与其 references。
禁止传入作者对话历史、作者总结、未登记的草稿。清单中 role: lead 的条目(自测记录、流程日志)只能当待验证线索。
流程:
建运行目录 → build_handoff.py 生成密封清单
→ 独立任务适配器派发(记录会话 ID)
→ 执行者写回执 _handoff/<阶段>_receipt.json
→ verify_receipt.py 校验结构、哈希、门禁和前置阶段
→ 追加流程日志 →(门禁处停下问用户)→ 下一阶段
校验不通过(产物缺失、哈希不符、回执字段不全、S2/S4/S4R/S5c 缺复算记录)不得进入下一阶段;上游输入被改动则回到改动发生的阶段重做。编排者不得修改评审结论;有异议写《异议说明》并触发复评(S2 ≤3 轮、S4 ≤2 轮、S4R ≤2 轮、S5b→S5c ≤3 轮)。
详见 references/阶段隔离与交接协议.md。若独立执行体因平台故障无法启动,总指挥只能重试、改派另一个独立任务或停下等待用户处理;不得降级为同线程自执行。没有隔离执行体就没有该阶段的有效产物。
总指挥的职责边界(硬规则)
总指挥可以做:
- 建立/检查运行目录,生成和校验逐文件 SHA-256 清单;
- 读取阶段回执,判断字段、哈希、状态、前置阶段和门禁是否满足;
- 把用户已经确认的选择写入流程日志,并在需要拍板处停下;
- 按阶段契约调用对应 Skill,传递任务书、清单路径和输出位置。
总指挥不得做:
- 自己推导模型、改方程、写求解代码、运行作者代码、编写论文或给出专业评分;
- 以自己的判断替换执行 Skill 的结论,或把未封存的草稿当作证据;
- 在独立任务不可用时以“fallback”名义继续产出专业结果;
- 通过手工改回执、跳过清单或放宽校验来推进阶段。
协议 1.4 的阶段必须使用结构化回执;状态为完成但仍含 P0/P1/阻塞未决项、前置阶段未通过、或输入/产物路径越出运行目录时,校验脚本必须拒绝放行。
结果驱动的模型复盘(S4R,新增工序)
为什么要有这一环:建模阶段(S1)只有方案与公式,没有求解;假设是否站得住、模型结构是否缺机制,只有拿到真实求解结果才能判断。缺了这一环,论文里可能出现"结果算出来了、但模型其实不对"的风险。
前置门禁(硬):代码不合格不得进入本阶段。条件:S4 回执 verify_receipt.py 校验通过,且检测报告判定代码合格——无 P0;P1 已修复复检,或写明不修的理由与影响。未达标先回 S3 改码 → S4 重验,合格后才跑 S4R。
用什么技能:数学模型评价(cumcm-model-review)——与 S2 同一套查证口径,但输入换成"赛题 + 全部附件 + 冻结方案 + 已验证的求解结果",输出聚焦"模型要不要优化、怎么优化",而不是重评方案本身。
什么时候做:S4 代码检测合格之后、S5 论文起草之前。S4 保证结果可信,S4R 才好在可信结果上判断模型。
必须做什么:① 重读赛题与附件并自行重建要求卡;② 自行从附件与结果表复算 ≥3 个关键量(与 S4 口径独立);③ 逐条检查模型假设与结构:结果量级是否合理、边界是否被触及、参数是否需要标定、对哪些参数敏感、有没有更贴题的机制可以补;④ 产出《模型复盘与优化报告》,含可执行的优化清单(改动点、预期收益、代价、风险)与明确结论"是否需要返工"。
回执必须带 model_change:{"changed": true/false, "requires_rerun": true/false, "summary": "…", "changes": [{"target": "假设/结构/参数/边界条件", "why": "…", "impact": "…"}]}。
循环规则:requires_rerun = true → 回派 S3 改码/重跑 → S4 重验 → S4R 复评,≤2 轮;false → 记录"模型定稿(结果验证后)"进 S5。优化只做有证据支撑的改动,不为凑工作量改模型;两轮后仍不收敛,停下把偏差表交用户拍板。
逐问复读与多轮分析(S1 / S2 / S4R 强制)
建模与评价类的三个阶段,每一问都要回到赛题原文重读,并做四遍分析,四遍记录必须逐问留痕:
- 抄读(无技能预读会话)——该问原文连同附表/附注/单位逐句摘出,标页码;
- 自解(无技能预读会话)——不看方案、不看任何 skill,自己写出该问目标、变量、约束、必须输出与红线;
- 对照——方案/结论与①的原文逐条比对,逐条标「做到了 / 写偏了 / 完全没提」并给位置;
- 反查——从阅卷人角度挑歧义、多解、隐含条件、单位与量纲陷阱、必须提交的表/图/文件。
必须开两次会话:先派无技能预读会话完成 ①②(该会话不加载任何 skill,只读 00_题目/,产物 _handoff/<阶段>_preread.md 逐问给出「原文摘录 + 页码 + 自解清单」),把它哈希封进 build_handoff.py 生成的清单;再派技能会话做 ③④ 与正式工作。这样拆题不被技能的写作惯例与选型偏好带跑。
落点:S1 写入《问项卡》的「四遍记录」栏;S2 / S4R 写入报告的「逐问四遍记录」。任务书必须写明这条要求,回执新增:
"per_question_reread": [
{"question": "问题一", "source_quotes": "原文摘录 + 页码", "rounds": 4, "conclusion": "四遍结论"}
],
"preread": {"artifact": "_handoff/S2_preread.md", "sha256": "…", "session_id": "…", "no_skill": true, "rounds": ["抄读", "自解"]}
新运行的 rounds 必须 ≥4;verify_receipt.py 对协议 1.4 强制校验逐问结论、原文页码、预读会话 ID 与清单哈希。旧协议 1.2/1.3 的历史回执按原口径兼容存档,不追溯。
S1 / S2 更严验收(协议 1.3,自 2026-09-11 起对新运行生效)
S1 回执额外字段
"self_check": {
"formula_implementable": true, // 每问变量表/方程/边界/初值/参数来源齐备
"acceptance_criteria": true, // 每问写明对照对象、残差量级、收敛判据
"dimension_check": true, // 逐式量纲检查留痕
"assumptions_with_evidence": true, // 每条假设:依据/可检验性/不成立的后果
"requirement_mapping": true, // 题面每条要求 → 方案落点
"data_traceable": true, // 附件字段→清洗→模型输入一一对应
"risk_list": ["…至少 3 条,各带验证计划…"]
}
S2 回执额外字段
"strict_review": {
"requirement_coverage": {"total": 12, "satisfied": 12, "partial": 0, "missing": 0},
"evidence_table": [{"claim": "…", "evidence": "复算值/来源", "result": "成立"}],
"counter_checks": [{"model": "问题一模型", "test": "极端/退化/交叉验证", "finding": "…"}],
"verdict": "通过|有条件通过|需返工",
"conditions": ["…"]
}
门槛:S2 的 requirement_coverage.missing 必须为 0(否则结论只能是「需返工」,回 S1 补齐);counter_checks 每个主选模型至少 1 条;verdict 与 P0/P1 清单必须一致。verify_receipt.py 对 "protocol_version": "1.3" 及以上的 S1/S2 回执强制校验。
运行目录
<工作区>\运行\<年><题>-<题目简称>\:
00_题目/ 赛题与附件只读副本
_handoff/ 各阶段密封清单与回执
00_流程日志.md 每阶段追加一行
01_建模方案/ 02_方案评审/ 03_代码/ 04_代码检测/ 05_论文/ 交付/
建骨架用 scripts/make_run_dir.py <运行目录>;重跑前先 --reset 把旧目录移入 _回收站/。
门禁与停止条件
- 门禁 A(数据)与门禁 B(模型定稿)必须真停:把候选、代价、推荐理由与阻塞点交给用户拍板,答复要点写入流程日志。
- 迭代上限:S2 ≤3 轮、S4 ≤2 轮、S4R ≤2 轮、S5b→S5c ≤3 轮;达上限仍不达标时停下报告偏差表,不得静默放行。
- 论文风格:严格目标为 14 项指标全部落在语料 p25–p75;交付下限为越界 ≤3 项且不超 p05–p95。
修订规程(评审提出 P0/P1 后必走,不得跳步)
评审或检测给出 P0/P1 后,禁止“凭推理直接改”。必须按下列五步执行,并把过程写进《修订说明》:
- 定位:把问题拆成可判定的子问题(求什么、涉及哪个方程/参数/数据/引用)。
- 收集:先在本地语料与既有材料里找依据(
数据集/、训练语料/、已有文献)。 - 联网查证:检索并对至少 2 条可打开来源取证(优先原始论文、权威教材、官方文档;付费墙打不开就找开放获取版本或替代来源)。 取证要记录:标题、作者、年份、DOI/URL、访问日期、支撑了哪一条结论;读不到的写“仅题录级”。
- 修改:按证据修改方案,并在《修订说明》里写成“依据来源 → 修改内容 → 验收方法”三段式; 若查不到支撑来源,则降级结论(改成保守表述或标“未核实”),不得把猜测写成结论。
- 复评核验:把来源清单随密封清单交给下一轮复评,由复评方独立复核来源真实性与结论一致性。
《修订说明》必须包含一张来源表(编号/来源/支持结论/是否读到正文),缺表视为修订未完成。
硬规则
- 数字可追溯:论文与结果文档中的每个关键数值都要能追到结果表;对不上改代码或改口径,不允许改论文数字凑。
- 只读引用:
数据集/与训练语料/只读;产物写进本次运行目录。 - 诚实标注:未核实的数据、文献、结论标“未核实”;没跑通就写“未跑通”。
- 详细阶段契约见 references/阶段契约与门禁.md;脚本见
scripts/build_handoff.py、scripts/verify_receipt.py、scripts/make_run_dir.py。