dsh-vibe-math 2.7.2 → 2.8.0
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/LICENSE +21 -21
- package/README.en.md +682 -681
- package/README.md +683 -682
- package/cordis.patch.yml +112 -16
- package/docs/AUDIT-CHECKLIST.md +755 -518
- package/docs/COMPAT-AUDIT-ROUND2.md +354 -328
- package/docs/COMPAT-AUDIT-ROUND3.md +154 -154
- package/docs/audit-methodology.md +93 -0
- package/docs/final-paper.md +172 -172
- package/docs/formal-verification.md +613 -588
- package/docs/generate_framework_diagram_v2.py +114 -114
- package/docs/generate_framework_diagram_v3.py +127 -127
- package/docs/math-computation.md +195 -187
- package/docs/parameter-schema.md +37 -0
- package/docs/release-notes/README.en.md +2 -0
- package/docs/release-notes/README.md +2 -0
- package/docs/release-notes/RELEASE-NOTES-2.0.22.md +112 -112
- package/docs/release-notes/RELEASE-NOTES-2.1.0.md +143 -143
- package/docs/release-notes/RELEASE-NOTES-2.2.0.md +266 -266
- package/docs/release-notes/RELEASE-NOTES-2.2.1.md +43 -43
- package/docs/release-notes/RELEASE-NOTES-2.2.2.md +88 -88
- package/docs/release-notes/RELEASE-NOTES-2.3.0.md +207 -207
- package/docs/release-notes/RELEASE-NOTES-2.3.1.md +134 -134
- package/docs/release-notes/RELEASE-NOTES-2.3.10.md +105 -105
- package/docs/release-notes/RELEASE-NOTES-2.3.11.md +57 -57
- package/docs/release-notes/RELEASE-NOTES-2.3.12.md +80 -80
- package/docs/release-notes/RELEASE-NOTES-2.3.2.md +145 -145
- package/docs/release-notes/RELEASE-NOTES-2.3.3.md +115 -115
- package/docs/release-notes/RELEASE-NOTES-2.3.4.md +69 -69
- package/docs/release-notes/RELEASE-NOTES-2.3.5.md +63 -63
- package/docs/release-notes/RELEASE-NOTES-2.3.6.md +66 -66
- package/docs/release-notes/RELEASE-NOTES-2.3.7.md +59 -59
- package/docs/release-notes/RELEASE-NOTES-2.3.8.md +45 -45
- package/docs/release-notes/RELEASE-NOTES-2.3.9.md +70 -70
- package/docs/release-notes/RELEASE-NOTES-2.7.2.en.md +2 -2
- package/docs/release-notes/RELEASE-NOTES-2.7.2.md +3 -3
- package/docs/release-notes/RELEASE-NOTES-2.7.3.en.md +67 -0
- package/docs/release-notes/RELEASE-NOTES-2.7.3.md +67 -0
- package/docs/release-notes/RELEASE-NOTES-2.8.0.en.md +65 -0
- package/docs/release-notes/RELEASE-NOTES-2.8.0.md +65 -0
- package/docs/release-notes/TEMPLATE.md +6 -0
- package/docs/release-playbook.md +103 -0
- package/docs/slv-playbook.md +117 -0
- package/docs/status-report-fields.md +167 -0
- package/docs/test-timing.md +158 -154
- package/docs//346/236/266/346/236/204/345/233/276.md +77 -77
- package/installer.js +793 -783
- package/package.json +260 -203
- package/prompt-corpus-persona/persona-corpus.json +9 -9
- package/prompt-corpus-persona/persona-corpus.md +225 -33
- package/prompt-corpus-v2/formal-verify-v2.json +295 -115
- package/prompt-corpus-v2/formal-verify-v2.md +2290 -282
- package/prompt-corpus-v3/formal-verify-v3.json +112 -112
- package/prompt-corpus-v3/formal-verify-v3.md +227 -143
- package/prompt-corpus-v4/formal-verify-v4.json +18 -18
- package/prompt-corpus-v4/formal-verify-v4.md +49 -44
- package/prompt-corpus-v5/prompt-corpus-v5.json +82 -82
- package/prompt-corpus-v5/prompt-corpus-v5.md +573 -207
- package/scripts/clean-temp.mjs +234 -0
- package/scripts/update-doc-counts.mjs +71 -0
- package/tests/audit-artifact-docs.mjs +72 -0
- package/tests/audit-artifact-docs.mutants.mjs +58 -0
- package/tests/audit-engine-faces.mjs +298 -0
- package/tests/audit-formal-sensitivity.mjs +345 -342
- package/tests/audit-installer-assertions.mutants.mjs +63 -0
- package/tests/audit-installer-compat.test.mjs +256 -208
- package/tests/audit-installer-policy.test.mjs +41 -8
- package/tests/audit-math-computation-contract.mjs +64 -8
- package/tests/audit-math-computation-contract.mutants.mjs +106 -0
- package/tests/audit-math-computation-parity.mjs +164 -3
- package/tests/audit-math-computation-sensitivity.mjs +5 -3
- package/tests/audit-package-membership.mjs +57 -0
- package/tests/audit-package-membership.mutants.mjs +28 -0
- package/tests/audit-participant-set-parity.mjs +160 -0
- package/tests/audit-path-discipline.mjs +83 -0
- package/tests/audit-path-discipline.mutants.mjs +51 -0
- package/tests/audit-persona-sensitivity.mjs +323 -309
- package/tests/audit-persona-surface.mutants.mjs +69 -0
- package/tests/audit-persona-surface.test.mjs +431 -390
- package/tests/audit-prompt-duplication.mjs +143 -0
- package/tests/audit-prompt-duplication.mutants.mjs +51 -0
- package/tests/audit-prompt-invariants.mjs +589 -508
- package/tests/audit-readme-bilingual.test.mjs +152 -0
- package/tests/audit-readme-counts.mjs +95 -0
- package/tests/audit-readme-counts.mutants.mjs +52 -0
- package/tests/audit-registration.mjs +78 -0
- package/tests/audit-spec-traceability.mjs +193 -193
- package/tests/audit-status-report-fields.mjs +172 -0
- package/tests/audit-status-report-fields.mutants.mjs +64 -0
- package/tests/audit-v3-registration-parity.mjs +156 -0
- package/tests/audit-v5-integrity.mjs +795 -508
- package/tests/audit-v5-lean-abstention.mjs +392 -0
- package/tests/audit-v5-lean-abstention.mutants.mjs +106 -0
- package/tests/audit-v5-prompt-duplication.mjs +88 -0
- package/tests/audit-v5-prompt-duplication.mutants.mjs +34 -0
- package/tests/audit-v5-sensitivity.mjs +433 -427
- package/tests/e2e-identity-a6.mutants.mjs +65 -0
- package/tests/e2e-v5-round2.test.mjs +2453 -1981
- package/tests/formal-verify-v2.test.mjs +1778 -1724
- package/tests/formal-verify-v3.mutants.mjs +117 -0
- package/tests/formal-verify-v3.test.mjs +1724 -1671
- package/tests/formal-verify-v4.mutants.mjs +152 -0
- package/tests/formal-verify-v4.test.mjs +2114 -1574
- package/tests/formal-verify-v5.test.mjs +790 -724
- package/tests/helpers/doc-counts-format.mjs +41 -0
- package/tests/helpers/math-computation-fake-seam.mjs +4 -0
- package/tests/math-computation-a1.mutants.mjs +72 -0
- package/tests/math-computation-archive-rerun.mutants.mjs +65 -0
- package/tests/math-computation-discovery.mutants.mjs +76 -0
- package/tests/math-computation-shared.test.mjs +392 -6
- package/tests/math-computation-v2.test.mjs +779 -0
- package/tests/math-computation-v3.test.mjs +771 -0
- package/tests/math-computation-v4.mutants.mjs +133 -0
- package/tests/math-computation-v4.test.mjs +739 -0
- package/tests/prompt-v5-integrity.test.mjs +1291 -1280
- package/tests/run-tests.mjs +393 -202
- package/tests/run-tests.mutants.mjs +70 -0
- package/tests/selfdrive-v5.mjs +560 -508
- package/tests/selfdrive-v5.mutants.mjs +132 -0
- package/tests/temp-hygiene.mutants.mjs +80 -0
- package/tests/v2-fix-probes.mutants.mjs +104 -0
- package/tests/v2-fix-probes.test.mjs +1040 -0
- package/tests/v2-list-agents-and-next-step.mutants.mjs +106 -0
- package/tests/v2v3-interrupt.mutants.mjs +111 -0
- package/tests/v3-fix-probes.mutants.mjs +99 -0
- package/tests/v3-fix-probes.test.mjs +892 -0
- package/tests/v4-final-paper.mutants.mjs +108 -0
- package/tests/v5-institute-fixes.mutants.mjs +218 -0
- package/vibe-math-v2/agent.cordis.yml +378 -322
- package/vibe-math-v2/math-computation.js +144 -53
- package/vibe-math-v2/math-engines.js +12 -12
- package/vibe-math-v2/preset.yml +2 -2
- package/vibe-math-v2/v2/347/232/204/351/242/235/345/244/226/350/246/201/346/261/202.txt +21 -21
- package/vibe-math-v2/vibe-math-v2.js +5097 -4755
- package/vibe-math-v2//345/256/236/347/216/260/346/226/271/346/241/210.md +491 -487
- package/vibe-math-v3/agent.cordis.yml +422 -356
- package/vibe-math-v3/math-computation.js +144 -53
- package/vibe-math-v3/math-engines.js +12 -12
- package/vibe-math-v3/preset.yml +2 -2
- package/vibe-math-v3/vibe-math-v3.js +6235 -5873
- package/vibe-math-v3//345/256/236/347/216/260/346/226/271/346/241/210.md +649 -649
- package/vibe-math-v4/agent.cordis.yml +438 -402
- package/vibe-math-v4/math-computation.js +144 -53
- package/vibe-math-v4/math-engines.js +12 -12
- package/vibe-math-v4/preset.yml +2 -2
- package/vibe-math-v4/vibe-math-v4.js +4490 -4269
- package/vibe-math-v4//345/256/236/347/216/260/346/226/271/346/241/210.md +1015 -1013
- package/vibe-math-v5/agent.cordis.yml +46 -12
- package/vibe-math-v5/math-computation.js +144 -53
- package/vibe-math-v5/math-engines.js +12 -12
- package/vibe-math-v5/vibe-math-v5.js +1266 -229
- package/vibe-math-v5//345/256/236/347/216/260/346/226/271/346/241/210.md +1728 -1660
- package/vibe-math-v5//346/236/266/346/236/204/345/233/276.md +693 -693
|
@@ -1,114 +1,114 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
"""Generate the Vibe Math V2 framework diagram (架构图) as a PNG poster.
|
|
3
|
-
Output: 示例图/框架图-v2.png (run from anywhere: python docs/generate_framework_diagram_v2.py)
|
|
4
|
-
Layout: left = pipeline (交互/调度/子代理·方向/子代理·验证/收口), right = 数据层 aligned by stage.
|
|
5
|
-
"""
|
|
6
|
-
import matplotlib
|
|
7
|
-
matplotlib.use("Agg")
|
|
8
|
-
import os
|
|
9
|
-
import matplotlib.pyplot as plt
|
|
10
|
-
from matplotlib.patches import FancyBboxPatch, Rectangle, FancyArrowPatch
|
|
11
|
-
|
|
12
|
-
plt.rcParams["font.sans-serif"] = ["Microsoft YaHei", "SimHei"]
|
|
13
|
-
plt.rcParams["axes.unicode_minus"] = False
|
|
14
|
-
|
|
15
|
-
BASE = os.path.dirname(os.path.abspath(__file__))
|
|
16
|
-
ROOT = os.path.dirname(BASE)
|
|
17
|
-
OUT = os.path.join(ROOT, "示例图", "框架图-v2.png")
|
|
18
|
-
|
|
19
|
-
fig = plt.figure(figsize=(18, 11.5))
|
|
20
|
-
ax = fig.add_axes([0, 0, 1, 1])
|
|
21
|
-
ax.axis("off")
|
|
22
|
-
ax.set_xlim(0, 18)
|
|
23
|
-
ax.set_ylim(0, 11.5)
|
|
24
|
-
|
|
25
|
-
def box(x0, y0, w, h, fc, ec="#37474F", lw=1.6, rounding=0.16, z=3):
|
|
26
|
-
ax.add_patch(FancyBboxPatch((x0, y0), w, h,
|
|
27
|
-
boxstyle=f"round,pad=0.10,rounding_size={rounding}",
|
|
28
|
-
facecolor=fc, edgecolor=ec, linewidth=lw, zorder=z))
|
|
29
|
-
|
|
30
|
-
def txt(cx, cy, s, fs=11, color="#263238", weight="normal", z=5):
|
|
31
|
-
ax.text(cx, cy, s, ha="center", va="center", fontsize=fs, color=color,
|
|
32
|
-
fontweight=weight, linespacing=1.45, zorder=z)
|
|
33
|
-
|
|
34
|
-
def arrow(x1, y1, x2, y2, label=None, lx=0, ly=0.24, ls=9.5, rad=0.0,
|
|
35
|
-
style="->", lw=1.8, color="#455A64", dashed=False, z=4):
|
|
36
|
-
ax.add_patch(FancyArrowPatch((x1, y1), (x2, y2), arrowstyle=style,
|
|
37
|
-
mutation_scale=17, linewidth=lw, color=color, zorder=z,
|
|
38
|
-
connectionstyle=f"arc3,rad={rad}",
|
|
39
|
-
linestyle="--" if dashed else "-"))
|
|
40
|
-
if label:
|
|
41
|
-
ax.text((x1 + x2) / 2 + lx, (y1 + y2) / 2 + ly, label, fontsize=ls,
|
|
42
|
-
ha="center", va="center", color="#333",
|
|
43
|
-
bbox=dict(fc="white", ec="none", alpha=0.85, pad=1.0), zorder=6)
|
|
44
|
-
|
|
45
|
-
def band(x0, y0, x1, y1, fc, title, tc="#607D8B"):
|
|
46
|
-
ax.add_patch(Rectangle((x0, y0), x1 - x0, y1 - y0, facecolor=fc,
|
|
47
|
-
edgecolor="none", alpha=0.5, zorder=1))
|
|
48
|
-
# title pinned to the band's top-left corner, drawn ABOVE the boxes, with a
|
|
49
|
-
# white backing so it is never obscured by the rectangles
|
|
50
|
-
ax.text(x0 + 0.35, y1 - 0.12, title, fontsize=11.5, color=tc,
|
|
51
|
-
fontweight="bold", ha="left", va="top", zorder=6,
|
|
52
|
-
bbox=dict(fc="white", ec="none", alpha=0.85, pad=1.2))
|
|
53
|
-
|
|
54
|
-
# ── title ────────────────────────────────────────────────────────────────
|
|
55
|
-
ax.text(9, 11.12, "Vibe Math V2 — 多代理数学问题求解与验证框架(概率驱动)", fontsize=21,
|
|
56
|
-
ha="center", va="center", color="#1A237E", fontweight="bold")
|
|
57
|
-
ax.text(9, 10.66, "qs.json 问题清单 + Propos/ 命题库 · 按正确概率/价值调度 · explorer → 逐方向 solver → 多验证器辩论裁决",
|
|
58
|
-
fontsize=10.5, ha="center", va="center", color="#555")
|
|
59
|
-
|
|
60
|
-
# ── layer bands ──────────────────────────────────────────────────────────
|
|
61
|
-
band(0.3, 9.45, 17.7, 10.45, "#E3F2FD", "交互层")
|
|
62
|
-
band(0.3, 7.70, 17.7, 8.95, "#FFF8E1", "调度层 · 插件代码")
|
|
63
|
-
band(0.3, 5.95, 17.7, 7.20, "#E8F5E9", "子代理层 · 方向求解")
|
|
64
|
-
band(0.3, 4.20, 17.7, 5.45, "#E8F5E9", "子代理层 · 交叉验证")
|
|
65
|
-
band(0.3, 1.50, 17.7, 4.00, "#F3E5F5", "收口 · 回写 · 数据层")
|
|
66
|
-
|
|
67
|
-
# ── left pipeline (x 1.0–8.0) ────────────────────────────────────────────
|
|
68
|
-
box(1.0, 9.60, 7.0, 0.75, "#BBDEFB")
|
|
69
|
-
txt(4.5, 9.98, "用户 · 主代理(助手 + 汇报者)\n自然语言 · 翻译需求/汇报/配置 · 不求解不调度", fs=11)
|
|
70
|
-
box(1.0, 7.85, 7.0, 0.95, "#FFE0B2")
|
|
71
|
-
txt(4.5, 8.33, "调度器(插件代码 · 概率驱动)\n唯一文件写者 · 按优先级调度 · 状态机 · 断点持久化", fs=11)
|
|
72
|
-
box(1.0, 6.10, 7.0, 0.95, "#C8E6C9")
|
|
73
|
-
txt(4.5, 6.58, "Explorer → Solver × N\n拆方向(全死路→重派生)· 逐方向多轮迭代", fs=11)
|
|
74
|
-
box(1.0, 4.35, 7.0, 0.95, "#C8E6C9")
|
|
75
|
-
txt(4.5, 4.83, "Verifier × ≥3(严苛审稿人)\n独立审查 → 辩论(交流群)→ 裁决(flat/forced)", fs=11)
|
|
76
|
-
box(1.0, 2.60, 7.0, 0.95, "#C8E6C9")
|
|
77
|
-
txt(4.5, 3.08, "概率 = 1 → 收口\n问题 solved · 命题 1/0 · 优先级 never", fs=11)
|
|
78
|
-
|
|
79
|
-
# ── right data boxes (x 10.2–17.0) ───────────────────────────────────────
|
|
80
|
-
box(10.2, 7.85, 6.8, 0.95, "#E1BEE7")
|
|
81
|
-
txt(13.6, 8.33, "qs/qs.json\n问题清单 + 解法(正确概率)", fs=10.5)
|
|
82
|
-
box(10.2, 6.10, 6.8, 0.95, "#E1BEE7")
|
|
83
|
-
txt(13.6, 6.58, "Propos/<分类>_Propos.json\n命题:布尔估计 · 证明/证伪列表", fs=10.5)
|
|
84
|
-
box(10.2, 4.35, 6.8, 0.95, "#E1BEE7")
|
|
85
|
-
txt(13.6, 4.83, "Verified/\n定论事实(布尔估计 0/1)", fs=10.5)
|
|
86
|
-
box(10.2, 2.90, 6.8, 0.70, "#E1BEE7")
|
|
87
|
-
txt(13.6, 3.25, "Verification_logs/ · Progress_Logs/\n辩论记录 · 进度报告", fs=10)
|
|
88
|
-
box(10.2, 1.60, 6.8, 0.70, "#E1BEE7")
|
|
89
|
-
txt(13.6, 1.95, "Reliable/\n可信参考文献(只读)", fs=10)
|
|
90
|
-
|
|
91
|
-
# ── pipeline arrows ──────────────────────────────────────────────────────
|
|
92
|
-
arrow(4.5, 9.60, 4.5, 8.80, "vibe_math_* 工具", ly=0.26)
|
|
93
|
-
arrow(4.5, 7.85, 4.5, 7.05, "① 按优先级取问题 · 派 Explorer / 每方向 Solver", ly=0.24)
|
|
94
|
-
arrow(4.5, 6.10, 4.5, 5.30, "④ 选 r(命题 / 命题+证明·证伪 / 问题+解法)派 ≥3 验证器", ly=0.24)
|
|
95
|
-
arrow(4.5, 4.35, 4.5, 3.55, "⑤ 裁决 0/1/中间 → ⑥ 概率=1 收口", ly=0.24)
|
|
96
|
-
arrow(0.55, 3.08, 0.55, 8.33, "读取 qs / 已解决回写", lx=0.85, ly=0)
|
|
97
|
-
|
|
98
|
-
# ── stage↔data links ─────────────────────────────────────────────────────
|
|
99
|
-
arrow(8.0, 8.33, 10.2, 8.33, "读写 qs.json", ly=0.28, style="<|-|>")
|
|
100
|
-
arrow(8.0, 6.58, 10.2, 6.58, "② 引理/解法写入(概率<1)", ly=0.28)
|
|
101
|
-
arrow(10.2, 6.30, 8.1, 4.90, "③ 命题/证明 → 验证", ly=0.24, rad=-0.15)
|
|
102
|
-
arrow(8.0, 4.83, 10.2, 4.83, "⑥ 定论 → 晋升/证伪", ly=0.28)
|
|
103
|
-
arrow(7.9, 4.40, 10.3, 3.60, "辩论记录", ly=0.24, rad=-0.1)
|
|
104
|
-
|
|
105
|
-
# ── feature strip ────────────────────────────────────────────────────────
|
|
106
|
-
feat = ["概率=1 自动收口(solved / 1|0)", "never = 永不调度 · 不阻塞终止",
|
|
107
|
-
"断点续跑(resume · 进程纪元)", "reportMode file|push|both · 按项目隔离"]
|
|
108
|
-
fx = [0.6, 5.0, 9.4, 13.8]
|
|
109
|
-
for x0, s in zip(fx, feat):
|
|
110
|
-
box(x0, 0.40, 3.9, 0.72, "#ECEFF1", lw=1.2, rounding=0.2)
|
|
111
|
-
txt(x0 + 1.95, 0.76, s, fs=9.5)
|
|
112
|
-
|
|
113
|
-
plt.savefig(OUT, dpi=170, bbox_inches="tight", facecolor="white")
|
|
114
|
-
print("saved " + OUT)
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""Generate the Vibe Math V2 framework diagram (架构图) as a PNG poster.
|
|
3
|
+
Output: 示例图/框架图-v2.png (run from anywhere: python docs/generate_framework_diagram_v2.py)
|
|
4
|
+
Layout: left = pipeline (交互/调度/子代理·方向/子代理·验证/收口), right = 数据层 aligned by stage.
|
|
5
|
+
"""
|
|
6
|
+
import matplotlib
|
|
7
|
+
matplotlib.use("Agg")
|
|
8
|
+
import os
|
|
9
|
+
import matplotlib.pyplot as plt
|
|
10
|
+
from matplotlib.patches import FancyBboxPatch, Rectangle, FancyArrowPatch
|
|
11
|
+
|
|
12
|
+
plt.rcParams["font.sans-serif"] = ["Microsoft YaHei", "SimHei"]
|
|
13
|
+
plt.rcParams["axes.unicode_minus"] = False
|
|
14
|
+
|
|
15
|
+
BASE = os.path.dirname(os.path.abspath(__file__))
|
|
16
|
+
ROOT = os.path.dirname(BASE)
|
|
17
|
+
OUT = os.path.join(ROOT, "示例图", "框架图-v2.png")
|
|
18
|
+
|
|
19
|
+
fig = plt.figure(figsize=(18, 11.5))
|
|
20
|
+
ax = fig.add_axes([0, 0, 1, 1])
|
|
21
|
+
ax.axis("off")
|
|
22
|
+
ax.set_xlim(0, 18)
|
|
23
|
+
ax.set_ylim(0, 11.5)
|
|
24
|
+
|
|
25
|
+
def box(x0, y0, w, h, fc, ec="#37474F", lw=1.6, rounding=0.16, z=3):
|
|
26
|
+
ax.add_patch(FancyBboxPatch((x0, y0), w, h,
|
|
27
|
+
boxstyle=f"round,pad=0.10,rounding_size={rounding}",
|
|
28
|
+
facecolor=fc, edgecolor=ec, linewidth=lw, zorder=z))
|
|
29
|
+
|
|
30
|
+
def txt(cx, cy, s, fs=11, color="#263238", weight="normal", z=5):
|
|
31
|
+
ax.text(cx, cy, s, ha="center", va="center", fontsize=fs, color=color,
|
|
32
|
+
fontweight=weight, linespacing=1.45, zorder=z)
|
|
33
|
+
|
|
34
|
+
def arrow(x1, y1, x2, y2, label=None, lx=0, ly=0.24, ls=9.5, rad=0.0,
|
|
35
|
+
style="->", lw=1.8, color="#455A64", dashed=False, z=4):
|
|
36
|
+
ax.add_patch(FancyArrowPatch((x1, y1), (x2, y2), arrowstyle=style,
|
|
37
|
+
mutation_scale=17, linewidth=lw, color=color, zorder=z,
|
|
38
|
+
connectionstyle=f"arc3,rad={rad}",
|
|
39
|
+
linestyle="--" if dashed else "-"))
|
|
40
|
+
if label:
|
|
41
|
+
ax.text((x1 + x2) / 2 + lx, (y1 + y2) / 2 + ly, label, fontsize=ls,
|
|
42
|
+
ha="center", va="center", color="#333",
|
|
43
|
+
bbox=dict(fc="white", ec="none", alpha=0.85, pad=1.0), zorder=6)
|
|
44
|
+
|
|
45
|
+
def band(x0, y0, x1, y1, fc, title, tc="#607D8B"):
|
|
46
|
+
ax.add_patch(Rectangle((x0, y0), x1 - x0, y1 - y0, facecolor=fc,
|
|
47
|
+
edgecolor="none", alpha=0.5, zorder=1))
|
|
48
|
+
# title pinned to the band's top-left corner, drawn ABOVE the boxes, with a
|
|
49
|
+
# white backing so it is never obscured by the rectangles
|
|
50
|
+
ax.text(x0 + 0.35, y1 - 0.12, title, fontsize=11.5, color=tc,
|
|
51
|
+
fontweight="bold", ha="left", va="top", zorder=6,
|
|
52
|
+
bbox=dict(fc="white", ec="none", alpha=0.85, pad=1.2))
|
|
53
|
+
|
|
54
|
+
# ── title ────────────────────────────────────────────────────────────────
|
|
55
|
+
ax.text(9, 11.12, "Vibe Math V2 — 多代理数学问题求解与验证框架(概率驱动)", fontsize=21,
|
|
56
|
+
ha="center", va="center", color="#1A237E", fontweight="bold")
|
|
57
|
+
ax.text(9, 10.66, "qs.json 问题清单 + Propos/ 命题库 · 按正确概率/价值调度 · explorer → 逐方向 solver → 多验证器辩论裁决",
|
|
58
|
+
fontsize=10.5, ha="center", va="center", color="#555")
|
|
59
|
+
|
|
60
|
+
# ── layer bands ──────────────────────────────────────────────────────────
|
|
61
|
+
band(0.3, 9.45, 17.7, 10.45, "#E3F2FD", "交互层")
|
|
62
|
+
band(0.3, 7.70, 17.7, 8.95, "#FFF8E1", "调度层 · 插件代码")
|
|
63
|
+
band(0.3, 5.95, 17.7, 7.20, "#E8F5E9", "子代理层 · 方向求解")
|
|
64
|
+
band(0.3, 4.20, 17.7, 5.45, "#E8F5E9", "子代理层 · 交叉验证")
|
|
65
|
+
band(0.3, 1.50, 17.7, 4.00, "#F3E5F5", "收口 · 回写 · 数据层")
|
|
66
|
+
|
|
67
|
+
# ── left pipeline (x 1.0–8.0) ────────────────────────────────────────────
|
|
68
|
+
box(1.0, 9.60, 7.0, 0.75, "#BBDEFB")
|
|
69
|
+
txt(4.5, 9.98, "用户 · 主代理(助手 + 汇报者)\n自然语言 · 翻译需求/汇报/配置 · 不求解不调度", fs=11)
|
|
70
|
+
box(1.0, 7.85, 7.0, 0.95, "#FFE0B2")
|
|
71
|
+
txt(4.5, 8.33, "调度器(插件代码 · 概率驱动)\n唯一文件写者 · 按优先级调度 · 状态机 · 断点持久化", fs=11)
|
|
72
|
+
box(1.0, 6.10, 7.0, 0.95, "#C8E6C9")
|
|
73
|
+
txt(4.5, 6.58, "Explorer → Solver × N\n拆方向(全死路→重派生)· 逐方向多轮迭代", fs=11)
|
|
74
|
+
box(1.0, 4.35, 7.0, 0.95, "#C8E6C9")
|
|
75
|
+
txt(4.5, 4.83, "Verifier × ≥3(严苛审稿人)\n独立审查 → 辩论(交流群)→ 裁决(flat/forced)", fs=11)
|
|
76
|
+
box(1.0, 2.60, 7.0, 0.95, "#C8E6C9")
|
|
77
|
+
txt(4.5, 3.08, "概率 = 1 → 收口\n问题 solved · 命题 1/0 · 优先级 never", fs=11)
|
|
78
|
+
|
|
79
|
+
# ── right data boxes (x 10.2–17.0) ───────────────────────────────────────
|
|
80
|
+
box(10.2, 7.85, 6.8, 0.95, "#E1BEE7")
|
|
81
|
+
txt(13.6, 8.33, "qs/qs.json\n问题清单 + 解法(正确概率)", fs=10.5)
|
|
82
|
+
box(10.2, 6.10, 6.8, 0.95, "#E1BEE7")
|
|
83
|
+
txt(13.6, 6.58, "Propos/<分类>_Propos.json\n命题:布尔估计 · 证明/证伪列表", fs=10.5)
|
|
84
|
+
box(10.2, 4.35, 6.8, 0.95, "#E1BEE7")
|
|
85
|
+
txt(13.6, 4.83, "Verified/\n定论事实(布尔估计 0/1)", fs=10.5)
|
|
86
|
+
box(10.2, 2.90, 6.8, 0.70, "#E1BEE7")
|
|
87
|
+
txt(13.6, 3.25, "Verification_logs/ · Progress_Logs/\n辩论记录 · 进度报告", fs=10)
|
|
88
|
+
box(10.2, 1.60, 6.8, 0.70, "#E1BEE7")
|
|
89
|
+
txt(13.6, 1.95, "Reliable/\n可信参考文献(只读)", fs=10)
|
|
90
|
+
|
|
91
|
+
# ── pipeline arrows ──────────────────────────────────────────────────────
|
|
92
|
+
arrow(4.5, 9.60, 4.5, 8.80, "vibe_math_* 工具", ly=0.26)
|
|
93
|
+
arrow(4.5, 7.85, 4.5, 7.05, "① 按优先级取问题 · 派 Explorer / 每方向 Solver", ly=0.24)
|
|
94
|
+
arrow(4.5, 6.10, 4.5, 5.30, "④ 选 r(命题 / 命题+证明·证伪 / 问题+解法)派 ≥3 验证器", ly=0.24)
|
|
95
|
+
arrow(4.5, 4.35, 4.5, 3.55, "⑤ 裁决 0/1/中间 → ⑥ 概率=1 收口", ly=0.24)
|
|
96
|
+
arrow(0.55, 3.08, 0.55, 8.33, "读取 qs / 已解决回写", lx=0.85, ly=0)
|
|
97
|
+
|
|
98
|
+
# ── stage↔data links ─────────────────────────────────────────────────────
|
|
99
|
+
arrow(8.0, 8.33, 10.2, 8.33, "读写 qs.json", ly=0.28, style="<|-|>")
|
|
100
|
+
arrow(8.0, 6.58, 10.2, 6.58, "② 引理/解法写入(概率<1)", ly=0.28)
|
|
101
|
+
arrow(10.2, 6.30, 8.1, 4.90, "③ 命题/证明 → 验证", ly=0.24, rad=-0.15)
|
|
102
|
+
arrow(8.0, 4.83, 10.2, 4.83, "⑥ 定论 → 晋升/证伪", ly=0.28)
|
|
103
|
+
arrow(7.9, 4.40, 10.3, 3.60, "辩论记录", ly=0.24, rad=-0.1)
|
|
104
|
+
|
|
105
|
+
# ── feature strip ────────────────────────────────────────────────────────
|
|
106
|
+
feat = ["概率=1 自动收口(solved / 1|0)", "never = 永不调度 · 不阻塞终止",
|
|
107
|
+
"断点续跑(resume · 进程纪元)", "reportMode file|push|both · 按项目隔离"]
|
|
108
|
+
fx = [0.6, 5.0, 9.4, 13.8]
|
|
109
|
+
for x0, s in zip(fx, feat):
|
|
110
|
+
box(x0, 0.40, 3.9, 0.72, "#ECEFF1", lw=1.2, rounding=0.2)
|
|
111
|
+
txt(x0 + 1.95, 0.76, s, fs=9.5)
|
|
112
|
+
|
|
113
|
+
plt.savefig(OUT, dpi=170, bbox_inches="tight", facecolor="white")
|
|
114
|
+
print("saved " + OUT)
|
|
@@ -1,127 +1,127 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
"""Generate the Vibe Math V3 framework diagram (架构图) as a PNG poster.
|
|
3
|
-
Output: 示例图/框架图-v3.png (run from anywhere: python docs/generate_framework_diagram_v3.py)
|
|
4
|
-
Layout: left = pipeline (交互/调度·规划/方向求解/交叉验证/方法沉淀/收口), right = md 知识库数据层.
|
|
5
|
-
"""
|
|
6
|
-
import matplotlib
|
|
7
|
-
matplotlib.use("Agg")
|
|
8
|
-
import os
|
|
9
|
-
import matplotlib.pyplot as plt
|
|
10
|
-
from matplotlib.patches import FancyBboxPatch, Rectangle, FancyArrowPatch
|
|
11
|
-
|
|
12
|
-
plt.rcParams["font.sans-serif"] = ["Microsoft YaHei", "SimHei"]
|
|
13
|
-
plt.rcParams["axes.unicode_minus"] = False
|
|
14
|
-
|
|
15
|
-
BASE = os.path.dirname(os.path.abspath(__file__))
|
|
16
|
-
ROOT = os.path.dirname(BASE)
|
|
17
|
-
OUT = os.path.join(ROOT, "示例图", "框架图-v3.png")
|
|
18
|
-
|
|
19
|
-
fig = plt.figure(figsize=(18, 12))
|
|
20
|
-
ax = fig.add_axes([0, 0, 1, 1])
|
|
21
|
-
ax.axis("off")
|
|
22
|
-
ax.set_xlim(0, 18)
|
|
23
|
-
ax.set_ylim(0, 12)
|
|
24
|
-
|
|
25
|
-
def box(x0, y0, w, h, fc, ec="#37474F", lw=1.6, rounding=0.16, z=3):
|
|
26
|
-
ax.add_patch(FancyBboxPatch((x0, y0), w, h,
|
|
27
|
-
boxstyle=f"round,pad=0.10,rounding_size={rounding}",
|
|
28
|
-
facecolor=fc, edgecolor=ec, linewidth=lw, zorder=z))
|
|
29
|
-
|
|
30
|
-
def txt(cx, cy, s, fs=11, color="#263238", weight="normal", z=5):
|
|
31
|
-
ax.text(cx, cy, s, ha="center", va="center", fontsize=fs, color=color,
|
|
32
|
-
fontweight=weight, linespacing=1.45, zorder=z)
|
|
33
|
-
|
|
34
|
-
def arrow(x1, y1, x2, y2, label=None, lx=0, ly=0.24, ls=9.5, rad=0.0,
|
|
35
|
-
style="->", lw=1.8, color="#455A64", dashed=False, z=4):
|
|
36
|
-
ax.add_patch(FancyArrowPatch((x1, y1), (x2, y2), arrowstyle=style,
|
|
37
|
-
mutation_scale=17, linewidth=lw, color=color, zorder=z,
|
|
38
|
-
connectionstyle=f"arc3,rad={rad}",
|
|
39
|
-
linestyle="--" if dashed else "-"))
|
|
40
|
-
if label:
|
|
41
|
-
ax.text((x1 + x2) / 2 + lx, (y1 + y2) / 2 + ly, label, fontsize=ls,
|
|
42
|
-
ha="center", va="center", color="#333",
|
|
43
|
-
bbox=dict(fc="white", ec="none", alpha=0.85, pad=1.0), zorder=6)
|
|
44
|
-
|
|
45
|
-
def band(x0, y0, x1, y1, fc, title, tc="#607D8B"):
|
|
46
|
-
ax.add_patch(Rectangle((x0, y0), x1 - x0, y1 - y0, facecolor=fc,
|
|
47
|
-
edgecolor="none", alpha=0.5, zorder=1))
|
|
48
|
-
ax.text(x0 + 0.35, y1 - 0.12, title, fontsize=11.5, color=tc,
|
|
49
|
-
fontweight="bold", ha="left", va="top", zorder=6,
|
|
50
|
-
bbox=dict(fc="white", ec="none", alpha=0.85, pad=1.2))
|
|
51
|
-
|
|
52
|
-
# ── title ────────────────────────────────────────────────────────────────
|
|
53
|
-
ax.text(9, 11.70, "Vibe Math V3 — 多代理数学研究与验证框架(论文式 md + 规划代理 + 方法库)", fontsize=20,
|
|
54
|
-
ha="center", va="center", color="#1A237E", fontweight="bold")
|
|
55
|
-
ax.text(9, 11.28, "Markdown 知识库(软规范锚点 + 自由叙述) · 规划代理自主制定 N 步计划 · 方法库沉淀理论/框架/工具/方法/思想",
|
|
56
|
-
fontsize=10.5, ha="center", va="center", color="#555")
|
|
57
|
-
|
|
58
|
-
# ── layer bands ──────────────────────────────────────────────────────────
|
|
59
|
-
band(0.3, 10.20, 17.7, 11.05, "#E3F2FD", "交互层")
|
|
60
|
-
band(0.3, 8.45, 17.7, 9.80, "#FFF8E1", "调度层 · 插件代码 + 规划代理")
|
|
61
|
-
band(0.3, 6.70, 17.7, 8.00, "#E8F5E9", "子代理层 · 方向求解")
|
|
62
|
-
band(0.3, 5.00, 17.7, 6.30, "#E8F5E9", "子代理层 · 交叉验证")
|
|
63
|
-
band(0.3, 3.30, 17.7, 4.60, "#E8F5E9", "子代理层 · 方法沉淀")
|
|
64
|
-
band(0.3, 1.40, 17.7, 3.10, "#F3E5F5", "收口 · 回写 · 数据层(md 知识库)")
|
|
65
|
-
|
|
66
|
-
# ── left pipeline (x 1.0–8.0) ────────────────────────────────────────────
|
|
67
|
-
box(1.0, 10.32, 7.0, 0.72, "#BBDEFB")
|
|
68
|
-
txt(4.5, 10.68, "用户 · 主代理(助手 + 汇报者)\n自然语言 · 翻译需求/汇报/配置 · 不求解不调度", fs=11)
|
|
69
|
-
# 调度层:调度器 + 规划代理(并排,中间留通道放「状态简报 ⇄ 计划 JSON」)
|
|
70
|
-
box(1.0, 8.58, 3.0, 1.08, "#FFE0B2")
|
|
71
|
-
txt(2.5, 9.12, "调度器(插件代码)\n唯一物理写者 · 锚点索引/结构性移动\n守硬约束(并发/幂等/已验证不再调度)", fs=10.5)
|
|
72
|
-
box(5.9, 8.58, 2.1, 1.08, "#FFE0B2")
|
|
73
|
-
txt(6.95, 9.12, "规划代理 Planner\n读状态简报 → 一次安排 N 步计划", fs=10.5)
|
|
74
|
-
box(1.0, 6.82, 7.0, 1.06, "#C8E6C9")
|
|
75
|
-
txt(4.5, 7.35, "Explorer → Solver × N\n拆方向(全死路→重派生,旧方向日志归档)· 逐方向多轮迭代 · 上报 methods_used/new_inventions", fs=11)
|
|
76
|
-
box(1.0, 5.12, 7.0, 1.06, "#C8E6C9")
|
|
77
|
-
txt(4.5, 5.65, "Verifier × ≥3(严苛审稿人)\n独立审查 → 辩论(交流群)→ 近共识裁决(同侧均值≥0.85/≤0.15 取均值)", fs=11)
|
|
78
|
-
box(1.0, 3.42, 7.0, 1.06, "#C8E6C9")
|
|
79
|
-
txt(4.5, 3.95, "Method Keeper(方法整理代理)\n提炼新方法卡 · 合并碎片 · 完善体系(上级体系/子方法)· 维护可信断言", fs=11)
|
|
80
|
-
box(1.0, 1.52, 7.0, 1.06, "#C8E6C9")
|
|
81
|
-
txt(4.5, 2.05, "收口 · 可信铁律\n概率=1 → Verified/ 卡(只读绝对可信)· 仅 Verified/ 与验证判真/假可信", fs=11)
|
|
82
|
-
|
|
83
|
-
# ── right md knowledge base (x 10.4–17.0) ─────────────────────────────────
|
|
84
|
-
box(10.4, 8.70, 6.6, 0.86, "#E1BEE7")
|
|
85
|
-
txt(13.7, 9.13, "Problems/(问题清单 · 每问题一个 md)\n陈述/状态/优先级/依赖/被依赖/来源·动机/计划/解法候选", fs=10)
|
|
86
|
-
box(10.4, 6.94, 6.6, 0.86, "#E1BEE7")
|
|
87
|
-
txt(13.7, 7.37, "Progress/(研究日志 · 每问题一个 md)\n方向×轮次叙事 · 旧方向归档「已归档方向」", fs=10)
|
|
88
|
-
box(10.4, 5.24, 6.6, 0.86, "#E1BEE7")
|
|
89
|
-
txt(13.7, 5.67, "Propos/(命题库 · 每命题一个 md)\n陈述/概率/证明·证伪尝试/依赖", fs=10)
|
|
90
|
-
box(10.4, 3.54, 6.6, 0.86, "#E1BEE7")
|
|
91
|
-
txt(13.7, 3.97, "Methods/(通用理论发明库)+ 全局 VibeMath/Methods/\n理论体系·框架·工具·方法·思想 · 应用记录/改进历史/可信断言", fs=10)
|
|
92
|
-
box(10.4, 2.10, 3.2, 0.82, "#E1BEE7")
|
|
93
|
-
txt(12.0, 2.51, "Verified/\n绝对可信(只读)", fs=10)
|
|
94
|
-
box(13.9, 2.10, 3.1, 0.82, "#E1BEE7")
|
|
95
|
-
txt(15.45, 2.51, "Logs/ · State/\n辩论/计划审计 · 私有状态", fs=10)
|
|
96
|
-
|
|
97
|
-
# ── pipeline arrows ──────────────────────────────────────────────────────
|
|
98
|
-
# 主代理 → 调度器(斜向调度器顶部中心)
|
|
99
|
-
arrow(4.0, 10.32, 2.5, 9.66, "vibe_math_* 工具", ly=0.20, ls=9, rad=0.0)
|
|
100
|
-
# 调度器 → 方向求解(竖直,经左列中心)
|
|
101
|
-
arrow(4.5, 8.58, 4.5, 7.88, "① 计划校验后派 Explorer / 每方向 Solver", ly=0.22, ls=9)
|
|
102
|
-
arrow(4.5, 6.82, 4.5, 6.18, "② 选 r(命题 / 命题+证明·证伪 / 问题+解法)派 ≥3 验证器", ly=0.22, ls=9)
|
|
103
|
-
arrow(4.5, 5.12, 4.5, 4.48, "③ 裁决 → 近共识收口", ly=0.22, ls=9)
|
|
104
|
-
arrow(4.5, 3.42, 4.5, 2.58, "④ 概率=1 → Verified/ 卡", ly=0.22, ls=9)
|
|
105
|
-
# 调度器 ↔ 规划代理:通道内错开两条箭头(状态简报 →规划代理;计划 JSON →调度器),label 放箭头下方避免贴 band 顶
|
|
106
|
-
arrow(4.0, 9.34, 5.9, 9.34, "状态简报", ly=-0.20, ls=9)
|
|
107
|
-
arrow(5.9, 8.78, 4.0, 8.78, "计划 JSON", ly=-0.20, ls=9)
|
|
108
|
-
|
|
109
|
-
# ── stage↔data links ─────────────────────────────────────────────────────
|
|
110
|
-
arrow(8.0, 9.13, 10.4, 9.13, "⑤ 注册问题/后生问题/计划回写", ly=0.26, style="<|-|>", ls=9)
|
|
111
|
-
arrow(8.0, 7.37, 10.4, 7.37, "⑥ 引理/子路线/解法写入(概率<1)", ly=0.26, ls=9)
|
|
112
|
-
arrow(10.4, 5.42, 8.1, 5.65, "⑦ 命题/证明 → 验证", ly=0.26, ls=9, rad=-0.15)
|
|
113
|
-
arrow(8.0, 5.65, 10.4, 5.65, "", lw=0)
|
|
114
|
-
arrow(8.0, 3.95, 10.4, 3.97, "⑧ methods_used/new_inventions → 方法库", ly=0.26, ls=9)
|
|
115
|
-
arrow(8.0, 2.51, 10.4, 2.51, "⑨ 定论 → Verified/ 卡(只读)", ly=0.26, ls=9, style="<|-|>")
|
|
116
|
-
|
|
117
|
-
# ── feature strip ────────────────────────────────────────────────────────
|
|
118
|
-
feat = ["仅 Verified/ 与验证判真/假绝对可信", "软规范锚点 + 自由叙述(调度器只解析锚点)",
|
|
119
|
-
"规划失败自动回退启发式调度", "断点续跑(md 即叙事断点 + 进程纪元)",
|
|
120
|
-
"多会话隔离 + 项目锁"]
|
|
121
|
-
fx = [0.5, 4.0, 7.5, 11.0, 14.5]
|
|
122
|
-
for x0, s in zip(fx, feat):
|
|
123
|
-
box(x0, 0.32, 3.4, 0.68, "#ECEFF1", lw=1.2, rounding=0.2)
|
|
124
|
-
txt(x0 + 1.7, 0.66, s, fs=9)
|
|
125
|
-
|
|
126
|
-
plt.savefig(OUT, dpi=170, bbox_inches="tight", facecolor="white")
|
|
127
|
-
print("saved " + OUT)
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""Generate the Vibe Math V3 framework diagram (架构图) as a PNG poster.
|
|
3
|
+
Output: 示例图/框架图-v3.png (run from anywhere: python docs/generate_framework_diagram_v3.py)
|
|
4
|
+
Layout: left = pipeline (交互/调度·规划/方向求解/交叉验证/方法沉淀/收口), right = md 知识库数据层.
|
|
5
|
+
"""
|
|
6
|
+
import matplotlib
|
|
7
|
+
matplotlib.use("Agg")
|
|
8
|
+
import os
|
|
9
|
+
import matplotlib.pyplot as plt
|
|
10
|
+
from matplotlib.patches import FancyBboxPatch, Rectangle, FancyArrowPatch
|
|
11
|
+
|
|
12
|
+
plt.rcParams["font.sans-serif"] = ["Microsoft YaHei", "SimHei"]
|
|
13
|
+
plt.rcParams["axes.unicode_minus"] = False
|
|
14
|
+
|
|
15
|
+
BASE = os.path.dirname(os.path.abspath(__file__))
|
|
16
|
+
ROOT = os.path.dirname(BASE)
|
|
17
|
+
OUT = os.path.join(ROOT, "示例图", "框架图-v3.png")
|
|
18
|
+
|
|
19
|
+
fig = plt.figure(figsize=(18, 12))
|
|
20
|
+
ax = fig.add_axes([0, 0, 1, 1])
|
|
21
|
+
ax.axis("off")
|
|
22
|
+
ax.set_xlim(0, 18)
|
|
23
|
+
ax.set_ylim(0, 12)
|
|
24
|
+
|
|
25
|
+
def box(x0, y0, w, h, fc, ec="#37474F", lw=1.6, rounding=0.16, z=3):
|
|
26
|
+
ax.add_patch(FancyBboxPatch((x0, y0), w, h,
|
|
27
|
+
boxstyle=f"round,pad=0.10,rounding_size={rounding}",
|
|
28
|
+
facecolor=fc, edgecolor=ec, linewidth=lw, zorder=z))
|
|
29
|
+
|
|
30
|
+
def txt(cx, cy, s, fs=11, color="#263238", weight="normal", z=5):
|
|
31
|
+
ax.text(cx, cy, s, ha="center", va="center", fontsize=fs, color=color,
|
|
32
|
+
fontweight=weight, linespacing=1.45, zorder=z)
|
|
33
|
+
|
|
34
|
+
def arrow(x1, y1, x2, y2, label=None, lx=0, ly=0.24, ls=9.5, rad=0.0,
|
|
35
|
+
style="->", lw=1.8, color="#455A64", dashed=False, z=4):
|
|
36
|
+
ax.add_patch(FancyArrowPatch((x1, y1), (x2, y2), arrowstyle=style,
|
|
37
|
+
mutation_scale=17, linewidth=lw, color=color, zorder=z,
|
|
38
|
+
connectionstyle=f"arc3,rad={rad}",
|
|
39
|
+
linestyle="--" if dashed else "-"))
|
|
40
|
+
if label:
|
|
41
|
+
ax.text((x1 + x2) / 2 + lx, (y1 + y2) / 2 + ly, label, fontsize=ls,
|
|
42
|
+
ha="center", va="center", color="#333",
|
|
43
|
+
bbox=dict(fc="white", ec="none", alpha=0.85, pad=1.0), zorder=6)
|
|
44
|
+
|
|
45
|
+
def band(x0, y0, x1, y1, fc, title, tc="#607D8B"):
|
|
46
|
+
ax.add_patch(Rectangle((x0, y0), x1 - x0, y1 - y0, facecolor=fc,
|
|
47
|
+
edgecolor="none", alpha=0.5, zorder=1))
|
|
48
|
+
ax.text(x0 + 0.35, y1 - 0.12, title, fontsize=11.5, color=tc,
|
|
49
|
+
fontweight="bold", ha="left", va="top", zorder=6,
|
|
50
|
+
bbox=dict(fc="white", ec="none", alpha=0.85, pad=1.2))
|
|
51
|
+
|
|
52
|
+
# ── title ────────────────────────────────────────────────────────────────
|
|
53
|
+
ax.text(9, 11.70, "Vibe Math V3 — 多代理数学研究与验证框架(论文式 md + 规划代理 + 方法库)", fontsize=20,
|
|
54
|
+
ha="center", va="center", color="#1A237E", fontweight="bold")
|
|
55
|
+
ax.text(9, 11.28, "Markdown 知识库(软规范锚点 + 自由叙述) · 规划代理自主制定 N 步计划 · 方法库沉淀理论/框架/工具/方法/思想",
|
|
56
|
+
fontsize=10.5, ha="center", va="center", color="#555")
|
|
57
|
+
|
|
58
|
+
# ── layer bands ──────────────────────────────────────────────────────────
|
|
59
|
+
band(0.3, 10.20, 17.7, 11.05, "#E3F2FD", "交互层")
|
|
60
|
+
band(0.3, 8.45, 17.7, 9.80, "#FFF8E1", "调度层 · 插件代码 + 规划代理")
|
|
61
|
+
band(0.3, 6.70, 17.7, 8.00, "#E8F5E9", "子代理层 · 方向求解")
|
|
62
|
+
band(0.3, 5.00, 17.7, 6.30, "#E8F5E9", "子代理层 · 交叉验证")
|
|
63
|
+
band(0.3, 3.30, 17.7, 4.60, "#E8F5E9", "子代理层 · 方法沉淀")
|
|
64
|
+
band(0.3, 1.40, 17.7, 3.10, "#F3E5F5", "收口 · 回写 · 数据层(md 知识库)")
|
|
65
|
+
|
|
66
|
+
# ── left pipeline (x 1.0–8.0) ────────────────────────────────────────────
|
|
67
|
+
box(1.0, 10.32, 7.0, 0.72, "#BBDEFB")
|
|
68
|
+
txt(4.5, 10.68, "用户 · 主代理(助手 + 汇报者)\n自然语言 · 翻译需求/汇报/配置 · 不求解不调度", fs=11)
|
|
69
|
+
# 调度层:调度器 + 规划代理(并排,中间留通道放「状态简报 ⇄ 计划 JSON」)
|
|
70
|
+
box(1.0, 8.58, 3.0, 1.08, "#FFE0B2")
|
|
71
|
+
txt(2.5, 9.12, "调度器(插件代码)\n唯一物理写者 · 锚点索引/结构性移动\n守硬约束(并发/幂等/已验证不再调度)", fs=10.5)
|
|
72
|
+
box(5.9, 8.58, 2.1, 1.08, "#FFE0B2")
|
|
73
|
+
txt(6.95, 9.12, "规划代理 Planner\n读状态简报 → 一次安排 N 步计划", fs=10.5)
|
|
74
|
+
box(1.0, 6.82, 7.0, 1.06, "#C8E6C9")
|
|
75
|
+
txt(4.5, 7.35, "Explorer → Solver × N\n拆方向(全死路→重派生,旧方向日志归档)· 逐方向多轮迭代 · 上报 methods_used/new_inventions", fs=11)
|
|
76
|
+
box(1.0, 5.12, 7.0, 1.06, "#C8E6C9")
|
|
77
|
+
txt(4.5, 5.65, "Verifier × ≥3(严苛审稿人)\n独立审查 → 辩论(交流群)→ 近共识裁决(同侧均值≥0.85/≤0.15 取均值)", fs=11)
|
|
78
|
+
box(1.0, 3.42, 7.0, 1.06, "#C8E6C9")
|
|
79
|
+
txt(4.5, 3.95, "Method Keeper(方法整理代理)\n提炼新方法卡 · 合并碎片 · 完善体系(上级体系/子方法)· 维护可信断言", fs=11)
|
|
80
|
+
box(1.0, 1.52, 7.0, 1.06, "#C8E6C9")
|
|
81
|
+
txt(4.5, 2.05, "收口 · 可信铁律\n概率=1 → Verified/ 卡(只读绝对可信)· 仅 Verified/ 与验证判真/假可信", fs=11)
|
|
82
|
+
|
|
83
|
+
# ── right md knowledge base (x 10.4–17.0) ─────────────────────────────────
|
|
84
|
+
box(10.4, 8.70, 6.6, 0.86, "#E1BEE7")
|
|
85
|
+
txt(13.7, 9.13, "Problems/(问题清单 · 每问题一个 md)\n陈述/状态/优先级/依赖/被依赖/来源·动机/计划/解法候选", fs=10)
|
|
86
|
+
box(10.4, 6.94, 6.6, 0.86, "#E1BEE7")
|
|
87
|
+
txt(13.7, 7.37, "Progress/(研究日志 · 每问题一个 md)\n方向×轮次叙事 · 旧方向归档「已归档方向」", fs=10)
|
|
88
|
+
box(10.4, 5.24, 6.6, 0.86, "#E1BEE7")
|
|
89
|
+
txt(13.7, 5.67, "Propos/(命题库 · 每命题一个 md)\n陈述/概率/证明·证伪尝试/依赖", fs=10)
|
|
90
|
+
box(10.4, 3.54, 6.6, 0.86, "#E1BEE7")
|
|
91
|
+
txt(13.7, 3.97, "Methods/(通用理论发明库)+ 全局 VibeMath/Methods/\n理论体系·框架·工具·方法·思想 · 应用记录/改进历史/可信断言", fs=10)
|
|
92
|
+
box(10.4, 2.10, 3.2, 0.82, "#E1BEE7")
|
|
93
|
+
txt(12.0, 2.51, "Verified/\n绝对可信(只读)", fs=10)
|
|
94
|
+
box(13.9, 2.10, 3.1, 0.82, "#E1BEE7")
|
|
95
|
+
txt(15.45, 2.51, "Logs/ · State/\n辩论/计划审计 · 私有状态", fs=10)
|
|
96
|
+
|
|
97
|
+
# ── pipeline arrows ──────────────────────────────────────────────────────
|
|
98
|
+
# 主代理 → 调度器(斜向调度器顶部中心)
|
|
99
|
+
arrow(4.0, 10.32, 2.5, 9.66, "vibe_math_* 工具", ly=0.20, ls=9, rad=0.0)
|
|
100
|
+
# 调度器 → 方向求解(竖直,经左列中心)
|
|
101
|
+
arrow(4.5, 8.58, 4.5, 7.88, "① 计划校验后派 Explorer / 每方向 Solver", ly=0.22, ls=9)
|
|
102
|
+
arrow(4.5, 6.82, 4.5, 6.18, "② 选 r(命题 / 命题+证明·证伪 / 问题+解法)派 ≥3 验证器", ly=0.22, ls=9)
|
|
103
|
+
arrow(4.5, 5.12, 4.5, 4.48, "③ 裁决 → 近共识收口", ly=0.22, ls=9)
|
|
104
|
+
arrow(4.5, 3.42, 4.5, 2.58, "④ 概率=1 → Verified/ 卡", ly=0.22, ls=9)
|
|
105
|
+
# 调度器 ↔ 规划代理:通道内错开两条箭头(状态简报 →规划代理;计划 JSON →调度器),label 放箭头下方避免贴 band 顶
|
|
106
|
+
arrow(4.0, 9.34, 5.9, 9.34, "状态简报", ly=-0.20, ls=9)
|
|
107
|
+
arrow(5.9, 8.78, 4.0, 8.78, "计划 JSON", ly=-0.20, ls=9)
|
|
108
|
+
|
|
109
|
+
# ── stage↔data links ─────────────────────────────────────────────────────
|
|
110
|
+
arrow(8.0, 9.13, 10.4, 9.13, "⑤ 注册问题/后生问题/计划回写", ly=0.26, style="<|-|>", ls=9)
|
|
111
|
+
arrow(8.0, 7.37, 10.4, 7.37, "⑥ 引理/子路线/解法写入(概率<1)", ly=0.26, ls=9)
|
|
112
|
+
arrow(10.4, 5.42, 8.1, 5.65, "⑦ 命题/证明 → 验证", ly=0.26, ls=9, rad=-0.15)
|
|
113
|
+
arrow(8.0, 5.65, 10.4, 5.65, "", lw=0)
|
|
114
|
+
arrow(8.0, 3.95, 10.4, 3.97, "⑧ methods_used/new_inventions → 方法库", ly=0.26, ls=9)
|
|
115
|
+
arrow(8.0, 2.51, 10.4, 2.51, "⑨ 定论 → Verified/ 卡(只读)", ly=0.26, ls=9, style="<|-|>")
|
|
116
|
+
|
|
117
|
+
# ── feature strip ────────────────────────────────────────────────────────
|
|
118
|
+
feat = ["仅 Verified/ 与验证判真/假绝对可信", "软规范锚点 + 自由叙述(调度器只解析锚点)",
|
|
119
|
+
"规划失败自动回退启发式调度", "断点续跑(md 即叙事断点 + 进程纪元)",
|
|
120
|
+
"多会话隔离 + 项目锁"]
|
|
121
|
+
fx = [0.5, 4.0, 7.5, 11.0, 14.5]
|
|
122
|
+
for x0, s in zip(fx, feat):
|
|
123
|
+
box(x0, 0.32, 3.4, 0.68, "#ECEFF1", lw=1.2, rounding=0.2)
|
|
124
|
+
txt(x0 + 1.7, 0.66, s, fs=9)
|
|
125
|
+
|
|
126
|
+
plt.savefig(OUT, dpi=170, bbox_inches="tight", facecolor="white")
|
|
127
|
+
print("saved " + OUT)
|