dsh-mcmp 3.1.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -8
- package/lib/client.js +2 -2
- package/lib/index.js +2 -2
- package/lib/pipeline.js +5 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -11,8 +11,8 @@ DeepSeek Harness **持久化 Cordis 插件**:面向全国大学生数学建模
|
|
|
11
11
|
**无论流水线正常完成、出错还是被中止,最终都会生成一版完整、干净的 Markdown 论文(`Final_Paper.md`)。**
|
|
12
12
|
|
|
13
13
|
> 完整设计见仓库内两份设计文档:
|
|
14
|
-
>
|
|
15
|
-
>
|
|
14
|
+
> **`ARCHITECTURE.md`**(v3.18,流程架构设计书:中控台、五阶段、评级/回滚/教训机制)与
|
|
15
|
+
> **`PROMPTS.md`**(v3.5,全部子智能体 Prompt 模板,主循环提示词由其逐段生成)。
|
|
16
16
|
|
|
17
17
|
## 功能特性
|
|
18
18
|
|
|
@@ -115,7 +115,7 @@ pnpm dsh plugin --profile web remove dsh-mcmp
|
|
|
115
115
|
|
|
116
116
|
## 架构
|
|
117
117
|
|
|
118
|
-
>
|
|
118
|
+
> 插件按职责拆分为三个模块,主循环按《ARCHITECTURE.md》v3 实现。
|
|
119
119
|
|
|
120
120
|
```
|
|
121
121
|
用户消息(/loopbegin 开头)
|
|
@@ -129,9 +129,9 @@ pnpm dsh plugin --profile web remove dsh-mcmp
|
|
|
129
129
|
└─ 启动解析与校验(--rollback-limit/--fresh/--model/--from)→ 委托主循环模块启动
|
|
130
130
|
▼
|
|
131
131
|
论文写作主循环模块(lib/pipeline.js,createPipeline 实例)
|
|
132
|
-
├─ 五阶段 × 22 子阶段:每个子阶段启动执行Agent(提示词由
|
|
133
|
-
├─ 中控台·扫描验证模块:执行Agent上报 SUCCESS 后按 3.3 六维度扫描(
|
|
134
|
-
├─ 中控台·评审决策模块:P0-P3 评级、根源定位、回滚裁定与 P3 定点修改(
|
|
132
|
+
├─ 五阶段 × 22 子阶段:每个子阶段启动执行Agent(提示词由 PROMPTS.md 2.1/2.2 + 三 生成)
|
|
133
|
+
├─ 中控台·扫描验证模块:执行Agent上报 SUCCESS 后按 3.3 六维度扫描(PROMPTS.md 4.1)
|
|
134
|
+
├─ 中控台·评审决策模块:P0-P3 评级、根源定位、回滚裁定与 P3 定点修改(PROMPTS.md 5.1)
|
|
135
135
|
├─ 代码逻辑:回滚计数器、阶段级删除调度、强制锁定(FORCED_FINAL)、重跑、断点续跑
|
|
136
136
|
├─ 执行失败重试(3 次指数退避)+ 事务日志 transactions.log
|
|
137
137
|
└─ 兜底定稿:不论成败补一版 Final_Paper.md
|
|
@@ -150,8 +150,8 @@ pnpm dsh plugin --profile web remove dsh-mcmp
|
|
|
150
150
|
| --- | --- |
|
|
151
151
|
| `package.json` | 插件包清单:`dsh.bundle` 补丁声明、`dsh.client` 声明、`exports` 入口(`.` → Host,`./client` → 面板 bundle) |
|
|
152
152
|
| `cordis.patch.yml` | **bundle 补丁**:安装时自动注册插件行(`insert: mcmp`),无需手动编辑配置 |
|
|
153
|
-
|
|
|
154
|
-
|
|
|
153
|
+
| `ARCHITECTURE.md` | **流程架构设计书 v3.18**:中控台双模块、五阶段、评级/回滚/教训/索引机制与约束 |
|
|
154
|
+
| `PROMPTS.md` | **Prompt 设计 v3.5**:执行Agent/扫描验证模块/评审决策模块的全部提示词模板(主循环按此生成) |
|
|
155
155
|
| `lib/index.js` | **程序入口模块**:输入框内检测、模型选择、题目检测、识图能力探测、启动参数解析与校验、`/mcmp-api` 面板路由注册 |
|
|
156
156
|
| `lib/pipeline.js` | **论文写作主循环模块**:五阶段元数据与提示词构造、中控台扫描/评审调度、回滚与锁定、断点续跑、运行状态与进度快照、中止/重置 |
|
|
157
157
|
| `lib/client.js` | **显示界面模块**:浮动进度面板(标准 `__ModuleLoader__` bundle,`fetch` 轮询、显示与交互) |
|
package/lib/client.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* dsh-mcmp · 显示界面模块(Client 半,标准 __ModuleLoader__ 客户端 bundle)
|
|
3
3
|
* 小浮窗的显示与交互:每 1.2s 通过 fetch('/mcmp-api/state') 轮询 Host 状态,
|
|
4
4
|
* 中止/重置通过 POST /mcmp-api/abort|reset。拖拽仅绑定标题文字。
|
|
5
|
-
*
|
|
5
|
+
* 按《ARCHITECTURE.md》v3 目标架构渲染:五阶段(阶段零~四)子阶段进度、中控台模块、
|
|
6
6
|
* 回滚计数与强制锁定、P0-P3 问题评级;主循环重写前,快照无 stages 字段时
|
|
7
7
|
* 自动回退到旧 S1-S8 步骤渲染(见 index.js 中的 v3 快照契约)。
|
|
8
8
|
* (程序入口模块见 lib/index.js,论文写作主循环模块见 lib/pipeline.js)
|
|
@@ -82,7 +82,7 @@ window.__ModuleLoader__.load({
|
|
|
82
82
|
if (!snap || snap.status === 'idle' || dismissedRun === snap.runId) return null
|
|
83
83
|
const st = snap.status
|
|
84
84
|
const pct = snap.pct
|
|
85
|
-
// v3 架构(
|
|
85
|
+
// v3 架构(ARCHITECTURE.md):快照含 stages(五阶段)时走新渲染;当前主循环(旧 S1-S8)缺失该字段,回退旧渲染
|
|
86
86
|
const isV3 = Array.isArray(snap.stages) && snap.stages.length > 0
|
|
87
87
|
|
|
88
88
|
// 拖拽只绑定在标题文字上,避免指针捕获吞掉同栏按钮的点击
|
package/lib/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dsh-mcmp · 数学建模竞赛自动化论文撰写系统 —— 程序入口模块(Host 侧)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* 按《ARCHITECTURE.md》v3 目标架构对齐:中控台(扫描验证模块 + 评审决策模块)+ 五阶段流水线
|
|
5
5
|
* (阶段零初始化 → 阶段一EDA → 阶段二建模 → 阶段三撰写 → 阶段四排版)。
|
|
6
6
|
* 论文写作主循环模块(lib/pipeline.js)将在后续版本重写为该架构;本模块与显示界面
|
|
7
7
|
* 模块先行适配——命令文案、启动提示、模型侧提示、/loopstatus 与面板快照契约均按
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
import { createPipeline, PER_ROUND } from './pipeline.js'
|
|
27
27
|
|
|
28
28
|
// ---------------------------------------------------------------------------
|
|
29
|
-
// 未来主循环模块(v3
|
|
29
|
+
// 未来主循环模块(v3,参照《ARCHITECTURE.md》)的快照契约(snapshot 输出):
|
|
30
30
|
// 显示界面模块与本模块的 /loopstatus 按此渲染。当前主循环(旧 S1-S8)不提供
|
|
31
31
|
// stages/supervisor 字段,面板与状态命令自动回退到旧渲染;主循环重写为 v3 后,
|
|
32
32
|
// 移除旧渲染回退即可。
|
package/lib/pipeline.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dsh-mcmp · 数学建模竞赛自动化论文撰写系统 —— 论文写作主循环模块(Host 侧)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* 按《ARCHITECTURE.md》v3.18 与《PROMPTS.md》v3.5 实现正式流水线:
|
|
5
5
|
* - 五阶段流水线(执行层):阶段零(初始化)→ 阶段一(EDA)→ 阶段二(建模)→
|
|
6
6
|
* 阶段三(撰写)→ 阶段四(排版),共 22 个子阶段,每个子阶段由专家子智能体执行;
|
|
7
7
|
* - 中控台(Supervisor)两个职能模块,均为独立子智能体:
|
|
@@ -54,7 +54,7 @@ const VISION_FLOW = [
|
|
|
54
54
|
'视觉模块不可用时,必须在产出与 _report.yaml 中标记"待人工确认"。',
|
|
55
55
|
].join('\n')
|
|
56
56
|
|
|
57
|
-
// ---------- 五阶段 × 22 子阶段(
|
|
57
|
+
// ---------- 五阶段 × 22 子阶段(PROMPTS.md 三) ----------
|
|
58
58
|
const STAGES = [
|
|
59
59
|
{ key: '阶段零', name: '初始化', dir: 'stage_00_outputs', subs: [
|
|
60
60
|
{ id: '0.1', name: '创建目录', task: '创建标准化目录结构', outputs: 'config/、raw_data/、stage_XX_outputs/、deprecated/、code/、figures/', focusDims: '规范符合性', focusItems: '目录结构完整?权限正确?', vision: false },
|
|
@@ -338,7 +338,7 @@ export function createPipeline({ fs, subagents, agents, retryBackoffMs }) {
|
|
|
338
338
|
return p
|
|
339
339
|
}
|
|
340
340
|
|
|
341
|
-
// 流水线执行Agent提示词(
|
|
341
|
+
// 流水线执行Agent提示词(PROMPTS.md 2.1 系统提示词 + 2.2 用户模板 + 三、各阶段配置)
|
|
342
342
|
function buildExecPrompt(args, stage, sub, si, ii, reportPath) {
|
|
343
343
|
const p = []
|
|
344
344
|
p.push('你正在参与「全国大学生数学建模竞赛论文」自动化撰写系统,担任本子阶段的执行Agent。')
|
|
@@ -409,7 +409,7 @@ export function createPipeline({ fs, subagents, agents, retryBackoffMs }) {
|
|
|
409
409
|
return p.join('\n')
|
|
410
410
|
}
|
|
411
411
|
|
|
412
|
-
// 中控台·扫描验证模块提示词(
|
|
412
|
+
// 中控台·扫描验证模块提示词(PROMPTS.md 4.1)
|
|
413
413
|
function buildScanPrompt(args, stage, sub, reportPath, outputFiles) {
|
|
414
414
|
const p = []
|
|
415
415
|
p.push('你正在参与「全国大学生数学建模竞赛论文」自动化撰写系统,担任中控台的【扫描验证模块】。')
|
|
@@ -456,7 +456,7 @@ export function createPipeline({ fs, subagents, agents, retryBackoffMs }) {
|
|
|
456
456
|
return p.join('\n')
|
|
457
457
|
}
|
|
458
458
|
|
|
459
|
-
// 中控台·评审决策模块提示词(
|
|
459
|
+
// 中控台·评审决策模块提示词(PROMPTS.md 5.1)
|
|
460
460
|
function buildReviewPrompt(args, stage, source, issueText, countsText, limit) {
|
|
461
461
|
const p = []
|
|
462
462
|
p.push('你正在参与「全国大学生数学建模竞赛论文」自动化撰写系统,担任中控台的【评审决策模块】。')
|
package/package.json
CHANGED