@furongjun1999/dsh-memory 0.4.8 → 0.4.9

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.
Files changed (231) hide show
  1. package/README.md +54 -26
  2. package/codebuddy/CODEBUDDY.md +196 -195
  3. package/codebuddy/README.md +13 -1
  4. package/codebuddy/mcp.json +9 -0
  5. package/docs/GBrain/345/217/257/345/200/237/351/211/264/347/202/271_/347/201/265/346/236/242/350/220/275/347/202/271/344/272/244/346/216/245_20260919.md +169 -0
  6. package/docs/README.md +1 -1
  7. package/docs/discipline/harnesses.yaml +18 -7
  8. package/docs/discipline/templates/full.md.tmpl +4 -3
  9. package/docs/experiments/linkref_backfill/candidates_20260917.json +726 -0
  10. package/docs/experiments/linkref_backfill/candidates_internal_20260917.json +602 -0
  11. package/docs/experiments/linkref_backfill/candidates_internal_v2.json +603 -0
  12. package/docs/experiments/linkref_backfill/candidates_secret_20260917.json +884 -0
  13. package/docs/experiments/linkref_backfill/candidates_secret_v2.json +789 -0
  14. package/docs/hive//345/244/232/347/253/257harness/351/200/232/344/277/241/345/245/221/347/272/246_v0.1.md +42 -0
  15. package/docs/hive//346/243/200/347/264/242/346/224/266/346/225/233/345/256/236/346/265/213/344/270/216S1b/350/256/276/350/256/241_v0.1.md +43 -0
  16. package/docs/hive//346/243/200/347/264/242/350/267/257/345/276/204/344/270/216/350/256/244/347/237/245/347/273/223/346/236/204/345/245/221/347/272/246_v0.1.md +102 -0
  17. package/docs/hive//347/234/237/345/256/236/345/272/223/347/253/257/345/210/260/347/253/257/345/256/236/346/265/213_S1b/344/270/216/345/217/254/345/233/236/346/235/203/350/241/241_v0.1.md +57 -0
  18. package/docs/hive//347/234/237/345/256/236/345/272/223/347/253/257/345/210/260/347/253/257/345/256/236/346/265/213_S7/345/200/222/346/216/222/345/200/231/351/200/211/345/261/202_v0.1.md +126 -0
  19. package/docs/hive//350/234/202/345/267/242/345/217/214/345/256/236/344/276/213/344/272/222/351/252/214_/350/256/276/350/256/241/345/256/232/347/250/277.md +503 -0
  20. package/docs/mdcg/D_meta_/345/267/245/347/250/213/345/214/226/346/226/271/346/241/210_v0.2.md +216 -0
  21. package/docs/mdcg/README/350/257/246/347/273/206/347/211/210_v0.4.5.md +631 -625
  22. package/docs/mdcg//344/273/243/347/240/201/350/257/204/345/256/241/344/270/216/346/235/241/344/273/266/345/214/226/346/263/250/351/207/212_/345/245/221/347/272/246_v0.1.md +82 -0
  23. package/docs/mdcg//345/205/250/345/272/223/344/273/243/347/240/201/350/257/204/345/256/241/344/270/216/346/235/241/344/273/266/345/214/226/346/263/250/351/207/212_/350/256/241/345/210/222_v0.1.md +600 -0
  24. package/docs/mdcg//345/212/237/350/203/275/350/260/203/347/224/250/346/230/240/345/260/204/350/241/250_v0.1.md +47 -45
  25. package/docs/mdcg//345/255/220/344/273/243/347/220/206/351/205/215/347/275/256/346/240/207/345/207/{206_v0.4.md → 206_v0.5.md} +92 -4
  26. package/docs/mdcg//347/201/265/346/236/242/350/256/260/345/277/206/345/212/250/350/257/215/345/215/217/350/256/256_v1.0-draft.md +172 -0
  27. package/docs/mdcg//347/216/257/344/272/214_/347/231/275/347/256/261/345/241/253/345/205/205/346/265/201/346/260/264/347/272/277_v0.1.md +31 -0
  28. package/docs/mdcg//350/267/250/347/253/257/351/252/214/350/257/201/344/270/216/345/220/214/346/255/245/345/215/217/350/256/256_v0.1.md +93 -0
  29. package/docs/theory//345/271/266/345/217/221/345/277/205/347/204/266/346/200/247/347/220/206/350/256/272_v0.2.md +2 -2
  30. package/docs/theory//347/220/206/350/256/272_/346/234/272/345/210/266_/344/273/243/347/240/201_/345/256/236/351/252/214_/347/274/272/345/217/243/347/237/251/351/230/265_v0.1.md +3 -3
  31. package/docs/theory//350/256/244/347/237/245/344/273/243/347/220/206/344/270/216/346/224/266/346/225/233/347/273/223/346/236/204_/346/235/241/344/273/266/350/256/272/351/207/215/346/236/204_v0.1.md +2 -2
  32. package/docs//345/267/245/344/275/234/347/272/252/345/276/213_/350/256/244/347/237/245/345/233/276/346/235/241/347/233/256_v1.1.json +434 -433
  33. package/docs//347/201/265/346/236/242/350/207/252/346/210/221/346/224/271/350/277/233/345/267/245/344/275/234/350/256/241/345/210/222_/345/244/226/351/203/250/347/240/224/347/251/266/347/263/273/345/210/227/345/220/270/346/224/266_v1_20260919.md +286 -0
  34. package/dsh/README.md +33 -0
  35. package/dsh/cordis.yml.example +13 -7
  36. package/dsh/hive-mcp-probe.mjs +94 -0
  37. package/dsh/hive-mcp.example.yml +62 -0
  38. package/dsh/update-lingshu.bat +11 -0
  39. package/dsh/update-lingshu.ps1 +337 -0
  40. package/lib/hooks.d.ts +3 -0
  41. package/lib/hooks.js +17 -23
  42. package/lib/index.d.ts +4 -2
  43. package/lib/index.js +29 -6
  44. package/lib/lib/datapath.d.ts +76 -1
  45. package/lib/lib/datapath.js +199 -13
  46. package/lib/lib/mdcg_client.d.ts +6 -3
  47. package/lib/lib/mdcg_client.js +6 -5
  48. package/lib/lib/mutual.js +4 -4
  49. package/lib/lib/token_store.js +4 -5
  50. package/md_cg/audit.py +17 -2
  51. package/md_cg/autonomy.py +86 -15
  52. package/md_cg/backfill.py +36 -1
  53. package/md_cg/backfill_bigdomain.py +34 -0
  54. package/md_cg/bench6_arms.py +28 -1
  55. package/md_cg/bench6_common.py +10 -1
  56. package/md_cg/bench6_competitors.py +6 -1
  57. package/md_cg/bench_axis_domain.py +9 -1
  58. package/md_cg/bench_blind_comp.py +7 -1
  59. package/md_cg/bench_en_atoms_public.py +9 -0
  60. package/md_cg/bench_governance.py +348 -0
  61. package/md_cg/bench_lme_zh.py +16 -1
  62. package/md_cg/bench_locomo.py +2 -1
  63. package/md_cg/bench_locomo_zh.py +16 -1
  64. package/md_cg/bench_locomo_zh_public.py +4 -1
  65. package/md_cg/bench_longmem.py +2 -1
  66. package/md_cg/bench_membench.py +27 -1
  67. package/md_cg/bench_p0.py +4 -1
  68. package/md_cg/bench_progressive.py +13 -1
  69. package/md_cg/bench_role_views.py +238 -0
  70. package/md_cg/bench_task_ab.py +8 -1
  71. package/md_cg/bench_task_ab_llm.py +13 -1
  72. package/md_cg/bench_unified_en.py +6 -1
  73. package/md_cg/bench_zh_mad.py +20 -1
  74. package/md_cg/blindspot_tickets.py +123 -0
  75. package/md_cg/branches.py +12 -1
  76. package/md_cg/build_postings.py +73 -0
  77. package/md_cg/ccgc.py +67 -2
  78. package/md_cg/census.py +5 -1
  79. package/md_cg/chain.py +24 -3
  80. package/md_cg/codeindex.py +134 -17
  81. package/md_cg/coldverify.py +265 -0
  82. package/md_cg/comment_gate.py +338 -0
  83. package/md_cg/cond_compose.py +190 -0
  84. package/md_cg/cond_facts.py +155 -0
  85. package/md_cg/cond_template.json +107 -0
  86. package/md_cg/condition_anchor.py +143 -0
  87. package/md_cg/conformance.py +69 -4
  88. package/md_cg/consistency.py +24 -1
  89. package/md_cg/consolidate.py +53 -2
  90. package/md_cg/corpus.py +4 -0
  91. package/md_cg/crosscheck.py +42 -2
  92. package/md_cg/crypto.py +35 -1
  93. package/md_cg/d_meta.py +310 -0
  94. package/md_cg/datapath.py +201 -26
  95. package/md_cg/docindex.py +122 -1
  96. package/md_cg/eval_common.py +29 -1
  97. package/md_cg/evidence.py +27 -1
  98. package/md_cg/evolution.py +21 -1
  99. package/md_cg/export.py +11 -1
  100. package/md_cg/forgetting.py +23 -1
  101. package/md_cg/fsutil.py +18 -1
  102. package/md_cg/hotcache.py +214 -0
  103. package/md_cg/hyperedge.py +251 -0
  104. package/md_cg/identity.py +18 -1
  105. package/md_cg/insight.py +17 -1
  106. package/md_cg/lexicon/build_cedict_en_zh.py +9 -0
  107. package/md_cg/lexicon/build_standard_en.py +171 -168
  108. package/md_cg/lexicon/expand_en_zh.py +6 -0
  109. package/md_cg/lifecycle.py +12 -1
  110. package/md_cg/linkref.py +281 -0
  111. package/md_cg/links.py +29 -1
  112. package/md_cg/mcp_server.py +362 -43
  113. package/md_cg/md_whitebox.py +53 -1
  114. package/md_cg/mdcg.py +1003 -27
  115. package/md_cg/mdcos.py +558 -36
  116. package/md_cg/metacognition.py +37 -2
  117. package/md_cg/migrate.py +4 -0
  118. package/md_cg/migrate_aeis.py +221 -213
  119. package/md_cg/migrate_roleplay.py +8 -0
  120. package/md_cg/migrate_wisdom_graph.py +14 -1
  121. package/md_cg/mreview/__main__.py +3 -0
  122. package/md_cg/mreview/bundle.py +8 -0
  123. package/md_cg/mreview/candidates.py +9 -0
  124. package/md_cg/mreview/govern.py +21 -1
  125. package/md_cg/mreview/locate.py +34 -0
  126. package/md_cg/mreview/pipeline.py +29 -1
  127. package/md_cg/mreview/ruleset.py +16 -1
  128. package/md_cg/nodefile.py +233 -3
  129. package/md_cg/pooling.py +23 -1
  130. package/md_cg/postings.py +298 -0
  131. package/md_cg/predict.py +89 -9
  132. package/md_cg/progressive.py +3 -0
  133. package/md_cg/protect.py +14 -1
  134. package/md_cg/protocol.py +372 -0
  135. package/md_cg/provenance.py +262 -0
  136. package/md_cg/reach.py +453 -0
  137. package/md_cg/refindex.py +47 -2
  138. package/md_cg/refine.py +20 -1
  139. package/md_cg/roleviews.py +89 -0
  140. package/md_cg/routing.py +76 -0
  141. package/md_cg/scrub.py +63 -2
  142. package/md_cg/security.py +26 -1
  143. package/md_cg/self_state.py +64 -1
  144. package/md_cg/selfreport.py +151 -0
  145. package/md_cg/semantic/canonical.py +5 -0
  146. package/md_cg/semantic/en_normalizer.py +364 -355
  147. package/md_cg/semantic/zh_en_atoms.py +139 -136
  148. package/md_cg/signer.py +41 -1
  149. package/md_cg/sources.py +583 -547
  150. package/md_cg/statushdr.py +179 -0
  151. package/md_cg/stg.py +59 -18
  152. package/md_cg/subgraph.py +23 -0
  153. package/md_cg/sustain.py +56 -1
  154. package/md_cg/tasks.py +26 -2
  155. package/md_cg/test_autonomy.py +26 -0
  156. package/md_cg/test_bench_governance.py +102 -0
  157. package/md_cg/test_blindspot_tickets.py +166 -0
  158. package/md_cg/test_ccgc.py +10 -0
  159. package/md_cg/test_codeindex.py +338 -0
  160. package/md_cg/test_comment_gate.py +187 -0
  161. package/md_cg/test_cond_compose_anchors.py +76 -0
  162. package/md_cg/test_condition_anchor.py +82 -0
  163. package/md_cg/test_d_meta.py +412 -0
  164. package/md_cg/test_datapath_root.py +188 -0
  165. package/md_cg/test_gain_gate.py +47 -1
  166. package/md_cg/test_hot_cold.py +187 -0
  167. package/md_cg/test_hyperedge.py +245 -0
  168. package/md_cg/test_linkref.py +306 -0
  169. package/md_cg/test_md_access_parity.py +15 -3
  170. package/md_cg/test_mr_m1.py +108 -18
  171. package/md_cg/test_mr_m3.py +8 -1
  172. package/md_cg/test_p26_refindex.py +49 -20
  173. package/md_cg/test_p27_docindex.py +236 -2
  174. package/md_cg/test_p2_mcp.py +1 -1
  175. package/md_cg/test_p31_insight.py +24 -0
  176. package/md_cg/test_p44_md_whitebox.py +14 -1
  177. package/md_cg/test_protocol.py +243 -0
  178. package/md_cg/test_reach.py +378 -0
  179. package/md_cg/test_reach_keys.py +201 -0
  180. package/md_cg/test_reach_meta_exits.py +145 -0
  181. package/md_cg/test_read_clip.py +8 -4
  182. package/md_cg/test_retr_s1.py +340 -0
  183. package/md_cg/test_retr_s1b.py +209 -0
  184. package/md_cg/test_retr_s3.py +194 -0
  185. package/md_cg/test_retr_s4.py +163 -0
  186. package/md_cg/test_retr_s5.py +200 -0
  187. package/md_cg/test_retr_s6.py +157 -0
  188. package/md_cg/test_retr_s7.py +385 -0
  189. package/md_cg/test_retr_s8_time.py +316 -0
  190. package/md_cg/test_retr_s9_edges.py +286 -0
  191. package/md_cg/test_retr_s9_entity_ctx.py +175 -0
  192. package/md_cg/test_review_conformance.py +59 -2
  193. package/md_cg/test_role_views.py +354 -0
  194. package/md_cg/test_trust.py +361 -0
  195. package/md_cg/test_units_poll.py +71 -0
  196. package/md_cg/test_v14_fixes.py +397 -0
  197. package/md_cg/test_validity_filter.py +280 -0
  198. package/md_cg/test_wisdom_md_store.py +7 -3
  199. package/md_cg/test_writepipe.py +5 -1
  200. package/md_cg/theory.py +16 -1
  201. package/md_cg/tokens.py +40 -8
  202. package/md_cg/tool_face.py +13 -2
  203. package/md_cg/trust.py +943 -0
  204. package/md_cg/twophase.py +12 -1
  205. package/md_cg/units.py +129 -10
  206. package/md_cg/vision_evidence.py +24 -1
  207. package/md_cg/weights.py +24 -1
  208. package/md_cg/whitebox.py +32 -1
  209. package/md_cg/whitebox_kb/data/verify_cache.json +21210 -365
  210. package/md_cg/whitebox_kb/data/verify_savings.jsonl +5078 -0
  211. package/md_cg/whitebox_kb/wisdom/audit_log/chain_heat.json +10 -10
  212. package/md_cg/whitebox_kb/wisdom/code_compose.py +113 -6
  213. package/md_cg/whitebox_kb/wisdom/code_solidified.json +1 -1
  214. package/md_cg/whitebox_kb/wisdom/verifier.py +340 -55
  215. package/md_cg/whitebox_kb/wisdom/wisdom-book-cloud.db +0 -0
  216. package/md_cg/writelimit.py +18 -4
  217. package/md_cg/writepipe.py +178 -7
  218. package/package.json +2 -2
  219. package/skills/skills/designer-perspective/scripts/__pycache__/designer.cpython-310.pyc +0 -0
  220. package/skills/skills/designer-perspective/scripts/designer.py +17 -1
  221. package/skills/skills/designer-perspective/tests/selftest.py +3 -1
  222. package/src/hooks.ts +17 -21
  223. package/src/index.ts +33 -6
  224. package/src/lib/datapath.ts +211 -13
  225. package/src/lib/mdcg_client.ts +12 -8
  226. package/src/lib/mutual.ts +411 -411
  227. package/src/lib/token_store.ts +4 -5
  228. package/zcode/AGENTS.md +196 -195
  229. package/zcode/README.md +4 -0
  230. package/md_cg/whitebox_kb/wisdom/wisdom-book-cloud.db-shm +0 -0
  231. package/md_cg/whitebox_kb/wisdom/wisdom-book-cloud.db-wal +0 -0
@@ -0,0 +1,286 @@
1
+ # 灵枢自我改进工作计划
2
+
3
+ —— 基于六篇外部研究与一份实践视频的系统化吸收 · v1.0
4
+
5
+ > 证据基线:GBrain(garrytan/gbrain,30k★)、REMem(arXiv 2602.13530,ICLR 2026)、
6
+ > MRAgent(arXiv 2606.06036,ICML 2026)、MAGE(arXiv 2608.29678)、
7
+ > Wayfinder(agent 规划技能)、上下文工程实践视频、
8
+ > Dream-RSI(arXiv 2609.14858,Google/DeepMind)。
9
+ > 每条改动标注证据来源:[GB] [RE] [MA] [MAGE] [WF] [DRSI] [V5]。
10
+
11
+ 日期:2026-09-19 · 状态:计划 v1.0(待荣裁定)· 关联:白箱化纲领、条件论、
12
+ 蜂巢跨端验证与同步协议 v0.1、多 Harness 适配设计
13
+
14
+ ---
15
+
16
+ ## 0. 元原则:计划自身的形态
17
+
18
+ 本计划采用 Dream-RSI 的三段闭环作为**元结构**——每个阶段不是清单的
19
+ 罗列,而是一个可独立验收的迷你循环:
20
+
21
+ > **改造 → 回放验证 → 量化 → 选拔 → 回归**
22
+
23
+ - **改造**:对灵枢记忆/协议/检索做一次结构性变更;
24
+ - **回放验证**:变更必须在**历史数据**上证明不劣化——用灵枢已有的
25
+ 完整留痕(会话记录、审核记录、回执、认知图真源)作为回放沙盘,
26
+ 新旧版本在全部历史查询上对比;
27
+ - **量化**:验收指标数值化(见 §7 指标体系),拒绝"感觉更好";
28
+ - **选拔**:回放分不劣化(含旧版本作为候选 → 单调门 [DRSI])才进入真源;
29
+ - **回归**:阶段完成后立即投入真实任务流(蜂巢运行),用真实使用
30
+ 暴露沙盘盲区,驱动下一阶段([DRSI] 边界:回放不知未探索区域)。
31
+
32
+ 零条改动绕过此循环。这是 Dream-RSI 对本计划的最大贡献:
33
+ **自改进的安全形态 = 回放沙盘 + 单调门 + 周期性回归真实**,
34
+ 而非"文字教训注入"形态([DRSI] 反直觉发现:文字指导一致拖累表现)。
35
+
36
+ ---
37
+
38
+ ## 1. 现状盘点:主战场与缺口
39
+
40
+ **已建成(主战场,不动摇)**:
41
+ 五层认知图、CCG 六要素条件卡、四态判定(含 BLINDSPOT)、
42
+ D_norm 信息差、审核队列(DEFER → can_admin 裁决)、supersede/forget/
43
+ protect 撤回体系、蜂巢多实例互验(跨端验证协议 v0.1:水位/心跳/回执
44
+ 逐字纪律)、hive 任务队列、三端 kernel surface(cg/stg)、渲染管线
45
+ (真源 → render → verify 防漂移)、白箱化纲领。
46
+
47
+ **外部对照后的两个缺口 + 一个盲区**:
48
+ 1. **使用侧缺口**:检索为单步路由/读取,缺图遍历原语与时间算子
49
+ ([RE][MA] 两篇独立证实这是数量级差距来源);
50
+ 2. **模型侧缺口**:事实无显式有效期,时间只是元数据而非推理维度
51
+ ([GB][RE][MAGE] 三篇独立指向);
52
+ 3. **治理盲区**:治理强度从未被量化——supersede 传播率、矛盾处理率、
53
+ 过期取回率无数字([MAGE] 给出三个现成指标定义);
54
+ 4. **自改进盲区**:evolve/consolidate 无回放沙盘与单调门([DRSI])。
55
+
56
+ ---
57
+
58
+ ## 2. 负面清单:明确不做的
59
+
60
+ 防止吸收变成照搬。以下为**有意不采纳**的外部设计:
61
+
62
+ | 不做 | 理由 |
63
+ |---|---|
64
+ | per-language 原生索引器([GB] tree-sitter 全语言 WASM,≈70MB)| 灵枢走统一语义归一路线;语言无关的结构化表示是本体,格式只是来源 |
65
+ | 把 insight/教训作为提示词常驻注入([DRSI] 反例)| 文字指导 = 有损压缩 + 语义偏置;教训以可回放记录存在,按需派生 |
66
+ | 入库前放弃裁决改为事后撤回([GB] 模式)| 事前裁决是灵枢信任模型的核心;GBrain 的事后账本可借鉴为**补充**而非替代 |
67
+ | surface 全量开放给所有 agent | 保持 kernel surface 收缩 + 阶梯 fail-closed([GB] 阶梯设计本身采纳,默认档保持最小)|
68
+ | 记忆图静态单调增长([MA] 自认局限)| 灵枢的更新/遗忘是主场,反向输出而非吸收 |
69
+
70
+ ---
71
+
72
+ ## 3. 阶段一:基础字段与冻结协议(数据模型升级)
73
+
74
+ **目标**:事实的生命周期与治理状态在数据模型上显式化。
75
+
76
+ ### 3.1 双时间轴字段 [GB][RE][MAGE]
77
+ 条件卡新增:
78
+ - `believed_at`(信念时间:体系何时确认此条——supersede/审核的锚);
79
+ - `effective_from / effective_until`(效力时间:事实在任务世界何时有效);
80
+ - `expired_at` + 过期查询语义(过期≠删除,是查询默认过滤)。
81
+ 验收:全部历史条件卡回填后,按效力区间过滤的历史查询回放结果
82
+ 与人工标定一致。
83
+
84
+ ### 3.2 巩固字段一等公民化 [GB]
85
+ 新增 `consolidated_at / consolidated_into`(自引用)——归并/insight
86
+ 操作从流程记录升级为可追溯字段。
87
+ 验收:任一合并后的条目可定位其全部前身。
88
+
89
+ ### 3.3 裁决枚举扩为四类 [MAGE]
90
+ 审核队列裁决从 ACCEPT/REJECT(+edit/merge) 扩为显式
91
+ **ADD / UPDATE / DELETE / NOOP**——NOOP("已评估,判定不改变任何
92
+ 现有记忆")成为被记录的判定而非静默忽略。
93
+ 验收:NOOP 有留痕、有统计(§6 指标输入)。
94
+
95
+ ### 3.4 冻结动词协议 v1 [GB]
96
+ 为灵枢 MCP 记忆工具面(kernel surface 的记忆相关操作)定义
97
+ 《灵枢记忆动词协议 v1》:字段名与语义冻结、只增不破坏、
98
+ `protocol_version` 随行、**conformance 测试**钉死形状。
99
+ 范围先行收窄:`route / read / write / supersede / forget` 五动词。
100
+ 验收:三端(DSH/ZCode/CodeBuddy)按协议文档独立实现客户端,
101
+ conformance 全绿。
102
+
103
+ ### 3.5 fence 真源绑定 [GB]
104
+ 条件卡与 Markdown 真源之间加"往返列"(真源 slug + 行位),
105
+ 实现 DB 行 ↔ 真源文件双向定位。
106
+ 验收:任一条件卡可定位真源精确行;真源重排后按 reconciler 重建。
107
+
108
+ **回放验证**:全部历史条件卡与审核记录在新模型上重放
109
+ (route/read/write/supersede 逐条),结果与旧模型逐字节一致
110
+ (纯字段增列,不改既有语义)。
111
+ **风险**:低(增列不动既有语义)。**依赖**:无。
112
+
113
+ ---
114
+
115
+ ## 4. 阶段二:检索原语(使用侧补强)
116
+
117
+ **目标**:把 `cg` 的检索从单步路由升级为可组合的图遍历原语,
118
+ agent 端获得多步推演的能力面。
119
+
120
+ ### 4.1 时间算子 [RE]
121
+ 所有检索原语接受 `start_time, end_time, start_operator, end_operator`
122
+ 参数——时间是一等检索参数且带比较算子(§3.1 的字段在此兑现)。
123
+
124
+ ### 4.2 find_entity_contexts 式原语 [RE]
125
+ `subject / object / predicate + 时间条件 + limit / ordering / offset /
126
+ aggregation`——按三元组任意端与谓词反查。
127
+
128
+ ### 4.3 tag 枢纽层 [MA]
129
+ cues(细粒度线索)与内容之间加"短标签"检索枢纽
130
+ (≤2 词,`query_tag_events` 式),先查 tag 再展开内容。
131
+
132
+ ### 4.4 反向遍历 [MA]
133
+ `Content → (Cue, Tag)`——从已取内容反查来源线索、由线索激活
134
+ 相邻记忆,暴露为独立检索动作。
135
+
136
+ ### 4.5 f_route 式剪枝 [MA]
137
+ 多步遍历中每步由 LLM 剪枝无关分支——[MA] 数据:剪枝使 token
138
+ 118k vs 245k/632k(−52%~−81%),多步反而省。
139
+
140
+ ### 4.6 能力探测降级 [GB]
141
+ 检索入口探测能力:无 embedding 依赖时自动降级 BM25 式关键词——
142
+ 零配置可用的底线体验。
143
+
144
+ **回放验证**:新原语在全部历史查询上对比单步基线——
145
+ 召回集是旧法的超集(单调门),且引入的噪声由剪枝控制
146
+ (f_route 的准确率回放对比)。
147
+ **风险**:中(新原语的误用噪声)。**依赖**:§3.1(时间字段)。
148
+
149
+ ---
150
+
151
+ ## 5. 阶段三:治理量化(把主场变成可测的主场)
152
+
153
+ **目标**:灵枢最强的治理维度获得数字。[MAGE] 给出三个现成定义。
154
+
155
+ ### 5.1 治理指标三件套 [MAGE]
156
+ - **修正传播率**:一次 supersede 之后,下游引用它的节点同步失效/
157
+ 更新的比例(MAGE 91.2%);
158
+ - **矛盾处理率**:新证据与旧记忆矛盾时被正确裁决(取代/失效)
159
+ 的比例(MAGE 88.5%);
160
+ - **过期取回率**:查询返回已过期信息的比例(MAGE 3.1%,越低越好)。
161
+
162
+ ### 5.2 拒答/无知量化 [RE]
163
+ 四态判定的 BLINDSPOT 获得 REMem 式量化:不可答问题的
164
+ 拒答精确率/召回率/F1(REMem F1 64.0 为对照线)。
165
+ "显式表达无知"从设计变成可打分的能力。
166
+
167
+ ### 5.3 公开基准体检 [RE]
168
+ 以 LoCoMo(长对话回忆,与蜂巢会话场景最近)为首个外部基准,
169
+ 灵枢记忆对标准流程跑分,与 Mem0/HippoRAG 2/REMem 公开数字对照。
170
+ 仅测差距,不为其改架构。
171
+
172
+ ### 5.4 BLINDSPOT 票据化 [WF]
173
+ BLINDSPOT 生成时追问"缺的是哪类信息",自动生成对应类型消解票据
174
+ (research / prototype / grilling / task)挂入依赖图——
175
+ 无知从状态标记升级为可分派工单。grilling 类型由既有 grill 工具承接。
176
+
177
+ **回放验证**:指标基线先在"不改动"的当前版本上测出
178
+ (这是基线定义,无单调门问题);随后每次治理相关改动
179
+ 对照基线报告三指标变化。
180
+ **风险**:低(测量不改行为)。**依赖**:§3.3(NOOP 枚举)。
181
+
182
+ ---
183
+
184
+ ## 6. 阶段四:角色化读取与超边形式化(蜂巢侧)
185
+
186
+ **目标**:蜂巢多实例的记忆读取按角色差异化;协作事件形式化。
187
+
188
+ ### 6.1 角色化读取 [MAGE]
189
+ 主代理读"结论与修正历史",验证端读"判据面与环境陷阱",
190
+ 回执任务读"命令与预期输出"——同一记忆库,按角色过滤视图。
191
+ 验收:角色化读取后各角色任务的 token 消耗与判据命中率
192
+ 对照无差别全量读取。
193
+
194
+ ### 6.2 超边形式化 [MAGE]
195
+ 把"一次跨端验证"显式定义为超边类型:参与者集合、证据集合、
196
+ 修正集合、时间范围——互验协议 v0.1 的文件组约定升级为
197
+ 可被外部工具理解的正式结构(对齐 MAGE 的第一类超边)。
198
+ 验收:任一历史验证回执可从超边完整重建。
199
+
200
+ **依赖**:§3 全部(超边字段引用双时间轴与裁决枚举)。
201
+ **回放验证**:历史互验记录全部迁移为超边后,水位/心跳/回执
202
+ 语义逐字不变。
203
+
204
+ ---
205
+
206
+ ## 7. 阶段五:回放沙盘(自改进闭环,终局)
207
+
208
+ **目标**:灵枢的 evolve/consolidate/白箱自举获得 Dream-RSI 形态的
209
+ 安全自改进。
210
+
211
+ ### 7.1 历史留痕升级为可回放世界 [DRSI]
212
+ 会话记录、审核记录、回执、认知图真源——这些本来就完整留痕的
213
+ 历史,封装为**可回放世界**:任意记忆/策略变更,可以在历史上
214
+ 全部真实查询与任务回执上离线重放。
215
+
216
+ ### 7.2 单调门 [DRSI]
217
+ 自改进候选(新词条、新路由策略、新归并规则)在回放世界上
218
+ 与现役版本同台比试;候选集含现役版本 → **历史回放分单调不退化**
219
+ 才被选拔。
220
+
221
+ ### 7.3 周期性回归与盲区标记 [DRSI]
222
+ 回放只覆盖已探索区域——沙盘选拔后周期性回归真实任务流,
223
+ 新暴露的未探索区域以 BLINDSPOT 显式标记(§5.4 票据化承接),
224
+ 驱动下一轮在线探索。
225
+
226
+ **回放验证**:本阶段自身的验收即 Dream-RSI 数字——自改进操作
227
+ 历史回放分单调不退化 + 真实任务流上无回归 + Lasso 式成本节省
228
+ (对照:人工演进)。
229
+ **风险**:高(新机制)。**依赖**:§3–§5 全部 + 蜂巢历史留痕完整
230
+ (已满足:会话/审核/回执本就全留痕)。
231
+
232
+ ---
233
+
234
+ ## 8. 指标体系(贯穿验收)
235
+
236
+ | 指标 | 定义 | 来源 | 基线 |
237
+ |---|---|---|---|
238
+ | 修正传播率 | supersede 后下游同步失效比例 | [MAGE] | 待测(当前无数字)|
239
+ | 矛盾处理率 | 矛盾证据被正确裁决比例 | [MAGE] | 待测 |
240
+ | 过期取回率 | 查询返回已过期信息比例 | [MAGE] | 待测 |
241
+ | 拒答 F1 | 不可答问题的显式拒答 | [RE] | 对照线 64.0 |
242
+ | 检索召回超集率 | 新原语召回 ⊇ 旧法召回比例 | 本计划 | 100%(单调门)|
243
+ | token 效率 | 同等任务 token 消耗 | [MA] | 对照 −50% 目标 |
244
+ | 回放分单调性 | 候选 vs 现役回放分 | [DRSI] | 不退化 |
245
+ | 接入成本 | 新 harness 接入所需理解面 | [GB] | 15 分钟对齐 |
246
+
247
+ ---
248
+
249
+ ## 9. 风险与边界
250
+
251
+ 1. **回放盲区** [DRSI]:沙盘单调 ≠ 真实不退化——每阶段以真实任务流
252
+ 回归收口,新盲区以 BLINDSPOT 标记;
253
+ 2. **上游提取质量** [MAGE 同款限制]:语义归一依赖 LLM 抽取——
254
+ 抽取失真会进库。缓解:来源留痕 + fence 往返(可审计回原文)、
255
+ 受控翻译(标识符白名单);
256
+ 3. **协议冻结的不可逆**:v1 冻结是单向门——字段命名与语义需在
257
+ 三端实测收敛后再冻结,冻结前允许破坏性调整;
258
+ 4. **工程容量**:阶段四、五重(蜂巢改造 + 新机制),阶段一至三
259
+ 轻(字段 + 原语 + 测量)。顺序即风险排序。
260
+
261
+ ---
262
+
263
+ ## 10. 摘要对照总表
264
+
265
+ | 条目 | 证据 | 落点 | 阶段 |
266
+ |---|---|---|---|
267
+ | 双时间轴 | [GB][RE][MAGE] | 条件卡字段 | 一 |
268
+ | 巩固字段 | [GB] | facts/条件卡 | 一 |
269
+ | NOOP 裁决 | [MAGE] | 审核队列枚举 | 一 |
270
+ | 冻结动词协议 + conformance | [GB] | md_cg MCP 面 | 一 |
271
+ | fence 真源绑定 | [GB] | 条件卡↔md | 一 |
272
+ | 时间算子 | [RE] | 检索原语 | 二 |
273
+ | 实体上下文原语 | [RE] | 检索原语 | 二 |
274
+ | tag 枢纽 | [MA] | 检索原语 | 二 |
275
+ | 反向遍历 | [MA] | 检索原语 | 二 |
276
+ | f_route 剪枝 | [MA] | 检索原语 | 二 |
277
+ | 能力探测降级 | [GB] | 检索入口 | 二 |
278
+ | 治理指标三件套 | [MAGE] | 指标体系 | 三 |
279
+ | 拒答量化 | [RE] | BLINDSPOT | 三 |
280
+ | LoCoMo 基准体检 | [RE] | 外部锚点 | 三 |
281
+ | BLINDSPOT 票据化 | [WF] | 判定→工单 | 三 |
282
+ | 角色化读取 | [MAGE] | 蜂巢读取 | 四 |
283
+ | 超边形式化 | [MAGE] | 互验协议 | 四 |
284
+ | 回放世界池 | [DRSI] | 自改进 | 五 |
285
+ | 单调门 | [DRSI] | 自改进 | 五 |
286
+ | 周期性回归 + 盲区 | [DRSI][WF] | 自改进 | 五 |
package/dsh/README.md CHANGED
@@ -11,6 +11,9 @@
11
11
  | `cordis.yml.example` | 插件配置示例(30+ 项:mdcg / memory / mutual / capability …) |
12
12
  | `cordis-patch-profile-web.example.yml` | profile `web` 的 config override **备份模板**(换 profile / 重装 / 升级后须核对仍在) |
13
13
  | `dsh-web-start.bat` | DSH web 宿主启动脚本(带 8GB heap 保护,防启动 OOM) |
14
+ | `update-lingshu.ps1` / `update-lingshu.bat` | 灵枢插件一键更新:放行 pnpm 发布龄闸门 → 同步 lockfile → 停 DSH(释放目录锁)→ 安装并校验 → 重启。详见脚本头部注释 |
15
+ | `hive-mcp.example.yml` | **蜂巢 MCP 接入样例**(追加进 `<profile>/cordis.patch.yml`):把 `hive_spawn`/`hive_poll`/`hive_kill`/`hive_doctor` 以 `mcp__hive__*` 暴露给 DSH 模型。含 env 清洗、insert 形态、密钥传递等实测要点 |
16
+ | `hive-mcp-probe.mjs` | 蜂巢 MCP server 探针:用 DSH 自带的 `@modelcontextprotocol/sdk` 直接握手 + `tools/list` + `hive_doctor`(`--spawn` 可跑一次真任务),**不动 DSH 进程**即可验证 server 侧 |
14
17
 
15
18
  ## 安装
16
19
 
@@ -23,6 +26,36 @@ dsh plugin --profile web add . # 必须走 dsh plugin,勿用裸 npm ins
23
26
 
24
27
  再参照 `cordis.yml.example` 在 `<profile>/cordis.yml` 启用配置。
25
28
 
29
+ ## 蜂巢(hive)MCP 接入(任务调度 + 多智能体并发)
30
+
31
+ 把 `hive/hive_mcp/mcp_server.py` 作为 MCP 服务器接进 DSH,模型即可直接调用 4 个工具:
32
+ `mcp__hive__hive_spawn` / `mcp__hive__hive_poll` / `mcp__hive__hive_kill` / `mcp__hive__hive_doctor`。
33
+
34
+ 完整配置见 [`hive-mcp.example.yml`](hive-mcp.example.yml)(**必须用 `- insert:` 形态**追加到
35
+ `<profile>/cordis.patch.yml`;模板内 4 个 `<REPLACE_WITH_...>` 占位符换成你自己的绝对路径)。
36
+ 三条最容易踩的点:
37
+
38
+ 1. **env 会被清洗**:`dsh-mcp-client` 只继承 12 个系统变量,`PYTHONPATH` / `PYTHONUTF8` /
39
+ `DEEPSEEK_API_KEY` 都得在配置里显式写出,否则 `python -m hive.hive_mcp.mcp_server` 起不来。
40
+ 2. **密钥要传下去**:serve 未存活时 `hive_spawn` 会自动拉起它,而 `hive/config.local.json` 里
41
+ `HIVE_API_KEY` 取自宿主环境变量 `DEEPSEEK_API_KEY`;漏传 ⇒ 拉起一个「没钥匙的 serve」。
42
+ 3. **重启才生效**:profile 的 `patchReload` 默认 `startup`。
43
+
44
+ 验证(两步,都不需要动正在跑的 DSH;探针脚本内是占位符,用环境变量传入):
45
+
46
+ ```bash
47
+ set DSH_ROOT=<DSH 安装目录>
48
+ set HIVE_REPO=<dsh-memory 仓的绝对路径>
49
+ set HIVE_LIB=<认知图库仓的绝对路径>
50
+ set MDCG_ROOT=<认知图根的绝对路径>
51
+ node dsh/hive-mcp-probe.mjs # 直接连 server:握手 + tools/list + hive_doctor
52
+ node dsh/hive-mcp-probe.mjs --spawn # 再真跑一个任务,验证写路径
53
+ dsh --profile web --dump-config | findstr mcp-hive # 确认配置确实进了组合后的插件树
54
+ ```
55
+
56
+ 重启后在 DSH 里调用 `mcp__hive__hive_doctor` 应报 serve 存活;`hive_spawn` 一个最小任务
57
+ (如「回复 HIVE_DSH_MCP_OK」)再 `hive_poll` 到 `done` 即端到端通。
58
+
26
59
  ## 纪律注入(personaPrefix 受管块)
27
60
 
28
61
  DSH 端的 16 条工作纪律**不走独立文件**,而是以 `compact` 变体写入
@@ -3,13 +3,18 @@
3
3
  #
4
4
  # 说明:
5
5
  # - !!js process.env.X 语法在加载期求值,密钥不入库
6
- # - 记忆写入路径(下面 mdcg.root)默认锚定**插件仓自身** data/,与进程 cwd
7
- # 解耦——历史事故:cwd 落在别的仓时,相对路径会把记忆真源写偏。目录不存在
8
- # 会自动创建。想换位置有三种方式(优先级由高到低):
6
+ # - 记忆写入路径(下面 mdcg.root)默认落在**用户级状态根**(~/.dsh/.dsh-memory/data),
7
+ # 与进程 cwd、**插件包目录**都解耦——历史事故①:cwd 落在别的仓时相对路径会把
8
+ # 记忆真源写偏;事故②:默认曾锚定插件包内 data/,而 pnpm 更新包会整目录替换,
9
+ # 包内数据每次更新成功即被删掉(详见 src/lib/datapath.ts 头注)。目录不存在会
10
+ # 自动创建。想换位置有三种方式(优先级由高到低):
9
11
  # ① 环境变量 MDCG_DATA_ROOT(数据根)/ MDCG_ROOT(认知图根)
10
- # ② 编辑 <插件仓>/data/paths.json 的 "data_root" / "root"
12
+ # ② 编辑 <用户级状态根>/paths.json 的 "data_root" / "root"
13
+ # (旧版包内 data/paths.json 仍兼容读,但会被下次 pnpm 更新删除)
11
14
  # ③ 本文件的 mdcg.root(填绝对路径或相对插件仓的路径)
12
15
  # 查当前解析结果:python md_cg/datapath.py
16
+ # 旧版数据迁移:包内 data/ 仍有内容时,插件首启会**复制**(不删除)到用户级根;
17
+ # 也可手动执行 python md_cg/datapath.py --migrate-legacy
13
18
 
14
19
  - id: lingshu-memory
15
20
  name: '@furongjun1999/dsh-memory'
@@ -108,9 +113,10 @@
108
113
  mdcg:
109
114
  enabled: true
110
115
  # root = 记忆写入路径(用户可改)。留空 '' = 走解析优先级,默认落在
111
- # **插件仓自身** data/mdcg(与 cwd 解耦):
112
- # env MDCG_ROOT > data/paths.json 的 "root" > 本项 > 默认 <插件仓>/data/mdcg
113
- # 想换位置:填绝对路径(如 'D:/lingshu/mdcg'),或改 data/paths.json。
116
+ # **用户级状态根** data/mdcg(与 cwd、插件包目录都解耦):
117
+ # env MDCG_ROOT > <用户级状态根>/paths.json 的 "root" > 本项
118
+ # > 默认 ~/.dsh/.dsh-memory/data/mdcg
119
+ # 想换位置:填绝对路径(如 'D:/lingshu/mdcg'),或改 paths.json。
114
120
  root: ''
115
121
  actor: 'dsh-memory' # MDCG_ACTOR:私有内容按 (tenant, actor) 派生 DEK
116
122
  tenant: 'default' # MDCG_TENANT:须与迁移脚本 --tenant 一致
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * hive-mcp-probe.mjs —— 用 DSH 自带的 @modelcontextprotocol/sdk 直接连一次蜂巢 MCP server。
4
+ *
5
+ * 目的:在不动 DSH 进程的前提下,验证「DSH 的 mcp-client 会看到什么」。
6
+ * - 用与 dsh-mcp-client 同一个 SDK(版本一致)走 stdio 握手
7
+ * - tools/list → 工具名与入参 schema
8
+ * - tools/call hive_doctor → serve 存活与任务统计
9
+ * - (可选)tools/call hive_spawn → 真提交一个任务,证明写路径通
10
+ *
11
+ * 用法:node dsh/hive-mcp-probe.mjs [--spawn]
12
+ * 依赖环境变量(可覆盖):DSH_ROOT、HIVE_REPO、HIVE_LIB、MDCG_ROOT
13
+ * DSH_ROOT = DSH 安装目录(其下含 node_modules/@modelcontextprotocol/sdk)
14
+ * HIVE_REPO = dsh-memory 仓绝对路径
15
+ * HIVE_LIB = 认知图库仓绝对路径(追加进 PYTHONPATH)
16
+ * MDCG_ROOT = 认知图根
17
+ * 四个值未设置且脚本内仍为占位符时直接报错退出——本仓是公开仓,不硬编码本机路径。
18
+ */
19
+ const DSH_ROOT = (process.env.DSH_ROOT || '<REPLACE_WITH_DSH_INSTALL_DIR>').replace(/\\/g, '/')
20
+ const REPO = process.env.HIVE_REPO || '<REPLACE_WITH_ABSOLUTE_PATH_TO_dsh-memory>'
21
+ const LIB = process.env.HIVE_LIB || '<REPLACE_WITH_ABSOLUTE_PATH_TO_mdcg_lib>'
22
+ const MDCG_ROOT = process.env.MDCG_ROOT || '<REPLACE_WITH_ABSOLUTE_PATH_TO_MDCG_ROOT>'
23
+
24
+ const PH = { DSH_ROOT, HIVE_REPO: REPO, HIVE_LIB: LIB, MDCG_ROOT }
25
+ const missing = Object.entries(PH).filter(([, v]) => v.includes('REPLACE_WITH'))
26
+ if (missing.length) {
27
+ console.error('[ABORT] 以下参数仍是占位符,请用同名环境变量覆盖后重跑:' + missing.map(([k]) => k).join(', '))
28
+ process.exit(1)
29
+ }
30
+
31
+ const SDK = 'file:///' + DSH_ROOT + '/node_modules/@modelcontextprotocol/sdk/dist/esm'
32
+ const { Client } = await import(SDK + '/client/index.js')
33
+ const { StdioClientTransport } = await import(SDK + '/client/stdio.js')
34
+
35
+ const doSpawn = process.argv.includes('--spawn')
36
+
37
+ const transport = new StdioClientTransport({
38
+ command: 'python',
39
+ args: ['-m', 'hive.hive_mcp.mcp_server'],
40
+ cwd: REPO,
41
+ env: {
42
+ ...process.env,
43
+ PYTHONPATH: REPO + ';' + LIB,
44
+ PYTHONUTF8: '1',
45
+ PYTHONIOENCODING: 'utf-8',
46
+ MDCG_ROOT,
47
+ },
48
+ })
49
+
50
+ const client = new Client({ name: 'dsh-hive-probe', version: '1.0.0' })
51
+ await client.connect(transport)
52
+ console.log('[OK] MCP 握手成功(stdio)')
53
+ console.log('serverInfo =', JSON.stringify(client.getServerVersion?.() ?? {}))
54
+
55
+ const listed = await client.listTools()
56
+ console.log('[OK] tools/list 返回 ' + listed.tools.length + ' 个工具:')
57
+ for (const t of listed.tools) {
58
+ console.log(' - ' + t.name + ' 参数:' + Object.keys(t.inputSchema?.properties ?? {}).join(', '))
59
+ }
60
+
61
+ const doc = await client.callTool({ name: 'hive_doctor', arguments: {} })
62
+ const docText = (doc.content ?? []).map((c) => c.text ?? '').join('')
63
+ console.log('[OK] hive_doctor →')
64
+ console.log(' ' + docText.slice(0, 900).replace(/\n/g, '\n '))
65
+
66
+ if (doSpawn) {
67
+ const tag = 'HIVE_MCP_OK_' + Date.now()
68
+ const sp = await client.callTool({ name: 'hive_spawn', arguments: {
69
+ model: 'deepseek-flash',
70
+ user_prompt: 'Reply with exactly this token and nothing else: ' + tag,
71
+ max_tokens: 2000,
72
+ } })
73
+ const spText = (sp.content ?? []).map((c) => c.text ?? '').join('')
74
+ console.log('[OK] hive_spawn → ' + spText.slice(0, 400))
75
+ const jobId = (spText.match(/h\d+_[0-9a-f]+/) || [])[0]
76
+ if (jobId) {
77
+ let last = ''
78
+ for (let i = 0; i < 60; i++) {
79
+ await new Promise((r) => setTimeout(r, 3000))
80
+ const pl = await client.callTool({ name: 'hive_poll', arguments: { job_id: jobId } })
81
+ const txt = (pl.content ?? []).map((c) => c.text ?? '').join('')
82
+ const st = (txt.match(/"state"\s*:\s*"([a-z]+)"/) || [])[1]
83
+ if (st !== last) { console.log(' poll ' + jobId + ' state=' + st); last = st }
84
+ if (['done', 'error', 'timeout', 'killed'].includes(st)) {
85
+ console.log('[RESULT] ' + txt.slice(0, 1200))
86
+ console.log('[CHECK] 令牌往返 ' + (txt.includes(tag) ? '通过(content 含 ' + tag + ')' : '未在片段中看到令牌,读全文确认'))
87
+ break
88
+ }
89
+ }
90
+ }
91
+ }
92
+
93
+ await client.close()
94
+ console.log('[DONE] 探针结束')
@@ -0,0 +1,62 @@
1
+ # ─────────────────────────────────────────────────────────────────────────────
2
+ # 蜂巢(hive)MCP 接入 · DSH 端配置样例(本机实测通过 2026-09-17)
3
+ #
4
+ # 作用:把 hive 的 4 个工具变成 DSH 原生工具,交给模型直接调用:
5
+ # mcp__hive__hive_spawn 提交 LLM 任务(毫秒返回 job_id,蜂巢后台并发执行)
6
+ # mcp__hive__hive_poll 查状态 / 读结果(含 handoff_ready 交回信号)
7
+ # mcp__hive__hive_kill 写 kill 标志强杀(worker ≤1s 生效)
8
+ # mcp__hive__hive_doctor 体检:serve 存活 / 任务统计 / env 资格列
9
+ #
10
+ # 放置位置:$DSH_HOME/profiles/<profile>/cordis.patch.yml(用户 patch 层,追加即可)
11
+ #
12
+ # ⚠️ 必须包在 `- insert:` 里。用户 patch 层的裸条目 `- id: xxx` 语义是「覆盖已
13
+ # 有行的 config」;对不存在的 id **不生效,而且不报错**。实测:裸写 mcp-hive
14
+ # 后 `dsh --profile web --dump-config` 里查无此行、stderr 也为空;改成
15
+ # `- insert: [...]` 后立刻出现在 dump 里。
16
+ #
17
+ # 前置依赖(一次性):
18
+ # 1) profile 需能解析 @deepseek-ai/dsh-mcp-client(DSH 自带此包,用 link: 指过去):
19
+ # {"@deepseek-ai/dsh-mcp-client": "link:<你的 DSH 安装目录>/node_modules/@deepseek-ai/dsh-mcp-client"}
20
+ # 再用 pnpm install --lockfile-only 同步 lockfile(只写 lockfile,不动 node_modules)。
21
+ # node_modules 下的目录实体与其它 link: 依赖同形(Windows Junction),可手工补齐:
22
+ # New-Item -ItemType Junction -Path <profile>\\node_modules\\@deepseek-ai\\dsh-mcp-client -Target <上面的路径>
23
+ # (DSH 运行中跑 pnpm install 会被 <profile>\\node_modules\\@furongjun1999\\dsh-memory
24
+ # 的目录锁挡住报 EPERM;用 Junction 可绕开,因为不重命名任何目录。)
25
+ # 2) 生效时机:profile 的 patchReload 默认 "startup" → 改完要**重启 DSH**才加载。
26
+ #
27
+ # 实测要点(2026-09-17 本机,全部有回显证据):
28
+ # · mcp-client 会清洗宿主环境变量:只继承 APPDATA / HOMEDRIVE / HOMEPATH /
29
+ # LOCALAPPDATA / PATH / PROCESSOR_ARCHITECTURE / SYSTEMDRIVE / SYSTEMROOT /
30
+ # TEMP / USERNAME / USERPROFILE / PROGRAMFILES 这 12 个
31
+ # (@modelcontextprotocol/sdk 的 stdio.js::DEFAULT_INHERITED_ENV_VARS)。
32
+ # → PYTHONPATH / PYTHONUTF8 必须在这里显式声明,否则
33
+ # `python -m hive.hive_mcp.mcp_server` 直接 ModuleNotFoundError。
34
+ # · hive/ 是 python 包;`-m hive.hive_mcp.mcp_server` 要求 PYTHONPATH 指向仓根。
35
+ # · serve 未存活时 hive_spawn 会自动拉起(复用 serve_start.start())。该路径的
36
+ # env = MCP 进程 env + hive/config.local.json;而 config.local.json 里
37
+ # HIVE_API_KEY 的来源写作 {"env": "DEEPSEEK_API_KEY"} → 必须把
38
+ # DEEPSEEK_API_KEY 传下来,否则自动拉起的是「没钥匙的 serve」,任务必失败。
39
+ # · 验收(端到端):mcp__hive__hive_spawn 提交 → mcp__hive__hive_poll 轮询到
40
+ # done。实测 job h1789598763792_32c0aa:claimed→running→done 5.77s,
41
+ # content 与提示词约定的令牌逐字相同,且 serve 由本次 spawn 自动拉起。
42
+ # · 可用 `node dsh/hive-mcp-probe.mjs` 在不动 DSH 的前提下单独验证 server 侧。
43
+ # · 本文件是公开仓模板:下面 4 个 <REPLACE_WITH_...> 占位符须换成你自己的
44
+ # 绝对路径(正斜杠写法),否则客户端会以错误 cwd/PYTHONPATH 启动 server。
45
+ # ─────────────────────────────────────────────────────────────────────────────
46
+ - insert:
47
+ - id: mcp-hive
48
+ name: '@deepseek-ai/dsh-mcp-client'
49
+ config:
50
+ serverName: hive
51
+ transport: stdio
52
+ command: python
53
+ args: ['-m', 'hive.hive_mcp.mcp_server']
54
+ cwd: '<REPLACE_WITH_ABSOLUTE_PATH_TO_dsh-memory>'
55
+ env:
56
+ PYTHONPATH: '<REPLACE_WITH_ABSOLUTE_PATH_TO_dsh-memory>;<REPLACE_WITH_ABSOLUTE_PATH_TO_mdcg_lib>'
57
+ PYTHONUTF8: '1'
58
+ PYTHONIOENCODING: 'utf-8'
59
+ MDCG_ROOT: '<REPLACE_WITH_ABSOLUTE_PATH_TO_MDCG_ROOT>'
60
+ DEEPSEEK_API_KEY: !!js process.env.DEEPSEEK_API_KEY
61
+ toolCallTimeoutMs: 60000
62
+ failOnStartupError: false
@@ -0,0 +1,11 @@
1
+ @echo off
2
+ rem ============================================================
3
+ rem update-lingshu.bat - 灵枢插件一键更新(占位:逻辑在 update-lingshu.ps1)
4
+ rem ============================================================
5
+ setlocal
6
+ powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0update-lingshu.ps1" %*
7
+ set RC=%ERRORLEVEL%
8
+ echo.
9
+ if "%RC%"=="0" (echo [OK] update finished.) else (echo [FAILED] exit %RC% - see %TEMP%\update-lingshu.log)
10
+ pause
11
+ endlocal