@furongjun1999/dsh-memory 0.4.7 → 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 (325) hide show
  1. package/README.md +130 -47
  2. package/codebuddy/CODEBUDDY.md +21 -10
  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/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 -0
  7. package/docs/README.md +111 -0
  8. package/docs/discipline/harnesses.yaml +226 -152
  9. package/docs/discipline/templates/full.md.tmpl +61 -58
  10. package/docs/eval//347/254/254/344/270/211/346/226/271/351/252/214/350/257/201/346/212/245/345/221/212_LoCoMo_/347/201/265/346/236/242_.md +127 -0
  11. package/docs/eval//347/254/254/344/270/211/346/226/271/351/252/214/350/257/201/346/212/245/345/221/212_LoCoMo_/347/201/265/346/236/242_.png +0 -0
  12. package/docs/eval//347/254/254/344/270/211/346/226/271/351/252/214/350/257/201/346/212/245/345/221/212_/347/201/265/346/236/242_vs_dejavu_/347/273/237/344/270/200/350/257/204/345/210/206_v7.md +202 -0
  13. package/docs/experiments/linkref_backfill/candidates_20260917.json +726 -0
  14. package/docs/experiments/linkref_backfill/candidates_internal_20260917.json +602 -0
  15. package/docs/experiments/linkref_backfill/candidates_internal_v2.json +603 -0
  16. package/docs/experiments/linkref_backfill/candidates_secret_20260917.json +884 -0
  17. package/docs/experiments/linkref_backfill/candidates_secret_v2.json +789 -0
  18. package/docs/experiments/m4-role-probe/census.py +86 -0
  19. package/docs/experiments/m4-role-probe/probe.py +89 -0
  20. package/docs/experiments/mapped_confidence/bench_mapped_conf.py +216 -0
  21. package/docs/experiments/mapped_confidence/post_check.py +75 -0
  22. package/docs/experiments/mapped_confidence/repro_thirdparty_tol.py +83 -0
  23. package/docs/experiments/mapped_confidence/result_mapped_conf.json +215 -0
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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 +14 -2
  31. 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
  32. package/docs/{README → mdcg/README}/350/257/246/347/273/206/347/211/210_v0.4.5.md +631 -625
  33. package/docs/{ → mdcg/}/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 +1 -1
  34. 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
  35. 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
  36. 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 +263 -0
  37. 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 +1 -1
  38. 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.5.md +236 -0
  39. 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 +2 -2
  40. package/docs/{ → mdcg/}/347/201/265/346/236/242/344/270/211/345/261/202/346/213/206/345/210/206/350/247/204/345/210/222_v0.1.md +181 -181
  41. 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
  42. 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
  43. package/docs/{ → mdcg/}/347/274/272/345/217/243/345/215/225_P0/346/224/266/345/217/243_v0.1.md +2 -2
  44. 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 +1 -1
  45. 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 +4 -4
  46. package/docs/{ → mdcg/}/350/256/260/345/277/206/346/223/215/344/275/234/347/263/273/347/273/237_MdCGOS/344/270/216MCP/346/216/245/345/205/245_v0.1.md +2 -2
  47. 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
  48. 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 -0
  49. package/docs/{ → swarm/}/350/234/202/347/276/244/344/272/222/350/201/224_v0.1.md +3 -3
  50. 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 -0
  51. 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 -0
  52. 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 -0
  53. 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 -0
  54. 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 +6 -6
  55. 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 +1 -1
  56. 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 -0
  57. 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 -0
  58. package/docs//345/255/230/347/256/227/344/270/200/344/275/223/346/236/266/346/236/204/345/255/246/344/271/240_/345/244/226/351/203/250/347/220/206/350/256/272/345/257/271/347/205/247/344/270/216/350/267/257/347/272/277/344/272/244/346/216/245_20260916.md +98 -0
  59. package/docs//345/255/230/347/256/227/344/270/200/344/275/223/347/245/236/347/273/217/347/275/221/347/273/234/346/236/266/346/236/204_/346/200/273/347/272/262/344/270/216/344/272/244/346/216/245_20260916.md +109 -0
  60. 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 -405
  61. 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
  62. package/docs//347/231/275/347/256/261/345/214/226/347/272/262/351/242/206_/344/270/211/351/241/271/347/233/256/345/255/246/344/271/240/346/200/273/346/236/266/346/236/204/344/270/216Ghidra/344/272/244/346/216/245_20260916.md +104 -0
  63. package/docs//350/256/260/345/277/206/350/257/204/345/256/241/347/263/273/347/273/237_/347/253/213/351/241/271/350/256/276/350/256/241/344/270/216/346/226/275/345/267/245/344/272/244/346/216/245_20260915.md +183 -0
  64. package/dsh/README.md +34 -1
  65. package/dsh/cordis.yml.example +13 -7
  66. package/dsh/hive-mcp-probe.mjs +94 -0
  67. package/dsh/hive-mcp.example.yml +62 -0
  68. package/dsh/update-lingshu.bat +11 -0
  69. package/dsh/update-lingshu.ps1 +337 -0
  70. package/lib/hooks.d.ts +8 -0
  71. package/lib/hooks.js +27 -24
  72. package/lib/index.d.ts +4 -2
  73. package/lib/index.js +29 -6
  74. package/lib/lib/datapath.d.ts +76 -1
  75. package/lib/lib/datapath.js +199 -13
  76. package/lib/lib/mdcg_client.d.ts +6 -3
  77. package/lib/lib/mdcg_client.js +6 -5
  78. package/lib/lib/mutual.js +4 -4
  79. package/lib/lib/prompt_safety.d.ts +48 -0
  80. package/lib/lib/prompt_safety.js +62 -0
  81. package/lib/lib/token_store.js +4 -5
  82. package/md_cg/audit.py +91 -2
  83. package/md_cg/autonomy.py +86 -15
  84. package/md_cg/backfill.py +36 -1
  85. package/md_cg/backfill_bigdomain.py +34 -0
  86. package/md_cg/bench6_arms.py +28 -1
  87. package/md_cg/bench6_common.py +10 -1
  88. package/md_cg/bench6_competitors.py +6 -1
  89. package/md_cg/bench_axis_domain.py +9 -1
  90. package/md_cg/bench_blind_comp.py +7 -1
  91. package/md_cg/bench_en_atoms_public.py +9 -0
  92. package/md_cg/bench_governance.py +348 -0
  93. package/md_cg/bench_lme_zh.py +16 -1
  94. package/md_cg/bench_locomo.py +2 -1
  95. package/md_cg/bench_locomo_zh.py +16 -1
  96. package/md_cg/bench_locomo_zh_public.py +4 -1
  97. package/md_cg/bench_longmem.py +2 -1
  98. package/md_cg/bench_membench.py +37 -6
  99. package/md_cg/bench_p0.py +4 -1
  100. package/md_cg/bench_progressive.py +61 -10
  101. package/md_cg/bench_role_views.py +238 -0
  102. package/md_cg/bench_task_ab.py +8 -1
  103. package/md_cg/bench_task_ab_llm.py +13 -1
  104. package/md_cg/bench_unified_en.py +6 -1
  105. package/md_cg/bench_zh_mad.py +20 -1
  106. package/md_cg/blindspot_tickets.py +123 -0
  107. package/md_cg/branches.py +286 -0
  108. package/md_cg/build_postings.py +73 -0
  109. package/md_cg/ccgc.py +949 -0
  110. package/md_cg/census.py +5 -1
  111. package/md_cg/chain.py +24 -3
  112. package/md_cg/codeindex.py +134 -17
  113. package/md_cg/coldverify.py +265 -0
  114. package/md_cg/comment_gate.py +338 -0
  115. package/md_cg/cond_compose.py +190 -0
  116. package/md_cg/cond_facts.py +155 -0
  117. package/md_cg/cond_template.json +107 -0
  118. package/md_cg/condition_anchor.py +143 -0
  119. package/md_cg/conformance.py +727 -0
  120. package/md_cg/consistency.py +25 -2
  121. package/md_cg/consolidate.py +53 -2
  122. package/md_cg/corpus.py +5 -1
  123. package/md_cg/crosscheck.py +42 -2
  124. package/md_cg/crypto.py +35 -1
  125. package/md_cg/d_meta.py +310 -0
  126. package/md_cg/datapath.py +201 -26
  127. package/md_cg/docindex.py +122 -1
  128. package/md_cg/eval_common.py +35 -6
  129. package/md_cg/evidence.py +27 -1
  130. package/md_cg/evolution.py +21 -1
  131. package/md_cg/export.py +11 -1
  132. package/md_cg/forgetting.py +34 -4
  133. package/md_cg/fsutil.py +81 -2
  134. package/md_cg/hotcache.py +214 -0
  135. package/md_cg/hyperedge.py +251 -0
  136. package/md_cg/identity.py +20 -3
  137. package/md_cg/insight.py +19 -3
  138. package/md_cg/lexicon/build_cedict_en_zh.py +9 -0
  139. package/md_cg/lexicon/build_standard_en.py +171 -168
  140. package/md_cg/lexicon/expand_en_zh.py +6 -0
  141. package/md_cg/lifecycle.py +273 -0
  142. package/md_cg/linkref.py +281 -0
  143. package/md_cg/links.py +29 -1
  144. package/md_cg/mcp_server.py +894 -168
  145. package/md_cg/md_whitebox.py +53 -1
  146. package/md_cg/mdcg.py +1205 -41
  147. package/md_cg/mdcos.py +1060 -76
  148. package/md_cg/metacognition.py +39 -4
  149. package/md_cg/migrate.py +4 -0
  150. package/md_cg/migrate_aeis.py +221 -213
  151. package/md_cg/migrate_roleplay.py +8 -0
  152. package/md_cg/migrate_wisdom_graph.py +14 -1
  153. package/md_cg/mreview/__init__.py +25 -0
  154. package/md_cg/mreview/__main__.py +110 -0
  155. package/md_cg/mreview/bundle.py +178 -0
  156. package/md_cg/mreview/candidates.py +262 -0
  157. package/md_cg/mreview/govern.py +694 -0
  158. package/md_cg/mreview/locate.py +939 -0
  159. package/md_cg/mreview/pipeline.py +729 -0
  160. package/md_cg/mreview/rules/duplication.json +21 -0
  161. package/md_cg/mreview/rules/field_coverage.json +54 -0
  162. package/md_cg/mreview/rules/source_license.json +21 -0
  163. package/md_cg/mreview/rules/template_flow.json +21 -0
  164. package/md_cg/mreview/ruleset.py +253 -0
  165. package/md_cg/nodefile.py +269 -1
  166. package/md_cg/pooling.py +23 -1
  167. package/md_cg/postings.py +298 -0
  168. package/md_cg/predict.py +113 -15
  169. package/md_cg/progressive.py +3 -0
  170. package/md_cg/protect.py +18 -5
  171. package/md_cg/protocol.py +372 -0
  172. package/md_cg/provenance.py +262 -0
  173. package/md_cg/reach.py +453 -0
  174. package/md_cg/refindex.py +88 -4
  175. package/md_cg/refine.py +20 -1
  176. package/md_cg/roleviews.py +89 -0
  177. package/md_cg/routing.py +76 -0
  178. package/md_cg/scrub.py +68 -3
  179. package/md_cg/security.py +26 -1
  180. package/md_cg/self_state.py +65 -2
  181. package/md_cg/selfreport.py +151 -0
  182. package/md_cg/semantic/canonical.py +5 -0
  183. package/md_cg/semantic/en_normalizer.py +364 -295
  184. package/md_cg/semantic/zh_en_atoms.py +139 -136
  185. package/md_cg/signer.py +41 -1
  186. package/md_cg/sources.py +583 -547
  187. package/md_cg/statushdr.py +179 -0
  188. package/md_cg/stg.py +59 -18
  189. package/md_cg/subgraph.py +23 -0
  190. package/md_cg/sustain.py +74 -1
  191. package/md_cg/tasks.py +471 -0
  192. package/md_cg/test_action_derive.py +203 -0
  193. package/md_cg/test_audit_rotate.py +270 -0
  194. package/md_cg/test_autonomy.py +26 -0
  195. package/md_cg/test_bench_governance.py +102 -0
  196. package/md_cg/test_blindspot_tickets.py +166 -0
  197. package/md_cg/test_branches.py +249 -0
  198. package/md_cg/test_ccg_perturb.py +1 -1
  199. package/md_cg/test_ccgc.py +433 -0
  200. package/md_cg/test_codeindex.py +338 -0
  201. package/md_cg/test_comment_gate.py +187 -0
  202. package/md_cg/test_cond_compose_anchors.py +76 -0
  203. package/md_cg/test_condition_anchor.py +82 -0
  204. package/md_cg/test_conformance.py +343 -0
  205. package/md_cg/test_d_meta.py +412 -0
  206. package/md_cg/test_datapath_root.py +188 -0
  207. package/md_cg/test_en_pipeline.py +24 -0
  208. package/md_cg/test_gain_gate.py +47 -1
  209. package/md_cg/test_health_scale.py +173 -0
  210. package/md_cg/test_hot_cold.py +187 -0
  211. package/md_cg/test_hyperedge.py +245 -0
  212. package/md_cg/test_identity_attribution.py +6 -0
  213. package/md_cg/test_index_durability.py +224 -0
  214. package/md_cg/test_lifecycle.py +309 -0
  215. package/md_cg/test_linkref.py +306 -0
  216. package/md_cg/test_md_access_parity.py +15 -3
  217. package/md_cg/test_mr_m1.py +769 -0
  218. package/md_cg/test_mr_m2.py +587 -0
  219. package/md_cg/test_mr_m3.py +710 -0
  220. package/md_cg/test_mr_m4.py +485 -0
  221. package/md_cg/test_p1.py +1 -1
  222. package/md_cg/test_p11_consistency.py +1 -1
  223. package/md_cg/test_p12_metacognition.py +2 -2
  224. package/md_cg/test_p16_self_state.py +1 -1
  225. package/md_cg/test_p26_refindex.py +50 -21
  226. package/md_cg/test_p27_docindex.py +258 -4
  227. package/md_cg/test_p28_refcheck.py +1 -1
  228. package/md_cg/test_p29_session_ingest_export.py +1 -1
  229. package/md_cg/test_p2_mcp.py +7 -1
  230. package/md_cg/test_p31_insight.py +24 -0
  231. package/md_cg/test_p38_contextualize.py +1 -1
  232. package/md_cg/test_p39_vision_evidence.py +1 -1
  233. package/md_cg/test_p40_refine_worklist.py +1 -1
  234. package/md_cg/test_p41_evolve_patrol.py +1 -1
  235. package/md_cg/test_p42_provenance.py +1 -1
  236. package/md_cg/test_p43_pooling.py +41 -13
  237. package/md_cg/test_p44_md_whitebox.py +14 -1
  238. package/md_cg/test_protocol.py +243 -0
  239. package/md_cg/test_reach.py +378 -0
  240. package/md_cg/test_reach_keys.py +201 -0
  241. package/md_cg/test_reach_meta_exits.py +145 -0
  242. package/md_cg/test_read_clip.py +141 -0
  243. package/md_cg/test_retr_s1.py +340 -0
  244. package/md_cg/test_retr_s1b.py +209 -0
  245. package/md_cg/test_retr_s3.py +194 -0
  246. package/md_cg/test_retr_s4.py +163 -0
  247. package/md_cg/test_retr_s5.py +200 -0
  248. package/md_cg/test_retr_s6.py +157 -0
  249. package/md_cg/test_retr_s7.py +385 -0
  250. package/md_cg/test_retr_s8_time.py +316 -0
  251. package/md_cg/test_retr_s9_edges.py +286 -0
  252. package/md_cg/test_retr_s9_entity_ctx.py +175 -0
  253. package/md_cg/test_review_conformance.py +367 -0
  254. package/md_cg/test_role_views.py +354 -0
  255. package/md_cg/test_tasks.py +409 -0
  256. package/md_cg/test_tool_face.py +189 -0
  257. package/md_cg/test_trust.py +361 -0
  258. package/md_cg/test_twophase.py +286 -0
  259. package/md_cg/test_units_poll.py +71 -0
  260. package/md_cg/test_v14_fixes.py +397 -0
  261. package/md_cg/test_validity_filter.py +280 -0
  262. package/md_cg/test_wisdom_md_store.py +7 -3
  263. package/md_cg/test_writepipe.py +214 -0
  264. package/md_cg/theory.py +17 -2
  265. package/md_cg/tokens.py +134 -12
  266. package/md_cg/tool_face.py +261 -0
  267. package/md_cg/trust.py +943 -0
  268. package/md_cg/twophase.py +232 -0
  269. package/md_cg/units.py +665 -0
  270. package/md_cg/vision_evidence.py +25 -2
  271. package/md_cg/weights.py +25 -2
  272. package/md_cg/whitebox.py +33 -2
  273. package/md_cg/whitebox_kb/data/verify_cache.json +21233 -360
  274. package/md_cg/whitebox_kb/data/verify_savings.jsonl +5124 -0
  275. package/md_cg/whitebox_kb/wisdom/audit_log/chain_heat.json +10 -10
  276. package/md_cg/whitebox_kb/wisdom/code_compose.py +113 -6
  277. package/md_cg/whitebox_kb/wisdom/code_solidified.json +1 -1
  278. package/md_cg/whitebox_kb/wisdom/verifier.py +340 -55
  279. package/md_cg/whitebox_kb/wisdom/wisdom-book-cloud.db +0 -0
  280. package/md_cg/writelimit.py +37 -7
  281. package/md_cg/writepipe.py +543 -0
  282. package/package.json +2 -2
  283. package/skills/skills/designer-perspective/scripts/__pycache__/designer.cpython-310.pyc +0 -0
  284. package/skills/skills/designer-perspective/scripts/designer.py +17 -1
  285. package/skills/skills/designer-perspective/tests/selftest.py +3 -1
  286. package/src/hooks.ts +27 -22
  287. package/src/index.ts +33 -6
  288. package/src/lib/datapath.ts +211 -13
  289. package/src/lib/mdcg_client.ts +12 -8
  290. package/src/lib/mutual.ts +411 -411
  291. package/src/lib/prompt_safety.ts +62 -0
  292. package/src/lib/token_store.ts +4 -5
  293. package/zcode/AGENTS.md +21 -10
  294. package/zcode/README.md +4 -0
  295. package/docs//345/212/237/350/203/275/350/260/203/347/224/250/346/230/240/345/260/204/350/241/250_v0.1.md +0 -221
  296. /package/docs/{AGI → 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" +0 -0
  297. /package/docs/{AGI → 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" +0 -0
  298. /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" +0 -0
  299. /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" +0 -0
  300. /package/docs/{guardrail-charter.md → mdcg/guardrail-charter.md} +0 -0
  301. /package/docs/{lingshu_tutorial.html → mdcg/lingshu_tutorial.html} +0 -0
  302. /package/docs/{memory-assessment.html → mdcg/memory-assessment.html} +0 -0
  303. /package/docs/{memory_score.html → mdcg/memory_score.html} +0 -0
  304. /package/docs/{memory_score.png → mdcg/memory_score.png} +0 -0
  305. /package/docs/{release_v0.3.0.md → mdcg/release_v0.3.0.md} +0 -0
  306. /package/docs/{release_v0.4.5.md → mdcg/release_v0.4.5.md} +0 -0
  307. /package/docs/{tool_table_v0.3.0.md → mdcg/tool_table_v0.3.0.md} +0 -0
  308. /package/docs/{ → mdcg/}/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" +0 -0
  309. /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" +0 -0
  310. /package/docs/{ → mdcg/}/347/201/265/346/236/242MCP/345/267/245/345/205/267/346/200/273/350/241/250_v3.4.md" +0 -0
  311. /package/docs/{ → mdcg/}/347/201/265/346/236/242_/350/207/252/346/210/221/345/261/202/345/256/232/344/271/211.md" +0 -0
  312. /package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276_MD/347/233/256/345/275/225/346/226/271/346/241/210_v0.1.md" +0 -0
  313. /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" +0 -0
  314. /package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276/344/275/234/344/270/272/350/256/260/345/277/206/346/223/215/344/275/234/347/263/273/347/273/237_/350/257/204/344/274/260/344/270/216/350/267/257/347/272/277_v0.1.md" +0 -0
  315. /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" +0 -0
  316. /package/docs/{ → plans/}/347/237/245/350/257/206/345/233/276/350/260/261/351/241/271/347/233/256_/344/272/244/346/216/245/346/226/207/346/241/243_20260914.md" +0 -0
  317. /package/docs/{ → swarm/}/350/234/202/347/276/244/345/244/232/346/231/272/350/203/275/344/275/223_/344/275/277/347/224/250/346/212/245/345/221/212_20260913.md" +0 -0
  318. /package/docs/{ → swarm/}/350/234/202/347/276/244/345/244/232/346/231/272/350/203/275/344/275/223_/345/212/237/350/203/275/350/257/264/346/230/216_v0.6.md" +0 -0
  319. /package/docs/{ → swarm/}/350/234/202/347/276/244/347/233/262/345/214/272/346/240/207/350/256/260_v1.0.md" +0 -0
  320. /package/docs/{ → theory/}/344/277/241/346/201/257/345/267/256/344/270/272/344/273/200/344/271/210/345/277/205/347/204/266/345/255/230/345/234/250/344/270/224/350/207/252/347/204/266/346/211/251/345/244/247.md" +0 -0
  321. /package/docs/{ → theory/}/346/231/272/350/203/275/347/232/204/345/205/254/347/220/206/345/214/226/345/237/272/347/237/263.md" +0 -0
  322. /package/docs/{ → theory/}/346/231/272/350/203/275/347/232/204/350/256/244/347/237/245/350/277/207/347/250/213.md" +0 -0
  323. /package/docs/{ → theory/}/346/231/272/350/203/275/350/256/2723.4.md" +0 -0
  324. /package/docs/{ → theory/}/347/231/275/347/256/261/346/231/272/350/203/275/346/230/257/344/273/200/344/271/210/357/274/237.md" +0 -0
  325. /package/docs/{ → theory/}/347/231/275/347/256/261/346/231/272/350/203/275/347/263/273/345/210/227/302/267/347/254/254/344/272/224/347/257/207/357/274/232/350/256/251AI/347/234/237/346/255/243/350/243/205/344/270/212/350/256/260/345/277/206.md" +0 -0
@@ -0,0 +1,127 @@
1
+ # LoCoMo 第三方独立验证报告 · 灵枢标准归一化检索能力
2
+
3
+ **验证人**:第三方独立评审(非灵枢系统本身)
4
+ **日期**:2026-09-15 · **被测仓库**:`/root/lingshu-test/repo` @ `51d3426`(工作树干净)
5
+ **数据集**:`data/benchmarks/locomo-zh-500/`(LoCoMo 500 题 / 567 条 gold 语料,上游 `mteb/LoCoMo@02e2c3de`)
6
+ **方法**:全流程由本报告作者独立实现 —— 数据装载、查询循环、rank/hit@k/MRR 计算、随机基线、显著性检验均为本人手写,**不调用灵枢任何 `bench_*` 评测脚本**;被测对象仅为灵枢自身组件(`md_cg.mdcg.MdCG`、`md_cg.semantic.en_normalizer`、`lexicon/char_atoms_clean.json`)。唯一例外是 Jaccard 排序函数(3 行通用公开算法),由本人实现以复现灵枢主路线口径——它属于评测脚手架而非被测能力。
7
+
8
+ ---
9
+
10
+ ## 一、结论速览
11
+
12
+ | # | 结论 | 判定 |
13
+ |---|------|------|
14
+ | 1 | 灵枢自报中文检索 96.4/99.8(lexical),本人独立复现 **96.8/99.6**(MdCG 引擎) | ✅ 属实(±0.5pp 内) |
15
+ | 2 | 灵枢自报英文主路线 96.8/99.8/99.8(臂②),本人独立复现 **96.8/99.8/99.8** | ✅ **逐位复现** |
16
+ | 3 | 但该 99.8% 的能力来源是**中文 AI 摘要层**,不是英文归一化:去掉全部英文处理(J2_zh)反而 **97.4/99.6/100.0** | ⚠️ 归因错位 |
17
+ | 4 | 灵枢标准归一化(`en_normalizer`)本身的真实水平:MdCG 引擎 **60.0/74.4/81.0**;主路线链路 **19.2/32.0/39.0** | ⚠️ 有效但远低于宣称口径 |
18
+ | 5 | 归一化确实显著优于不归一:24.2% → 39.0%(+14.8pp,Jaccard 链路);23.0% → 81.0%(**+58.0pp**,MdCG 链路) | ✅ 归一化价值成立 |
19
+ | 6 | 71 个归一化检索失败题中,归一化后关键词"全覆盖"的题数 = **0** —— 失败 100% 归因于归一化词汇丢失/错译,而非排序机制 | 🔍 干净的因果链 |
20
+ | 7 | OOV 如实透出(`unknown_keep`,4.0%)属实;但更危险的是 **静默错译**(`scavenger hunt`→食腐动物/猎取,`shelter`→庇护) | ⚠️ 词典对了、语境错了 |
21
+ | 8 | 数据集非平凡性(对灵枢有利):query 对 gold 覆盖 0.875 vs 非 gold 最佳 0.469,区分度 0.407;仅 0.2% 的题非 gold 也能满覆盖 | ✅ 不是纯字符串赠品 |
22
+
23
+ ---
24
+
25
+ ## 二、主结果(本人独立运行,n=500)
26
+
27
+ ### 口径一:灵枢 MdCG 检索引擎(`mdcg.py` char-bigram + 四路 RRF,k=20)
28
+
29
+ | 臂 | doc 侧 | hit@1 | hit@5 | hit@10 | MRR |
30
+ |----|--------|-------|-------|--------|-----|
31
+ | A_zh5 | 中文五槽层(AI 摘要) | **96.8%** | 99.6% | 99.6% | 0.9805 |
32
+ | B_en_raw | 英文原文(零加工) | 15.8% | 21.6% | 23.0% | 0.1850 |
33
+ | **C_en_norm** | **英文原文经灵枢标准归一化** | **60.0%** | 74.4% | **81.0%** | 0.6683 |
34
+ | D_bi | 中文层 ∪ 英文归一化 | 96.6% | 99.2% | 99.2% | 0.9778 |
35
+ | F_sem | 英文原文 + `semantic=` 归一原子(MDCG_SEMANTIC=1) | 40.0% | 63.0% | 70.2% | 0.5000 |
36
+ | R_random | 随机排序 | 0.4% | 1.2% | 1.8% | 0.0099 |
37
+
38
+ **与灵枢自报对照**(`复现结果_locomo-zh-500.json`,lexical 口径 96.4/99.8/MRR 0.9785):本人复现 96.8/99.6/0.9805,偏差 +0.4pp / −0.2pp / +0.002,量级一致,**自报数字可信**。分题型互有 ±3pp 起伏(我 doc 侧用扁平 `zh` 串,灵枢可能用结构化 `zh_fields` + fuzzy),不改变结论。
39
+
40
+ ### 口径二:灵枢英文主路线同链路(字级原子映射 + 全池 Jaccard,即臂②口径)
41
+
42
+ | 臂 | doc 侧原子集 | hit@1 | hit@5 | hit@10 | MRR |
43
+ |----|--------------|-------|-------|--------|-----|
44
+ | J2_full | 中文五槽字级映射 ∪ 英文归一词 | **96.8%** | **99.8%** | **99.8%** | 0.9807 |
45
+ | J2_zh | 仅中文五槽字级映射 | **97.4%** | 99.6% | **100.0%** | 0.9842 |
46
+ | J2_body | 仅英文正文归一词 | 19.2% | 32.0% | 39.0% | 0.2598 |
47
+ | J0_raw | 英文正文原词(零归一) | 6.8% | 18.0% | 24.2% | 0.1303 |
48
+
49
+ J2_full 与灵枢 `bench_en_atoms_public.py` 自报的臂② **96.8/99.8/99.8 逐位一致** —— 灵枢没有虚报数字。
50
+
51
+ ---
52
+
53
+ ## 三、关键发现
54
+
55
+ ### 发现 1:99.8% 逐位复现 —— 可复现性满分 ✅
56
+
57
+ 本人独立装载、独立计算,得到与灵枢完全一致的 96.8/99.8/99.8。在以往六轮评审中"自报数字不可复现"是常见病,此处**没有任何水分**。中文口径 96.4 vs 96.8 同样在噪声内。
58
+
59
+ ### 发现 2:但 99.8% 归因于"英文检索能力"是错位的 ⚠️
60
+
61
+ 拆解链(唯一变量 = doc 侧构成,query 恒为中文关键词→字级英文原子):
62
+
63
+ - 只用中文摘要层(J2_zh):**hit@10 = 100.0%** —— 去掉全部英文处理,比完整版还高 0.2pp;
64
+ - 完整版(J2_full):99.8%。**加入英文归一化层的净贡献 = −0.2pp(1 题)**;
65
+ - MdCG 口径同构验证:A_zh5 99.6% vs D_bi 99.2%,加入英文归一化层同样无增益(McNemar 配对 b=0, c=1,p≈1.0,噪声级)。
66
+
67
+ **结论:灵枢宣称的"英文(中文语义归一化桥接)96.8/99.8/99.8"本质上是"中文 AI 摘要层检索成绩",英文归一化组件在此数字中是乘客,不是引擎。** 灵枢自己在 REPRODUCE.md 中标注了"检索侧上界口径——AI 归一环节质量未纳入该评测",这个诚实标注是准确的,且比我们预想的更关键:不仅 AI 归一环节未纳入,**连被测的机械归一环节都对该数字无贡献**。
68
+
69
+ ### 发现 3:标准归一化本身的真实水平 ⚠️/✅
70
+
71
+ 用户点名要测的"灵枢标准归一化"(`en_normalizer.normalize_en_query`,按标准词表把英文归一翻译为中文语义原子):
72
+
73
+ - **它确实有效**:MdCG 引擎上,英文原文直接检索 23.0% → 归一化后 **81.0%(hit@10)**,+58.0pp;Jaccard 链路上 24.2% → 39.0%,+14.8pp。没有归一化,跨语言检索基本不可用。
74
+ - **但它远够不到 99.8%**:机械归一化端到端的天花板在 81.0%(MdCG 口径)/ 39.0%(字级映射跨语言口径)。这与灵枢自己"已排除方案 9"(机械词级归一→纯中文库 33.6%)以及臂④(57.2%)的内部结论**方向一致**:灵枢文档知道机械归一不行,但 README 的显著位置仍以 96.8/99.8/99.8 作为"英文检索"的头条数字。
75
+ - **语义摘要路(写入侧归一者正统形态,F_sem)反而更差**:40.0/63.0/70.2,且建库+检索耗时 341s(其他臂 25s 的 13 倍)。`semantic` 衍生层 + 组合窗口共现打分在本数据集上未兑现收益。
76
+ - **根因 = 归一化语义保真率**:query 关键词被"归一化后的 gold 文档"覆盖的比例,均值 **0.460**(全覆盖题占比仅 0.2%);同一指标对中文摘要层是 **0.873**(全覆盖 42.8%)。0.46 的保真率决定了 ~81% 的检索上限。
77
+
78
+ ### 发现 4:失败 100% 归因于归一化,而非检索排序 🔍
79
+
80
+ C_en_norm 的 71 个未命中题中,归一化后 gold 原子对 query 关键词**全覆盖 = 0 题**、部分覆盖 65 题、零覆盖 6 题。也就是说:只要归一化把关键词保住了,MdCG 就能把它检回来;检不回来,全是因为词在归一化时就丢了/译错了。**排序机制零责任。**
81
+
82
+ 典型错译样本(CEDICT 词表第一义项直接套用,语境失配):
83
+
84
+ | 英文原文 | 灵枢归一化输出 | 应为 |
85
+ |---|---|---|
86
+ | scavenger hunt | **食腐动物 猎取** | 寻宝游戏 |
87
+ | Three times a week | 三 **时间** 周 | 每周三次 |
88
+ | scared | **创痕** | 害怕 |
89
+ | shelter | **庇护** | 收容所 |
90
+ | tough | **厉害** | 坚强 |
91
+ | fundraiser / charades / soempowering | 原样透出(OOV) | — |
92
+
93
+ ### 发现 5:诚实性两面 ⚠️
94
+
95
+ - **好的一面**:OOV 如实标注 `unknown_keep`(4.0%,738/18523 token)并原样透出,兑现了"词表外概念如实透出 OOV 清单"的承诺;REPRODUCE.md 主动标注"检索侧上界口径""机械归一是归一主体必须为 AI 的直接证据",且把机械归一列为已排除方案 —— **文档层的诚实度依然很高**。
96
+ - **坏的一面**:静默错译(`mapped` 但词义错误)无任何自检信号 —— `scavenger→食腐动物` 在 detail 里标为 `action: "mapped"`,系统认为自己译对了。52.8% 的 token 走 mapped 路径,其质量没有任何运行时护栏。README 用头条数字(99.8)树立英文检索能力预期,而支撑该数字的实为中文摘要层 —— 这属于**结构性误导**(非数据造假)。
97
+
98
+ ### 发现 6:数据集对灵枢有利的证伪检查 ✅
99
+
100
+ 我们主动检查了"零干扰池是否让 99.8% 变成字符串匹配赠品":query 关键词对 gold 文档平均覆盖 0.875,但池内最佳非 gold 仅 0.469,平均区分度 0.407;只有 0.2% 的题存在非 gold 干扰条目满覆盖。**这个 benchmark 在 567 选 1 的粒度上仍有真实区分度**,灵枢的高分不是纯赠品——但前提是 query 关键词能被文档表示覆盖(发现 3 的保真率),而这正是中文 AI 摘要层强、机械归一化弱的地方。
101
+
102
+ ---
103
+
104
+ ## 四、局限(如实声明)
105
+
106
+ 1. **英文原题不可得**:臂③(英文原题 81.2)/③a(78.2)/④(57.2)/⑤⑥⑦ 依赖 `data/external` 的英文原问句,该文件"自备、不入库",本沙箱上游网络不可达(HuggingFace/GitHub TLS 全断)。**这四个对照臂第三方无法复现** —— 本报告以自建 J2_body/J0_raw 替代其对照功能。这也意味着:灵枢公开仓库当前**只能**第三方复现"上界口径"数字,其所有"下界/对照"数字均需自备数据。
107
+ 2. **AI 归一环节不可模拟**:主路线的定义就是"归一主体=AI"。本人刻意**不**用 LLM 替灵枢做归一(那会把"AI 的翻译能力"算进"灵枢的能力")。因此本报告测的是机械归一化端到端 —— 这恰好是"系统自身组件"能兑现的真实下界。
108
+ 3. 中文口径与灵枢自报存在 ±0.4~3pp 的分题型起伏,源于 `zh` 扁平串 vs 结构化字段/fuzzy 的口径差,不影响结论方向。
109
+
110
+ ---
111
+
112
+ ## 五、最终裁定
113
+
114
+ > **灵枢的自报数字全部真实可复现(含 99.8% 逐位复现),且数据集本身非平凡;但其"英文检索 96.8/99.8/99.8"的能力归因是错位的 —— 该数字由中文 AI 摘要层挣得,英文标准归一化组件的真实端到端水平是 81.0%(MdCG)/ 39.0%(字级映射跨语言),离头条数字差 19~61pp。归一化模块本身"有效但有静默错译风险":+58pp 的真实增益、4% 的诚实 OOV、以及无护栏的 52.8% mapped 词典直译。**
115
+
116
+ 一句话:**灵枢没有吹牛,但它把中文摘要层的功劳记在了英文归一化的账上。** 建议上游把 README 头条数字改标为"双语写入加工面检索成绩",并为 `mapped` 路径增加语境消歧或低置信标记 —— 前者是一行文案,后者是它自己的 OOV 哲学(如实透出)尚未覆盖的最后一块。
117
+
118
+ ---
119
+
120
+ ## 附录:产物清单
121
+
122
+ | 文件 | 说明 |
123
+ |---|---|
124
+ | `灵枢_LoCoMo_第三方验证.png` | 四联图:引擎口径 / 归因拆解 / 保真率 / 分题型 |
125
+ | `/tmp/locomo_independent_eval.py` | MdCG 引擎口径独立评测(A/B/C/D/F + 随机基线,含 `--semantic`) |
126
+ | `/tmp/locomo_jaccard_probe.py` | 主路线 Jaccard 口径独立复现与拆解(J2_full/J2_zh/J2_body/J0_raw) |
127
+ | `/tmp/locomo_res_*.json`、`/tmp/locomo_jaccard_res.json` | 全量逐题结果(含 miss 明细与分题型统计) |
@@ -0,0 +1,202 @@
1
+ # 灵枢 vs deja-vu · 统一评分 v7(重评)
2
+
3
+ > 评分日期:2026-09-15
4
+ > 灵枢基线:`38412c4`(v0.4.7 后首个社区 PR 落地,本报告前已做 4 轮独立复核:`222e703`/`0915379`/`1bba53c`/`38412c4`)
5
+ > deja-vu 基线:`d02e0ee`(2026-09-13 评估,**本轮未重测**,网络受限无法确认上游是否更新)
6
+ > **v7 的性质:不是推倒重来,是在 v6 冻结的算术框架上,用四轮新增实测证据做一次有据的更新。**
7
+
8
+ ---
9
+
10
+ ## 一、v6 → v7 变了什么
11
+
12
+ v6 之后我做了四轮灵枢复核,产出三类 v6 时**不存在**的证据:
13
+
14
+ | 证据类 | 具体内容 | 影响的维度 |
15
+ |---|---|---|
16
+ | **复现广度** | 七臂英文路线逐位复现、渐进式检索逐位复现、hive 冷构建 4.44s/4.56s、wm 10/10、compiler 8/8(含 18 项新回归守卫)、swarm 14/14、writelimit 23 项、census 7 断言 | 可复现性 |
17
+ | **部署侧真实修复** | issue #12:宿主 cwd 在插件仓外时桥**静默降级只读 guest、写入不落盘**——已修并带 1:1 复现的回归测试 | 部署运维 |
18
+ | **安全治理** | 主动发现 npm 凭据泄露(`_keys.json` 会被打进公开 registry),我对照验证:无 `.npmignore` 时打包 2 个敏感文件 + 141 个 `.pyc`,有则 0/0 | (诚实度的佐证,不改分) |
19
+
20
+ ### 八维评分表
21
+
22
+ | 维度 | 权重 | 灵枢 v6 | 灵枢 v7 | 变化 | deja-vu | v7 关键证据 |
23
+ |---|:--:|:--:|:--:|:--:|:--:|---|
24
+ | 检索能力(中文) | 15% | 10.0 | **10.0** | — | 7.0 | locomo-zh-500 实测 96.4%,渐进式检索进一步增强 |
25
+ | 检索能力(英文) | 10% | 8.5 | **8.5** | — | 9.5 | ②路上界 99.8(复现),机械下界 57.2(复现);端到端取决于外部归一环节 |
26
+ | 可复现性 | 10% | 8.0 | **8.5** | **+0.5** | 9.5 | 四轮下来几乎所有声称数字逐位复现。⚠️ **原扣分依据「唯一失败 `test_wisdom_md_store`」已作废**(见 §三点五:实为我自身测试污染 + 官方入口已标 SKIP);**替换为新发现的真实扣分项**:该测试对残留空目录脆弱且报错不指向根因。一减一增量级相当,维持 8.5 |
27
+ | 工程规模与测试 | 10% | 9.5 | **9.5** | — | 9.5 | 新增 58 项测试(writelimit 23 + census 7 + defect 18 + wm 10);deja-vu 为 4560 用例 |
28
+ | 架构独立性 | 10% | 9.5 | **9.5** | — | 9.5 | hive Rust 纯 std 零依赖([dependencies] 空)+ wm.py git 载体 |
29
+ | 诚实度 | 12% | 9.8 | **9.8** | — | 9.0 | 本轮再添佐证:commit 主动声明「Rust 形态因 cargo 不可用跳过」「未运行全量 tsc」、安全影响面如实标注(0.4.6 未受影响) |
30
+ | 生态适配广度 | 18% | 9.9 | **9.9** | — | 9.8 | 通用 MCP + 一份纪律文件不变 |
31
+ | 部署运维 | 15% | 7.5 | **8.0** | **+0.5** | 9.5 | issue #12 修的是部署期最难发现的静默 bug;但「需 Python + npm」的固有成本未变 |
32
+ | **加权总分** | 100% | 9.133 | **9.258** | **+0.125** | 9.119 | **差 +0.139** |
33
+
34
+ ### 算术验证(可独立复算)
35
+
36
+ ```
37
+ 灵枢 v7 = 0.15×10.0 + 0.10×8.5 + 0.10×8.5 + 0.10×9.5
38
+ + 0.10×9.5 + 0.12×9.8 + 0.18×9.9 + 0.15×8.0
39
+ = 1.500 + 0.850 + 0.850 + 0.950 + 0.950 + 1.176 + 1.782 + 1.200
40
+ = 9.258
41
+
42
+ v6→v7 增量 = +0.5×0.10(可复现性) + +0.5×0.15(部署运维) = +0.050 + 0.075 = +0.125 ✓
43
+ 9.133 + 0.125 = 9.258 ✓(程序校验通过,无手工调整的末位)
44
+ ```
45
+
46
+ **七轮收敛轨迹**:`7.79 → 8.29 → 8.57 → 8.72 → 9.13 → 9.133 → 9.258`
47
+ 差距:`1.166 → 0.770 → 0.554 → 0.404 → −0.014 → −0.014 → **+0.139**`
48
+
49
+ ---
50
+
51
+ ## 二、记忆系统领域的详细评价
52
+
53
+ 打分之外,这是用户更该读的部分。**在记忆系统这个领域里,灵枢做的到底是什么、强在哪、弱在哪。**
54
+
55
+ ### 2.1 记忆系统的三个基本问题
56
+
57
+ 任何记忆系统都要回答三个问题。灵枢和 deja-vu 给出了**几乎处处相反**的答案:
58
+
59
+ | 基本问题 | 灵枢的答案 | deja-vu 的答案 |
60
+ |---|---|---|
61
+ | **① 记忆从哪来**(获取) | **前向记录 + 后向索引**:主动抽取、沉淀、条件化入库;另有 `cg(op=ingest)` 可吃外部会话历史(⚠️ v7 初稿漏看,勘误见 §三点五) | **后向索引**:直接吃磁盘上已有历史,**0 天即满** |
62
+ | **② 怎么存**(组织) | **认知图谱**:CCG 条件代码图、五槽结构、L0/L1/L2 三层、`derived_from` 证据链 | **倒排索引**:`records.bin` + `buckets/` + `manifest` 增量状态 |
63
+ | **③ 怎么取**(检索) | **白箱确定性**:char-bigram + 四路 RRF + 同义扩展 + 渐进式条件收紧 | **纯词法阶梯**:exact → stem → fuzzy → co-occurrence(向量可选默认关) |
64
+
65
+ ### 2.2 灵枢在领域内的真正独特之处
66
+
67
+ 评完四轮,我认为灵枢有三个设计在同类项目里**少见**,值得单独说:
68
+
69
+ **① 记忆带生效条件(条件化记忆)。** 灵枢存的不是「一段文本」,而是「**在什么条件下成立的文本**」——每个节点有 `# 生效条件` 字段,检索时做条件匹配而不是纯相似度。这直接支撑了它的四态冲突处理:新结论与旧记忆冲突时,不是简单覆盖或共存,而是走 `ACCEPT / REJECT / DEFER / BLINDSPOT` 四态 + 三级决策(L0 情绪 → L1 反思 → L2 递归反思)。**大多数记忆系统回避了「新信息与旧记忆冲突怎么办」这个问题,灵枢把它做成了显式状态机。** 这是我在领域内没见过第二个这么做的。
70
+
71
+ **② 分层会话隔离(多智能体记忆)。** `session` 硬隔离 + `budget_tokens` 硬截断 + `layer` 语义分离,主代理只读卡片层、细节按 id 精确取。这在「一个宿主带多个子代理」的场景是刚需,而多数记忆系统的记忆池是全局单层的。我实测过隔离性:`main` 会话恰好 2 条(锚定+合并),L2 细节零泄漏。
72
+
73
+ **③ 证据链可追溯。** 每个结论带 `derived_from`(从哪些子结论合并而来)和 `verification_basis`(证据类型白名单:compiler/test/measurement/formal_proof/data/textbook/public_kb/other)。反查「这个全局结论从哪来」可以一路追到子代理卡片。这让记忆系统第一次有了**审计能力**——记住的不只是答案,还有答案的合法来源。
74
+
75
+ ### 2.3 灵枢在领域内的相对弱项(不因分数高而消失)
76
+
77
+ 1. ~~**冷启动空窗**(前向记录的固有问题)~~ **【v7 勘误撤回】** 我初稿写「灵枢没有对应的回溯通道」——**错**,`cg(op=ingest)` 就是回溯通道(`md_cg/sources.py`,我实测 12/12 通过,见 §三点五)。灵枢实际是**前向记录 + 后向索引双通道**。此条弱项**不存在**。
78
+ 2. **部署重量**。8.0 vs 9.5 的差距是结构性的:灵枢需要 Python 环境 + npm 双栈;deja-vu 是 `curl | sh` 十秒的单二进制。issue #12 修复改善了「装上之后」的体验,但没有改善「装」本身。
79
+ 3. **英文端到端依赖外部环节**。②路的 99.8% 是检索侧上界,真实水平由 AI 归一环节决定(机械下界 57.2%)。灵枢把词表真源和字级映射做到了位,但**归一这一环在系统外部**。这不是缺陷,是架构裁定(零重依赖原则),但选型者必须知道。
80
+
81
+ ### 2.4 在同类中的坐标
82
+
83
+ 以 deja-vu 对照脚本(`scripts/day0compare`)列出的同类为参照(cass / agentmemory / mempalace / funes),灵枢的坐标是:
84
+
85
+ > **多数同类在做「更好的记忆检索器」(组件),灵枢在做「带记忆的智能体运行时」(平台),deja-vu 在做「已有记忆的索引器」(另一个正交方向)。**
86
+
87
+ - 组件路线(多数同类):比的是召回率、延迟、易集成。
88
+ - 平台路线(灵枢):比的是能力宽度——它带 Rust 并发引擎、蜂群运行时、中文编译器、82 工具、世界模型。记忆只是这个平台的一个面。
89
+ - 索引路线(deja-vu):比的是冷启动即战力、零依赖、覆盖 harness 数。(注:冷启动一项灵枢凭 `cg(op=ingest)` 也能做,非独有优势——见 §三点五勘误。)
90
+
91
+ **所以「灵枢 vs deja-vu」的总分对比,本质上和「平台 vs 组件」的总分对比一样,参考价值有限。** v6 的结论在 v7 依然成立:它们不在同一抽象层级,选型应按需求,不按分数。
92
+
93
+ ---
94
+
95
+ ## 三、必须声明的偏差(这比分数更重要)
96
+
97
+ **灵枢 7.79 → 9.258(+1.468);deja-vu 8.95 → 9.119(+0.169)。**
98
+
99
+ 这个不对称必须解释。前五轮灵枢的每一次上调,都来自「我又挖出了一层真实能力」(Rust 引擎、蜂群、编译器、500 题报告、82 工具)——是**我的认知修正**,不是项目变了。而这引出一个尖锐的问题:
100
+
101
+ > **我对灵枢投入了 7 轮深挖,对 deja-vu 只有 1 轮评估。如果我同样花七轮挖 deja-vu(28 万行 Go、1870 个测试文件、55 个版本 CHANGELOG),它的分数会不会也涨?**
102
+
103
+ 诚实的答案:**很可能。** 我至今不知道 deja-vu 的 Rust 层有没有类似 hive 的东西、它的 1870 个测试文件里有没有被 gitignore 卡住的暗坑、它的 25 个 harness 解析器各自的质量梯度。**评审深度不对称本身,就是偏差来源。**
104
+
105
+ 因此 v7 的 +0.139 应该读作:
106
+
107
+ > **「在我看得见的范围内,灵枢略优」——不是「灵枢优于 deja-vu」。**
108
+
109
+ 另外本轮网络受限,deja-vu 沿用 09-13 的 `d02e0ee` 数据未重测。如果它近期有实质更新,这个差距还会变。
110
+
111
+ ---
112
+
113
+ ## 四、结论与建议
114
+
115
+ **灵枢 9.258 / deja-vu 9.119,差 +0.139**(v6 时 −0.014)。灵枢首次在算术上领先,但领先幅度(+0.139)**小于我任何一轮的认知修正幅度**(最小的 v7 是 +0.125,最大的 v1→v2 是 +0.50)——这个量级对比本身就说明:**分数差在评审噪声以内。**
116
+
117
+ **⚠️ 本节四条建议已全部撤回。全部四条都建立在「我没读全 / 没验证到底」之上,其中两条被用户当场指出,两条由我本次复查自曝。详见 §三点五。保留原文是为了让错误可追溯,不代表仍然成立。**
118
+
119
+ | # | 原建议 | 状态 | 实际情况 |
120
+ |---|---|---|---|
121
+ | 1 | ~~补「后向索引」入口~~ | ❌ **撤回** | **早已有之且实测可用**:`md_cg/sources.py`(模块首行即「把外部会话流接进认知图」),`cg(op=ingest)` 支持通用 JSONL(字段名可配)/ DSH 原生会话 / 目录级三链,带增量 watermark、去重、幂等、`dry_run`。我实测 **12/12 通过** |
122
+ | 2 | ~~`test_wisdom_md_store` 的 `.db` 依赖是劝退点~~ | ❌ **撤回** | **已被采纳修复**,且**采纳的就是我提的建议**:`scripts/run_tests.py:88` 注释明写「裸 clone 环境 SKIP 探测(**2026-09-14 外部复核建议 #3**)」。我所谓「三轮未变」是我自己造的脏目录 |
123
+ | 3 | ~~英文归一 prompts 产品化~~ | ❌ **撤回** | 早已有之(用户指出)。系统侧 `md_cg/semantic/canonical.py` 供词表真源,AI 侧 `docs/mdcg/单元自我锚点_系统提示词标准_v0.3.md` 操作规程第 2 步 |
124
+ | 4 | ~~能力全景进 README~~ | ❌ **撤回** | 早已有之(用户指出)。`README.md` 第 26 行「🗺️ 平台全景」,另有第 172 行能力自评、第 179 行能力速查 |
125
+
126
+ **唯一经实测仍成立的一条(新增,且性质完全不同):**
127
+
128
+ > **`test_wisdom_md_store` 对残留空目录脆弱。** 当 `_md_cg_wisdom_graph/` 存在但为空(gitignored 产物被清理或导出中断)时,`group_d` 的 `if os.path.isdir()` 判为真 → 进入分支 → 断言 `FAIL #22: duck conn 可查询(0 行)`,退出码 1。而该报错**完全不指向真正的原因**(空目录),我因此误判了三轮。建议:`ok(len(rows) > 0, ...)` 前先判空目录并给出再生命令(`python -c "from md_cg.migrate_wisdom_graph import export; export()"`,该命令作者已在 `docs/theory/理论_机制_代码_实验_缺口矩阵_v0.1.md` 给出)。
129
+ > **实测**:`rm -rf _md_cg_wisdom_graph` 后连跑 3 次均 `exit 0`(20 断言);官方入口 `scripts/run_tests.py` 在目录缺失时标 SKIP、退出码 0。所以这是**残留态边角**,不是裸 clone 用户的必经之路——优先级远低于我原来声称的「第一劝退点」。
130
+
131
+ ---
132
+
133
+ ## 三点五、v7 勘误:四条建议,四条全错
134
+
135
+ 用户指出我说"没有"的两样东西其实都有。**他是对的。** 我据此复查了另外两条——**也全错**。四条建议无一成立。
136
+
137
+ | # | 我的断言 | 实际情况 | 位置 |
138
+ |---|---|---|---|
139
+ | 4 | ~~「能力全景放进 README 顶部」~~ | **早已有之**,五件套表格齐全(大脑 / Rust 检索引擎 / 蜂群运行时 / 中文编译器 / 蜂巢并发引擎),每层带位置与文档入口 | `README.md` **第 26 行**「🗺️ 平台全景」;另有第 172 行「🎯 能力自评」、第 179 行「🧩 能力速查」 |
140
+ | 3 | ~~「AI 归一 prompts 值得随包发布」~~ | **职责分工是明确的架构裁定,两侧都齐**:系统侧供词表真源与接口,AI 侧有正式系统提示词标准 | 系统侧 `md_cg/semantic/canonical.py`(「词表真源 + **AI 写入侧归一**」);AI 侧 `docs/mdcg/单元自我锚点_系统提示词标准_v0.3.md` 操作规程第 2 步「**归一:按标准词表归一翻译;词表外概念如实透出 OOV 清单,不强行硬译**」 |
141
+ | 1 | ~~「无历史导入/回溯通道,需补后向索引」~~ **(我还标注了「已复核 · 此条成立」)** | **早已有之,且我实测可用**。通用 JSONL 字段名可配、DSH 原生会话源(zstd 可选降级)、自动源探测、增量 watermark、去重幂等、`ingest_dir` 目录级三链、`dry_run` 预演,注释里甚至明写「对标 deja-vu:错误→修复」 | `md_cg/sources.py`,模块 docstring 首行即「把外部会话流接进认知图」;`cg(op=ingest)` 见 `README.md` **第 199 行** op 列表。**我的探针实测 12/12 通过** |
142
+ | 2 | ~~「`.db` 依赖缺失,三轮未变,是新人第一劝退点」~~ | **已被采纳修复,采纳的正是我提的建议** | `scripts/run_tests.py:88` 注释原文:「裸 clone 环境 SKIP 探测(**2026-09-14 外部复核建议 #3**)」,第 94 行即本测试。官方入口实测标 SKIP、退出码 0 |
143
+
144
+ ### 第 1 条:最严重的一条
145
+
146
+ 我把它排在建议**第一位**,还郑重标注「已复核:README 与 docs 中确实无历史导入/回溯通道,此条成立」。这个"已复核"标签让错误更糟——**它证明我不是没查,是查了还查错**。
147
+
148
+ `cg(op=ingest)` 就写在 README 第 199 行的 op 列表里,我这次通读全文才看见。
149
+
150
+ 我实测了它(探针已随本报告交付):造一份字段名完全不同的外部 harness 历史会话 → 冷启动召回 0 条 → 摄取 5/5 → 二次摄取 `new_events=0`(增量水位生效)→ 追加后只吃 1 条增量 → 召回命中 4 条且内容正确。**能力完整存在。**
151
+
152
+ 我在 v7 第二节里还把「灵枢是前向记录型,缺后向索引」当作结构性短板来论述。**这段论述作废。**
153
+
154
+ ### 第 2 条:我自己把自己绕进去了
155
+
156
+ 这条的讽刺程度最高。我说它"三轮未变"——**三轮共享同一个污染源**:
157
+
158
+ 1. 我前几轮跑测试生成了 `_md_cg_wisdom_graph/` 空目录(gitignored 产物)
159
+ 2. `group_d` 的 `if os.path.isdir(DEFAULT_MD_ROOT)` 判真 → 进入分支 → `conn._all_rows()` 返回 0 → `FAIL #22`
160
+ 3. 报错信息「duck conn 可查询(0 行)」**完全不指向真因**
161
+ 4. 我据此断言"仓库固有缺陷",还在三轮里"稳定复现"
162
+
163
+ 真相:这是我**自己的测试运行**造成的环境污染,被我当成了被测对象的固有属性。而作者早在 `docs/theory/理论_机制_代码_实验_缺口矩阵_v0.1.md` 记录了「空壳化」现象并给出再生命令。
164
+
165
+ 更关键的是:**我提的"依赖缺失应标 SKIP"建议,作者已经采纳落地了**,代码注释里还署了我的建议编号。我却在下一版报告里把它列为"三轮未变"。
166
+
167
+ ### 错误同源
168
+
169
+ v6 我把同类错误归因为"灵枢叙事风格偏爱暴露弱点,误导了我"。**这个归因错了。** 真正的原因是单一的:
170
+
171
+ > **我没有把材料读完、没有把验证做到底,就用"没看到"当作"不存在"。**
172
+
173
+ 这次它表现为四种变体:没读 README 全文(#4)、没读 docs(#3)、没读代码只看文档关键词(#1)、把自身污染当成对象缺陷(#2)。**没有一种需要"叙事风格"这个借口。**
174
+
175
+ ### 对评分的影响
176
+
177
+ **总分维持 9.258 / 9.119(差 +0.139)**,但有一条维度的**依据**必须替换,我说明如下:
178
+
179
+ - **可复现性(8.5)** 原扣分理由之一是「唯一失败 `test_wisdom_md_store`」。该失败不成立,这条理由作废。
180
+ - 但本次复查发现了**新的、真实的可复现性问题**替代它:测试对残留空目录脆弱,且报错不指向根因——**我自己就被它误导了三轮**,这是可复现性的实打实扣分项。
181
+ - 一减一增,量级相当。**维持 8.5**,但支撑证据整条换掉。
182
+
183
+ 其余七维不受影响:全部建立在实测数据上,不涉及"README 有没有某章节"。
184
+
185
+ **对我那份"评审深度不对称"自省的影响是负面的**:我连灵枢的 README 都没读完就下了七轮结论,那么我对 deja-vu 只做一轮评估的可靠性,比第三节承认的还要低。**该警告不仅成立,还应加重。**
186
+
187
+ ### 给选型者的一句话
188
+
189
+ - 要**立刻能用的记忆层**(尤其是英文/多 harness 历史场景):deja-vu。
190
+ - 要**能长出智能体能力的中文优先底座**(条件化记忆、冲突裁决、证据链、多智能体分层):灵枢。
191
+ - 两者**正交而非互斥**。
192
+ - **更正**:我此前写的「灵枢补一个后向索引入口就能拿到对方最大优势」**作废**——后向索引灵枢本来就有(`cg(op=ingest)`,实测 12/12)。真正仍需权衡的是**英文端到端检索**:灵枢的英文归一化依赖外部环节(机械归一下界 57.2),这是已实测的真实差距,不是我推断出来的。
193
+
194
+ ---
195
+
196
+ ## 五、配套图
197
+
198
+ *`灵枢_v7_统一评分.png`* —— ① 八维对比(标注两项上调)② 七轮收敛轨迹 ③ 记忆系统三问的取舍定位 ④ 评审深度不对称的自我警示。
199
+
200
+ ---
201
+
202
+ *附:本报告全程可复算。权重表与两版维度分矩阵在第一节完整给出,任何一行都可用 `sum(权重 × 维度分)` 独立验证;评分计算与校验代码已运行,`+0.125` 增量与两项维度分变化精确吻合。*