dsh-math-modeling-agent 0.1.0 → 0.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 +124 -93
- package/cordis.patch.yml +5 -1
- package/docs/assets/mathmodelingagent-overview.svg +92 -0
- package/docs/superpowers/plans/2026-08-22-math-modeling-dsh-plugin.md +3303 -0
- package/docs/superpowers/specs/2026-08-22-math-modeling-dsh-plugin-design.md +889 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -1,126 +1,157 @@
|
|
|
1
|
-
# MathModelingAgent
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
##
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
VERIFY --> FORK
|
|
34
|
-
REVISE --> ATTEMPT
|
|
35
|
-
RESEARCH --> CANDIDATES_READY
|
|
36
|
-
FORK --> ATTEMPT
|
|
37
|
-
VERIFY --> SOLVED
|
|
38
|
-
VERIFY --> PARTIAL
|
|
39
|
-
VERIFY --> CONDITIONAL
|
|
40
|
-
VERIFY --> INCONCLUSIVE
|
|
41
|
-
VERIFY --> REFUTED
|
|
42
|
-
VERIFY --> INFEASIBLE
|
|
43
|
-
VERIFY --> UNIDENTIFIABLE
|
|
44
|
-
VERIFY --> BLOCKED
|
|
45
|
-
VERIFY --> CANCELLED
|
|
1
|
+
# MathModelingAgent
|
|
2
|
+
|
|
3
|
+
> **模型负责提出,工具负责验证,证据决定结论。**
|
|
4
|
+
|
|
5
|
+
面向开放式数学建模、预测、优化、估计、仿真、机制分析与数学建模竞赛题。
|
|
6
|
+
|
|
7
|
+
与普通 "LLM + Python" 工作流的区别只有一句话:**它不会把"代码跑通了""模型觉得合理""优化器返回一个解"当成结论正确的证据。** 关键结论登记为**主张(Claim)**,每个主张有明确的**验证义务(Obligation)**,再通过独立计算、反例、误差界、形式验证、文献证据或复现实验生成**证据(Evidence)**;证据不足就必须继续修正、降低结论强度,或明确返回 `INCONCLUSIVE`。
|
|
8
|
+
|
|
9
|
+
## 工作方式
|
|
10
|
+
|
|
11
|
+
<p align="center"><img src="./docs/assets/mathmodelingagent-overview.svg" alt="MathModelingAgent 工作流总览" width="100%"/></p>
|
|
12
|
+
|
|
13
|
+
1. **题目与数据**:明确问题目标、输入、约束、缺失信息与歧义。
|
|
14
|
+
2. **理解与拆解**:拆成可验证的子问题,登记假设、候选模型与关键主张。
|
|
15
|
+
3. **建模与执行**:提出候选方案,用数值计算、优化、仿真、符号计算、文献、形式验证执行并保留产物。
|
|
16
|
+
4. **证据验证**:独立重算、检查单位量纲、对照公式与代码、查找数据泄漏、比较基线、做敏感性分析、构造反例、查引用与可复现性。**证据不足就回去修正,而不是硬通过。**
|
|
17
|
+
5. **结果交付**:说明哪些结论已支持、哪些有条件、哪些无法判断,以及如何复现、当前运行为何结束。
|
|
18
|
+
|
|
19
|
+
## 核心:Claim → Obligation → Evidence
|
|
20
|
+
|
|
21
|
+
**Claim(主张)**:影响结论的重要陈述,如"C1:该方案是全局最优解"、"C2:模型可泛化到训练数据之外"。
|
|
22
|
+
|
|
23
|
+
**Obligation(义务)**:按主张类型要求证据——
|
|
24
|
+
|
|
25
|
+
- 数值结果:独立重算 + 容差 + 误差界 + 输入配置一致
|
|
26
|
+
- 最优性:精确搜索 / 可证上下界 / KKT / 对偶 / 形式证明;只有启发式优化结果时只能说"当前搜索下的最佳解",不能升级为"全局最优"
|
|
27
|
+
- 预测能力:防泄漏划分 + 基线 + 验证/测试集 + 校准 + 不确定性
|
|
28
|
+
|
|
29
|
+
**Evidence(证据)**:记录方法、工具、命令、环境、输入输出哈希、退出码、产物、容差、局限与支持的主张;等级:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
NOT_CHECKED → DERIVED → EXECUTED → VERIFIED → INDEPENDENTLY_VERIFIED → EXTERNALLY_VALIDATED
|
|
46
33
|
```
|
|
47
34
|
|
|
48
|
-
|
|
35
|
+
原则:**证据强度不能弱于主张强度。**
|
|
36
|
+
|
|
37
|
+
## 验证协议
|
|
38
|
+
|
|
39
|
+
验证不是让另一个 LLM 再"看一遍答案",而是按固定顺序攻击:
|
|
40
|
+
|
|
41
|
+
1. **任务覆盖**:是否真回答原问题、是否偷换代理指标、是否漏子问题
|
|
42
|
+
2. **数学与约束**:单位、量纲、定义域、边界、约束、推导
|
|
43
|
+
3. **推导与实现一致性**:公式 ↔ 代码 ↔ 参数 ↔ 结果
|
|
44
|
+
4. **数据与实验设计**:标签、划分、数据泄漏、后验参数、来源
|
|
45
|
+
5. **模型可信度**:基线、不确定性、敏感性、鲁棒性、外部效度、更简单替代
|
|
46
|
+
6. **可复现性**:版本、种子、配置、命令、引用真实性
|
|
47
|
+
7. **反例攻击**:边界案例、失败案例、更简单解释
|
|
49
48
|
|
|
50
|
-
|
|
49
|
+
裁决只有三态:
|
|
51
50
|
|
|
52
|
-
|
|
51
|
+
- `PASS`:可复现证据支持
|
|
52
|
+
- `FAIL`:矛盾 / 反例 / 无效方法 / 复现失败
|
|
53
|
+
- `INCONCLUSIVE`:证据不足——**不能因为"看起来合理"升级为 PASS**
|
|
53
54
|
|
|
54
|
-
|
|
55
|
-
dsh plugin --profile web add github:yohanchen1/MathModelingAgent#v0.1.0
|
|
56
|
-
~~~
|
|
55
|
+
## 终态与进展
|
|
57
56
|
|
|
58
|
-
|
|
57
|
+
不只有 `SOLVED`:`PARTIAL` 部分解决 / `CONDITIONAL` 结论依赖条件 / `INCONCLUSIVE` 证据不足 / `REFUTED` 被反驳 / `INFEASIBLE` 不可行 / `UNIDENTIFIABLE` 信息不足 / `BLOCKED` 外部阻塞 / `CANCELLED` 取消。**`ATTEMPT` 永远不能直接跳到 `SOLVED`。**
|
|
59
58
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
**算进展**:关闭一条义务、新增可复现证据、反驳候选、收紧界或区间、移除阻塞、修复问题、正确降低结论强度。
|
|
60
|
+
**不算进展**:换说法、同参数重跑、写更长、`exit 0`、模型说"有信心"。
|
|
61
|
+
连续多轮无进展 → 换方向 / 请求用户决策 / 以非 SOLVED 状态暂停。
|
|
63
62
|
|
|
64
|
-
|
|
63
|
+
**SOLVED 硬门禁**:范围冻结 + 必选义务全 PASS + 关键对抗检查通过 + 可复现材料齐全 + 局限已声明;High-Assurance 还需独立审计(审计器只读产物,不依赖求解过程的私有推理)。
|
|
65
64
|
|
|
66
|
-
|
|
67
|
-
dsh --profile web --dump-config
|
|
68
|
-
dsh web
|
|
69
|
-
~~~
|
|
65
|
+
## 两个 Skill
|
|
70
66
|
|
|
71
|
-
|
|
67
|
+
- **`math-modeling-agent`**:建立和推进模型。目标不是"写一篇看似完整的答案",而是把问题推进到**有证据支持的结论,或清晰可恢复的科学状态**。
|
|
68
|
+
- **`math-modeling-audit`**:独立审计已有模型/论文,逐条回答哪些主张 PASS / FAIL / INCONCLUSIVE 以及为什么;**不替作者修改**。
|
|
72
69
|
|
|
73
|
-
|
|
70
|
+
## 工具:可插拔,缺失就降级
|
|
74
71
|
|
|
75
|
-
|
|
72
|
+
工具只是产生证据的方式,可以替换,工作流不变。
|
|
76
73
|
|
|
77
|
-
|
|
74
|
+
- **Python** 可选(推荐):需要计算时在运行目录内创建隔离环境(数值计算、数据分析、优化、仿真、绘图、独立重算)
|
|
75
|
+
- **Lean** 可选:形式化验证;不自动安装;**形式命题被证明 ≠ 现实主张被证明**
|
|
76
|
+
- **Wolfram** 可选:符号计算、解析推导、恒等式验证
|
|
77
|
+
- **文献研究**:未知方法、证据缺口、参数依据不足、换方向时检索;私有原始数据不进检索
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
工具缺失不会伪装成验证成功:记录缺失 → 降低证据等级 → 降低结论强度 → 保留未满足的义务。
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
- **证据记录**:方法、工具、时间戳、覆盖的主张、输入输出哈希、命令/环境、退出码、产物、容差、局限,以及六档等级:NOT_CHECKED / DERIVED / EXECUTED / VERIFIED / INDEPENDENTLY_VERIFIED / EXTERNALLY_VALIDATED。
|
|
83
|
-
- **强度匹配**:训练集分数不能支撑泛化结论;单个优化器返回点不能支撑全局最优;形式化证明不能支撑未形式化的现实假设。不支持的断言只能弱化,不能放宽验证规则。
|
|
81
|
+
## 可恢复运行
|
|
84
82
|
|
|
85
|
-
|
|
83
|
+
默认运行目录 `math-modeling-runs/<task-id>/`:
|
|
86
84
|
|
|
87
|
-
|
|
85
|
+
```text
|
|
86
|
+
run.json # 原子状态快照
|
|
87
|
+
ledger.json # 范围、假设、主张、义务、子问题、候选、issue
|
|
88
|
+
events.jsonl # 追加式转移日志
|
|
89
|
+
attempts/<n>/ # 每轮报告与产物
|
|
90
|
+
research/ walls/ # 文献检索 / 放弃方向的突破备忘录
|
|
91
|
+
reproducibility.json final-report.md
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
崩溃恢复:跨进程互斥锁 + stale 锁与 reclaim guard 回收 + Windows 共享冲突重试;已完成且输入未变的工作不重跑;任何失败都保留最佳候选与原始产物。
|
|
95
|
+
|
|
96
|
+
## MCM / ICM 终审(audit Skill)
|
|
97
|
+
|
|
98
|
+
模拟终审框架(**非 COMAP 官方评分表**):一票否决与奖项封顶 → 七类 100 分评分 → 模型逐个审计 → 关键结果审计 → MCM A/B/C 与 ICM D/E/F 专项 → 固定 14 节终审报告。评分不修改建模侧的 SOLVED 判定。
|
|
88
99
|
|
|
89
|
-
|
|
100
|
+
## 快速开始
|
|
90
101
|
|
|
91
|
-
|
|
102
|
+
安装:
|
|
92
103
|
|
|
93
|
-
|
|
104
|
+
```bash
|
|
105
|
+
dsh plugin --profile web add github:yohanchen1/MathModelingAgent#v0.1.1
|
|
106
|
+
dsh --profile web --dump-config # 检查组合层
|
|
107
|
+
dsh web # 然后重启
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
(npm 通道:`dsh plugin --profile web add dsh-math-modeling-agent`)
|
|
94
111
|
|
|
95
|
-
|
|
112
|
+
开始建模——直接描述任务即可,不需要选内部状态、验证器或文件名:
|
|
96
113
|
|
|
97
|
-
|
|
114
|
+
```text
|
|
115
|
+
建立这个数学建模问题的模型,先分析题目和数据。
|
|
116
|
+
任何"最优""显著""泛化"的结论都必须提供相应证据,证据不足不要强行确定。
|
|
117
|
+
```
|
|
98
118
|
|
|
99
|
-
|
|
119
|
+
独立审计——给已有论文/模型/代码:
|
|
100
120
|
|
|
101
|
-
|
|
121
|
+
```text
|
|
122
|
+
独立审计这份结果,逐条给出 PASS / FAIL / INCONCLUSIVE,不要帮我修改原文。
|
|
123
|
+
```
|
|
102
124
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
├──
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
├── walls/ # 放弃方向的突破备忘录(放弃时)
|
|
113
|
-
├── reproducibility.json # 数据/代码/配置版本、锁、种子、命令
|
|
114
|
-
└── final-report.md # 终态报告
|
|
115
|
-
~~~
|
|
125
|
+
## 项目结构
|
|
126
|
+
|
|
127
|
+
```text
|
|
128
|
+
skills/
|
|
129
|
+
├── math-modeling-agent/ # 建模、执行、修正、生成证据
|
|
130
|
+
└── math-modeling-audit/ # 独立复算、反例攻击、证据审查、MCM/ICM 终审
|
|
131
|
+
tests/ # 状态机、锁与恢复、验证协议、打包完整性、MCM 评分
|
|
132
|
+
cordis.patch.yml package.json README.md LICENSE
|
|
133
|
+
```
|
|
116
134
|
|
|
117
135
|
## 卸载
|
|
118
136
|
|
|
119
|
-
|
|
137
|
+
```bash
|
|
120
138
|
dsh plugin --profile web remove dsh-math-modeling-agent
|
|
121
|
-
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
然后重启当前 DSH host。
|
|
142
|
+
|
|
143
|
+
## 设计原则
|
|
144
|
+
|
|
145
|
+
1. 模型可以提出结论,但不能自己给自己判卷。
|
|
146
|
+
2. `exit 0` 只是程序状态,不是数学结论。
|
|
147
|
+
3. 不确定性是合法答案:`INCONCLUSIVE` 优于编造。
|
|
148
|
+
4. 结论强度必须匹配证据强度。
|
|
149
|
+
5. 失败应该被保留:反例与失败方向防止下一轮重蹈覆辙。
|
|
150
|
+
6. 结果应可被他人复检:数据、代码、命令、哈希、验证记录、局限。
|
|
151
|
+
|
|
152
|
+
## 方法论来源
|
|
122
153
|
|
|
123
|
-
|
|
154
|
+
继承"问题分解 + 多轮尝试 + 失败后换方向"的 Agent 建模思想(受 [IMO25](https://github.com/lyang36/IMO25) 等启发)。核心变化:**把验证裁决从 LLM 主观评价中拿出来**——不是"分析者觉得 4/5 分可以通过",而是 `Claim → Obligation → 工具/独立检查 → Evidence → PASS / FAIL / INCONCLUSIVE`。LLM 可以提出主张、攻击主张,但不能仅凭自己的判断宣布主张已被证明。
|
|
124
155
|
|
|
125
156
|
## License
|
|
126
157
|
|
package/cordis.patch.yml
CHANGED
|
@@ -4,5 +4,9 @@
|
|
|
4
4
|
config:
|
|
5
5
|
providerName: dsh-math-modeling-agent
|
|
6
6
|
includeDefaultRoots: false
|
|
7
|
-
|
|
7
|
+
# The Loader evaluates !!js against the ROOT include context: `baseUrl`
|
|
8
|
+
# is the profile directory (e.g. ~/.dsh/profiles/web/), NOT this bundle's
|
|
9
|
+
# directory. Resolve this package through the profile's own node_modules so
|
|
10
|
+
# the skill root works for npm, github, pnpm, and file: installs alike.
|
|
11
|
+
bundledSkillDir: !!js "process.getBuiltinModule('node:url').fileURLToPath(new URL('skills/', process.getBuiltinModule('node:url').pathToFileURL(process.getBuiltinModule('node:module').createRequire(baseUrl + 'noop.js').resolve('dsh-math-modeling-agent/package.json')).href))"
|
|
8
12
|
watch: false
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1066" height="620" viewBox="0 0 1066 620" role="img" aria-label="MathModelingAgent 工作流总览">
|
|
2
|
+
<defs>
|
|
3
|
+
<filter id="shadow" x="-4%" y="-4%" width="108%" height="112%">
|
|
4
|
+
<feDropShadow dx="0" dy="2" stdDeviation="4" flood-color="#0f172a" flood-opacity="0.06"/>
|
|
5
|
+
</filter>
|
|
6
|
+
</defs>
|
|
7
|
+
<rect width="1066" height="620" rx="16" fill="#f8fafc"/>
|
|
8
|
+
<text x="40" y="52" font-family="system-ui,-apple-system,'Segoe UI',sans-serif" font-size="30" font-weight="700" fill="#0f172a">MathModelingAgent</text>
|
|
9
|
+
<text x="40" y="84" font-family="system-ui,-apple-system,'Segoe UI',sans-serif" font-size="15" fill="#475569">从题目到可复现结论 · 模型负责提出,证据负责裁决</text>
|
|
10
|
+
<g font-family="system-ui,-apple-system,'Segoe UI',sans-serif" font-size="11" fill="#334155">
|
|
11
|
+
<rect x="774" y="26" width="116" height="28" rx="14" fill="#ffffff" stroke="#e2e8f0"/>
|
|
12
|
+
<text x="832" y="44" text-anchor="middle" fill="#475569">不绑定具体状态名</text>
|
|
13
|
+
<rect x="900" y="26" width="122" height="28" rx="14" fill="#ffffff" stroke="#e2e8f0"/>
|
|
14
|
+
<text x="961" y="44" text-anchor="middle" fill="#475569">不绑定文件结构</text>
|
|
15
|
+
<rect x="1032" y="26" width="104" height="28" rx="14" fill="#ffffff" stroke="#e2e8f0"/>
|
|
16
|
+
<text x="1084" y="44" text-anchor="middle" fill="#475569">工具可替换</text>
|
|
17
|
+
</g>
|
|
18
|
+
<g font-family="system-ui,-apple-system,'Segoe UI',sans-serif">
|
|
19
|
+
<rect x="40" y="112" width="184" height="250" rx="14" fill="#ffffff" stroke="#e2e8f0" filter="url(#shadow)"/>
|
|
20
|
+
<rect x="40" y="112" width="184" height="8" rx="4" fill="#34d399"/>
|
|
21
|
+
<text x="56" y="156" font-size="17" font-weight="700" fill="#0f172a">题目与数据</text>
|
|
22
|
+
<text x="56" y="178" font-size="11" font-weight="700" letter-spacing="1" fill="#34d399">INPUT</text>
|
|
23
|
+
<circle cx="62" cy="208" r="4" fill="#34d399"/><text x="74" y="212" font-size="13" fill="#475569">题目 / PDF</text>
|
|
24
|
+
<circle cx="62" cy="240" r="4" fill="#34d399"/><text x="74" y="244" font-size="13" fill="#475569">数据与附件</text>
|
|
25
|
+
<circle cx="62" cy="272" r="4" fill="#34d399"/><text x="74" y="276" font-size="13" fill="#475569">目标与约束</text>
|
|
26
|
+
|
|
27
|
+
<rect x="246" y="112" width="184" height="250" rx="14" fill="#ffffff" stroke="#e2e8f0" filter="url(#shadow)"/>
|
|
28
|
+
<rect x="246" y="112" width="184" height="8" rx="4" fill="#60a5fa"/>
|
|
29
|
+
<text x="262" y="156" font-size="17" font-weight="700" fill="#0f172a">理解与拆解</text>
|
|
30
|
+
<text x="262" y="178" font-size="11" font-weight="700" letter-spacing="1" fill="#60a5fa">UNDERSTAND</text>
|
|
31
|
+
<circle cx="268" cy="208" r="4" fill="#60a5fa"/><text x="280" y="212" font-size="13" fill="#475569">明确问题边界</text>
|
|
32
|
+
<circle cx="268" cy="240" r="4" fill="#60a5fa"/><text x="280" y="244" font-size="13" fill="#475569">拆成可验证子问题</text>
|
|
33
|
+
<circle cx="268" cy="272" r="4" fill="#60a5fa"/><text x="280" y="276" font-size="13" fill="#475569">登记关键假设</text>
|
|
34
|
+
|
|
35
|
+
<rect x="452" y="112" width="184" height="250" rx="14" fill="#ffffff" stroke="#e2e8f0" filter="url(#shadow)"/>
|
|
36
|
+
<rect x="452" y="112" width="184" height="8" rx="4" fill="#a78bfa"/>
|
|
37
|
+
<text x="468" y="156" font-size="17" font-weight="700" fill="#0f172a">建模与执行</text>
|
|
38
|
+
<text x="468" y="178" font-size="11" font-weight="700" letter-spacing="1" fill="#a78bfa">EXPLORE</text>
|
|
39
|
+
<circle cx="474" cy="208" r="4" fill="#a78bfa"/><text x="486" y="212" font-size="13" fill="#475569">提出候选模型</text>
|
|
40
|
+
<circle cx="474" cy="240" r="4" fill="#a78bfa"/><text x="486" y="244" font-size="13" fill="#475569">计算 / 搜索 / 推导</text>
|
|
41
|
+
<circle cx="474" cy="272" r="4" fill="#a78bfa"/><text x="486" y="276" font-size="13" fill="#475569">保留过程产物</text>
|
|
42
|
+
|
|
43
|
+
<rect x="658" y="112" width="184" height="250" rx="14" fill="#ffffff" stroke="#e2e8f0" filter="url(#shadow)"/>
|
|
44
|
+
<rect x="658" y="112" width="184" height="8" rx="4" fill="#fb923c"/>
|
|
45
|
+
<text x="674" y="156" font-size="17" font-weight="700" fill="#0f172a">证据验证</text>
|
|
46
|
+
<text x="674" y="178" font-size="11" font-weight="700" letter-spacing="1" fill="#fb923c">VERIFY</text>
|
|
47
|
+
<circle cx="680" cy="208" r="4" fill="#fb923c"/><text x="692" y="212" font-size="13" fill="#475569">主张 ↔ 验证义务</text>
|
|
48
|
+
<circle cx="680" cy="240" r="4" fill="#fb923c"/><text x="692" y="244" font-size="13" fill="#475569">独立重算 / 反例攻击</text>
|
|
49
|
+
<circle cx="680" cy="272" r="4" fill="#fb923c"/><text x="692" y="276" font-size="13" fill="#475569">证据不足就回去修正</text>
|
|
50
|
+
|
|
51
|
+
<rect x="864" y="112" width="184" height="250" rx="14" fill="#ffffff" stroke="#e2e8f0" filter="url(#shadow)"/>
|
|
52
|
+
<rect x="864" y="112" width="184" height="8" rx="4" fill="#f472b6"/>
|
|
53
|
+
<text x="880" y="156" font-size="17" font-weight="700" fill="#0f172a">结果交付</text>
|
|
54
|
+
<text x="880" y="178" font-size="11" font-weight="700" letter-spacing="1" fill="#f472b6">DELIVER</text>
|
|
55
|
+
<circle cx="886" cy="208" r="4" fill="#f472b6"/><text x="898" y="212" font-size="13" fill="#475569">结论 + 局限</text>
|
|
56
|
+
<circle cx="886" cy="240" r="4" fill="#f472b6"/><text x="898" y="244" font-size="13" fill="#475569">代码 / 数据 / 复现材料</text>
|
|
57
|
+
<circle cx="886" cy="272" r="4" fill="#f472b6"/><text x="898" y="276" font-size="13" fill="#475569">审计 / 终态报告</text>
|
|
58
|
+
</g>
|
|
59
|
+
<g stroke="#94a3b8" stroke-width="2.5" fill="none" marker-end="url(#arrow)">
|
|
60
|
+
<line x1="224" y1="237" x2="242" y2="237"/>
|
|
61
|
+
<line x1="430" y1="237" x2="448" y2="237"/>
|
|
62
|
+
<line x1="636" y1="237" x2="654" y2="237"/>
|
|
63
|
+
<line x1="842" y1="237" x2="860" y2="237"/>
|
|
64
|
+
</g>
|
|
65
|
+
<defs><marker id="arrow" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto"><path d="M0,0 L8,4 L0,8 Z" fill="#94a3b8"/></marker></defs>
|
|
66
|
+
<path d="M750 362 C 750 430, 700 452, 544 452 L 544 366" fill="none" stroke="#6366f1" stroke-width="2" stroke-dasharray="6 5" marker-end="url(#arrowLoop)"/>
|
|
67
|
+
<defs><marker id="arrowLoop" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto"><path d="M0,0 L8,4 L0,8 Z" fill="#6366f1"/></marker></defs>
|
|
68
|
+
<rect x="404" y="430" width="284" height="28" rx="14" fill="#eef2ff" stroke="#c7d2fe"/>
|
|
69
|
+
<text x="546" y="448" text-anchor="middle" font-family="system-ui,-apple-system,'Segoe UI',sans-serif" font-size="13" fill="#4338ca">证据不够 → 修正,而不是硬通过</text>
|
|
70
|
+
|
|
71
|
+
<rect x="40" y="478" width="1008" height="118" rx="14" fill="#ffffff" stroke="#e2e8f0"/>
|
|
72
|
+
<text x="64" y="512" font-family="system-ui,-apple-system,'Segoe UI',sans-serif" font-size="15" font-weight="700" fill="#0f172a">可插拔能力</text>
|
|
73
|
+
<text x="64" y="534" font-family="system-ui,-apple-system,'Segoe UI',sans-serif" font-size="12" fill="#64748b">实现可以换,语义不变:任何工具都只是为"建模"或"验证"提供证据。</text>
|
|
74
|
+
<g font-family="system-ui,-apple-system,'Segoe UI',sans-serif" text-anchor="middle">
|
|
75
|
+
<rect x="64" y="552" width="180" height="26" rx="8" fill="#f1f5f9"/>
|
|
76
|
+
<text x="154" y="569" font-size="12" font-weight="600" fill="#0f172a">数值计算</text>
|
|
77
|
+
<text x="154" y="582" font-size="10" fill="#64748b">Python / 其他运行时</text>
|
|
78
|
+
<rect x="258" y="552" width="180" height="26" rx="8" fill="#f1f5f9"/>
|
|
79
|
+
<text x="348" y="569" font-size="12" font-weight="600" fill="#0f172a">形式验证</text>
|
|
80
|
+
<text x="348" y="582" font-size="10" fill="#64748b">Lean / theorem prover</text>
|
|
81
|
+
<rect x="452" y="552" width="180" height="26" rx="8" fill="#f1f5f9"/>
|
|
82
|
+
<text x="542" y="569" font-size="12" font-weight="600" fill="#0f172a">符号计算</text>
|
|
83
|
+
<text x="542" y="582" font-size="10" fill="#64748b">Wolfram / CAS</text>
|
|
84
|
+
<rect x="646" y="552" width="180" height="26" rx="8" fill="#f1f5f9"/>
|
|
85
|
+
<text x="736" y="569" font-size="12" font-weight="600" fill="#0f172a">研究检索</text>
|
|
86
|
+
<text x="736" y="582" font-size="10" fill="#64748b">文献 / Web</text>
|
|
87
|
+
<rect x="840" y="552" width="180" height="26" rx="8" fill="#f1f5f9"/>
|
|
88
|
+
<text x="930" y="569" font-size="12" font-weight="600" fill="#0f172a">终审</text>
|
|
89
|
+
<text x="930" y="582" font-size="10" fill="#64748b">MCM / ICM audit</text>
|
|
90
|
+
</g>
|
|
91
|
+
<text x="1032" y="612" text-anchor="end" font-family="system-ui,-apple-system,'Segoe UI',sans-serif" font-size="10" fill="#94a3b8">README overview</text>
|
|
92
|
+
</svg>
|