@furongjun1999/dsh-memory 0.4.11 → 0.5.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.
Files changed (580) hide show
  1. package/README.md +552 -465
  2. package/codebuddy/CODEBUDDY.md +11 -3
  3. package/codebuddy/README.md +92 -90
  4. package/codebuddy/mcp.json +27 -27
  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 -169
  6. package/docs/Pi/345/217/257/345/255/246/344/271/240/344/274/230/347/202/271_/347/201/265/346/236/242/345/244/247/350/204/221/346/224/271/350/277/233/344/272/244/346/216/245_20260915.md +144 -144
  7. package/docs/README.md +143 -111
  8. package/docs/discipline/harnesses.yaml +244 -226
  9. package/docs/discipline/templates/full.md.tmpl +61 -61
  10. package/docs/discipline/templates/rules.mdc.tmpl +68 -0
  11. package/docs/discipline/templates/skill.md.tmpl +23 -23
  12. package/docs/eval/AGI/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v1.0.md +299 -299
  13. package/docs/eval/AGI/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v2.0.md +239 -239
  14. package/docs/eval/bench_lingshu_self/bench_self.py +140 -0
  15. package/docs/eval/bench_lingshu_self/self_bench_result.json +404 -0
  16. package/docs/eval/bench_lingshu_self//347/201/265/346/236/242/350/207/252/345/272/223/347/253/257/345/210/260/347/253/257/346/243/200/347/264/242/345/256/236/346/265/213_v1.0.md +38 -0
  17. package/docs/eval//344/270/215/345/217/257/351/235/240/346/200/247/350/220/275/345/234/260_P0_v1.0.md +185 -0
  18. package/docs/eval//345/256/236/351/252/214/346/226/271/346/241/210_/345/255/246/344/271/240/351/227/255/347/216/257AB/344/270/216/346/250/252/350/257/204_v1.0.md +174 -174
  19. package/docs/eval//346/225/205/351/232/234/346/263/250/345/205/245/345/256/236/346/265/213_v1.0.md +422 -0
  20. package/docs/eval//346/250/252/350/257/204_/345/205/255/345/256/266100/351/242/230/344/270/255/350/213/261/345/217/214/346/237/245_v1.0.md +223 -223
  21. package/docs/eval//347/253/257/345/210/260/347/253/257LoCoMoQA/345/220/214/345/217/243/345/276/204/345/257/271/347/205/247_v1.0.md +100 -0
  22. package/docs/eval//347/253/257/345/210/260/347/253/257/345/271/262/346/211/260/346/261/240/350/257/204/346/265/213_/347/241/256/345/256/232/346/200/247/350/243/201/345/206/263vsLLM_judge_v1.1.md +197 -0
  23. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v1.md +156 -0
  24. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v10.md +210 -0
  25. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v11.md +227 -0
  26. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v12.md +203 -0
  27. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v13.md +233 -0
  28. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v14.md +191 -0
  29. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v15.md +213 -0
  30. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v16.md +214 -0
  31. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v17.md +199 -0
  32. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v2.md +156 -0
  33. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v3.md +152 -0
  34. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v4.md +128 -0
  35. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v5.md +114 -0
  36. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v6.md +192 -0
  37. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v7.md +187 -0
  38. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v8.md +207 -0
  39. package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v9.md +203 -0
  40. package/docs/{mdcg → hive}//344/273/244/347/211/214/344/270/216/350/247/222/350/211/262/346/235/203/350/201/214/345/210/206/347/246/273_v0.1.md +165 -160
  41. package/docs/hive//344/273/244/347/211/214/350/257/255/344/271/211/344/277/256/346/255/243_/344/273/262/350/243/201/344/275/215_v0.1.md +76 -0
  42. package/docs/{mdcg → hive}//345/255/220/344/273/243/347/220/206/351/205/215/347/275/256/346/240/207/345/207/206_v0.5.md +236 -236
  43. package/docs/hive//345/256/211/345/205/250/345/256/241/350/256/241/345/256/236/351/224/232_v0.1.md +202 -0
  44. 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 -43
  45. package/docs/hive//346/243/200/347/264/242/347/256/227/346/263/225/345/217/243/345/276/204/345/257/271/347/205/247_v0.1.md +85 -0
  46. 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 -102
  47. package/docs/hive//350/234/202/345/267/242M6_ingest/345/256/236/346/226/275/350/256/241/345/210/222_v0.1.md +47 -0
  48. 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 +519 -503
  49. package/docs/hive//350/234/202/345/267/242/345/267/245/344/275/234/350/256/260/345/277/206_/351/241/271/347/233/256/350/256/241/345/210/222.md +85 -85
  50. package/docs/hive//350/234/202/345/267/242/350/256/276/350/256/241_/347/220/206/350/256/272/345/257/271/351/275/220_v0.1.md +191 -0
  51. package/docs/hive//350/234/202/345/267/242/350/277/255/344/273/243_/345/256/217/350/247/202/344/270/216/347/276/244/344/275/223/350/260/203/345/272/246_v0.1.md +90 -0
  52. package/docs/images/lingshu-moonlight-covenant-poster-preview.jpg +0 -0
  53. package/docs/images/lingshu-moonlight-covenant-poster.png +0 -0
  54. package/docs/mdcg/D_meta_/345/267/245/347/250/213/345/214/226/346/226/271/346/241/210_v0.2.md +216 -216
  55. package/docs/mdcg/README/350/257/246/347/273/206/347/211/210_v0.4.10.md +646 -646
  56. package/docs/mdcg/lingshu_tutorial.html +14449 -14449
  57. package/docs/mdcg/release_v0.4.11.md +49 -0
  58. package/docs/mdcg/release_v0.4.5.md +55 -55
  59. package/docs/mdcg/tool_table_v0.3.0.md +117 -117
  60. 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 -600
  61. 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 +40 -40
  62. package/docs/mdcg//345/215/225/345/205/203/350/207/252/346/210/221/351/224/232/347/202/271_/347/263/273/347/273/237/346/217/220/347/244/272/350/257/215/346/240/207/345/207/206_v0.3.md +275 -275
  63. package/docs/mdcg//345/217/221/345/270/203/351/227/250/347/246/201/351/223/276_v0.1.md +54 -0
  64. package/docs/mdcg//346/272/220/347/240/201/347/272/247/346/236/266/346/236/204/345/256/241/350/256/241_GPT/346/211/271/350/257/204/345/257/271/347/205/247_v1.0.md +130 -130
  65. package/docs/mdcg//347/201/265/346/236/24282/345/267/245/345/205/267_/345/212/237/350/203/275/346/225/264/347/220/206/344/270/216/350/277/201/347/247/273/346/230/240/345/260/204_v0.1.md +278 -278
  66. 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 -172
  67. package/docs/mdcg//347/274/272/345/217/243/345/215/225_P0/346/224/266/345/217/243_v0.1.md +270 -270
  68. package/docs/mdcg//350/256/244/347/237/245/345/233/276_G4-G8/347/274/272/345/217/243/350/243/201/345/256/232/345/215/225_v0.1.md +491 -491
  69. package/docs/mdcg//350/256/244/347/237/245/345/233/276_/346/235/241/344/273/266/347/251/272/351/227/264/345/220/210/346/210/220/344/270/216/347/224/237/346/225/210/346/235/241/344/273/266/345/217/243/345/276/204_v0.1.md +340 -340
  70. package/docs/mdcg//350/256/244/347/237/245/345/233/276_/347/264/242/345/274/225/344/270/216/345/267/245/347/250/213/350/247/204/350/214/203/345/214/226_/350/256/241/345/210/222_v0.1.md +588 -588
  71. package/docs/plans/GridWorld/346/234/200/345/260/217/351/227/255/347/216/257/350/247/204/346/240/274_v0.1.md +176 -176
  72. package/docs/plans//345/221/275/345/220/215/346/262/273/347/220/206_/351/241/271/347/233/256/350/256/241/345/210/222.md +81 -81
  73. package/docs/swarm//350/234/202/347/276/244/344/272/222/350/201/224_v0.1.md +704 -704
  74. package/docs/swarm//350/234/202/347/276/244/345/220/214/351/224/231/346/243/200/346/265/213/345/256/236/351/252/214/345/215/217/350/256/256_v0.1.md +242 -242
  75. package/docs/theory//344/270/215/345/217/257/351/235/240/345/256/232/347/220/206/344/270/216/345/244/261/346/225/210/344/274/230/345/205/210/346/241/206/346/236/266_v0.3.md +365 -0
  76. package/docs/theory//345/215/225/347/272/277/347/250/213/344/270/216/346/263/250/346/204/217/345/212/233/351/233/206/344/270/255_/346/227/240/344/272/211/350/256/256/347/220/206/350/256/272/346/226/207/346/241/243_v1.0.md +129 -129
  77. 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 +134 -134
  78. package/docs/theory//346/231/272/350/203/275/350/256/2723.4.md +5260 -5260
  79. package/docs/theory//346/246/202/345/277/265/345/210/206/345/261/202/345/257/271/351/275/220/350/241/250_v0.1.md +145 -145
  80. 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 +144 -144
  81. package/docs/theory//347/220/206/350/256/272/344/273/223/346/213/206/345/210/206/344/270/216/347/231/275/347/256/261/347/237/245/350/257/206/345/272/223/345/206/205/350/277/201_v0.1.md +198 -198
  82. 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 +221 -221
  83. package/docs/world_model//344/270/226/347/225/214/346/250/241/345/236/213_/347/245/236/347/273/217/347/275/221/347/273/234/345/272/225/345/261/202/346/236/266/346/236/204_v1.0.md +237 -237
  84. package/docs//344/270/215/345/217/257/351/235/240/346/200/247/347/220/206/350/256/272_v0.1.md +343 -0
  85. package/docs//345/217/221/345/270/203/344/273/266/345/233/236/346/272/257/350/257/264/346/230/216_v0.1.md +82 -82
  86. 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 +28 -2
  87. package/dsh/README.md +82 -82
  88. package/dsh/cordis.yml.example +139 -139
  89. package/dsh/update-lingshu.bat +11 -11
  90. package/lib/bridge.d.ts +9 -0
  91. package/lib/bridge.js +35 -0
  92. package/lib/hooks.js +36 -2
  93. package/lib/index.js +7 -1
  94. package/lib/lib/roleplay_web.js +116 -29
  95. package/lib/lib/token_store.d.ts +7 -1
  96. package/lib/lib/token_store.js +12 -3
  97. package/md_cg/__init__.py +7 -7
  98. package/md_cg/audit.py +379 -368
  99. package/md_cg/autonomy.py +287 -287
  100. package/md_cg/backfill.py +1328 -1327
  101. package/md_cg/backfill_bigdomain.py +34 -34
  102. package/md_cg/backfill_bucket_zh.py +35 -0
  103. package/md_cg/bench6_arms.py +410 -410
  104. package/md_cg/bench6_common.py +230 -230
  105. package/md_cg/bench6_competitors.py +212 -212
  106. package/md_cg/bench_axis_domain.py +257 -257
  107. package/md_cg/bench_blind_comp.py +308 -308
  108. package/md_cg/bench_e2e_judge.py +532 -0
  109. package/md_cg/bench_e2e_locomo_qa.py +368 -0
  110. package/md_cg/bench_e2e_qa.py +256 -0
  111. package/md_cg/bench_en_atoms_public.py +230 -230
  112. package/md_cg/bench_governance.py +348 -348
  113. package/md_cg/bench_lme_zh.py +410 -410
  114. package/md_cg/bench_locomo.py +121 -121
  115. package/md_cg/bench_locomo_zh.py +450 -450
  116. package/md_cg/bench_locomo_zh_public.py +147 -147
  117. package/md_cg/bench_longmem.py +112 -112
  118. package/md_cg/bench_membench.py +632 -632
  119. package/md_cg/bench_p0.py +149 -149
  120. package/md_cg/bench_progressive.py +287 -287
  121. package/md_cg/bench_role_views.py +238 -238
  122. package/md_cg/bench_task_ab.py +243 -243
  123. package/md_cg/bench_task_ab_llm.py +408 -408
  124. package/md_cg/bench_unified_en.py +204 -204
  125. package/md_cg/bench_zh_mad.py +601 -601
  126. package/md_cg/blindspot_tickets.py +123 -123
  127. package/md_cg/branches.py +301 -285
  128. package/md_cg/build_postings.py +73 -73
  129. package/md_cg/ccgc.py +1006 -948
  130. package/md_cg/census.py +132 -132
  131. package/md_cg/chain.py +315 -300
  132. package/md_cg/codeindex.py +531 -531
  133. package/md_cg/coldverify.py +292 -292
  134. package/md_cg/comment_gate.py +337 -337
  135. package/md_cg/cond_compose.py +190 -190
  136. package/md_cg/cond_facts.py +154 -154
  137. package/md_cg/cond_template.json +106 -106
  138. package/md_cg/condition_anchor.py +142 -142
  139. package/md_cg/conformance.py +726 -726
  140. package/md_cg/consistency.py +717 -717
  141. package/md_cg/consolidate.py +1537 -1439
  142. package/md_cg/corpus.py +110 -110
  143. package/md_cg/crosscheck.py +1098 -1097
  144. package/md_cg/crypto.py +3 -1
  145. package/md_cg/d_meta.py +310 -310
  146. package/md_cg/datapath.py +78 -18
  147. package/md_cg/docindex.py +473 -473
  148. package/md_cg/eval_common.py +575 -575
  149. package/md_cg/evidence.py +4 -2
  150. package/md_cg/evolution.py +477 -477
  151. package/md_cg/export.py +222 -220
  152. package/md_cg/forgetting.py +581 -581
  153. package/md_cg/fsutil.py +377 -329
  154. package/md_cg/hotcache.py +48 -7
  155. package/md_cg/hyperedge.py +251 -251
  156. package/md_cg/identity.py +390 -390
  157. package/md_cg/insight.py +500 -500
  158. package/md_cg/interop.py +338 -0
  159. package/md_cg/judgment_manifest.py +177 -0
  160. package/md_cg/lexicon/build_cedict_en_zh.py +329 -329
  161. package/md_cg/lexicon/build_standard_en.py +171 -171
  162. package/md_cg/lexicon/expand_en_zh.py +211 -211
  163. package/md_cg/lifecycle.py +272 -272
  164. package/md_cg/linkref.py +280 -280
  165. package/md_cg/links.py +140 -107
  166. package/md_cg/mcp_server.py +403 -55
  167. package/md_cg/md_whitebox.py +345 -345
  168. package/md_cg/mdcg.py +783 -233
  169. package/md_cg/mdcos.py +500 -70
  170. package/md_cg/metacognition.py +591 -591
  171. package/md_cg/migrate.py +119 -119
  172. package/md_cg/migrate_aeis.py +221 -221
  173. package/md_cg/migrate_roleplay.py +293 -293
  174. package/md_cg/migrate_wisdom_graph.py +360 -360
  175. package/md_cg/mreview/__init__.py +25 -25
  176. package/md_cg/mreview/__main__.py +110 -110
  177. package/md_cg/mreview/bundle.py +178 -178
  178. package/md_cg/mreview/candidates.py +262 -262
  179. package/md_cg/mreview/govern.py +694 -693
  180. package/md_cg/mreview/locate.py +939 -939
  181. package/md_cg/mreview/pipeline.py +728 -728
  182. package/md_cg/mreview/rules/duplication.json +21 -21
  183. package/md_cg/mreview/rules/field_coverage.json +54 -54
  184. package/md_cg/mreview/rules/source_license.json +21 -21
  185. package/md_cg/mreview/rules/template_flow.json +21 -21
  186. package/md_cg/mreview/ruleset.py +252 -252
  187. package/md_cg/nodefile.py +575 -575
  188. package/md_cg/pooling.py +484 -472
  189. package/md_cg/postings.py +300 -298
  190. package/md_cg/predict.py +1100 -1100
  191. package/md_cg/progressive.py +123 -123
  192. package/md_cg/protect.py +272 -272
  193. package/md_cg/protocol/md_cg_gate.proto +33 -33
  194. package/md_cg/protocol.py +372 -372
  195. package/md_cg/provenance.py +582 -582
  196. package/md_cg/reach.py +453 -453
  197. package/md_cg/readcache.py +143 -0
  198. package/md_cg/reconcile.py +228 -0
  199. package/md_cg/refindex.py +833 -833
  200. package/md_cg/refine.py +604 -604
  201. package/md_cg/review_cli.py +170 -0
  202. package/md_cg/roleviews.py +89 -89
  203. package/md_cg/routing.py +393 -365
  204. package/md_cg/run_tests.py +211 -0
  205. package/md_cg/scrub.py +13 -3
  206. package/md_cg/security.py +128 -18
  207. package/md_cg/self_state.py +1029 -1029
  208. package/md_cg/selfreport.py +152 -151
  209. package/md_cg/semantic/__init__.py +10 -10
  210. package/md_cg/semantic/canonical.py +122 -122
  211. package/md_cg/semantic/en_normalizer.py +364 -364
  212. package/md_cg/semantic/en_zh_map.json +28694 -0
  213. package/md_cg/semantic/export_en_zh_map.py +64 -0
  214. package/md_cg/semantic/unify.py +45 -0
  215. package/md_cg/semantic/zh_en_atoms.py +139 -139
  216. package/md_cg/signer.py +7 -4
  217. package/md_cg/sources.py +816 -582
  218. package/md_cg/statushdr.py +179 -179
  219. package/md_cg/stg.py +54 -37
  220. package/md_cg/subgraph.py +729 -729
  221. package/md_cg/sustain.py +35 -5
  222. package/md_cg/tasks.py +470 -470
  223. package/md_cg/test_access_hints.py +147 -0
  224. package/md_cg/test_action_derive.py +203 -203
  225. package/md_cg/test_audit_rotate.py +270 -270
  226. package/md_cg/test_autonomy.py +143 -143
  227. package/md_cg/test_bench_governance.py +102 -102
  228. package/md_cg/test_blindspot_tickets.py +166 -166
  229. package/md_cg/test_branch_discard_tombstone.py +136 -0
  230. package/md_cg/test_branches.py +13 -3
  231. package/md_cg/test_ccg_perturb.py +184 -184
  232. package/md_cg/test_ccgc.py +433 -433
  233. package/md_cg/test_census_prune.py +81 -81
  234. package/md_cg/test_chain_read_isolate.py +168 -0
  235. package/md_cg/test_cond_compose_anchors.py +76 -76
  236. package/md_cg/test_cond_match.py +165 -165
  237. package/md_cg/test_condition_anchor.py +81 -81
  238. package/md_cg/test_d_meta.py +412 -412
  239. package/md_cg/test_datapath_device_name.py +203 -0
  240. package/md_cg/test_datapath_root.py +199 -199
  241. package/md_cg/test_emit_negtail_cache.py +156 -0
  242. package/md_cg/test_en_pipeline.py +22 -2
  243. package/md_cg/test_gain_gate.py +212 -212
  244. package/md_cg/test_govern_directread.py +421 -0
  245. package/md_cg/test_health_scale.py +173 -173
  246. package/md_cg/test_hive_ingest.py +285 -0
  247. package/md_cg/test_hot_cold.py +215 -215
  248. package/md_cg/test_hyperedge.py +245 -245
  249. package/md_cg/test_i26_empty_first_write.py +116 -0
  250. package/md_cg/test_i27_e041_identity.py +128 -0
  251. package/md_cg/test_i28_hotcache_prodpath.py +122 -0
  252. package/md_cg/test_i32_hotcache_env_key.py +218 -0
  253. package/md_cg/test_identity_attribution.py +96 -15
  254. package/md_cg/test_index_durability.py +17 -3
  255. package/md_cg/test_interop.py +95 -0
  256. package/md_cg/test_interop_judgment.py +228 -0
  257. package/md_cg/test_issue39_utf8_stdio.py +273 -0
  258. package/md_cg/test_lifecycle.py +309 -309
  259. package/md_cg/test_linkref.py +306 -306
  260. package/md_cg/test_links_concurrent_write.py +188 -0
  261. package/md_cg/test_lock.py +43 -43
  262. package/md_cg/test_md_access_parity.py +255 -255
  263. package/md_cg/test_md_writepath.py +345 -345
  264. package/md_cg/test_mdstore_search_parity.py +160 -0
  265. package/md_cg/test_merge_upsert.py +168 -0
  266. package/md_cg/test_mr_m2.py +587 -587
  267. package/md_cg/test_mr_m3.py +710 -710
  268. package/md_cg/test_mr_m4.py +485 -485
  269. package/md_cg/test_n123_derive_expiry_chain.py +205 -0
  270. package/md_cg/test_n130_verify_falsified_protect.py +185 -0
  271. package/md_cg/test_n131_merge_gate.py +205 -0
  272. package/md_cg/test_p0.py +250 -250
  273. package/md_cg/test_p1.py +316 -316
  274. package/md_cg/test_p10_identity.py +173 -173
  275. package/md_cg/test_p11_consistency.py +233 -233
  276. package/md_cg/test_p12_metacognition.py +212 -212
  277. package/md_cg/test_p13_encryption.py +241 -241
  278. package/md_cg/test_p14_sustain.py +249 -249
  279. package/md_cg/test_p15_scrub.py +280 -280
  280. package/md_cg/test_p16_self_state.py +301 -301
  281. package/md_cg/test_p17_predict.py +354 -354
  282. package/md_cg/test_p18_whitebox.py +171 -171
  283. package/md_cg/test_p19_migrate_roleplay.py +149 -149
  284. package/md_cg/test_p1x_ref_root.py +160 -0
  285. package/md_cg/test_p20_evolution.py +315 -315
  286. package/md_cg/test_p21_tokens.py +293 -270
  287. package/md_cg/test_p22_theory.py +175 -175
  288. package/md_cg/test_p23_links.py +311 -311
  289. package/md_cg/test_p24_evidence.py +227 -227
  290. package/md_cg/test_p25_weights.py +156 -156
  291. package/md_cg/test_p26_refindex.py +416 -416
  292. package/md_cg/test_p27_docindex.py +16 -7
  293. package/md_cg/test_p28_refcheck.py +305 -305
  294. package/md_cg/test_p29_session_ingest_export.py +354 -333
  295. package/md_cg/test_p2_mcp.py +3 -0
  296. package/md_cg/test_p3.py +11 -2
  297. package/md_cg/test_p30_maintain.py +330 -330
  298. package/md_cg/test_p31_insight.py +534 -534
  299. package/md_cg/test_p32_backfill.py +7 -1
  300. package/md_cg/test_p33_ccg_wiring.py +293 -293
  301. package/md_cg/test_p34_crosscheck.py +331 -331
  302. package/md_cg/test_p35_conditioned_claim.py +252 -252
  303. package/md_cg/test_p36_kp_align.py +230 -230
  304. package/md_cg/test_p37_condition_space.py +248 -248
  305. package/md_cg/test_p38_concurrent_flush.py +102 -0
  306. package/md_cg/test_p38_contextualize.py +273 -273
  307. package/md_cg/test_p39_verify_flow.py +153 -0
  308. package/md_cg/test_p39_vision_evidence.py +369 -369
  309. package/md_cg/test_p40_refine_worklist.py +241 -241
  310. package/md_cg/test_p41_evolve_patrol.py +224 -224
  311. package/md_cg/test_p42_provenance.py +269 -269
  312. package/md_cg/test_p43_pooling.py +412 -398
  313. package/md_cg/test_p44_md_whitebox.py +231 -231
  314. package/md_cg/test_p45_session_identity.py +219 -219
  315. package/md_cg/test_p46_unit_scope.py +272 -272
  316. package/md_cg/test_p47_session_view.py +316 -0
  317. package/md_cg/test_p4_fuzzy.py +223 -223
  318. package/md_cg/test_p5_semantic.py +226 -226
  319. package/md_cg/test_p6_consolidate.py +440 -387
  320. package/md_cg/test_p7_goals_recent.py +202 -202
  321. package/md_cg/test_p8_subgraph_chain.py +200 -200
  322. package/md_cg/test_p9_forget_protect.py +231 -231
  323. package/md_cg/test_predict_beta.py +135 -135
  324. package/md_cg/test_preflight_failclosed.py +100 -100
  325. package/md_cg/test_progressive.py +146 -146
  326. package/md_cg/test_propose_tail_index.py +157 -0
  327. package/md_cg/test_protocol.py +243 -243
  328. package/md_cg/test_reach.py +378 -378
  329. package/md_cg/test_reach_keys.py +201 -201
  330. package/md_cg/test_read_clip.py +141 -141
  331. package/md_cg/test_read_scope_b27.py +277 -0
  332. package/md_cg/test_readcache_default_on.py +168 -0
  333. package/md_cg/test_readcache_precise_inval.py +270 -0
  334. package/md_cg/test_readcache_prodpath.py +203 -0
  335. package/md_cg/test_reconcile_v0.py +294 -0
  336. package/md_cg/test_retr_gates_prodpath.py +140 -0
  337. package/md_cg/test_retr_s1.py +344 -340
  338. package/md_cg/test_retr_s1b.py +276 -209
  339. package/md_cg/test_retr_s3.py +194 -194
  340. package/md_cg/test_retr_s4.py +163 -163
  341. package/md_cg/test_retr_s5.py +200 -200
  342. package/md_cg/test_retr_s6.py +157 -157
  343. package/md_cg/test_retr_s7.py +392 -384
  344. package/md_cg/test_retr_s8_time.py +369 -316
  345. package/md_cg/test_retr_s9_edges.py +286 -286
  346. package/md_cg/test_retr_s9_entity_ctx.py +9 -3
  347. package/md_cg/test_retr_score_once.py +208 -0
  348. package/md_cg/test_review_conformance.py +367 -367
  349. package/md_cg/test_review_onepass.py +170 -0
  350. package/md_cg/test_role_views.py +354 -354
  351. package/md_cg/test_rrf_graph_seed_cache.py +154 -0
  352. package/md_cg/test_security_audit.py +155 -0
  353. package/md_cg/test_security_audit_b26.py +161 -0
  354. package/md_cg/test_security_audit_v21.py +250 -0
  355. package/md_cg/test_sem_noise.py +242 -242
  356. package/md_cg/test_semantic_canonical.py +16 -2
  357. package/md_cg/test_session_isolation.py +168 -0
  358. package/md_cg/test_snapshot_autoclose.py +187 -0
  359. package/md_cg/test_subproc_encoding.py +192 -192
  360. package/md_cg/test_sustain_mutual.py +153 -153
  361. package/md_cg/test_tail_watermark_race.py +208 -0
  362. package/md_cg/test_tasks.py +409 -409
  363. package/md_cg/test_tenant_env_override_warn.py +139 -0
  364. package/md_cg/test_tenant_registry_corrupt_warn.py +151 -0
  365. package/md_cg/test_tool_face.py +189 -189
  366. package/md_cg/test_transfer.py +180 -180
  367. package/md_cg/test_trust.py +361 -361
  368. package/md_cg/test_twophase.py +286 -286
  369. package/md_cg/test_v14_fixes.py +38 -20
  370. package/md_cg/test_validity_filter.py +280 -280
  371. package/md_cg/test_verify_answer.py +138 -138
  372. package/md_cg/test_verify_dirty_reconcile.py +157 -0
  373. package/md_cg/test_wisdom_md_store.py +292 -292
  374. package/md_cg/test_writelimit.py +197 -197
  375. package/md_cg/test_writepipe.py +214 -214
  376. package/md_cg/theory.py +6 -3
  377. package/md_cg/tokens.py +85 -14
  378. package/md_cg/tool_face.py +260 -260
  379. package/md_cg/trust.py +986 -950
  380. package/md_cg/twophase.py +231 -231
  381. package/md_cg/units.py +668 -667
  382. package/md_cg/vision_evidence.py +667 -666
  383. package/md_cg/weights.py +624 -624
  384. package/md_cg/whitebox.py +527 -527
  385. package/md_cg/whitebox_kb/__init__.py +37 -37
  386. package/md_cg/whitebox_kb/aeis_core/__init__.py +42 -42
  387. package/md_cg/whitebox_kb/aeis_core/semantic.py +280 -280
  388. package/md_cg/whitebox_kb/aeis_core/textutil.py +13 -13
  389. package/md_cg/whitebox_kb/engine.py +310 -310
  390. package/md_cg/whitebox_kb/seed_knowledge//346/231/272/350/203/275/350/256/2723.4.md +5260 -5260
  391. package/md_cg/whitebox_kb/wisdom/browser_units.py +2631 -2631
  392. package/md_cg/whitebox_kb/wisdom/causal_discover.py +432 -432
  393. package/md_cg/whitebox_kb/wisdom/chat_engine.py +1506 -1506
  394. package/md_cg/whitebox_kb/wisdom/compiler_code_units.py +3033 -3033
  395. package/md_cg/whitebox_kb/wisdom/condition_algebra.py +112 -112
  396. package/md_cg/whitebox_kb/wisdom/condition_frame.py +315 -315
  397. package/md_cg/whitebox_kb/wisdom/condition_kb.py +108 -108
  398. package/md_cg/whitebox_kb/wisdom/conflict_map.json +4445 -4445
  399. package/md_cg/whitebox_kb/wisdom/core/lexer.py +512 -512
  400. package/md_cg/whitebox_kb/wisdom/core/name_checker.py +1023 -1023
  401. package/md_cg/whitebox_kb/wisdom/cspmn.py +258 -258
  402. package/md_cg/whitebox_kb/wisdom/csre.py +264 -264
  403. package/md_cg/whitebox_kb/wisdom/danmaku_audit.py +252 -252
  404. package/md_cg/whitebox_kb/wisdom/distilled_condition_units.json +6417 -6417
  405. package/md_cg/whitebox_kb/wisdom/docs/WB-EVAL-20260902b.json +1950 -1950
  406. package/md_cg/whitebox_kb/wisdom/docs/WB-EVAL-20260902c.json +1296 -1296
  407. package/md_cg/whitebox_kb/wisdom/docs/whitebox_capability_graph_demo.json +59 -59
  408. package/md_cg/whitebox_kb/wisdom/graph_db_units.py +3089 -3089
  409. package/md_cg/whitebox_kb/wisdom/knowledge_points.py +318 -318
  410. package/md_cg/whitebox_kb/wisdom/md_access.py +470 -470
  411. package/md_cg/whitebox_kb/wisdom/md_store.py +276 -251
  412. package/md_cg/whitebox_kb/wisdom/migrate_wisdom.py +476 -476
  413. package/md_cg/whitebox_kb/wisdom/multilang_ir.py +128 -124
  414. package/md_cg/whitebox_kb/wisdom/navigate.py +248 -248
  415. package/md_cg/whitebox_kb/wisdom/neural_retrieve.py +224 -224
  416. package/md_cg/whitebox_kb/wisdom/os_units.py +2735 -2735
  417. package/md_cg/whitebox_kb/wisdom/pattern_separation.py +376 -376
  418. package/md_cg/whitebox_kb/wisdom/prereq_map.json +364 -364
  419. package/md_cg/whitebox_kb/wisdom/python_code_units.py +2766 -2766
  420. package/md_cg/whitebox_kb/wisdom/role_solidified.json +7 -7
  421. package/md_cg/whitebox_kb/wisdom/route_memory.py +244 -244
  422. package/md_cg/whitebox_kb/wisdom/scene_reconstruction.py +148 -148
  423. package/md_cg/whitebox_kb/wisdom/snr_report.json +40 -40
  424. package/md_cg/whitebox_kb/wisdom/test_code_compose_domains.py +7541 -7541
  425. package/md_cg/whitebox_kb/wisdom/test_compiler_self_bootstrap.py +354 -354
  426. package/md_cg/whitebox_kb/wisdom/test_ecosystem_assembly.py +158 -158
  427. package/md_cg/whitebox_kb/wisdom/test_ecosystem_demos.py +193 -193
  428. package/md_cg/whitebox_kb/wisdom/test_graph_db.py +292 -292
  429. package/md_cg/whitebox_kb/wisdom/test_python_self_bootstrap.py +160 -160
  430. package/md_cg/whitebox_kb/wisdom/trigger_words_index.json +4366 -4366
  431. package/md_cg/whitebox_kb/wisdom/verifier.py +1297 -1297
  432. package/md_cg/writelimit.py +356 -356
  433. package/md_cg/writepipe.py +20 -8
  434. package/package.json +101 -96
  435. package/skills/plugin.json +54 -54
  436. package/skills/skills/designer-perspective/SKILL.md +158 -158
  437. package/skills/skills/designer-perspective/references/01-observation-position.md +66 -66
  438. package/skills/skills/designer-perspective/references/02-structure-recognition.md +62 -62
  439. package/skills/skills/designer-perspective/references/03-direction-judgment.md +55 -55
  440. package/skills/skills/designer-perspective/references/04-qualification-verdict.md +72 -72
  441. package/skills/skills/designer-perspective/references/05-condition-attribution.md +74 -74
  442. package/skills/skills/designer-perspective/scripts/designer.py +545 -545
  443. package/skills/skills/designer-perspective/tests/cases.jsonl +17 -17
  444. package/skills/skills/designer-perspective/tests/selftest.py +61 -61
  445. package/skills/skills/lingshu-browser/SKILL.md +60 -60
  446. package/skills/skills/lingshu-compiler/SKILL.md +56 -56
  447. package/skills/skills/lingshu-compiler/units/analyze-type-infer/SKILL.md +45 -45
  448. package/skills/skills/lingshu-compiler/units/check-name-real/SKILL.md +45 -45
  449. package/skills/skills/lingshu-compiler/units/compile-assign/SKILL.md +45 -45
  450. package/skills/skills/lingshu-compiler/units/compile-expr-tree/SKILL.md +45 -45
  451. package/skills/skills/lingshu-compiler/units/compile-full-pipeline/SKILL.md +45 -45
  452. package/skills/skills/lingshu-compiler/units/compile-func-def/SKILL.md +45 -45
  453. package/skills/skills/lingshu-compiler/units/compile-if-then/SKILL.md +45 -45
  454. package/skills/skills/lingshu-compiler/units/compile-logic-expr/SKILL.md +45 -45
  455. package/skills/skills/lingshu-compiler/units/compile-recursive/SKILL.md +45 -45
  456. package/skills/skills/lingshu-compiler/units/compile-scope/SKILL.md +45 -45
  457. package/skills/skills/lingshu-compiler/units/compile-type-check/SKILL.md +45 -45
  458. package/skills/skills/lingshu-compiler/units/compile-while/SKILL.md +45 -45
  459. package/skills/skills/lingshu-compiler/units/compiler-0010c4bf/SKILL.md +45 -45
  460. package/skills/skills/lingshu-compiler/units/compiler-0355bffb/SKILL.md +45 -45
  461. package/skills/skills/lingshu-compiler/units/compiler-0361708a/SKILL.md +45 -45
  462. package/skills/skills/lingshu-compiler/units/compiler-054a0414/SKILL.md +45 -45
  463. package/skills/skills/lingshu-compiler/units/compiler-05a1691a/SKILL.md +45 -45
  464. package/skills/skills/lingshu-compiler/units/compiler-05eeed1e/SKILL.md +45 -45
  465. package/skills/skills/lingshu-compiler/units/compiler-0622a1f6/SKILL.md +45 -45
  466. package/skills/skills/lingshu-compiler/units/compiler-08b54217/SKILL.md +45 -45
  467. package/skills/skills/lingshu-compiler/units/compiler-0a62b70c/SKILL.md +45 -45
  468. package/skills/skills/lingshu-compiler/units/compiler-0ab24d00/SKILL.md +45 -45
  469. package/skills/skills/lingshu-compiler/units/compiler-0e093688/SKILL.md +45 -45
  470. package/skills/skills/lingshu-compiler/units/compiler-0e82b966/SKILL.md +45 -45
  471. package/skills/skills/lingshu-compiler/units/compiler-0ee9b9b9/SKILL.md +45 -45
  472. package/skills/skills/lingshu-compiler/units/compiler-0f3787e6/SKILL.md +45 -45
  473. package/skills/skills/lingshu-compiler/units/compiler-1028685f/SKILL.md +45 -45
  474. package/skills/skills/lingshu-compiler/units/compiler-11897630/SKILL.md +45 -45
  475. package/skills/skills/lingshu-compiler/units/compiler-16661b9b/SKILL.md +45 -45
  476. package/skills/skills/lingshu-compiler/units/compiler-1f722303/SKILL.md +45 -45
  477. package/skills/skills/lingshu-compiler/units/compiler-25be1262/SKILL.md +45 -45
  478. package/skills/skills/lingshu-compiler/units/compiler-2a76ba07/SKILL.md +45 -45
  479. package/skills/skills/lingshu-compiler/units/compiler-2dbea54a/SKILL.md +45 -45
  480. package/skills/skills/lingshu-compiler/units/compiler-2df52f16/SKILL.md +45 -45
  481. package/skills/skills/lingshu-compiler/units/compiler-2ec2c9d2/SKILL.md +45 -45
  482. package/skills/skills/lingshu-compiler/units/compiler-2f8c8f39/SKILL.md +45 -45
  483. package/skills/skills/lingshu-compiler/units/compiler-38378ac7/SKILL.md +45 -45
  484. package/skills/skills/lingshu-compiler/units/compiler-39457d2e/SKILL.md +45 -45
  485. package/skills/skills/lingshu-compiler/units/compiler-39fb5926/SKILL.md +45 -45
  486. package/skills/skills/lingshu-compiler/units/compiler-47f4fbfa/SKILL.md +45 -45
  487. package/skills/skills/lingshu-compiler/units/compiler-4a8cd1f1/SKILL.md +45 -45
  488. package/skills/skills/lingshu-compiler/units/compiler-4b230b6b/SKILL.md +45 -45
  489. package/skills/skills/lingshu-compiler/units/compiler-4cbbda95/SKILL.md +45 -45
  490. package/skills/skills/lingshu-compiler/units/compiler-4d5a68ff/SKILL.md +45 -45
  491. package/skills/skills/lingshu-compiler/units/compiler-56dc9bdd/SKILL.md +45 -45
  492. package/skills/skills/lingshu-compiler/units/compiler-57e76ebe/SKILL.md +45 -45
  493. package/skills/skills/lingshu-compiler/units/compiler-61ff016b/SKILL.md +45 -45
  494. package/skills/skills/lingshu-compiler/units/compiler-63eae588/SKILL.md +45 -45
  495. package/skills/skills/lingshu-compiler/units/compiler-64c4224b/SKILL.md +45 -45
  496. package/skills/skills/lingshu-compiler/units/compiler-66377955/SKILL.md +45 -45
  497. package/skills/skills/lingshu-compiler/units/compiler-674ab4f6/SKILL.md +45 -45
  498. package/skills/skills/lingshu-compiler/units/compiler-6af76fd6/SKILL.md +45 -45
  499. package/skills/skills/lingshu-compiler/units/compiler-6d979db2/SKILL.md +45 -45
  500. package/skills/skills/lingshu-compiler/units/compiler-6de326c0/SKILL.md +45 -45
  501. package/skills/skills/lingshu-compiler/units/compiler-6f1c0eea/SKILL.md +45 -45
  502. package/skills/skills/lingshu-compiler/units/compiler-724d6c9b/SKILL.md +45 -45
  503. package/skills/skills/lingshu-compiler/units/compiler-7690177f/SKILL.md +45 -45
  504. package/skills/skills/lingshu-compiler/units/compiler-7b229a7d/SKILL.md +45 -45
  505. package/skills/skills/lingshu-compiler/units/compiler-7f471b3a/SKILL.md +45 -45
  506. package/skills/skills/lingshu-compiler/units/compiler-815cad08/SKILL.md +45 -45
  507. package/skills/skills/lingshu-compiler/units/compiler-83c61634/SKILL.md +45 -45
  508. package/skills/skills/lingshu-compiler/units/compiler-8c798c81/SKILL.md +45 -45
  509. package/skills/skills/lingshu-compiler/units/compiler-8dd747ac/SKILL.md +45 -45
  510. package/skills/skills/lingshu-compiler/units/compiler-90324d0a/SKILL.md +45 -45
  511. package/skills/skills/lingshu-compiler/units/compiler-94b8d72d/SKILL.md +45 -45
  512. package/skills/skills/lingshu-compiler/units/compiler-94f12231/SKILL.md +45 -45
  513. package/skills/skills/lingshu-compiler/units/compiler-95937c16/SKILL.md +45 -45
  514. package/skills/skills/lingshu-compiler/units/compiler-98a5625b/SKILL.md +45 -45
  515. package/skills/skills/lingshu-compiler/units/compiler-98b4c42f/SKILL.md +45 -45
  516. package/skills/skills/lingshu-compiler/units/compiler-98e3894a/SKILL.md +45 -45
  517. package/skills/skills/lingshu-compiler/units/compiler-9bdfe4b8/SKILL.md +45 -45
  518. package/skills/skills/lingshu-compiler/units/compiler-9d9b4e83/SKILL.md +45 -45
  519. package/skills/skills/lingshu-compiler/units/compiler-9f7be5ad/SKILL.md +45 -45
  520. package/skills/skills/lingshu-compiler/units/compiler-a6daf076/SKILL.md +45 -45
  521. package/skills/skills/lingshu-compiler/units/compiler-a7995a0c/SKILL.md +45 -45
  522. package/skills/skills/lingshu-compiler/units/compiler-a8399248/SKILL.md +45 -45
  523. package/skills/skills/lingshu-compiler/units/compiler-aabbd099/SKILL.md +45 -45
  524. package/skills/skills/lingshu-compiler/units/compiler-afe169d8/SKILL.md +45 -45
  525. package/skills/skills/lingshu-compiler/units/compiler-b0678bda/SKILL.md +45 -45
  526. package/skills/skills/lingshu-compiler/units/compiler-b09bd196/SKILL.md +45 -45
  527. package/skills/skills/lingshu-compiler/units/compiler-b1396e23/SKILL.md +45 -45
  528. package/skills/skills/lingshu-compiler/units/compiler-b9b31ce0/SKILL.md +45 -45
  529. package/skills/skills/lingshu-compiler/units/compiler-c10264a7/SKILL.md +45 -45
  530. package/skills/skills/lingshu-compiler/units/compiler-cb1e8e4b/SKILL.md +45 -45
  531. package/skills/skills/lingshu-compiler/units/compiler-ccafd438/SKILL.md +45 -45
  532. package/skills/skills/lingshu-compiler/units/compiler-cda9c262/SKILL.md +45 -45
  533. package/skills/skills/lingshu-compiler/units/compiler-ce648068/SKILL.md +45 -45
  534. package/skills/skills/lingshu-compiler/units/compiler-cf5776a4/SKILL.md +45 -45
  535. package/skills/skills/lingshu-compiler/units/compiler-d974e5d3/SKILL.md +45 -45
  536. package/skills/skills/lingshu-compiler/units/compiler-e3979fd3/SKILL.md +45 -45
  537. package/skills/skills/lingshu-compiler/units/compiler-eb1cf2b5/SKILL.md +45 -45
  538. package/skills/skills/lingshu-compiler/units/compiler-ecb30d5b/SKILL.md +45 -45
  539. package/skills/skills/lingshu-compiler/units/compiler-f8c8b24b/SKILL.md +45 -45
  540. package/skills/skills/lingshu-compiler/units/compiler-f99fedbe/SKILL.md +45 -45
  541. package/skills/skills/lingshu-compiler/units/compiler-fa8ff5f7/SKILL.md +45 -45
  542. package/skills/skills/lingshu-compiler/units/compiler-fe1b058d/SKILL.md +45 -45
  543. package/skills/skills/lingshu-compiler/units/lex-chinese-program/SKILL.md +45 -45
  544. package/skills/skills/lingshu-compiler/units/lex-dao-de-jing/SKILL.md +45 -45
  545. package/skills/skills/lingshu-compiler/units/lex-nine-chapters/SKILL.md +45 -45
  546. package/skills/skills/lingshu-compiler/units/vm-arithmetic/SKILL.md +45 -45
  547. package/skills/skills/lingshu-compiler/units/vm-array-ops/SKILL.md +45 -45
  548. package/skills/skills/lingshu-compiler/units/vm-closure-call/SKILL.md +45 -45
  549. package/skills/skills/lingshu-compiler/units/vm-closure-create/SKILL.md +45 -45
  550. package/skills/skills/lingshu-compiler/units/vm-compare/SKILL.md +45 -45
  551. package/skills/skills/lingshu-compiler/units/vm-cond-jump/SKILL.md +45 -45
  552. package/skills/skills/lingshu-compiler/units/vm-cond-space/SKILL.md +45 -45
  553. package/skills/skills/lingshu-compiler/units/vm-exception/SKILL.md +45 -45
  554. package/skills/skills/lingshu-compiler/units/vm-func-call/SKILL.md +45 -45
  555. package/skills/skills/lingshu-compiler/units/vm-loop-run/SKILL.md +45 -45
  556. package/skills/skills/lingshu-compiler/units/vm-profiling/SKILL.md +45 -45
  557. package/skills/skills/lingshu-compiler/units/vm-refcount/SKILL.md +45 -45
  558. package/skills/skills/lingshu-compiler/units/vm-run-loop/SKILL.md +45 -45
  559. package/skills/skills/lingshu-compiler/units/vm-short-circuit/SKILL.md +45 -45
  560. package/skills/skills/lingshu-compiler/units/vm-stack-guard/SKILL.md +45 -45
  561. package/skills/skills/lingshu-compiler/units/vm-stack-ops/SKILL.md +45 -45
  562. package/skills/skills/lingshu-compiler/units/vm-trust-accum/SKILL.md +45 -45
  563. package/skills/skills/lingshu-graph/SKILL.md +63 -63
  564. package/skills/skills/lingshu-net/SKILL.md +48 -48
  565. package/skills/skills/lingshu-os/SKILL.md +64 -64
  566. package/skills/skills/lingshu-pylang/SKILL.md +71 -71
  567. package/src/bridge.ts +33 -0
  568. package/src/hooks.ts +38 -2
  569. package/src/index.ts +526 -518
  570. package/src/lib/datapath.ts +326 -326
  571. package/src/lib/mdcg_client.ts +413 -413
  572. package/src/lib/mutual.ts +428 -428
  573. package/src/lib/prompt_safety.ts +62 -62
  574. package/src/lib/python_path.ts +71 -71
  575. package/src/lib/roleplay_web.ts +116 -29
  576. package/src/lib/token_store.ts +13 -3
  577. package/src/tools.ts +212 -212
  578. package/zcode/AGENTS.md +11 -3
  579. package/zcode/README.md +41 -41
  580. /package/docs/{mdcg → hive}//344/270/273/344/273/243/347/220/206/345/255/220/344/273/243/347/220/206/350/256/260/345/277/206/346/236/266/346/236/204/350/256/276/350/256/241.md" +0 -0
package/dsh/README.md CHANGED
@@ -1,82 +1,82 @@
1
- # DSH 端 · 灵枢插件配置
2
-
3
- 本目录 = **DeepSeek Harness(DSH)harness 专属配置**。与 `codebuddy/`、`zcode/` 平级,
4
- 共享层(`md_cg/` 大脑、`data/`、`docs/`、`scripts/`)在仓库根。
5
-
6
- ## 目录内容
7
-
8
- | 文件 | 作用 |
9
- |---|---|
10
- | `cordis.patch.yml` | 插件 **bundle 入口**(`package.json` 的 `dsh.bundle.patch` 指向本文件;裸 insert 声明) |
11
- | `cordis.yml.example` | 插件配置示例(30+ 项:mdcg / memory / mutual / capability …) |
12
- | `cordis-patch-profile-web.example.yml` | profile `web` 的 config override **备份模板**(换 profile / 重装 / 升级后须核对仍在) |
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 侧 |
17
-
18
- ## 安装
19
-
20
- ```bash
21
- git clone https://github.com/FuRongJun-1999/dsh-memory.git
22
- cd dsh-memory
23
- npm install && npm run build # tsc → lib/
24
- dsh plugin --profile web add . # 必须走 dsh plugin,勿用裸 npm install 装进 profile
25
- ```
26
-
27
- 再参照 `cordis.yml.example` 在 `<profile>/cordis.yml` 启用配置。
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
-
59
- ## 纪律注入(personaPrefix 受管块)
60
-
61
- DSH 端的 16 条工作纪律**不走独立文件**,而是以 `compact` 变体写入
62
- `~/.dsh/profiles/web/cordis.patch.yml` 的 `personaPrefix` 键,用受管标记块 `lingshu:discipline`
63
- 原地修订(保留注释):
64
-
65
- ```
66
- python scripts/render_discipline.py --target dsh --write
67
- python scripts/verify_discipline.py --target dsh
68
- ```
69
-
70
- > DSH 的 `personaPrefix` 是**每轮注入**的系统提示槽位,因此用 `compact` 变体;
71
- > CodeBuddy / ZCode 是**会话起始注入**,用 `full` 变体。三角色同源于
72
- > `docs/工作纪律_认知图条目_v1.1.json`,矩阵见 `docs/discipline/harnesses.yaml`。
73
-
74
- ## 与「三层拆分规划」的关系
75
-
76
- 本目录是**按 harness 维度**(DSH / CodeBuddy / ZCode)归置配置;
77
- [`../docs/mdcg/灵枢三层拆分规划_v0.1.md`](../docs/mdcg/灵枢三层拆分规划_v0.1.md) 讨论的是**另一种正交维度**
78
- (灵 / 脑 / 身 三仓职责分离,目标是主仓瘦身)。
79
-
80
- 二者在 `dsh-web-start.bat` 上存在**归属分歧**:三层规划拟将其移出主仓至「身体仓(宿主启动)」,
81
- 而本目录按 harness 维度将其收拢。该分歧**留待三层规划 Phase 裁决收敛**——本目录为其当前的
82
- 可追踪落点,不改变三层规划的结论。
1
+ # DSH 端 · 灵枢插件配置
2
+
3
+ 本目录 = **DeepSeek Harness(DSH)harness 专属配置**。与 `codebuddy/`、`zcode/` 平级,
4
+ 共享层(`md_cg/` 大脑、`data/`、`docs/`、`scripts/`)在仓库根。
5
+
6
+ ## 目录内容
7
+
8
+ | 文件 | 作用 |
9
+ |---|---|
10
+ | `cordis.patch.yml` | 插件 **bundle 入口**(`package.json` 的 `dsh.bundle.patch` 指向本文件;裸 insert 声明) |
11
+ | `cordis.yml.example` | 插件配置示例(30+ 项:mdcg / memory / mutual / capability …) |
12
+ | `cordis-patch-profile-web.example.yml` | profile `web` 的 config override **备份模板**(换 profile / 重装 / 升级后须核对仍在) |
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 侧 |
17
+
18
+ ## 安装
19
+
20
+ ```bash
21
+ git clone https://github.com/FuRongJun-1999/dsh-memory.git
22
+ cd dsh-memory
23
+ npm install && npm run build # tsc → lib/
24
+ dsh plugin --profile web add . # 必须走 dsh plugin,勿用裸 npm install 装进 profile
25
+ ```
26
+
27
+ 再参照 `cordis.yml.example` 在 `<profile>/cordis.yml` 启用配置。
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
+
59
+ ## 纪律注入(personaPrefix 受管块)
60
+
61
+ DSH 端的 16 条工作纪律**不走独立文件**,而是以 `compact` 变体写入
62
+ `~/.dsh/profiles/web/cordis.patch.yml` 的 `personaPrefix` 键,用受管标记块 `lingshu:discipline`
63
+ 原地修订(保留注释):
64
+
65
+ ```
66
+ python scripts/render_discipline.py --target dsh --write
67
+ python scripts/verify_discipline.py --target dsh
68
+ ```
69
+
70
+ > DSH 的 `personaPrefix` 是**每轮注入**的系统提示槽位,因此用 `compact` 变体;
71
+ > CodeBuddy / ZCode 是**会话起始注入**,用 `full` 变体。三角色同源于
72
+ > `docs/工作纪律_认知图条目_v1.1.json`,矩阵见 `docs/discipline/harnesses.yaml`。
73
+
74
+ ## 与「三层拆分规划」的关系
75
+
76
+ 本目录是**按 harness 维度**(DSH / CodeBuddy / ZCode)归置配置;
77
+ [`../docs/mdcg/灵枢三层拆分规划_v0.1.md`](../docs/mdcg/灵枢三层拆分规划_v0.1.md) 讨论的是**另一种正交维度**
78
+ (灵 / 脑 / 身 三仓职责分离,目标是主仓瘦身)。
79
+
80
+ 二者在 `dsh-web-start.bat` 上存在**归属分歧**:三层规划拟将其移出主仓至「身体仓(宿主启动)」,
81
+ 而本目录按 harness 维度将其收拢。该分歧**留待三层规划 Phase 裁决收敛**——本目录为其当前的
82
+ 可追踪落点,不改变三层规划的结论。
@@ -1,139 +1,139 @@
1
- # @furongjun1999/dsh-memory 插件配置示例
2
- # 复制到 DSH profile 的 cordis.patch.yml(或 cordis.yml)启用
3
- #
4
- # 说明:
5
- # - !!js process.env.X 语法在加载期求值,密钥不入库
6
- # - 记忆写入路径(下面 mdcg.root)默认落在**用户级状态根**(~/.dsh/.dsh-memory/data),
7
- # 与进程 cwd、**插件包目录**都解耦——历史事故①:cwd 落在别的仓时相对路径会把
8
- # 记忆真源写偏;事故②:默认曾锚定插件包内 data/,而 pnpm 更新包会整目录替换,
9
- # 包内数据每次更新成功即被删掉(详见 src/lib/datapath.ts 头注)。目录不存在会
10
- # 自动创建。想换位置有三种方式(优先级由高到低):
11
- # ① 环境变量 MDCG_DATA_ROOT(数据根)/ MDCG_ROOT(认知图根)
12
- # ② 编辑 <用户级状态根>/paths.json 的 "data_root" / "root"
13
- # (旧版包内 data/paths.json 仍兼容读,但会被下次 pnpm 更新删除)
14
- # ③ 本文件的 mdcg.root(填绝对路径或相对插件仓的路径)
15
- # 查当前解析结果(解释器按平台:Windows python / Linux·macOS python3,下同):
16
- # python md_cg/datapath.py
17
- # 旧版数据迁移:包内 data/ 仍有内容时,插件首启会**复制**(不删除)到用户级根;
18
- # 也可手动执行 python md_cg/datapath.py --migrate-legacy
19
-
20
- - id: lingshu-memory
21
- name: '@furongjun1999/dsh-memory'
22
- config:
23
- # 工具命名空间:Agent 看到的工具名是 lingshu_cg / lingshu_stg(记忆面已基元化)
24
- serverName: 'lingshu'
25
-
26
- # ⚠️ 遗留项:SQLite 库文件路径(经环境变量 AEIS_DB 传给子进程)。
27
- # 大脑真源已统一到 md_cg 认知图(见下面的 mdcg 块);此项现仅供角色
28
- # 数据目录 roleDataDir(由它的父目录推导)使用,**不再存记忆**,
29
- # md_cg server 也不读取它。
30
- dbPath: 'data/lingshu.db'
31
-
32
- # 灵枢身份标识
33
- identity: '灵枢'
34
-
35
- # Python 与启动参数(默认即可;md_cg 随插件自带,无需 pip 安装第三方包)
36
- # 解释器**无需配置**:默认按平台自动选——Windows → python,Linux/macOS → python3。
37
- # 为什么不能照抄 'python'(issue #19):Linux/macOS 发行版按 PEP 394 只提供
38
- # python3(这是默认状态,不是环境损坏),写死 python 会让桥 spawn ENOENT,
39
- # 重试 8 次后进终态——插件看起来装好了,但工具不注册、记忆永不落盘且不自愈。
40
- # 解释器名特殊(如 python3.12)时:在此显式配置,或设环境变量 MDCG_PYTHON
41
- # (优先级:config.python > env MDCG_PYTHON > 平台默认)。
42
- # python: 'python'
43
- # 大脑进程:md_cg(主仓自带,不再依赖 pip aeis)
44
- moduleArgs: ['-m', 'md_cg.mcp_server']
45
-
46
- # 暴露的工具集合:'core'(默认,仅 cg/stg 两基元)| 'brain' | 'all' | 自定义数组
47
- # 进程侧 MDCG_MCP_SURFACE=full 暴露 cg/stg 基元 + mdcg_* 细粒度工具(共 33);
48
- # 此处选择表再筛一遍:'core' = 2 基元;'brain' = 完整认知面(30,排除管理类
49
- # forget/restore/review_decide);'all' 同样排除管理类(RISK_TOOLS)。
50
- tools: 'core'
51
-
52
- # 「身体」能力后端(可选):角色扮演生成等「身」的生成能力。
53
- # 默认关闭 → 主仓保持**纯大脑单进程**(只起 md_cg)。开启后额外起一个
54
- # 能力库子进程(如 AEIS),仅角色扮演生成使用;记忆真源仍是 md_cg。
55
- # 未开启时 /roleplay 的生成接口 fail-closed(返回明确原因,不编造回复),
56
- # 但转录 / 历史 / 翻译 / 落图始终可用(走大脑)。
57
- # capability:
58
- # enabled: false
59
- # python: '' # 留空 = 跟随上面的 python(平台默认)
60
- # args: ['-m', 'aeis.mcp.server']
61
-
62
- # 自动记忆(对话沉淀进灵枢)
63
- memory:
64
- userMessage: true # 用户消息 → remember
65
- assistantMessage: false # agent 回复(默认关,防噪音)
66
- toolResult: false # 工具结果(默认关)
67
- importance: 0.6
68
-
69
- # 密钥经环境变量注入(不进配置库)
70
- env:
71
- BOCHA_API_KEY: !!js process.env.BOCHA_API_KEY
72
- # AEIS_DESIGNER_KEY: !!js process.env.AEIS_DESIGNER_KEY # 设计者裁决工具所需
73
-
74
- # ── 认知图写入凭据:默认【关闭】,由你决定是否打开 ──────────────
75
- # md_cg 是 fail-closed:不配凭据时插件以**只读 guest** 运行 ——
76
- # 读取 / 召回 / 时间线照常,但自动记忆、对话转录、角色落图**全部不落盘**
77
- # (插件启动时会打印一条告警提醒,不会静默)。
78
- #
79
- # 想打开:取消注释下面任一方案,然后重启 DSH。
80
- #
81
- # ① 功能完整(推荐,已收窄):覆盖插件全部 9 个调用点,但无管理权、
82
- # 不写 anchor 保护层。签发:
83
- # python -m md_cg.tokens issue --role designer --actor dsh-memory \
84
- # --clearance internal \
85
- # --ops-allow info,route,read,write,recent,goal,identity,whitebox,verify \
86
- # --layers-allow knowledge,contextual,structural,self,goals,unresolved,rejected
87
- # MDCG_TOKEN: !!js process.env.MDCG_TOKEN
88
- #
89
- # ② 最小权限:--role recorder --actor dsh-memory
90
- # 只能自动记忆 / 转录 / 角色定义;whitebox、identity、verify 与
91
- # 写 self 层(角色 anchors 导入)会被 AccessDenied。
92
- # MDCG_TOKEN: !!js process.env.MDCG_TOKEN
93
- #
94
- # ③ 兼容旧部署(不推荐:明文身份、无令牌可吊销):
95
- # recorder 可写 contextual/knowledge/structural;
96
- # 要写 self 层再加 MDCG_CAN_ADMIN: '1'(→ designer)
97
- # MDCG_LEGACY_ENV_AUTH: '1'
98
- #
99
- # 令牌明文怎么给进去(二选一):
100
- # · 推荐:设环境变量后引用(明文不进配置文件)
101
- # setx MDCG_TOKEN "mdcg1.xxxxx" 然后重启 DSH
102
- # · 或直接写明文:MDCG_TOKEN: 'mdcg1.xxxxx'
103
-
104
- # 容错
105
- toolCallTimeoutMs: 60000
106
- maxRetryDelayMs: 30000
107
- failOnStartupError: false
108
-
109
- # 互维维护(Mutual Sustain Loop v1.1):心跳10min写戳 + 守护A + 任务验证双通道
110
- # 需在双沙箱环境中启用(与 A 侧 guardian 对称);单实例可关
111
- mutual:
112
- enabled: true
113
- heartbeatMs: 600000 # 10min,任务不阻塞心跳
114
-
115
- # 认知图(md_cg)= 记忆唯一真源;AEIS 降为能力库。
116
- # 插件侧唯一显式入口:src/lib/mdcg_client.ts(每个方法 = 一条 MCP 调用:
117
- # 记忆写入走 mdcg_remember,读取/召回/时间线走 cg/stg 基元)。
118
- # ⚠️ 写入需上面的 MDCG_LEGACY_ENV_AUTH / MDCG_TOKEN 凭据,否则只读 guest。
119
- # 功能 → 代码 对照见 docs/功能调用映射表_v0.1.md
120
- mdcg:
121
- enabled: true
122
- # root = 记忆写入路径(用户可改)。留空 '' = 走解析优先级,默认落在
123
- # **用户级状态根** data/mdcg(与 cwd、插件包目录都解耦):
124
- # env MDCG_ROOT > <用户级状态根>/paths.json 的 "root" > 本项
125
- # > 默认 ~/.dsh/.dsh-memory/data/mdcg
126
- # 想换位置:填绝对路径(如 'D:/lingshu/mdcg'),或改 paths.json。
127
- root: ''
128
- actor: 'dsh-memory' # MDCG_ACTOR:私有内容按 (tenant, actor) 派生 DEK
129
- tenant: 'default' # MDCG_TENANT:须与迁移脚本 --tenant 一致
130
- clearance: 'private' # MDCG_CLEARANCE:可读写密级上限
131
-
132
- # 多实例示例:第二个灵枢(不同记忆库/身份/命名空间)
133
- # - id: lingshu-memory-2
134
- # name: '@furongjun1999/dsh-memory'
135
- # config:
136
- # serverName: 'lingshu2'
137
- # dbPath: 'data/lingshu2.db'
138
- # identity: '灵枢二号'
139
- # tools: ['cg', 'stg']
1
+ # @furongjun1999/dsh-memory 插件配置示例
2
+ # 复制到 DSH profile 的 cordis.patch.yml(或 cordis.yml)启用
3
+ #
4
+ # 说明:
5
+ # - !!js process.env.X 语法在加载期求值,密钥不入库
6
+ # - 记忆写入路径(下面 mdcg.root)默认落在**用户级状态根**(~/.dsh/.dsh-memory/data),
7
+ # 与进程 cwd、**插件包目录**都解耦——历史事故①:cwd 落在别的仓时相对路径会把
8
+ # 记忆真源写偏;事故②:默认曾锚定插件包内 data/,而 pnpm 更新包会整目录替换,
9
+ # 包内数据每次更新成功即被删掉(详见 src/lib/datapath.ts 头注)。目录不存在会
10
+ # 自动创建。想换位置有三种方式(优先级由高到低):
11
+ # ① 环境变量 MDCG_DATA_ROOT(数据根)/ MDCG_ROOT(认知图根)
12
+ # ② 编辑 <用户级状态根>/paths.json 的 "data_root" / "root"
13
+ # (旧版包内 data/paths.json 仍兼容读,但会被下次 pnpm 更新删除)
14
+ # ③ 本文件的 mdcg.root(填绝对路径或相对插件仓的路径)
15
+ # 查当前解析结果(解释器按平台:Windows python / Linux·macOS python3,下同):
16
+ # python md_cg/datapath.py
17
+ # 旧版数据迁移:包内 data/ 仍有内容时,插件首启会**复制**(不删除)到用户级根;
18
+ # 也可手动执行 python md_cg/datapath.py --migrate-legacy
19
+
20
+ - id: lingshu-memory
21
+ name: '@furongjun1999/dsh-memory'
22
+ config:
23
+ # 工具命名空间:Agent 看到的工具名是 lingshu_cg / lingshu_stg(记忆面已基元化)
24
+ serverName: 'lingshu'
25
+
26
+ # ⚠️ 遗留项:SQLite 库文件路径(经环境变量 AEIS_DB 传给子进程)。
27
+ # 大脑真源已统一到 md_cg 认知图(见下面的 mdcg 块);此项现仅供角色
28
+ # 数据目录 roleDataDir(由它的父目录推导)使用,**不再存记忆**,
29
+ # md_cg server 也不读取它。
30
+ dbPath: 'data/lingshu.db'
31
+
32
+ # 灵枢身份标识
33
+ identity: '灵枢'
34
+
35
+ # Python 与启动参数(默认即可;md_cg 随插件自带,无需 pip 安装第三方包)
36
+ # 解释器**无需配置**:默认按平台自动选——Windows → python,Linux/macOS → python3。
37
+ # 为什么不能照抄 'python'(issue #19):Linux/macOS 发行版按 PEP 394 只提供
38
+ # python3(这是默认状态,不是环境损坏),写死 python 会让桥 spawn ENOENT,
39
+ # 重试 8 次后进终态——插件看起来装好了,但工具不注册、记忆永不落盘且不自愈。
40
+ # 解释器名特殊(如 python3.12)时:在此显式配置,或设环境变量 MDCG_PYTHON
41
+ # (优先级:config.python > env MDCG_PYTHON > 平台默认)。
42
+ # python: 'python'
43
+ # 大脑进程:md_cg(主仓自带,不再依赖 pip aeis)
44
+ moduleArgs: ['-m', 'md_cg.mcp_server']
45
+
46
+ # 暴露的工具集合:'core'(默认,仅 cg/stg 两基元)| 'brain' | 'all' | 自定义数组
47
+ # 进程侧 MDCG_MCP_SURFACE=full 暴露 cg/stg 基元 + mdcg_* 细粒度工具(共 33);
48
+ # 此处选择表再筛一遍:'core' = 2 基元;'brain' = 完整认知面(30,排除管理类
49
+ # forget/restore/review_decide);'all' 同样排除管理类(RISK_TOOLS)。
50
+ tools: 'core'
51
+
52
+ # 「身体」能力后端(可选):角色扮演生成等「身」的生成能力。
53
+ # 默认关闭 → 主仓保持**纯大脑单进程**(只起 md_cg)。开启后额外起一个
54
+ # 能力库子进程(如 AEIS),仅角色扮演生成使用;记忆真源仍是 md_cg。
55
+ # 未开启时 /roleplay 的生成接口 fail-closed(返回明确原因,不编造回复),
56
+ # 但转录 / 历史 / 翻译 / 落图始终可用(走大脑)。
57
+ # capability:
58
+ # enabled: false
59
+ # python: '' # 留空 = 跟随上面的 python(平台默认)
60
+ # args: ['-m', 'aeis.mcp.server']
61
+
62
+ # 自动记忆(对话沉淀进灵枢)
63
+ memory:
64
+ userMessage: true # 用户消息 → remember
65
+ assistantMessage: false # agent 回复(默认关,防噪音)
66
+ toolResult: false # 工具结果(默认关)
67
+ importance: 0.6
68
+
69
+ # 密钥经环境变量注入(不进配置库)
70
+ env:
71
+ BOCHA_API_KEY: !!js process.env.BOCHA_API_KEY
72
+ # AEIS_DESIGNER_KEY: !!js process.env.AEIS_DESIGNER_KEY # 设计者裁决工具所需
73
+
74
+ # ── 认知图写入凭据:默认【关闭】,由你决定是否打开 ──────────────
75
+ # md_cg 是 fail-closed:不配凭据时插件以**只读 guest** 运行 ——
76
+ # 读取 / 召回 / 时间线照常,但自动记忆、对话转录、角色落图**全部不落盘**
77
+ # (插件启动时会打印一条告警提醒,不会静默)。
78
+ #
79
+ # 想打开:取消注释下面任一方案,然后重启 DSH。
80
+ #
81
+ # ① 功能完整(推荐,已收窄):覆盖插件全部 9 个调用点,但无管理权、
82
+ # 不写 anchor 保护层。签发:
83
+ # python -m md_cg.tokens issue --role designer --actor dsh-memory \
84
+ # --clearance internal \
85
+ # --ops-allow info,route,read,write,recent,goal,identity,whitebox,verify \
86
+ # --layers-allow knowledge,contextual,structural,self,goals,unresolved,rejected
87
+ # MDCG_TOKEN: !!js process.env.MDCG_TOKEN
88
+ #
89
+ # ② 最小权限:--role recorder --actor dsh-memory
90
+ # 只能自动记忆 / 转录 / 角色定义;whitebox、identity、verify 与
91
+ # 写 self 层(角色 anchors 导入)会被 AccessDenied。
92
+ # MDCG_TOKEN: !!js process.env.MDCG_TOKEN
93
+ #
94
+ # ③ 兼容旧部署(不推荐:明文身份、无令牌可吊销):
95
+ # recorder 可写 contextual/knowledge/structural;
96
+ # 要写 self 层再加 MDCG_CAN_ADMIN: '1'(→ designer)
97
+ # MDCG_LEGACY_ENV_AUTH: '1'
98
+ #
99
+ # 令牌明文怎么给进去(二选一):
100
+ # · 推荐:设环境变量后引用(明文不进配置文件)
101
+ # setx MDCG_TOKEN "mdcg1.xxxxx" 然后重启 DSH
102
+ # · 或直接写明文:MDCG_TOKEN: 'mdcg1.xxxxx'
103
+
104
+ # 容错
105
+ toolCallTimeoutMs: 60000
106
+ maxRetryDelayMs: 30000
107
+ failOnStartupError: false
108
+
109
+ # 互维维护(Mutual Sustain Loop v1.1):心跳10min写戳 + 守护A + 任务验证双通道
110
+ # 需在双沙箱环境中启用(与 A 侧 guardian 对称);单实例可关
111
+ mutual:
112
+ enabled: true
113
+ heartbeatMs: 600000 # 10min,任务不阻塞心跳
114
+
115
+ # 认知图(md_cg)= 记忆唯一真源;AEIS 降为能力库。
116
+ # 插件侧唯一显式入口:src/lib/mdcg_client.ts(每个方法 = 一条 MCP 调用:
117
+ # 记忆写入走 mdcg_remember,读取/召回/时间线走 cg/stg 基元)。
118
+ # ⚠️ 写入需上面的 MDCG_LEGACY_ENV_AUTH / MDCG_TOKEN 凭据,否则只读 guest。
119
+ # 功能 → 代码 对照见 docs/功能调用映射表_v0.1.md
120
+ mdcg:
121
+ enabled: true
122
+ # root = 记忆写入路径(用户可改)。留空 '' = 走解析优先级,默认落在
123
+ # **用户级状态根** data/mdcg(与 cwd、插件包目录都解耦):
124
+ # env MDCG_ROOT > <用户级状态根>/paths.json 的 "root" > 本项
125
+ # > 默认 ~/.dsh/.dsh-memory/data/mdcg
126
+ # 想换位置:填绝对路径(如 'D:/lingshu/mdcg'),或改 paths.json。
127
+ root: ''
128
+ actor: 'dsh-memory' # MDCG_ACTOR:私有内容按 (tenant, actor) 派生 DEK
129
+ tenant: 'default' # MDCG_TENANT:须与迁移脚本 --tenant 一致
130
+ clearance: 'private' # MDCG_CLEARANCE:可读写密级上限
131
+
132
+ # 多实例示例:第二个灵枢(不同记忆库/身份/命名空间)
133
+ # - id: lingshu-memory-2
134
+ # name: '@furongjun1999/dsh-memory'
135
+ # config:
136
+ # serverName: 'lingshu2'
137
+ # dbPath: 'data/lingshu2.db'
138
+ # identity: '灵枢二号'
139
+ # tools: ['cg', 'stg']
@@ -1,11 +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
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
package/lib/bridge.d.ts CHANGED
@@ -73,6 +73,15 @@ export declare class LingshuBridge {
73
73
  get gaveUp(): boolean;
74
74
  /** 等待握手完成(用于 apply 阶段同步就绪)。 */
75
75
  waitReady(): Promise<boolean>;
76
+ /**
77
+ * V23 修复(缺陷 :284):清理上一个仍存活的子进程。
78
+ * 握手超时/启动失败重试时直接 spawn 新进程并覆盖 this.proc(:182),
79
+ * 旧进程若仍存活(卡死但不退出的服务端)既不 kill 也不关 stdin——
80
+ * 引用被覆盖后永远无人清理 = 僵尸进程泄漏(最多 MAX_RETRIES 个并存,
81
+ * dispose 也只收尾最后一个)。换代前统一回收:stdin EOF 优雅退出 + kill 兜底。
82
+ * 幂等:已退出(exitCode/signalCode 非 null)的进程跳过。
83
+ */
84
+ private killStaleProc;
76
85
  private spawnAndHandshake;
77
86
  private handshake;
78
87
  private scheduleRetry;
package/lib/bridge.js CHANGED
@@ -116,9 +116,37 @@ export class LingshuBridge {
116
116
  return Promise.resolve(false);
117
117
  return new Promise((resolve) => this.bootQueue.push(resolve));
118
118
  }
119
+ /**
120
+ * V23 修复(缺陷 :284):清理上一个仍存活的子进程。
121
+ * 握手超时/启动失败重试时直接 spawn 新进程并覆盖 this.proc(:182),
122
+ * 旧进程若仍存活(卡死但不退出的服务端)既不 kill 也不关 stdin——
123
+ * 引用被覆盖后永远无人清理 = 僵尸进程泄漏(最多 MAX_RETRIES 个并存,
124
+ * dispose 也只收尾最后一个)。换代前统一回收:stdin EOF 优雅退出 + kill 兜底。
125
+ * 幂等:已退出(exitCode/signalCode 非 null)的进程跳过。
126
+ */
127
+ killStaleProc() {
128
+ const old = this.proc;
129
+ this.proc = null; // 先摘引用:旧进程随后的 exit 事件走 stale 早退分支
130
+ if (!old || old.exitCode !== null || old.signalCode !== null)
131
+ return;
132
+ try {
133
+ old.stdin?.end();
134
+ }
135
+ catch {
136
+ /* 已关闭则忽略 */
137
+ }
138
+ try {
139
+ old.kill();
140
+ }
141
+ catch {
142
+ /* 已退出则忽略 */
143
+ }
144
+ }
119
145
  spawnAndHandshake() {
120
146
  if (this.disposed)
121
147
  return;
148
+ // V23:重试路径先回收上一个仍存活的子进程(防换代泄漏僵尸进程)
149
+ this.killStaleProc();
122
150
  this.procStartedAt = Date.now();
123
151
  const { python, args, env, cwd } = this.options;
124
152
  const childEnv = { ...process.env, ...env };
@@ -178,6 +206,13 @@ export class LingshuBridge {
178
206
  }
179
207
  });
180
208
  proc.on('exit', (code, signal) => {
209
+ // V23:被换代清理的旧进程退出(this.proc 已指向新一代或为 null)——
210
+ // 不动当前进程的 rl/pending/重试状态机,只留探针;否则旧 exit 会
211
+ // close 新进程的 readline、误拒新进程的挂起请求并多触发一轮重试。
212
+ if (proc !== this.proc) {
213
+ probe(`stale proc exit code=${code} signal=${signal}(换代已回收,不影响当前进程)`);
214
+ return;
215
+ }
181
216
  // 探针:写独立文件记录退出(绕过 DSH 日志系统,便于定位)
182
217
  const uptimeS = this.procStartedAt
183
218
  ? Math.round((Date.now() - this.procStartedAt) / 1000)
package/lib/hooks.js CHANGED
@@ -132,6 +132,19 @@ function formatTimelineDecayed(payload) {
132
132
  }
133
133
  return out.join('\n').slice(0, RECALL_MAX_CHARS);
134
134
  }
135
+ /** 取宿主会话标识(只用于**归因/隔离**,不参与任何权限判断)。
136
+ *
137
+ * 动机:记忆写入必须带会话身份才能区分不同会话;读取默认只看本会话(防串台),
138
+ * 而「所有会话做了什么」用显式 session="*" 取。两侧都依赖这个标识。
139
+ *
140
+ * 字段名按 DSH 既有形态(`id` / `sessionId`)防御式读取,取不到就返回空串——
141
+ * 空串在上游一律等同「不分会话」(退回旧行为),故宿主改字段名最坏只是失去
142
+ * 隔离能力,不会注入错块、不会抛错。 */
143
+ function sessionIdOf(raw) {
144
+ const s = raw;
145
+ const v = s?.id ?? s?.sessionId;
146
+ return typeof v === 'string' ? v.trim() : '';
147
+ }
135
148
  /** 安装自动记忆钩子(effect 作用域内,随插件卸载自动移除)。
136
149
  *
137
150
  * mdcg 为 null(config.mdcg.enabled=false)时自动记忆整体停用:记忆真源是
@@ -142,6 +155,8 @@ export function installMemoryHooks(ctx, mdcg, opts) {
142
155
  return;
143
156
  }
144
157
  const graph = mdcg;
158
+ /** 最近一次观测到的宿主会话标识(见 sessionIdOf;空串 = 未知/无会话)。 */
159
+ let lastSession = '';
145
160
  /** 记忆沉淀(fire-and-forget)。认知图未就绪则跳过并告警(不退回 AEIS)。 */
146
161
  const memorize = (label, run) => {
147
162
  if (!graph.isReady()) {
@@ -178,7 +193,17 @@ export function installMemoryHooks(ctx, mdcg, opts) {
178
193
  try {
179
194
  // 异步取最近记忆节点(失败静默——不阻塞模型请求)
180
195
  if (graph.isReady()) {
181
- const text = formatTimelineDecayed(await graph.timeline(recallLimit));
196
+ // 会话隔离(P45):自动召回只注入**本会话**的记忆,防多会话串台;
197
+ // 取不到会话标识则退回旧行为(不加过滤),不做半吊子猜测。
198
+ // ⚠️ 取值必须**每步稳定**:本块按 v0.4.8 契约每步都 push,内容一旦与上
199
+ // 一步不同宿主就 append 一份新快照——会话标识若中途才出现,会让「无过滤
200
+ // → 有过滤」翻转一次,白付两份快照。故优先取 ctx 上的会话(首步即在),
201
+ // 退回「最近一次 session/event 的会话」。
202
+ // 想读**所有**会话做了什么:别走自动召回(它会串台),显式调
203
+ // `stg(op=timeline, session="*")`,返回项带 session 归属。
204
+ const hostCtx = _ctx;
205
+ const sid = sessionIdOf(hostCtx?.agent?.session) || lastSession;
206
+ const text = formatTimelineDecayed(await graph.timeline(recallLimit, sid ? { session: sid } : {}));
182
207
  if (text) {
183
208
  // 注入边界转义(issue #16):宿主 system-prompt 对 context 文本做严格
184
209
  // `{{variable}}` 插值,裸 `{{` 会 throw → 该轮请求整体失败。记忆原文
@@ -194,7 +219,13 @@ export function installMemoryHooks(ctx, mdcg, opts) {
194
219
  return next();
195
220
  });
196
221
  }
197
- ctx.on('session/event', (_session, event) => {
222
+ ctx.on('session/event', (session, event) => {
223
+ // 会话归属(P45):记忆写入必须带会话身份,用来区分不同会话的记忆。
224
+ // 空串 = 宿主未给出会话标识 → 不声明,交给内核回落到进程身份(不编造)。
225
+ const sid = sessionIdOf(session);
226
+ if (sid)
227
+ lastSession = sid;
228
+ const sessionTag = sid ? { session: sid } : {};
198
229
  if (event.type === 'user/message' && opts.userMessage) {
199
230
  // 只记真实用户输入(kind='user'),跳过插件注入/系统上下文
200
231
  if (event.data.source?.kind !== 'user') {
@@ -211,6 +242,7 @@ export function installMemoryHooks(ctx, mdcg, opts) {
211
242
  return;
212
243
  memorize('user', (g) => g.remember(safe, {
213
244
  role: 'user', tags: ['dsh', 'user'], importance: opts.importance,
245
+ ...sessionTag,
214
246
  }));
215
247
  // T4:用用户消息做一次语义召回——md_cg 的读取会记 access log(复用观测,
216
248
  // 供 importance / scrub 陈旧度使用),同时预热检索路径。
@@ -226,6 +258,7 @@ export function installMemoryHooks(ctx, mdcg, opts) {
226
258
  return;
227
259
  memorize('assistant', (g) => g.remember(safe, {
228
260
  role: 'assistant', tags: ['dsh', 'assistant'], importance: opts.importance * 0.8,
261
+ ...sessionTag,
229
262
  }));
230
263
  }
231
264
  else if (event.type === 'tool/result' && opts.toolResult) {
@@ -239,6 +272,7 @@ export function installMemoryHooks(ctx, mdcg, opts) {
239
272
  return;
240
273
  memorize('tool', (g) => g.remember(safe, {
241
274
  role: 'tool-output', tags: ['dsh', 'tool'], importance: opts.importance * 0.6,
275
+ ...sessionTag,
242
276
  }));
243
277
  }
244
278
  });