# Auto Mcm

> AutoMCM-Pro industrial-grade math modeling agent (Codex CLI binding). Supports AP (AI-led) and Manual (human-spec-led) dual modes with mandatory GitOps checkpoints, forced self-verification of all solver code before LaTeX inclusion, and structured human cross-validation at each pipeline stage. Use for both CUMCM (Chinese) and MCM/ICM (English) competitions.

- Skill: `realseaberry/auto-mcm-2` (Agent Skill)
- Install (CLI): `npx skillmds@latest add realseaberry/auto-mcm-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/realseaberry/auto-mcm-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: realseaberry (https://skillmd.com/u/realseaberry)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/realseaberry/auto-mcm-2

---


# AutoMCM-Pro：Codex CLI 绑定

**这是 AutoMCM-Pro 协议在 OpenAI Codex CLI 上的运行时绑定（Binding），不是另一套
独立协议。** 行为规范权威来源仍是仓库根目录的 `AutoMCM_SOP.md`（工具无关，原样
复用）；可选探索层见 `LOS_ALAMOS_DESIGN.md`。Claude Code 绑定是
`.claude/skills/auto-mcm/SKILL.md`，DeepSeek Harness 绑定是
`.dsh/skills/auto-mcm/SKILL.md`——三份文件描述同一套流程，只是把"怎么调用工具"
换成各自 runtime 的实际工具，**流程逻辑、Checkpoint 规则、质量门控、Prompt 内容
不应该在几份文件间产生分歧**。完整背景见
[`CODEX_INTEGRATION.md`](../../../CODEX_INTEGRATION.md)。

## 【触发时的依赖安装询问】

每个新的 Codex 会话首次触发本 Skill 时，先询问用户是否安装核心 Python 建模依赖
（pdfplumber、scipy、numpy、matplotlib、pandas、openpyxl），以及是否准备可选的
LeanGate / Lean 4。不得预扫描或静默安装；用户同意后才调用
`bash install.sh --with-python-deps` 和/或 `--with-lean`。拒绝后同一会话不重复询问。
非交互执行无法取得回答时，显示问题并暂停，不得把沉默当作同意。

---

## 【与其他 runtime 最大的差异：Codex 只给模型一个"代码模式"工具，实测确认】

**这不是源码调研的推测，是实跑一次任务、解压
`~/.codex/sessions/**/rollout-*.jsonl` 核对过的**：Codex 模型端 function-calling
只看得到一个叫 `exec` 的顶层工具，参数是一段 **JavaScript 代码**；
`tools.exec_command({cmd, workdir, ...})` 是这段 JS 代码**内部**能调用的异步
函数，不是模型能单独调用的顶层工具。也就是说，`Bash`/`Read`（文本）在 Codex
上都是：模型写一段 JS，里面调用 `tools.exec_command({cmd: "..."})`，再用
`text(r.output)` 把结果吐出来——不是直接的 `{"tool": "exec_command", "cmd":
"..."}` 这种扁平 function call。

实测时甚至连读 `SKILL.md` 本身也是这样做的：模型用
`tools.exec_command({cmd: "sed -n '1,240p' .agents/skills/auto-mcm/SKILL.md"})`
直接读档，**没有专门的 skill 载入工具**——这点跟 opencode/dsh 都不一样（它们有
独立的 `skill` 工具）。

这件事对 AutoMCM-Pro **反而是天然契合**——本项目的流水线绝大部分工作本来就是
"用 `bash` 调 Python 脚本"，很少直接依赖结构化文件工具，翻译成 Codex 的
JS-in-exec 模式没有额外损失。

## 【工具映射表】

| Claude Code | Codex 工具 | 说明 |
|---|---|---|
| `Bash` | 顶层工具 `exec`（参数是一段 JS），内部调 `tools.exec_command({cmd,...})` | ✅ 实测确认（喚醒協議 Step 1 跑通）。万能工具：跑 Python 脚本、`cat` 读文件、`rg`/`grep`/`find` 搜索、`curl` 抓网页，本文件后续所有"执行 `python scripts/...`"都是这个模式，不是直接的扁平 function call |
| `Read` | 同上，`exec` 里的 JS 调 `tools.exec_command({cmd: "cat ..."})` | ✅ 实测确认（读 SKILL.md 本身就是这么做的） |
| `Read`（图片） | `view_image` | 专用图片查看工具，读图表/PDF 截图用它，不要用 `cat` |
| `Write`/`Edit` | `apply_patch` | 结构化 diff 应用工具，写/改模型代码、`.tex` 文件优先用它（比 shell heredoc 更可靠地保留缩进/编码） |
| `Glob`/`Grep` | `exec_command` 里 `rg`/`find` | 没有专用搜索工具 |
| `TodoWrite` | `update_plan` | 语义对应 |
| `AskUserQuestion` | 请求用户输入的工具（模块 `request_user_input`，**确切工具名未逐字核对**，见下方核验清单） | 语义对应 |
| `Agent(description, prompt)` | 多代理协同工具家族（模块 `multi_agents`/`multi_agents_v2`，**确切工具名未逐字核对**） | Codex 有原生多代理能力，但这次没有把确切的工具调用 schema 读完，接入前务必先跑一个最小测试确认参数格式 |
| `WebSearch`/`WebFetch` | **没有确认到的第一方工具** | 见下方【已知能力缺口】 |

上表里 `exec_command`/`apply_patch`/`view_image`/`update_plan` 四个工具名是从
`codex-rs/core/src/tools/handlers/` 源码里的 `ToolName::plain(...)` 字面量直接
核对过的（不是猜的）；`request_user_input`、`multi_agents`/`multi_agents_v2` 是
从模块/文件命名推断，**没有找到对应的字符串字面量**，接入前务必先用一个最简单的
任务实测一次，确认真实暴露给模型的工具名。

## 【已知能力缺口：网络搜索】

Codex 核心代码里没找到独立的 `web_search`/`web_fetch` 工具（`dsh`/opencode 都有，
Codex 没有内置）。看到的只有 MCP（Model Context Protocol）相关模块，猜测 Codex
把网络检索能力交给用户自行配置的 MCP server，而不是内置。这意味着：

- `AutoMCM_SOP.md` 里"文献调研至少 5 篇"这条硬性要求，**在 Codex 上落地前必须先
  确认有可用的网络检索能力**（配置一个 MCP 网络搜索 server，或者退化成
  `exec_command` 里 `curl` 调用一个你自己有权限的搜索 API）；
- 若确认没有任何网络检索能力，**不要静默跳过文献调研**——按 `AutoMCM_SOP.md`
  第 7 节"禁止静默跳过验证失败"的同一精神，在 Checkpoint①里如实告知用户"当前
  环境无网络检索工具，本阶段建模假设未经文献交叉验证"，让人类决定要不要补充
  MCP 配置或人工提供文献。
- 同样的缺口也影响 `AutoMCM_SOP.md` §18"画图前先查领域惯例"——判断某类问题的
  常规可视化形式本质上也是一次网络检索。**不要因为查不到就直接静默退化成随手
  选个图表类型**：先按上面同一套办法确认有没有可用的检索能力；确实没有的话，
  在 `thought_process.md` 里如实记录"当前环境无网络检索工具，图表形式选择依据
  建模者常识判断、未经领域惯例检索确认"，而不是不留痕迹地直接画图。

## 【运行方式】（Codex 特有）

```sh
codex           # 交互式
codex exec "task"   # 单次任务模式，类似 claude --print / dsh --profile headless
```

Skill 发现路径是 `.agents/skills/auto-mcm/SKILL.md`（仓库根向上找 `.git`，Codex
官方文档确认），显式调用用 `$auto-mcm`，或让模型按 `description` 隐式匹配。

---

## 【流水线执行】

阶段定义、状态机、Checkpoint 编号（①~⑤）、质量门控（`quality_gate.py`）、
Los Alamos 探索层（路径 C）、图表风格规范（`plot_style.py`）、Andon 紧急停止
（`pipeline_manager.py andon-pull/andon-clear/andon-status`）、Go/No-Go 发射前检查
（`quality_gate.py launch-check`，final_compile 前强制）、Skunk Works 轻量模式
（`pipeline_manager.py init --skunk-works`）、Track2 的 RAND Delphi 多轮收敛
（`adjudicate.py delphi-summary`）、Kaizen 质量打磨循环
（`pipeline_manager.py kaizen-assess/kaizen-round-start/kaizen-status`）、工作日志
（`worklog.py append/tail`，单文件简体中文完整记录，唤醒协议 Step 0）、文献引用
真实性核验+共享池（`cite_check.py register/verify/list/export-bibitems`）、写作
风格打磨（`style_check.py scan`，latex_draft 固有规范非可选 addon）、官方格式
合规（`quality_gate.py anon-check`、`ai_usage_doc.py generate/cite-format/
mcm-entry`、`compile_pdf.py` 编译后页数提醒，AutoMCM_SOP.md §17）、画图前先查
领域惯例（AutoMCM_SOP.md §18）全部内容
与 Claude Code 版本一致，见
`.claude/skills/auto-mcm/SKILL.md` 对应小节（标题相同），
按上方【工具映射表】替换调用方式：

- **子 Agent 调用**：原文里每个 `Agent(description=..., prompt=<模板>)`，改为
  Codex 的多代理工具调用，`prompt` 字段内容完全不变（先按【已知能力缺口】小节的
  提醒实测确认参数格式，再套用到 Los Alamos 路径 C 的四套 Prompt 模板）
- **人类确认环节**：`ask_user_question` 换成 Codex 的用户输入请求工具
- **文件读写**：模型代码/验证脚本/LaTeX 文件优先用 `apply_patch`，图表结果查看用
  `view_image`
- `scripts/*.py` 系列命令（`pipeline_manager.py`/`quality_gate.py`/
  `los_alamos/*.py`/`plot_style.py`）**完全不变**，全部通过 `exec_command` 调用

---

## 【安全规程】

`AutoMCM_SOP.md` 的 S1~S5 原样适用。S3（外部服务调用告知）在 Codex 上尤其重要——
既然网络检索要靠用户自配的 MCP server，调用前更要做好关键词抽象化，不要把题目
原文整段发给一个你不确定信任边界的外部 MCP server。

---

## 【LeanGate：可选 Lean 形式化验证门禁】

LeanGate 默认关闭；行为规范见 `AutoMCM_SOP.md §19`。Codex 通过 `exec` 内的
`tools.exec_command` 调用共享命令：

```bash
python scripts/leangate.py doctor
python scripts/leangate.py --workspace CUMCM_Workspace init --policy selected
python scripts/leangate.py --workspace CUMCM_Workspace status --problem-n 1
python scripts/leangate.py --workspace CUMCM_Workspace verify --problem-n 1
python scripts/quality_gate.py formal --problem-n 1
```

LeanGate 启用后，离开 `problem_analysis` 前必须逐问题登记适用性并执行
`leangate.py seal-assessment`；安全边界、整数可行性、守恒、不变量、递推、收敛、
求解器证书或决策关键结论必须用 `--risk-category` 标注，自动成为 mandatory。

不得直接编辑 `claims.json` 或报告来制造 PASS。任何输入变化后重新执行语义审查、冻结
与验证；Lean FAIL、UNKNOWN、STALE 或 Python FAIL 都是 NO-GO。
LeanGate 启用后的 `model_N_verify` 推进必须传入工作区内真实验证脚本：
`pipeline_manager.py advance model_N_verify --verify-script CUMCM_Workspace/src/verifications/verify_*.py`。
`required` claim 还必须使用人类文件中的 `[APPROVED LeanGate ...]` 与 `[REQUIRED LeanGate ...]` 标记。

