dsh-mcmp

August 29, 2026 · View on GitHub

npm

DeepSeek Harness 持久化 Cordis 插件:面向全国大学生数学建模竞赛论文撰写的全自动流水线。 粘贴赛题 → 发送一条以 /loopbegin 开头的消息 → 插件按 中控台 + 五阶段流水线(阶段零初始化 → 阶段一 EDA → 阶段二建模 → 阶段三撰写 → 阶段四排版,共 22 个子阶段)自动完成论文撰写, 每个子阶段由专家子智能体执行,再经中控台双重质疑(扫描验证模块 + 评审决策模块)验证, 问题按 P0-P3 评级处置(P0/P1/P2 阶段级回滚并持久化教训,P3 精确定点修改), 成果全部落盘,右下角浮动面板实时显示阶段/子阶段/中控台/回滚进度。 无论流水线正常完成、出错还是被中止,最终都会生成一版完整、干净的 Markdown 论文(Final_Paper.md)。

完整设计见仓库内两份设计文档: ARCHITECTURE.md(v3.18,流程架构设计书:中控台、五阶段、评级/回滚/教训机制)与 PROMPTS.md(v3.5,全部子智能体 Prompt 模板,主循环提示词由其逐段生成)。

功能特性

  • 消息触发:输入文本以 /loopbegin 开头即自动运行(兼容斜杠命令路径)
  • 五阶段 × 22 子阶段:阶段零(初始化 4)→ 阶段一(EDA 3)→ 阶段二(建模 5)→ 阶段三(撰写 7)→ 阶段四(排版 3),共 22 个子阶段,线性推进 + 阶段级回滚
  • 回滚上限可配置:同一阶段回滚 ≥--rollback-limit=N 次(默认 10,1~99)强制锁定(架构 3.7)
  • 中控台双重质疑:执行Agent自检与中控台扫描验证执行同一套六维度质疑标准(逻辑自洽性/模型合理性/数据敏感性/视觉合理性/规范符合性/教训对照);扫描通过→索引 VALIDATED,发现问题→转交评审决策模块
  • 唯一评级机构:中控台评审决策模块按 P0-P3 评级——P0/P1/P2 经 DEPENDENCIES 链追溯根源阶段,阶段级回滚(物理移入 deprecated/、索引 OBSOLETE、写入教训文件、重跑);P3 精确定点修改(≤3 行代码/≤1 个句子/≤3 个参数,STAGING→VALIDATED)
  • 教训持久化:每次回滚(<10 次)写入 ROLLBACK_LESSONS.yaml(查重去重),所有执行Agent启动时必须完整读取(ACTIVE+RESOLVED)
  • 防崩溃优先:同一阶段回滚 ≥10 次强制 FORCED_FINAL 锁定、通知人工,问题降级为 P3 处理,保证必然产出
  • 执行失败处理:非质量问题重试 3 次指数退避(5s/10s/20s),全失败暂停人工介入(不计入回滚计数器),失败日志写入 transactions.log
  • 索引导航:FILE_INDEX.yaml 记录全部产出物的位置/状态(STAGING/VALIDATED/OBSOLETE/FORCED_FINAL)/依赖,上游状态跨阶段读取有权限校验
  • 视觉模块集成:涉及图表的子阶段(1.3/2.4/2.5/3.3/3.4/4.2/4.3)按两阶段流程调用视觉模块(详实描述→系统性质疑);不可用时标记"待人工确认"
  • 论文兜底定稿:4.3 产出 Final_Paper.md;即使流水线提前出错或中止,也会追加一次兜底定稿
  • 实时进度面板:浮动窗口显示总体进度、五阶段打点、当前子阶段、中控台模块、回滚计数与 P0-P3 评级、强制锁定提示、日志、产出文件,支持中止/重置
  • 断点续跑与重置:中断/关闭窗口不丢进度,再次 /loopbegin 自动续跑;/loopreset 或面板「重置(全新开始)」清空续跑记录
  • 原生工作流卡片:聊天区实时显示每个子智能体的运行状态(执行/扫描/评审/兜底)

五阶段流水线(共 22 个子阶段)

阶段子阶段核心产出
阶段零 初始化0.1 创建目录 · 0.2 加载数据 · 0.3 初始化索引 · 0.4 初始化教训文件config/raw_data/FILE_INDEX.yamlROLLBACK_LESSONS.yaml
阶段一 EDA1.1 清洗 · 1.2 特征工程 · 1.3 EDA可视化清洗/变换后数据、EDA 图表与报告
阶段二 建模2.1 模型筛选 · 2.2 模型建立 · 2.3 模型求解 · 2.4 图表生成 · 2.5 检验与质疑假设/公式、code/ 求解代码、模型图表、检验质疑报告
阶段三 撰写3.1 重述与背景 · 3.2 假设与符号 · 3.3 建模与求解章节 · 3.4 结果分析 · 3.5 摘要 · 3.6 参考文献 · 3.7 附录代码stage_03_outputs/01~07 各章节
阶段四 排版4.1 合并 · 4.2 修正路径 · 4.3 最终产出merged_draft.mdmerged_with_figures.mdFinal_Paper.md

每个子阶段完成后:执行Agent按 3.3 六维度自检并写入 _report.yaml(SUCCESS/HAS_ISSUES/NEEDS_REVIEW)→ 中控台扫描验证(SUCCESS 时)或评审决策(HAS_ISSUES/NEEDS_REVIEW 时)→ 通过后推进下一子阶段。

使用方法

  1. 发送赛题:把数学建模竞赛题目完整粘贴到对话框并发送;
  2. 触发插件:发送一条以 /loopbegin 开头的消息:
    • /loopbegin —— 默认启动(22 个子阶段)
    • /loopbegin --rollback-limit=5 —— 同一阶段回滚上限改为 5 次(默认 10,1~99)
    • /loopbegin --from 题目.txt —— 从文件读取赛题(支持含空格/中文的文件名,也可用 --from=文件 形式)
    • /loopbegin --model glm-vision/glm-4.7-Flash —— 可选显式覆盖(也可用 --provider 提供商 --model 模型 分拆形式)。默认不需要此参数:流水线子任务的模型强制跟随你在对话右下角选择的模型(每次启动时读取当前选择);若无法读取,兜底使用 deepseek-official/deepseek-v4-flash
  3. 查看进度:右下角浮动面板(阶段打点、中控台、回滚、日志、文件)+ 聊天区工作流卡片。

辅助命令:/loopstatus(查看进度)、/loopabort(中止,已产出成果保留)、/loopreset(清空状态与断点续跑记录,下次 /loopbegin 从头全新开始;等价于面板「重置(全新开始)」按钮)。

触发规则

消息内容是否触发
/loopbegin --rollback-limit=5(开头)
/loopbegin(前导空格)
题目正文… /loopbegin(不在开头)
/loopstatus/loopabort/loopreset辅助命令,不触发

安装方式

插件包已发布到 npm(dsh-mcmp),并声明了 dsh.bundle 补丁:安装后自动注册配置行,无需任何手动步骤。

安装(唯一方式)

# 一条命令完成:安装包 + 自动注册(通过 bundle 机制)
pnpm dsh plugin --profile web add dsh-mcmp

# 然后重启:
#   重启 pnpm dsh web → 刷新网页
#   验证:浏览器访问 /mcmp-api/state,返回 JSON 即成功

升级:

pnpm dsh plugin --profile web update dsh-mcmp

卸载:

pnpm dsh plugin --profile web remove dsh-mcmp

输出目录(工作区 数学建模流水线/)

数学建模流水线/
├── config/                    # 项目配置(Project_Config.yaml 等)
├── raw_data/                  # 原始数据
├── FILE_INDEX.yaml            # ★ 索引文件:全部产出物的位置/状态/依赖(STAGING/VALIDATED/OBSOLETE/FORCED_FINAL)
├── ROLLBACK_LESSONS.yaml      # ★ 教训文件:回滚教训持久化,执行Agent启动必读
├── transactions.log           # 事务日志:执行失败、强制锁定、DAG 阻断等
├── stage_00_outputs/          # 阶段零产出(含 _report.yaml 上报文件)
├── stage_01_outputs/          # 阶段一产出(清洗/特征/EDA 图表与报告)
├── stage_02_outputs/          # 阶段二产出(建模文档、code 求解代码、figures 图表)
├── stage_03_outputs/          # 阶段三产出(01~07 各章节 Markdown)
├── stage_04_outputs/          # 阶段四产出(合并稿、修正稿)
├── code/                      # 建模求解核心代码(附录代码来源)
├── figures/                   # 全部图表
├── deprecated/                # 回滚废弃文件(物理移入,不删除;建议每场比赛结束后人工清理)
└── Final_Paper.md             # ★ 最终交付:完整、干净的 Markdown 论文(无论成败都会生成)

架构

插件按职责拆分为三个模块,主循环按《ARCHITECTURE.md》v3 实现。

用户消息(/loopbegin 开头)
   │  session/event 全局监听(或 commands 斜杠命令)

程序入口模块(lib/index.js)
   ├─ 输入框内检测:斜杠命令注册 + 消息触发监听 + systemPrompt 模型侧提示
   ├─ 模型选择:父对话当前选择 / --model 显式覆盖 / 兜底 DeepSeek V4 Flash
   ├─ 题目检测:提取赛题(对话文本或 --from 文件)
   ├─ 识图能力探测(宿主服务/工具注册表扫描;子智能体以自身工具列表为准)
   └─ 启动解析与校验(--rollback-limit/--fresh/--model/--from)→ 委托主循环模块启动

论文写作主循环模块(lib/pipeline.js,createPipeline 实例)
   ├─ 五阶段 × 22 子阶段:每个子阶段启动执行Agent(提示词由 PROMPTS.md 2.1/2.2 + 三 生成)
   ├─ 中控台·扫描验证模块:执行Agent上报 SUCCESS 后按 3.3 六维度扫描(PROMPTS.md 4.1)
   ├─ 中控台·评审决策模块:P0-P3 评级、根源定位、回滚裁定与 P3 定点修改(PROMPTS.md 5.1)
   ├─ 代码逻辑:回滚计数器、阶段级删除调度、强制锁定(FORCED_FINAL)、重跑、断点续跑
   ├─ 执行失败重试(3 次指数退避)+ 事务日志 transactions.log
   └─ 兜底定稿:不论成败补一版 Final_Paper.md

显示界面模块(lib/client.js,标准 __ModuleLoader__ bundle)
   ├─ shell.overlay 浮动面板,每 1.2s fetch('/mcmp-api/state') 轮询
   └─ 五阶段打点/子阶段/中控台模块/回滚计数/P0-P3 评级/强制锁定提示/日志/文件/中止重置按钮
   (面板 API 路由 /mcmp-api/{state,abort,reset} 由程序入口模块注册并转发)

文件说明

仓库根目录即插件包本体(发布到 npm 的内容 = lib/ + cordis.patch.yml + package.json;tests/ 不随包发布)。

文件内容
package.json插件包清单:dsh.bundle 补丁声明、dsh.client 声明、exports 入口(. → Host,./client → 面板 bundle)
cordis.patch.ymlbundle 补丁:安装时自动注册插件行(insert: mcmp),无需手动编辑配置
ARCHITECTURE.md流程架构设计书 v3.18:中控台双模块、五阶段、评级/回滚/教训/索引机制与约束
PROMPTS.mdPrompt 设计 v3.5:执行Agent/扫描验证模块/评审决策模块的全部提示词模板(主循环按此生成)
lib/index.js程序入口模块:输入框内检测、模型选择、题目检测、识图能力探测、启动参数解析与校验、/mcmp-api 面板路由注册
lib/pipeline.js论文写作主循环模块:五阶段元数据与提示词构造、中控台扫描/评审调度、回滚与锁定、断点续跑、运行状态与进度快照、中止/重置
lib/client.js显示界面模块:浮动进度面板(标准 __ModuleLoader__ bundle,fetch 轮询、显示与交互)
tests/smoke.mjs冒烟测试:伪造 Cordis ctx 驱动插件,验证启动/扫描评审路由/回滚与强制锁定/P3 定点修改/失败重试/断点续跑/中止/兜底/--from/识图探测/--model 等路径,node tests/smoke.mjs(不随 npm 包发布)

License

MIT