dsh-vibe-math 2.0.22 → 2.1.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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Vibe Mathematics — 多代理数学问题求解与验证框架(三架构)
1
+ # Vibe Mathematics — 多代理数学问题求解与验证框架(四架构)
2
2
 
3
3
  [![npm](https://img.shields.io/npm/v/dsh-vibe-math)](https://www.npmjs.com/package/dsh-vibe-math)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
@@ -17,7 +17,7 @@
17
17
 
18
18
  ---
19
19
 
20
- ## 🧩 架构图(v2 + v3 + v4)
20
+ ## 🧩 架构图(v2 + v3 + v4 + v5)
21
21
 
22
22
  > 静态架构图;完整流程说明见 [docs/架构图.md](docs/架构图.md);可编辑生成脚本:[v2](docs/generate_framework_diagram_v2.py) / [v3](docs/generate_framework_diagram_v3.py) / [v4](docs/generate_framework_diagram_v4.py)。
23
23
 
@@ -44,6 +44,31 @@
44
44
 
45
45
  ---
46
46
 
47
+ ### Vibe Math V5(研究所体系)🧪 实验性 · 最新
48
+
49
+ **一句话定位**:把 v4 的"一群互相留言的常驻"升级为一座**研究所**——有**院士**(领头人)、**常驻研究员**、**临时工**三类职员,有所内**公共规章**,有**群聊与会议**,有**自主雇佣/解雇**,并且**任何结论都必须由至少 m 名有表决权者一致给出布尔概率 1 或 0 才能写入 `Verified/`**。
50
+
51
+ | 职位 | 代号 | 职权 |
52
+ |---|---|---|
53
+ | **院士**(领头人) | `acad` | **组织与协调中心**:建立全所视图、把问题拆解成任务并**分派**、设定优先级、召集并主持会议、督导进度、调配临时工、对外汇报。**一票与他人等重,不能单方面定论。** |
54
+ | **常驻研究员** | `r-<n>` | 有表决权;**可自主雇佣/解雇自己的临时工**。 |
55
+ | **临时工** | `t-<n>` | 为特定任务临时雇入;可读/可想/可发言/可写自己的成果库/可认领或被分派任务;**没有表决权**。 |
56
+ | 所办(主助手) | —— | **不参与研究、不投票**。只汇报、转达人的指令,并代持平台要求的创建权。 |
57
+
58
+ **求真规则(V5 的核心变更)**:一个对象进入 `Verified/` 必须**同时**满足 ① 至少有 **m = min(`quorumCap`, 有表决权人数)** 名有表决权者投出**布尔概率值**;② 这些票**全部**是 `1`(绝对为真)或**全部**是 `0`(绝对为假)。
59
+ 票是 `[0,1]` 的数值,**严格介于 0 与 1 之间 = 弃权/存疑**(不计入 m,但计入全组平均概率);**任何一张反向布尔票都会阻塞定论**——少数派无法靠别人弃权把结论推过去;未达门槛的对象**留在原库**并附平均概率与完整辩论录,**不强行裁决**。表决两段式:先【独立初评】,未定论再【公开辩论】后重投,轮次上限 `verdictMaxRounds`。
60
+
61
+ **与 v4 的关键差异**:
62
+ - **有领头人**:v4 无中央调度、一切靠讨论涌现;v5 在**所内**设有院士这一成员负责组织与分派(**框架仍然绝不指派**——指派者是院士,同样受 m 票约束)。
63
+ - **求真门槛从"全体一致"改为"≥ m 一致"**(`quorumMode: "all-unanimous"` 可切回 v4 口径)。
64
+ - **状态存于会话日志的 host-only 投影单元**(键 `vibeMathV5`),由 DSH 负责 checkpoint/恢复;v4 的 `State/*.json` 直写、损坏静默覆盖、并发丢写、跨进程陈旧快照这一整类问题在构造上被消除。
65
+ - **不引入任何 npm 实验包**:v5 是 preset 内的单个 `.js` 文件。
66
+ - **会议与验证互斥**:验证进行中会议请求会暂存,验证做完再补开。
67
+
68
+ 详见 `vibe-math-v5/实现方案.md` 与 `RELEASE-NOTES-2.1.0.md`。
69
+
70
+ ---
71
+
47
72
  ## ✨ 功能特色
48
73
 
49
74
  - **多代理自动求解**:主代理把问题交给调度器,调度器派发 explorer / solver / verifier(v2/v3)与 **planner(规划代理,v3)**、**method-keeper(方法整理代理,v3)** 等子代理协同求解,**你无需逐节点手操**。
@@ -66,7 +91,7 @@
66
91
 
67
92
  两种安装方式,任选其一(也可并存):
68
93
 
69
- ### 方式 A:作为插件包一键安装(推荐,同时装出三个预设)
94
+ ### 方式 A:作为插件包一键安装(推荐,同时装出四个预设)
70
95
 
71
96
  ```sh
72
97
  dsh plugin --profile <你的 profile> add dsh-vibe-math
@@ -105,7 +130,7 @@ dsh plugin --profile <你的 profile> add github:ChongCyrus/Vibe-Mathematics
105
130
 
106
131
  ---
107
132
 
108
- ## 🧭 三个预设怎么选
133
+ ## 🧭 四个预设怎么选
109
134
 
110
135
  > **💡 `vibe-math-v2` 与 `vibe-math-v3` 同级主推,按你的实际需求自行选择:**
111
136
  >
@@ -425,6 +450,35 @@ dsh plugin --profile <你的 profile> add github:ChongCyrus/Vibe-Mathematics
425
450
  | `residentPersona` | 空 | 注入每个常驻提示词开头的人格/要求 |
426
451
  | `toolAllow` / `toolDeny` | `[]` | **常驻工具权限**(经 `startContinuable` 的 `toolFilter` 做作用域 `tools.restrict()`;空 = 继承全部工具;⚠️ 空 `allow:[]` 会拒绝一切工具) |
427
452
 
453
+ ### v5(研究所体系 · 实验)默认值
454
+
455
+ `vibe_v5_set` 可调(持久化在会话日志投影里):
456
+
457
+ | 参数 | 默认 | 说明 |
458
+ |---|---|---|
459
+ | `academician` | `true` | 是否设院士(1 名) |
460
+ | `academicianLeads` | `true` | 是否启用院士的组织/分派职权(关掉则退化为 v4 式纯自组织,只有所办能协调) |
461
+ | `memberMayRejectAssign` | `true` | 成员可否**据理反对**院士的分派(反对不阻塞执行,但理由会广播给院士与全所) |
462
+ | `researcherCount` | 3 | 常驻研究员数(建所时) |
463
+ | `quorumCap` | 3 | m 的上限;实际 **m = min(quorumCap, 在册有表决权人数)** |
464
+ | `quorumMode` | `'m-unanimous'` | v5 口径;切 `'all-unanimous'` 回到 v4 的"全体一致" |
465
+ | `verdictMaxRounds` | 3 | 独立初评后进入公开辩论的最大轮数 |
466
+ | `maxTempPerMember` | 3 | 每位院士/研究员**同时**在册的临时工上限(按在册计,非累计——所以换人不受限) |
467
+ | `maxTempTotal` | 12 | 全所同时在册临时工上限 |
468
+ | `compactThreshold` | 66 | 成员上下文占比(0–100)达此值触发压缩 |
469
+ | `compactAfterRounds` | 8 | 或每累计 N 轮触发一次软压缩 |
470
+ | `maxParallel` | 3 | 同时唤醒的成员上限(框架侧并发闸) |
471
+ | `activityTimeoutMs` | 120000 | 空闲兜底心跳间隔(主驱动是一次性活动等待,不轮询) |
472
+ | `stallAutoMeetingMs` | 360000 | 停滞自动召集同步会议的阈值 |
473
+ | `chatDigestMs` / `chatDigestMax` | 45000 / 12 | 群聊摘要合批的时间窗与条数上限(私信/会议/表决不合批) |
474
+ | `meetingKeepEvery` | 5 | 每积累 N 个新产物自动发起一次同步会议 |
475
+ | `provider` / `model` | 空 | 成员 LLM 路由(空 = 继承所办/主代理路由) |
476
+ | `toolAllow` / `toolDeny` | `[]` | 常驻员工工具权限(⚠️ 空 `allow:[]` 会拒绝一切工具) |
477
+ | `tempToolAllow` / `tempToolDeny` | `[]` | 临时工的工具权限(比常驻更窄) |
478
+ | `staffPersona` | 空 | 追加到每个成员章程前的人格/要求 |
479
+
480
+ 常用控制:`vibe_v5_configure`(先配置)→ `vibe_v5_start`(开工)→ `vibe_v5_report` / `vibe_v5_status`;`vibe_v5_message` / `vibe_v5_meeting` / `vibe_v5_members` / `vibe_v5_hire` / `vibe_v5_fire` / `vibe_v5_pause` / `vibe_v5_resume` / `vibe_v5_stop`;斜杠命令 `/v5`。
481
+
428
482
  ---
429
483
 
430
484
  ## 📝 断点续跑 & 人工干预(两大硬性需求)
@@ -0,0 +1,143 @@
1
+ # dsh-vibe-math 2.1.0 —— 新增 V5「研究所体系」
2
+
3
+ 本版在原有 v2 / v3 / v4 三套预设之外,新增**第五代架构 `vibe-math-v5`:研究所体系**。
4
+ 安装本包后,预设选择器里会出现**四个**预设。
5
+
6
+ ---
7
+
8
+ ## 一、V5 是什么
9
+
10
+ 一座**自组织的研究所**,靠"说话"解决问题:
11
+
12
+ | 职位 | 代号 | 职权 |
13
+ |---|---|---|
14
+ | **院士**(领头人) | `acad` | **组织与协调中心**:建立全所视图、把问题拆解成任务并**分派**、设定优先级、召集并主持会议、督导进度与催办停滞、调配临时工、对外汇报。**一票与他人等重,不能单方面定论。** |
15
+ | **常驻研究员** | `r-<n>` | 有表决权;**可自主雇佣/解雇自己的临时工**;向院士汇报并接受其组织与分派。 |
16
+ | **临时工** | `t-<n>` | 为特定任务临时雇入;可读、可想、可发言、可写自己的成果库、可认领或被分派任务;**没有表决权**。 |
17
+ | 所办(对外接口) | —— | 就是主助手:**不参与研究、不投票**。只负责汇报、转达人的指令,并代持平台要求的创建权。 |
18
+
19
+ **框架只是媒介**:中继群聊与私信、召集会议、记成果库、统计共识、管理上下文与断点。
20
+ 它**从不指派任务**——指派者是院士,一个和研究员一样受表决规则约束的成员。
21
+
22
+ ## 二、求真规则(V5 的核心变更)
23
+
24
+ 一个对象要进入 `Verified/`,必须**同时**满足:
25
+
26
+ 1. 至少有 **m = min(`quorumCap`, 有表决权人数)** 名有表决权者(院士 + 常驻研究员)投出**布尔概率值**;
27
+ 2. 这些票**全部**是 `1`(绝对为真)或**全部**是 `0`(绝对为假)。
28
+
29
+ - 票是 `[0,1]` 的数值:`1` = 断言为真,`0` = 断言为假;
30
+ - **严格介于 0 与 1 之间 = 弃权/存疑**:不计入 m,但计入"全组平均概率";
31
+ - **任何一张反向的布尔票都会阻塞定论**——所以少数派无法靠别人弃权把结论推过去;
32
+ - 未达门槛 → 对象**留在原库**并附全组平均概率与完整辩论录,**不强行裁决**;
33
+ - 表决两段式:先【独立初评】(彼此不可见),未定论再【公开辩论】(互相可见后重新投票),
34
+ 轮次上限 `verdictMaxRounds`(默认 3)。
35
+
36
+ > 与 v4 的差别:v4 要求**全体常驻一致**;v5 改为**至少 m 名一致**(`quorumMode: "all-unanimous"`
37
+ > 可切回 v4 口径)。默认 `quorumCap = 3`。
38
+
39
+ ## 三、V5 的其他能力
40
+
41
+ - **群聊 / 私信 / 会议**:成员在群聊里说话、可私信、可提议开会;院士可直接召开并设定议程。
42
+ 会议纪要落到 `Shared/Meetings/<id>.md`,辩论录落到 `Shared/Debates/<target>.md`。
43
+ - **任务板**:`task-<n>` + **revision 比较交换**(拿过期副本改会被拒绝)+ **依赖 DAG**
44
+ (缺依赖/重复/成环都会被拒)+ 优先级 + 院士分派(须写明**理由**与**验收标准**)。
45
+ - **成果库**:每人独立目录 `Members/<id>/{Progress,Propos,Methods,Subproblems}/`,
46
+ **只写自己、可读他人**。入库必须写明 **价值程度 / 动机用途计划 / 概率估计**(缺一不可)。
47
+ 章程里对 `Progress/` 给出了完整定义与**用途说明**(思考痕迹、压缩后恢复状态的主要依据、
48
+ 院士统筹全所的输入、失败与死路同样值得记)。
49
+ - **雇佣 / 解雇**:院士与常驻研究员**都能**雇佣临时工;解雇是**真实**的——
50
+ 中断其当前回合、`drainContinuableChildren` **释放其常驻身份**、**收回其未完成任务**、
51
+ 丢弃其邮箱、标记除名;**代号永不复用**。
52
+ - **上下文**:达阈值自动压缩(真实 `/compact`,缺失 `compaction` 服务时回退到自述浓缩)。
53
+ 章程写在成员 `persona` 里,**压缩后依然生效**——不需要 v4 那套"压缩后重申规则"的补丁。
54
+ - **断点续跑**:状态存在**会话日志的 host-only 投影单元**里(键 `vibeMathV5`),
55
+ 由 DSH 负责 checkpoint 与恢复;若宿主没有 `sessionProjections`,回退到加固 JSON 状态文件。
56
+
57
+ ## 四、快速上手
58
+
59
+ ```
60
+ vibe_v5_configure { project?, institute?, problem?, params? } # 先配置,不启动
61
+ vibe_v5_start { problem?, researcherCount?, academician?, seedDirections? }
62
+ vibe_v5_report / vibe_v5_status # 汇报 / 状态
63
+ vibe_v5_message { to|all, content } # 人以所办身份留言
64
+ vibe_v5_meeting { agenda, kind } # 召集会议
65
+ vibe_v5_members / vibe_v5_hire / vibe_v5_fire / vibe_v5_set
66
+ ```
67
+ 斜杠命令:`/v5 configure|start|resume|pause|stop|status|report|members|message|meeting|hire|fire|add|remove|set`
68
+
69
+ **主助手(所办)是 hands-off 的**:`vibe_v5_start` 之后请保持被动,只在用户明确要求或
70
+ 研究所明显僵死时介入,且只做"促成",不做"决定"。
71
+
72
+ ## 五、重要边界(请知悉)
73
+
74
+ - **试验性架构**:v5 是新增的第五代实现,与 v2/v3/v4 并存、互不影响;三个旧预设行为未变。
75
+ - **一所一会话**:一个会话承载一座研究所;要另建一座请开新会话(`configure` 会拒绝在运行中
76
+ 切换项目/所名,以免状态分裂到两棵树)。
77
+ - **解雇是逻辑除名 + 真实释放**:DSH 的 roster 没有"删除",v5 用
78
+ `drainContinuableChildren` 真实释放常驻身份并**永不再向其投递**;其档案留在所史里。
79
+ - **编制变更需所办批准**:成员(含院士)只能**提议**增聘/解聘**常驻研究员**;
80
+ 临时工的雇佣/解雇才是成员自主权。
81
+ - **m 随人数浮动**:`m = min(quorumCap, 在册有表决权者数)`。若在册人数少于 `quorumCap`,
82
+ m 会随之下降(这是 `min{3, 人数}` 的定义所决定的);若你希望"人少就不能定论",
83
+ 请把 `quorumCap` 调高(例如固定为 3 并保持 ≥3 名研究员在册)。
84
+ - **不引入任何 npm 实验包**:v5 是 preset 内的单个 `.js` 文件,不依赖 DSH 的实验性
85
+ agent-team 包,因此不需要 pnpm、不改 profile、不需要额外重启。
86
+ - **`State/` 只是人读镜像**:权威状态在会话日志投影里,请勿手改 `State/` 下的文件。
87
+
88
+ ## 六、验证
89
+
90
+ - `selfdrive-v5.mjs`:**70 条断言全绿**。用 mock host + **mock 投影注册表**(忠实复现
91
+ `register` / 事件即时折叠 / `stateOf`)驱动真实插件,覆盖建所、章程注入、群聊扇出、
92
+ 私信、临时工权限、m 票门限(m−1 不进 / 1 与 0 混合不进 / m 票全 1 才进)、弃权不计 m、
93
+ 任务板 CAS 与依赖成环、院士分派与越权拒绝、真实解雇(中断+释放+任务回收+代号不复用)、
94
+ 会议互斥与暂存、全体一致才结题等。
95
+ - `e2e-v5-round2.test.mjs`:**53 条断言全绿**,专攻第一套未覆盖的行为路径 ——
96
+ **加固 JSON 回落后端**、**模拟进程重启**(新宿主 + 新后端读回持久状态并 resume 重建)、
97
+ 重复 `subagent/end` 幂等、雇佣配额(每人上限 / 全所上限)、`quorumMode: all-unanimous`、
98
+ **名册缩减时 m 重算**、`vibe_v5_wait`(区间校验 / 无人在跑快捷返回 / 被真实活动唤醒)、
99
+ `read_library`(跨读他人库)、id 消毒抗路径穿越、运行中 configure 守卫、
100
+ **看门狗放弃卡死验证**、**会议在验证后面暂存并随后真正召开**、
101
+ **压缩指令只在该出现时出现且不重复**、**会话日志回放复现研究所状态**。
102
+ - `audit-v5-sensitivity.mjs`:**15 个敏感性探针全部命中**(故意破坏 m 门限、弃权计数、
103
+ 冲突阻塞、临时工表决权、院士分派门禁、建所回合登记、群聊扇出、辩论轮推进条件、
104
+ 真实释放、全体一致结题、回落后端加载、解决票再评估、提议确定性启动、begin 互斥、
105
+ 会议锁重武装 —— 每一条都能让测试变红),证明测试不是空转。
106
+ - `audit-v5-integrity.mjs`:静态自检 6 类(未定义调用 / `params` 键 / 会话 API 面 /
107
+ 错误码与文档漂移 / 遗留标记 / 组合行可解析),输出 clean。
108
+ - 无回归:`selfdrive-v4` 21/21、`e2e-v4-fixes` 120/120、`e2e-v3` 100/100、
109
+ `e2e-multisession` 25/25、`e2e-business` 18/18、`e2e-regression`、`e2e-v3-roundtrip`、
110
+ `e2e-d9-d13` 及全部历史审计套件均通过;`e2e-installer-test` 通过并发现
111
+ `vibe-math-v5 (broken=no, persona schema OK)`。
112
+ - 宿主契约已实测:`sessionProjections` 的 host-only 单元可注册、事件即时折叠、
113
+ **不进模型历史**、`checkpoint()` 携带、`restore()` 重折、`hydrate()` 可装载。
114
+ - **真实挂载校验**:把 preset 装进本机 preset root 后用 `agentPresets` 实测 ——
115
+ roster 发现 `vibe-math-v5(user)`、`broken=no`,**`standingKeyFor('vibe-math-v5')`
116
+ 返回 MOUNTED OK**(该调用会拒绝"包无法解析""配置非法""某行从未激活""服务被发布到进程全局
117
+ realm"四类失败),且 v5 插件行 `enabled=true`。
118
+
119
+ ### 第二轮审计修复的真实缺陷(9 处)
120
+
121
+ 第二轮针对**第一套测试从未触及的路径**做审计,发现并修复:
122
+
123
+ | # | 缺陷 | 后果 | 修复 |
124
+ |---|---|---|---|
125
+ | 1 | **回落后端从不加载已持久化的状态**(`state()` 不触发 `load()`) | 无 `sessionProjections` 的宿主上,**进程重启即丢失整座研究所**,`resume` 报 "no active member to resume" | 新增 `ready()`,在所有读状态的入口(工具、命令、`subagent/end`)先 `await` 加载 |
126
+ | 2 | 回落后端把状态写到 `VibeMath/State/` 而非研究所目录下的 `State/` | 与文档/人读镜像描述不一致,多研究所会互相覆盖 | 改为按 `instRoot()/State/<institute>.v5state.json` 动态解析路径 |
127
+ | 3 | **`checkSolved()` 只在会议收尾时被调用** | 一致票落在会议收尾之后(迟到回复 / 普通轮携带 `vote_solved`)会被记录却**永不被读取**——全所一致同意却停不下来 | 每次记录解决票后立即评估停止条件 |
128
+ | 4 | **提议只"踢一下调度器"** | 若已有调度 pass 在途且已过 arm 点,提议会滞留在队列里直到下一轮 trampoline | 提议后**直接 `armNextVerify()`** 确定性启动 |
129
+ | 5 | `beginVerify` 不互斥 | 两个调用者可在任一发布裁决记录前都通过检查,**同一对象被启动两次** | 新增 `beginLock` 独占 |
130
+ | 6 | `continueMeetingRound` 在 `finalizeLock` 被占用时直接返回 | 没有任何东西重新驱动它,会议可能停住 | 退出前 `armHeartbeat()` |
131
+ | 7 | **`vibe_v5_set` 改了 `activityTimeoutMs` 但已武装的心跳仍用旧延迟** | 调参不立即生效(调小后要等旧的长延迟走完) | `setParams` 后立即驱动一次调度 |
132
+ | 8 | **软压缩指令只在 `normal` 轮注入** | 只收到心跳 CHECKPOINT 的成员即使上下文 100% 也**永不压缩** | 改为 `normal` 与 `checkpoint` 都注入(`meeting`/`verify` 仍排除) |
133
+ | 9 | 唤醒成功路径不再武装心跳 | 若宿主丢弃投递或子代理消失,**调度器会永久冻结**(v4 §25 同类故障) | 每次唤醒后都武装一次安全心跳(各分支先查 `busy`,不会重复唤醒) |
134
+
135
+ 另新增 `status().debug`(调度 pass 计数、trampoline 跳过次数、arm/begin 计数),
136
+ 便于今后在真实 run 上定位这类"提议未启动"的问题。
137
+
138
+ ## 七、兼容性
139
+
140
+ - `dsh.testedVersion: 0.1.5-rc.2`(v5 的宿主契约均取自该版本的运行时实测)。
141
+ - v5 需要 `subagents` / `agents` / `tools` / `commands` / `fs`(必需)与
142
+ `sessions` / `sessionProjections` / `subprocess` / `sandboxPolicy` / `compaction`(可选);
143
+ 安装器自检会在启动时报告缺失项。可选服务缺失只会**降级**,不影响挂载。
package/cordis.patch.yml CHANGED
@@ -1,8 +1,9 @@
1
1
  # The dsh-vibe-math merged bundle patch. Installing this bundle (dsh plugin add
2
2
  # dsh-vibe-math / dsh-market) runs ONE plugin row: the preset installer, which
3
- # copies the agent presets (vibe-math-v2 + vibe-math-v3 + vibe-math-v4) into the
4
- # DSH preset root. The presets themselves register the vibe_math_* tools — nothing
5
- # is injected into the profile composition directly.
3
+ # copies the agent presets (vibe-math-v2 + vibe-math-v3 + vibe-math-v4 +
4
+ # vibe-math-v5) into the DSH preset root. The presets themselves register the
5
+ # vibe_math_* / vibe_v4_* / vibe_v5_* tools — nothing is injected into the profile
6
+ # composition directly.
6
7
 
7
8
  - insert:
8
9
  - id: vibe-math-preset-installer
package/installer.js CHANGED
@@ -49,6 +49,11 @@ const PRESETS = [
49
49
  dst: 'vibe-math-v4',
50
50
  files: ['agent.cordis.yml', 'preset.yml', 'vibe-math-v4.js', '实现方案.md'],
51
51
  },
52
+ {
53
+ src: 'vibe-math-v5',
54
+ dst: 'vibe-math-v5',
55
+ files: ['agent.cordis.yml', 'preset.yml', 'vibe-math-v5.js', '实现方案.md'],
56
+ },
52
57
  ]
53
58
 
54
59
  const STATE_FILE = '.vibe-math-installed.json'
@@ -128,6 +133,12 @@ async function checkHostCapabilities(ctx, logger) {
128
133
  { svc: 'subprocess', methods: ['spawn'], required: false },
129
134
  { svc: 'sandboxPolicy', methods: ['resolve'], required: false },
130
135
  { svc: 'compaction', methods: ['compactIfNeeded'], required: false },
136
+ // v5 keeps its institute state in a HOST-ONLY session projection unit, so it wants
137
+ // the projection registry and the session store. Both are mounted by dsh-base; if
138
+ // either is absent v5 falls back to a hardened JSON state file, so this is a
139
+ // degradation rather than a mounting gate.
140
+ { svc: 'sessionProjections', methods: ['register', 'stateOf'], required: false },
141
+ { svc: 'sessions', methods: ['flush'], required: false },
131
142
  ]
132
143
  const degradations = []
133
144
  for (let i = 0; i < checks.length; i++) {
@@ -172,12 +183,12 @@ async function checkHostCapabilities(ctx, logger) {
172
183
  }
173
184
  } catch (e) { /* 探测失败不致命 */ }
174
185
  if (degradations.length > 0) {
175
- logger?.warn?.('[dsh-vibe-math] 可选宿主服务缺失,功能会静默降级(不影响挂载):' + degradations.join(';') + '。subprocess 缺失则无法用 shell 创建目录树(仅靠 fs 自动建父目录兜底);sandboxPolicy 缺失则插件写入不带显式围栏;compaction 缺失则 v4 的真实 /compact 路径不生效。')
186
+ logger?.warn?.('[dsh-vibe-math] 可选宿主服务缺失,功能会静默降级(不影响挂载):' + degradations.join(';') + '。subprocess 缺失则无法用 shell 创建目录树(仅靠 fs 自动建父目录兜底);sandboxPolicy 缺失则插件写入不带显式围栏;compaction 缺失则 v4 的真实 /compact 路径与 v5 的真实压缩不生效(v5 回退到自述浓缩);sessionProjections 缺失则 v5 的研究所状态回退到加固 JSON 文件(权威源从会话日志投影变为 State/<institute>.v5state.json,跨进程恢复能力下降)。')
176
187
  }
177
188
  if (problems.length > 0) {
178
- logger?.warn?.('[dsh-vibe-math] 宿主自检:' + problems.length + ' 项不满足(' + problems.join(';') + ')。v2/v3/v4 预设依赖这些宿主服务/API,旧版或未经声明兼容的 DSH 可能无法挂载' + (dshVersion ? '(当前检测到 DSH v' + dshVersion + ',本包适配 ' + (supported.length ? supported.join(' / ') : '(未声明)') + ')' : '') + '。')
189
+ logger?.warn?.('[dsh-vibe-math] 宿主自检:' + problems.length + ' 项不满足(' + problems.join(';') + ')。v2/v3/v4/v5 预设依赖这些宿主服务/API,旧版或未经声明兼容的 DSH 可能无法挂载' + (dshVersion ? '(当前检测到 DSH v' + dshVersion + ',本包适配 ' + (supported.length ? supported.join(' / ') : '(未声明)') + ')' : '') + '。')
179
190
  } else {
180
- logger?.info?.('[dsh-vibe-math] 宿主自检通过:subagents / agents / tools / commands / fs 服务及关键 API 均可用' + (degradations.length === 0 ? ',可选服务 subprocess / sandboxPolicy / compaction 亦齐备' : '(可选服务有缺失,见上方警告)') + (dshVersion ? '(当前 DSH v' + dshVersion + ',本包已声明兼容 ' + supported.join(' / ') + ')' : '') + '。')
191
+ logger?.info?.('[dsh-vibe-math] 宿主自检通过:subagents / agents / tools / commands / fs 服务及关键 API 均可用' + (degradations.length === 0 ? ',可选服务 subprocess / sandboxPolicy / compaction / sessionProjections / sessions 亦齐备' : '(可选服务有缺失,见上方警告)') + (dshVersion ? '(当前 DSH v' + dshVersion + ',本包已声明兼容 ' + supported.join(' / ') + ')' : '') + '。')
181
192
  }
182
193
  }
183
194
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsh-vibe-math",
3
- "description": "Multi-agent mathematical problem-solving & verification frameworks for DeepSeek Harness — THREE agent presets in one install: vibe-math-v2 (probability-driven: qs.json + Propos knowledge base + explorer→solver→review/debate verdict), vibe-math-v3 (THIRD-generation, recommended: paper-style Markdown knowledge base with Problems/Progress/Propos/Methods/Verified + planner-agent scheduling that decides the next N actions + universal theory/method invention library + agents write their own Markdown directly via a per-file write lock), and vibe-math-v4 (FOURTH-generation: persistent self-organizing resident subagents that message & meet to decide all tasks, verify only by unanimous consensus, /compact at a context threshold, and stop only when all agree the problem is solved). Installing this bundle auto-installs all three presets (v1 was removed at v2.0.0).",
4
- "version": "2.0.22",
3
+ "description": "Multi-agent mathematical problem-solving & verification frameworks for DeepSeek Harness — FOUR agent presets in one install: vibe-math-v2 (probability-driven: qs.json + Propos knowledge base + explorer→solver→review/debate verdict), vibe-math-v3 (THIRD-generation, recommended: paper-style Markdown knowledge base with Problems/Progress/Propos/Methods/Verified + planner-agent scheduling that decides the next N actions + universal theory/method invention library + agents write their own Markdown directly via a per-file write lock), and vibe-math-v4 (FOURTH-generation: persistent self-organizing resident subagents that message & meet to decide all tasks, verify only by unanimous consensus, /compact at a context threshold, and stop only when all agree the problem is solved), and vibe-math-v5 (FIFTH-generation research institute: an academician as the organizational centre who decomposes and ASSIGNS work and chairs meetings; permanent researchers who hold the vote and may hire/fire their own temp workers; temp workers with no vote; a group chat and meetings; a durable per-recipient mailbox; a compare-and-set task DAG; and a boolean m-vote consensus rule where an object enters Verified/ only when at least m voting members agree AND every one of them returns exactly 1 or exactly 0). Installing this bundle auto-installs all four presets (v1 was removed at v2.0.0).",
4
+ "version": "2.1.0",
5
5
  "type": "module",
6
6
  "engines": {
7
7
  "node": "^22.19.0 || >=24.0.0"
@@ -16,6 +16,7 @@
16
16
  "installer.js",
17
17
  "cordis.patch.yml",
18
18
  "RELEASE-NOTES-2.0.22.md",
19
+ "RELEASE-NOTES-2.1.0.md",
19
20
  "vibe-math-v2/agent.cordis.yml",
20
21
  "vibe-math-v2/preset.yml",
21
22
  "vibe-math-v2/vibe-math-v2.js",
@@ -28,7 +29,11 @@
28
29
  "vibe-math-v4/agent.cordis.yml",
29
30
  "vibe-math-v4/preset.yml",
30
31
  "vibe-math-v4/vibe-math-v4.js",
31
- "vibe-math-v4/实现方案.md"
32
+ "vibe-math-v4/实现方案.md",
33
+ "vibe-math-v5/agent.cordis.yml",
34
+ "vibe-math-v5/preset.yml",
35
+ "vibe-math-v5/vibe-math-v5.js",
36
+ "vibe-math-v5/实现方案.md"
32
37
  ],
33
38
  "license": "MIT",
34
39
  "keywords": [
@@ -58,7 +63,7 @@
58
63
  },
59
64
  "minVersion": "0.1.2-rc.1",
60
65
  "testedVersion": "0.1.5-rc.2",
61
- "compatNote": "依赖宿主提供的 subagents/agents/tools/commands/fs 服务与 @deepseek-ai/dsh-* 插件行;可选 subprocess/sandboxPolicy/compaction。persona 行同时携带 prefix 与 text 两个键,以兼容 0.1.3-alpha.2 的 schema 更名(prefix 必填)与 0.1.2 及更早的 text 键。已在 dsh-v0.1.5-rc.2(@deepseek-ai/dsh-persona 0.1.5-rc.2)上逐行校验全部预设行并通过(v2/v3/v4;v1 已于 v2.0.0 移除)。注意:DSH 0.1.2 起 subagents.startContinuable 的 agentOptions/toolFilter 需要宿主 provider 声明对应 capability(spawn/fork 进程内 provider 均支持),安装器启动时会做能力自检并在旧版宿主上告警。2026 兼容性修复:v2/v3 工具权限名表原先硬编码 web/fetch/bash(未注册名会使 tools.restrict() 抛错、子代理无法建立),现按真实注册名并加带守卫的重试;v4 真实 /compact 原先在 subagent/end 里查 agents.get()(该事件触发时子代理已移出注册表,属死代码),现改为在 subagent/start 捕获 Agent 引用;三套预设的可选服务改为惰性读取,不再在 apply() 快照;v4 的 tools/commands 注册补入 ctx.effect;安装器自检新增 subprocess/sandboxPolicy/compaction。",
66
+ "compatNote": "依赖宿主提供的 subagents/agents/tools/commands/fs 服务与 @deepseek-ai/dsh-* 插件行;可选 subprocess/sandboxPolicy/compaction。persona 行同时携带 prefix 与 text 两个键,以兼容 0.1.3-alpha.2 的 schema 更名(prefix 必填)与 0.1.2 及更早的 text 键。已在 dsh-v0.1.5-rc.2(@deepseek-ai/dsh-persona 0.1.5-rc.2)上逐行校验全部预设行并通过(v2/v3/v4;v1 已于 v2.0.0 移除)。注意:DSH 0.1.2 起 subagents.startContinuable 的 agentOptions/toolFilter 需要宿主 provider 声明对应 capability(spawn/fork 进程内 provider 均支持),安装器启动时会做能力自检并在旧版宿主上告警。2026 兼容性修复:v2/v3 工具权限名表原先硬编码 web/fetch/bash(未注册名会使 tools.restrict() 抛错、子代理无法建立),现按真实注册名并加带守卫的重试;v4 真实 /compact 原先在 subagent/end 里查 agents.get()(该事件触发时子代理已移出注册表,属死代码),现改为在 subagent/start 捕获 Agent 引用;三套预设的可选服务改为惰性读取,不再在 apply() 快照;v4 的 tools/commands 注册补入 ctx.effect;安装器自检新增 subprocess/sandboxPolicy/compaction。v2.1.0 新增 v5 研究所体系:状态存于宿主 host-only 会话投影单元(键 vibeMathV5),因此自检新增 sessionProjections/sessions(均为可选;缺失时 v5 回退到加固 JSON 状态文件)。v5 不依赖任何 npm 实验包,纯 preset 内单文件实现。",
62
67
  "compatibility": {
63
68
  "dshReleases": {
64
69
  "0.1.2-alpha.4": "compatible",