@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
@@ -1,223 +1,223 @@
1
- # 六家记忆系统横评 · 100 题中英双查(bench6 v1.0)
2
-
3
- > **题集(已公开)**:`data/benchmarks/bench6-100-zh-en/`(`manifest.json` / `pool.jsonl` / `questions.jsonl`,CC BY-NC 4.0)
4
- > **六家结果(机器可读)**:`data/benchmarks/bench6-100-zh-en/results_v1.0.json`
5
- > 评分器:`md_cg/eval_common.py`(`unlock_global_cap()` + `use_jaccard()`),六家**同一套** hit@1 / hit@5 / MRR。
6
-
7
- ## 一句话结论
8
-
9
- 在这份**零干扰、全为 gold 证据**的题池上:**中文查询**由灵枢词法(99.0%)与 Letta 归档直插(96.0%)领跑,**英文查询**则由 Letta 归档直插(73.0%)与纯向量 RAG(71.0%)领跑;灵枢四路融合在本池中**反而低于其单词法基线**(81.0% < 99.0%),条件桶/实体路在饱和池上稀释了词法命中。**Letta 的 agent 自主入库在本次口径下命中率为 0,根因不是检索失效,而是入库时把 `[turn_id]` 标记改写成自然语言、导致结果无法回溯**。
10
-
11
- ---
12
-
13
- ## 1 口径与复现
14
-
15
- | 项 | 取值 |
16
- |---|---|
17
- | 题源 | `data/benchmarks/locomo-zh-500/questions500.jsonl`(500 题,公开)+ 上游 LoCoMo 英文原问句(`mteb/LoCoMo`,revision `02e2c3dea15d9fdfd1cd7a0f65f5f8ae2ed4c1ac`) |
18
- | 语料 | `data/benchmarks/locomo-zh-500/corpus567.jsonl`(567 turn) |
19
- | 抽样 | qtype 分层 · 最大余额法 · `seed=7007` · n=100;配额 `single_hop 43 / adversarial 23 / temporal 16 / multi_hop 14 / open_domain 4` → 实际一致 |
20
- | 池 | 抽中 100 题的 gold 引用 turn 去重 = **137 条**;悬空引用 **0 条**(`dangling=[]`,已逐条记录规则) |
21
- | 写入文本(六家逐字同源) | `[<turn_id>] <英文原始陈述> [<会话时间>]` |
22
- | 中英双查 | 同 qid 两套词面:`question_zh`=中文关键词串、`question_en`=英文自然问句;`evidence_turns` 已断言逐字一致 |
23
- | 评分 | `first_evidence_rank`(1-based,未命中 0)→ `hit@1 / hit@5 / MRR`;统一前置开关 `unlock_global_cap()`(解除 LIKE 预筛 500 条截断)+ `use_jaccard()`(长 turn 不挤掉证据) |
24
-
25
- **验证(纪律 5,回放/断言全绿)**:题数=100、池=137、池内 id 唯一、每题中英问句均非空、中英 `evidence_turns` 逐字一致、竞品 `unmapped_rate=0`(除 Letta agent)、各臂 `errors=0`。
26
-
27
- ---
28
-
29
- ## 2 主表:六家 × 中英 × 三指标
30
-
31
- | 系统 | zh hit@1 | zh hit@5 | zh MRR | en hit@1 | en hit@5 | en MRR | 未回收率(zh/en) |
32
- |---|---|---|---|---|---|---|---|
33
- | 灵枢·单词法 | **99.0%** | 100.0% | 0.9950 | 47.0% | 69.0% | 0.5637 | n/a |
34
- | 灵枢·四路(真开bucket) | 81.0% | 100.0% | 0.8983 | 37.0% | 67.0% | 0.4893 | n/a |
35
- | 灵枢·四路(名义) | 68.0% | 100.0% | 0.8093 | 29.0% | 61.0% | 0.4212 | n/a |
36
- | 灵枢·词法+meta | **99.0%** | 100.0% | 0.9950 | 54.0% | 72.0% | 0.5993 | n/a |
37
- | 灵枢·四路(无meta) | **99.0%** | 100.0% | 0.9950 | 47.0% | 69.0% | 0.5637 | n/a |
38
- | 纯向量 RAG | 97.0% | 100.0% | 0.9817 | 71.0% | 91.0% | 0.7937 | n/a |
39
- | mem0 | 89.0% | 95.0% | 0.9125 | 68.0% | 93.0% | 0.7850 | 0.0% / 0.0% |
40
- | Graphiti | 58.0% | 63.0% | 0.6008 | 46.0% | 62.0% | 0.5303 | 0.0% / 0.0% |
41
- | GraphRAG | 31.0% | 35.0% | 0.3223 | 18.0% | 25.0% | 0.2057 | 0.0% / 0.0% |
42
- | Letta·归档直插 | 96.0% | 100.0% | 0.9767 | **73.0%** | 93.0% | 0.8063 | 0.0% / 0.0% |
43
- | Letta·agent自主 | 0.0% | 0.0% | 0.0000 | 0.0% | 0.0% | 0.0000 | **100% / 100%** |
44
-
45
- > 「灵枢」多行是**同一支系统在不同检索口径**下的对照,非多套系统;`灵枢·单词法 / 词法+meta / 四路(无meta)` 三者在中文侧同分(99.0%),差异只在英文侧(meta 使 en 47%→54%)。
46
-
47
- ---
48
-
49
- ## 3 分题型附表(中文查询 hit@1,括号为题数)
50
-
51
- | 系统 | adversarial(23) | multi_hop(14) | open_domain(4) | single_hop(43) | temporal(16) |
52
- |---|---|---|---|---|---|
53
- | 灵枢·单词法 | 96% | 100% | 100% | 100% | 100% |
54
- | 灵枢·四路(真开bucket) | 83% | 86% | 100% | 77% | 81% |
55
- | 灵枢·四路(名义) | 70% | 79% | 75% | 65% | 62% |
56
- | 灵枢·词法+meta | 96% | 100% | 100% | 100% | 100% |
57
- | 灵枢·四路(无meta) | 96% | 100% | 100% | 100% | 100% |
58
- | 纯向量 RAG | 100% | 100% | 100% | 95% | 94% |
59
- | mem0 | 96% | 100% | 75% | 84% | 88% |
60
- | Graphiti | 48% | 79% | 50% | 56% | 62% |
61
- | GraphRAG | 52% | 29% | 25% | 26% | 19% |
62
- | Letta·归档直插 | 100% | 93% | 100% | 95% | 94% |
63
- | Letta·agent自主 | 0% | 0% | 0% | 0% | 0% |
64
-
65
- **读法**:灵枢系在 `multi_hop / open_domain / single_hop / temporal` 四项均为 100%,其唯一短板是 `adversarial`(96%,低 4pp);纯向量 RAG 与 Letta 归档直插则在 `adversarial` 与 `multi_hop` 上互补(前者 adversarial 100/后者 multi_hop 93)。GraphRAG 全题型垫底,`temporal_reasoning` 仅 19%(时间类问题依赖实体图上的时间边,而本臂以 `local_search` 的 sources 行序为准,未见时间维排序)。
66
-
67
- ---
68
-
69
- ## 4 逐家入库形态与语言取证(本次最有价值的观测)
70
-
71
- 各家写入后**回读一条真实存储内容**,作为中英双查差异的解释变量:
72
-
73
- | 系统 | 存储形态(回读取证) | id 回收通道 | 取证 |
74
- |---|---|---|---|
75
- | 灵枢 | 中文四槽(身份/时间/摘要/条件)+ 英文原文,补 `tags`(裸词 identity+terms)与 `condition_space` | 图节点 id(进程内) | 库为自有 `MdCGOS`,`tags` 必须裸词(`ent:` 前缀在自然语言查询下永不命中) |
76
- | mem0 | 保留 `[turn_id] 英文原文`,另存 `metadata.turn_id` | `item["metadata"]["turn_id"]`(精确) | zh/en `unmapped=0` |
77
- | Graphiti | 一 turn 一 episode,抽取为实体/关系边 | `edge.episodes → EpisodicNode.name`(精确) | 137 episode 全部可回溯 |
78
- | GraphRAG | 文档级一次性索引,137 个 `text_unit`(原文切片) | `context_data["sources"].text` 正则(行序) | `index_rc=0`、`n_text_units=137`;**英文侧 7 题空 sources** |
79
- | Letta·归档直插 | `passages.create` 直插,**逐字保留** `[scene_0_session_11_turn_14] Caroline: …` | `passages.search().results[].content` 正则 | `search_field_path=['results']`;zh 96% / en 73% |
80
- | Letta·agent自主 | `messages.create`,agent 把内容**改写成自然语言摘要**(如 "Caroline is going through a transition…"),**不含 `[turn_id]` 标记** | 同上,但标记已丢 → 无可回收 | `search_field_path=['<empty>']`、`n_empty=100/100` |
81
-
82
- **结论**:Letta agent 模式的 0 分**不是检索能力问题**——`errors=0`、检索调用正常,而是**入库形态丢失了来源标记**,使任何以 id 回溯的评测口径都无法命中。评测「自主记忆」必须把「标记可追溯性」单列,否则会把可追溯性差异误读成检索能力差异。
83
-
84
- ---
85
-
86
- ## 5 条件路由净效应(灵枢内部对照,中文查询)
87
-
88
- | 口径 | zh hit@1 | 相对单词法 |
89
- |---|---|---|
90
- | 单词法 | 99.0% | — |
91
- | 四路·真开 bucket(`context` 非空) | 81.0% | **−18.0pp** |
92
- | 四路·名义(`context=None`,bucket 路空转) | 68.0% | −31.0pp |
93
-
94
- **净效应为负**:真开 bucket 比名义口径**高 13.0pp**(说明条件桶路本身确实在工作、不是空转),但在本池中两者都低于单词法。归因见 §7 判定单 1——**零干扰池 + 短证据句**使词法已近饱和(99%),RRF 融合引入的并列项会挤占 Top-1。该结论**仅在本条件空间成立**,不可外推为「四路无用」。
95
-
96
- ---
97
-
98
- ## 6 跨语言对照(中 → 英 的落差)
99
-
100
- | 系统 | 入库语言 | zh→en hit@1 变化 |
101
- |---|---|---|
102
- | 灵枢·单词法 | 中文层为主 + 英文原文 | 99.0% → 47.0%(−52.0pp) |
103
- | 纯向量 RAG | 英文原文直嵌入 | 97.0% → 71.0%(−26.0pp) |
104
- | mem0 | 英文原文 | 89.0% → 68.0%(−21.0pp) |
105
- | Letta·归档直插 | 英文原文 | 96.0% → 73.0%(−23.0pp) |
106
- | Graphiti | 英文原文 | 58.0% → 46.0%(−12.0pp) |
107
- | GraphRAG | 英文原文 | 31.0% → 18.0%(−13.0pp) |
108
-
109
- **读法**:入库语料与查询语料的**同源程度**决定跨语言落差。入库含中文层者(灵枢)中文查询登顶、英文查询垫底;入库为英文原文者(向量 RAG / mem0 / Letta)英文查询显著更稳。**没有一家在两种查询语言上同时最优**——这正是「中英双查」矩阵要暴露的事实。
110
-
111
- **横向结论(不可忽略的第二层读法)**:把主表 11 臂逐行对比——**除全零壳臂 `letta_agent` 外,全部 10 臂的中文查询 hit@1 均高于英文查询,提升 +12 ~ +52pp**(灵枢·单词法 +52pp、词法+meta +45pp、纯向量 RAG +26pp、Letta·直插 +23pp、mem0 +21pp、GraphRAG +13pp、Graphiti +12pp)。也就是说,「英文查询更稳」只指**相对自身**的落差保持率(英文库 → 英文查询衰减更小);**绝对命中上,没有任何一家在英文词面下超过自己的中文词面**——查询词面敏感性(+12~+52pp)大于多数家间绝对差距。该结论可由公开脚本一键复现:
112
-
113
- ```bash
114
- python data/benchmarks/bench6-100-zh-en/run_bench.py
115
- ```
116
-
117
- 脚本自带口径自证(用 `results_v1.0.json` 存档逐题 ranks 重算 summary 逐位比对)与 Adapter 接入协议(第三方记忆系统实现 `ingest`/`search` 即可同口径入评)。归因边界照旧:`question_zh` 为关键词串(保留英文专名/日期词)、`question_en` 为自然问句,中文提升混合语言与查询形态双因素;内置词面基线在纯英文库上呈反向 en>zh(`--demo`),恰证「查询语言优势取决于系统如何处理语料」。
118
-
119
- ---
120
-
121
- ## 7 偏差归因(设计者视角判定单)
122
-
123
- ### 判定单 1 · 灵枢四路真开 bucket 反低于单词法
124
-
125
- ```
126
- 条件空间:观测位置=全局观测层(评测编排)|观测工具=eval_common 证据命中(unlock_global_cap+use_jaccard)|时间窗口=bench6 单次全量(seed=7007)|存在约束=池内每题 gold 仅 1–2 条、证据为高度可分词短句
127
- 白箱三问:依据=同池同题同口径下 四路 81% < 单词法 99%(且名义 68% < 真开 81%)|条件=仅当「池内零干扰 + 证据短句高度可分词」时成立(词法已饱和,条件桶/实体路引入的并列项挤占 Top-1)|错后=若池含干扰或证据变长,四路应回优
128
- 裁决:REJECT(「四路必然优于单词法」为假)
129
- 依据:同池下 hit@1 单调 单词法 99% > 真开 81% > 名义 68%;真开比名义高 13pp 证明 bucket 路在工作,非空转
130
- 缺失维度:条件边界(池干扰度)
131
- 验证路径:在 567 全池(含干扰)上复跑两口径,若四路反超则归因成立
132
- 关注信号:条件路由的价值应在「语义/条件类查询 + 有干扰池」中体现
133
- ```
134
-
135
- ### 判定单 2 · Letta agent 自主入库 0%
136
-
137
- ```
138
- 条件空间:观测位置=全局(入库形态取证)|观测工具=passages.list 回读 + search field path 取证|时间窗口=全量 137 写入后|存在约束=agent 写入经 LLM 改写、core block 存自然语言摘要
139
- 白箱三问:依据=ingest_probe 内容为 "Caroline is going through a transition…",不含 [scene_*_turn_*] 标记|条件=凡入库经 LLM 重写且不保留原始标记者,id 口径必无法回溯|错后=该结论支持「自主入库丢失可追溯性」,写入 negative
140
- 裁决:REJECT(不是检索失败,而是入库形态丢失标记导致不可回收)
141
- 依据:errors=0、检索调用正常、field=['<empty>']、n_empty=100/100;对照 archival 直插(保留标记)96%/73% 正常 → 差异锁定在入库语义
142
- 缺失维度:存在约束(stored-form 是否保留 source id)
143
- 验证路径:对比 archival 直插(保留标记)96%/73% 正常 → 差异锁定在入库语义,不在检索
144
- 关注信号:评测「结构化/自主记忆」须区分「标记可追溯性」
145
- ```
146
-
147
- ### 判定单 3 · 灵枢词法 0.99 ≠ 公开参考 0.936
148
-
149
- ```
150
- 条件空间:观测位置=全局|观测工具=同一 eval_common 词法|时间窗口=不同池规模两次评测|存在约束=bench6 池=137(仅抽中题 gold,零干扰),公开池=567(全语料含干扰)
151
- 白箱三问:依据=manifest pool.n=137 vs 公开 n_pool=567;同算法随池缩小命中单调上升|条件=池内零干扰时指标为上界|错后=如池扩回 567 应回落至 ≈0.936 附近
152
- 裁决:DEFER(非矛盾,是「不同条件空间不可直接等同」)
153
- 依据:算法(first_evidence_rank + 同口径)未变,唯一改变的条件是池规模
154
- 缺失维度:条件边界(池干扰度/池规模)
155
- 验证路径:以 bench6 池跑公开配置、或以 567 池跑 bench6 配置做交叉验证
156
- ```
157
-
158
- ### 判定单 4 · 灵枢英文查询远低于中文
159
-
160
- ```
161
- 条件空间:观测位置=全局|观测工具=hit@1|时间窗口=同库双查|存在约束=灵枢库存中文层+英文原文,查询为中文关键词串 vs 英文自然问句
162
- 白箱三问:依据=灵枢 zh 99% / en 47%;纯向量 RAG zh 97% / en 71%|条件=词法路命中依赖查询词面与入库词面同语言|错后=若英文查询也能命中中文层(双语词项映射),en 应上升
163
- 裁决:ACCEPT(条件证据充分:入库语料与查询语料同源程度差异)
164
- 依据:跨语言矩阵——凡入库英文原文者英文查询均不低于灵枢;中文查询则灵枢居首
165
- 缺失维度:无
166
- 验证路径:给灵枢补「英文查询→中文层」跨语言词项映射后再测
167
- ```
168
-
169
- ---
170
-
171
- ## 8 观测:写入 / 查询成本(137 条池)
172
-
173
- | 系统 | 写入耗时 | 中文查询 100 题 | 英文查询 100 题 |
174
- |---|---|---|---|
175
- | mem0 | 177.7s | 6.4s | 6.7s |
176
- | Graphiti | 416.4s | 6.8s | 7.3s |
177
- | GraphRAG | 建索引 616s(一次性) | 346.2s | 182.1s |
178
- | Letta·归档直插 | 59.0s | 38.0s | 38.3s |
179
- | Letta·agent自主 | 418.7s | 58.3s | 58.8s |
180
- | 灵枢(**rust 引擎**)·单词法 | 进程内,未单列¹ | **0.008s** | **0.019s** |
181
- | 灵枢(**rust 引擎**)·四路 | 同上¹ | 0.012s | 0.023s |
182
- | 灵枢(**rust 引擎**)·词法+meta | 同上¹ | 0.009s | 0.021s |
183
- | 纯向量 RAG | 进程内,未单列 | — | — |
184
-
185
- > ¹ 灵枢写入走 python 进程内(`mdcg-eval` 为**只读检索核心**,无写入路径),未单列计时。
186
- > **rust 三行为 rust 检索核心实测**(非 python):`mdcg-eval --serve` 引擎,预热 10 请求后逐请求 `perf_counter` 计时,口径 = 客户端端到端 JSON 行 IPC 调用 100 题的总墙钟时间(单题均值 0.07–0.24 ms,p95 ≤ 0.34 ms;复跑波动 <15%)。计时同批 hits 复算 hit@1/hit@5/MRR 与 py 基线逐项一致——测的即主表对齐口径。脚本与数据:`docs/experiments/bench6-rust-rerun/bench_latency.py` / `rust_latency.json`。竞品行含各自 SDK/HTTP 客户端开销,同为端到端口径,量级差距(10²–10⁴ 倍)远超客户端差异。
187
-
188
- ---
189
-
190
- ## 9 诚实边界(报告须原样引用)
191
-
192
- 1. **池全为 gold 证据 → 池内零干扰,指标是上界**,不是端到端记忆能力;真实场景存在大量干扰 turn,各家差距可能与本表不同。
193
- 2. **`question_zh` 是中文关键词串而非自然语言问句 → 评检索命中,非 QA**;无答案文本,无法评答案质量。
194
- 3. **n=100 时题级命中率 CV≈8.3%**(n=500 时 3.7%,容量减半按 √5 放大)→ **家间差距小于约 16% 不可下结论**。据此,主表中「灵枢词法 99% vs 纯向量 97%」等差距**不可判为显著**;而「99% vs 0%(Letta agent)」「99% vs 31%(GraphRAG)」等大落差可下结论。
195
- 4. 竞品行序为各家**自身返回顺序**(mem0/Graphiti 按相似度或图序,GraphRAG 为 sources 行序),非统一重排——差异部分来自各家排序口径本身。
196
- 5. Letta 分「归档直插 / agent 自主」两模式分别报告;**不得**以 archival 的分数代表 Letta 整体,也不得以 agent 的 0 分否定 Letta 检索能力。
197
-
198
- ---
199
-
200
- ## 10 复现命令
201
-
202
- ```bash
203
- # 1) 固化口径层(首次;幂等)——题集已在 data/benchmarks/bench6-100-zh-en/
204
- python -m md_cg.bench6_common --force
205
-
206
- # 2) 主进程臂(灵枢 5 口径 + 纯向量 RAG)
207
- python -m md_cg.bench6_arms
208
-
209
- # 3) 六家统一评分(主表 + 分题型 + 落盘)
210
- python -m md_cg.bench6_competitors --k 5
211
- ```
212
-
213
- **外部依赖(仅竞品臂需要)**:四家 LLM 竞品(mem0 / Graphiti / GraphRAG / Letta)的适配脚本运行在评测工作区,各以独立虚拟环境隔离,分别需要自身的图数据库服务、本地嵌入服务、记忆服务与 LLM API(其为各家服务的本地对接代码,涉各家凭据)。**公开评测入口不依赖任何竞品栈**——`data/benchmarks/bench6-100-zh-en/run_bench.py`(零依赖)提供口径层复现(默认运行即做口径自证)与 Adapter 协议(实现 `ingest` / `search` 两个方法即可接入任意系统跑同一题集),**接入任意 LLM 与向量方法进行测试都可复现**。本仓库公开的是**口径层 + 题集 + 评测入口 + 六家结果**,竞品数字可由 `data/benchmarks/bench6-100-zh-en/results_v1.0.json` 逐题核对。全流程按 AGENTS 第 15 条走 argv 列表 + `PYTHONUTF8=1`。
214
-
215
- ---
216
-
217
- ## 11 数据来源与署名
218
-
219
- - 中文派生题库/语料:`locomo-zh-500`(本项目派生并公开,源自 LoCoMo,**CC BY-NC 4.0**)。
220
- - 本报告题集:`data/benchmarks/bench6-100-zh-en/`(100 题 / 137 池,**CC BY-NC 4.0**,沿用上游许可)。
221
- - 英文原始问句/陈述:上游 LoCoMo(经 `mteb/LoCoMo` 获取,revision `02e2c3dea15d9fdfd1cd7a0f65f5f8ae2ed4c1ac`)。
222
- - 竞品版本:mem0 / Graphiti / GraphRAG 3.1.2 / Letta(`letta_client` 1.12.1)。
223
- - 评分器:本项目 `md_cg/eval_common.py`(六家同口径,未改动既有指标实现)。
1
+ # 六家记忆系统横评 · 100 题中英双查(bench6 v1.0)
2
+
3
+ > **题集(已公开)**:`data/benchmarks/bench6-100-zh-en/`(`manifest.json` / `pool.jsonl` / `questions.jsonl`,CC BY-NC 4.0)
4
+ > **六家结果(机器可读)**:`data/benchmarks/bench6-100-zh-en/results_v1.0.json`
5
+ > 评分器:`md_cg/eval_common.py`(`unlock_global_cap()` + `use_jaccard()`),六家**同一套** hit@1 / hit@5 / MRR。
6
+
7
+ ## 一句话结论
8
+
9
+ 在这份**零干扰、全为 gold 证据**的题池上:**中文查询**由灵枢词法(99.0%)与 Letta 归档直插(96.0%)领跑,**英文查询**则由 Letta 归档直插(73.0%)与纯向量 RAG(71.0%)领跑;灵枢四路融合在本池中**反而低于其单词法基线**(81.0% < 99.0%),条件桶/实体路在饱和池上稀释了词法命中。**Letta 的 agent 自主入库在本次口径下命中率为 0,根因不是检索失效,而是入库时把 `[turn_id]` 标记改写成自然语言、导致结果无法回溯**。
10
+
11
+ ---
12
+
13
+ ## 1 口径与复现
14
+
15
+ | 项 | 取值 |
16
+ |---|---|
17
+ | 题源 | `data/benchmarks/locomo-zh-500/questions500.jsonl`(500 题,公开)+ 上游 LoCoMo 英文原问句(`mteb/LoCoMo`,revision `02e2c3dea15d9fdfd1cd7a0f65f5f8ae2ed4c1ac`) |
18
+ | 语料 | `data/benchmarks/locomo-zh-500/corpus567.jsonl`(567 turn) |
19
+ | 抽样 | qtype 分层 · 最大余额法 · `seed=7007` · n=100;配额 `single_hop 43 / adversarial 23 / temporal 16 / multi_hop 14 / open_domain 4` → 实际一致 |
20
+ | 池 | 抽中 100 题的 gold 引用 turn 去重 = **137 条**;悬空引用 **0 条**(`dangling=[]`,已逐条记录规则) |
21
+ | 写入文本(六家逐字同源) | `[<turn_id>] <英文原始陈述> [<会话时间>]` |
22
+ | 中英双查 | 同 qid 两套词面:`question_zh`=中文关键词串、`question_en`=英文自然问句;`evidence_turns` 已断言逐字一致 |
23
+ | 评分 | `first_evidence_rank`(1-based,未命中 0)→ `hit@1 / hit@5 / MRR`;统一前置开关 `unlock_global_cap()`(解除 LIKE 预筛 500 条截断)+ `use_jaccard()`(长 turn 不挤掉证据) |
24
+
25
+ **验证(纪律 5,回放/断言全绿)**:题数=100、池=137、池内 id 唯一、每题中英问句均非空、中英 `evidence_turns` 逐字一致、竞品 `unmapped_rate=0`(除 Letta agent)、各臂 `errors=0`。
26
+
27
+ ---
28
+
29
+ ## 2 主表:六家 × 中英 × 三指标
30
+
31
+ | 系统 | zh hit@1 | zh hit@5 | zh MRR | en hit@1 | en hit@5 | en MRR | 未回收率(zh/en) |
32
+ |---|---|---|---|---|---|---|---|
33
+ | 灵枢·单词法 | **99.0%** | 100.0% | 0.9950 | 47.0% | 69.0% | 0.5637 | n/a |
34
+ | 灵枢·四路(真开bucket) | 81.0% | 100.0% | 0.8983 | 37.0% | 67.0% | 0.4893 | n/a |
35
+ | 灵枢·四路(名义) | 68.0% | 100.0% | 0.8093 | 29.0% | 61.0% | 0.4212 | n/a |
36
+ | 灵枢·词法+meta | **99.0%** | 100.0% | 0.9950 | 54.0% | 72.0% | 0.5993 | n/a |
37
+ | 灵枢·四路(无meta) | **99.0%** | 100.0% | 0.9950 | 47.0% | 69.0% | 0.5637 | n/a |
38
+ | 纯向量 RAG | 97.0% | 100.0% | 0.9817 | 71.0% | 91.0% | 0.7937 | n/a |
39
+ | mem0 | 89.0% | 95.0% | 0.9125 | 68.0% | 93.0% | 0.7850 | 0.0% / 0.0% |
40
+ | Graphiti | 58.0% | 63.0% | 0.6008 | 46.0% | 62.0% | 0.5303 | 0.0% / 0.0% |
41
+ | GraphRAG | 31.0% | 35.0% | 0.3223 | 18.0% | 25.0% | 0.2057 | 0.0% / 0.0% |
42
+ | Letta·归档直插 | 96.0% | 100.0% | 0.9767 | **73.0%** | 93.0% | 0.8063 | 0.0% / 0.0% |
43
+ | Letta·agent自主 | 0.0% | 0.0% | 0.0000 | 0.0% | 0.0% | 0.0000 | **100% / 100%** |
44
+
45
+ > 「灵枢」多行是**同一支系统在不同检索口径**下的对照,非多套系统;`灵枢·单词法 / 词法+meta / 四路(无meta)` 三者在中文侧同分(99.0%),差异只在英文侧(meta 使 en 47%→54%)。
46
+
47
+ ---
48
+
49
+ ## 3 分题型附表(中文查询 hit@1,括号为题数)
50
+
51
+ | 系统 | adversarial(23) | multi_hop(14) | open_domain(4) | single_hop(43) | temporal(16) |
52
+ |---|---|---|---|---|---|
53
+ | 灵枢·单词法 | 96% | 100% | 100% | 100% | 100% |
54
+ | 灵枢·四路(真开bucket) | 83% | 86% | 100% | 77% | 81% |
55
+ | 灵枢·四路(名义) | 70% | 79% | 75% | 65% | 62% |
56
+ | 灵枢·词法+meta | 96% | 100% | 100% | 100% | 100% |
57
+ | 灵枢·四路(无meta) | 96% | 100% | 100% | 100% | 100% |
58
+ | 纯向量 RAG | 100% | 100% | 100% | 95% | 94% |
59
+ | mem0 | 96% | 100% | 75% | 84% | 88% |
60
+ | Graphiti | 48% | 79% | 50% | 56% | 62% |
61
+ | GraphRAG | 52% | 29% | 25% | 26% | 19% |
62
+ | Letta·归档直插 | 100% | 93% | 100% | 95% | 94% |
63
+ | Letta·agent自主 | 0% | 0% | 0% | 0% | 0% |
64
+
65
+ **读法**:灵枢系在 `multi_hop / open_domain / single_hop / temporal` 四项均为 100%,其唯一短板是 `adversarial`(96%,低 4pp);纯向量 RAG 与 Letta 归档直插则在 `adversarial` 与 `multi_hop` 上互补(前者 adversarial 100/后者 multi_hop 93)。GraphRAG 全题型垫底,`temporal_reasoning` 仅 19%(时间类问题依赖实体图上的时间边,而本臂以 `local_search` 的 sources 行序为准,未见时间维排序)。
66
+
67
+ ---
68
+
69
+ ## 4 逐家入库形态与语言取证(本次最有价值的观测)
70
+
71
+ 各家写入后**回读一条真实存储内容**,作为中英双查差异的解释变量:
72
+
73
+ | 系统 | 存储形态(回读取证) | id 回收通道 | 取证 |
74
+ |---|---|---|---|
75
+ | 灵枢 | 中文四槽(身份/时间/摘要/条件)+ 英文原文,补 `tags`(裸词 identity+terms)与 `condition_space` | 图节点 id(进程内) | 库为自有 `MdCGOS`,`tags` 必须裸词(`ent:` 前缀在自然语言查询下永不命中) |
76
+ | mem0 | 保留 `[turn_id] 英文原文`,另存 `metadata.turn_id` | `item["metadata"]["turn_id"]`(精确) | zh/en `unmapped=0` |
77
+ | Graphiti | 一 turn 一 episode,抽取为实体/关系边 | `edge.episodes → EpisodicNode.name`(精确) | 137 episode 全部可回溯 |
78
+ | GraphRAG | 文档级一次性索引,137 个 `text_unit`(原文切片) | `context_data["sources"].text` 正则(行序) | `index_rc=0`、`n_text_units=137`;**英文侧 7 题空 sources** |
79
+ | Letta·归档直插 | `passages.create` 直插,**逐字保留** `[scene_0_session_11_turn_14] Caroline: …` | `passages.search().results[].content` 正则 | `search_field_path=['results']`;zh 96% / en 73% |
80
+ | Letta·agent自主 | `messages.create`,agent 把内容**改写成自然语言摘要**(如 "Caroline is going through a transition…"),**不含 `[turn_id]` 标记** | 同上,但标记已丢 → 无可回收 | `search_field_path=['<empty>']`、`n_empty=100/100` |
81
+
82
+ **结论**:Letta agent 模式的 0 分**不是检索能力问题**——`errors=0`、检索调用正常,而是**入库形态丢失了来源标记**,使任何以 id 回溯的评测口径都无法命中。评测「自主记忆」必须把「标记可追溯性」单列,否则会把可追溯性差异误读成检索能力差异。
83
+
84
+ ---
85
+
86
+ ## 5 条件路由净效应(灵枢内部对照,中文查询)
87
+
88
+ | 口径 | zh hit@1 | 相对单词法 |
89
+ |---|---|---|
90
+ | 单词法 | 99.0% | — |
91
+ | 四路·真开 bucket(`context` 非空) | 81.0% | **−18.0pp** |
92
+ | 四路·名义(`context=None`,bucket 路空转) | 68.0% | −31.0pp |
93
+
94
+ **净效应为负**:真开 bucket 比名义口径**高 13.0pp**(说明条件桶路本身确实在工作、不是空转),但在本池中两者都低于单词法。归因见 §7 判定单 1——**零干扰池 + 短证据句**使词法已近饱和(99%),RRF 融合引入的并列项会挤占 Top-1。该结论**仅在本条件空间成立**,不可外推为「四路无用」。
95
+
96
+ ---
97
+
98
+ ## 6 跨语言对照(中 → 英 的落差)
99
+
100
+ | 系统 | 入库语言 | zh→en hit@1 变化 |
101
+ |---|---|---|
102
+ | 灵枢·单词法 | 中文层为主 + 英文原文 | 99.0% → 47.0%(−52.0pp) |
103
+ | 纯向量 RAG | 英文原文直嵌入 | 97.0% → 71.0%(−26.0pp) |
104
+ | mem0 | 英文原文 | 89.0% → 68.0%(−21.0pp) |
105
+ | Letta·归档直插 | 英文原文 | 96.0% → 73.0%(−23.0pp) |
106
+ | Graphiti | 英文原文 | 58.0% → 46.0%(−12.0pp) |
107
+ | GraphRAG | 英文原文 | 31.0% → 18.0%(−13.0pp) |
108
+
109
+ **读法**:入库语料与查询语料的**同源程度**决定跨语言落差。入库含中文层者(灵枢)中文查询登顶、英文查询垫底;入库为英文原文者(向量 RAG / mem0 / Letta)英文查询显著更稳。**没有一家在两种查询语言上同时最优**——这正是「中英双查」矩阵要暴露的事实。
110
+
111
+ **横向结论(不可忽略的第二层读法)**:把主表 11 臂逐行对比——**除全零壳臂 `letta_agent` 外,全部 10 臂的中文查询 hit@1 均高于英文查询,提升 +12 ~ +52pp**(灵枢·单词法 +52pp、词法+meta +45pp、纯向量 RAG +26pp、Letta·直插 +23pp、mem0 +21pp、GraphRAG +13pp、Graphiti +12pp)。也就是说,「英文查询更稳」只指**相对自身**的落差保持率(英文库 → 英文查询衰减更小);**绝对命中上,没有任何一家在英文词面下超过自己的中文词面**——查询词面敏感性(+12~+52pp)大于多数家间绝对差距。该结论可由公开脚本一键复现:
112
+
113
+ ```bash
114
+ python data/benchmarks/bench6-100-zh-en/run_bench.py
115
+ ```
116
+
117
+ 脚本自带口径自证(用 `results_v1.0.json` 存档逐题 ranks 重算 summary 逐位比对)与 Adapter 接入协议(第三方记忆系统实现 `ingest`/`search` 即可同口径入评)。归因边界照旧:`question_zh` 为关键词串(保留英文专名/日期词)、`question_en` 为自然问句,中文提升混合语言与查询形态双因素;内置词面基线在纯英文库上呈反向 en>zh(`--demo`),恰证「查询语言优势取决于系统如何处理语料」。
118
+
119
+ ---
120
+
121
+ ## 7 偏差归因(设计者视角判定单)
122
+
123
+ ### 判定单 1 · 灵枢四路真开 bucket 反低于单词法
124
+
125
+ ```
126
+ 条件空间:观测位置=全局观测层(评测编排)|观测工具=eval_common 证据命中(unlock_global_cap+use_jaccard)|时间窗口=bench6 单次全量(seed=7007)|存在约束=池内每题 gold 仅 1–2 条、证据为高度可分词短句
127
+ 白箱三问:依据=同池同题同口径下 四路 81% < 单词法 99%(且名义 68% < 真开 81%)|条件=仅当「池内零干扰 + 证据短句高度可分词」时成立(词法已饱和,条件桶/实体路引入的并列项挤占 Top-1)|错后=若池含干扰或证据变长,四路应回优
128
+ 裁决:REJECT(「四路必然优于单词法」为假)
129
+ 依据:同池下 hit@1 单调 单词法 99% > 真开 81% > 名义 68%;真开比名义高 13pp 证明 bucket 路在工作,非空转
130
+ 缺失维度:条件边界(池干扰度)
131
+ 验证路径:在 567 全池(含干扰)上复跑两口径,若四路反超则归因成立
132
+ 关注信号:条件路由的价值应在「语义/条件类查询 + 有干扰池」中体现
133
+ ```
134
+
135
+ ### 判定单 2 · Letta agent 自主入库 0%
136
+
137
+ ```
138
+ 条件空间:观测位置=全局(入库形态取证)|观测工具=passages.list 回读 + search field path 取证|时间窗口=全量 137 写入后|存在约束=agent 写入经 LLM 改写、core block 存自然语言摘要
139
+ 白箱三问:依据=ingest_probe 内容为 "Caroline is going through a transition…",不含 [scene_*_turn_*] 标记|条件=凡入库经 LLM 重写且不保留原始标记者,id 口径必无法回溯|错后=该结论支持「自主入库丢失可追溯性」,写入 negative
140
+ 裁决:REJECT(不是检索失败,而是入库形态丢失标记导致不可回收)
141
+ 依据:errors=0、检索调用正常、field=['<empty>']、n_empty=100/100;对照 archival 直插(保留标记)96%/73% 正常 → 差异锁定在入库语义
142
+ 缺失维度:存在约束(stored-form 是否保留 source id)
143
+ 验证路径:对比 archival 直插(保留标记)96%/73% 正常 → 差异锁定在入库语义,不在检索
144
+ 关注信号:评测「结构化/自主记忆」须区分「标记可追溯性」
145
+ ```
146
+
147
+ ### 判定单 3 · 灵枢词法 0.99 ≠ 公开参考 0.936
148
+
149
+ ```
150
+ 条件空间:观测位置=全局|观测工具=同一 eval_common 词法|时间窗口=不同池规模两次评测|存在约束=bench6 池=137(仅抽中题 gold,零干扰),公开池=567(全语料含干扰)
151
+ 白箱三问:依据=manifest pool.n=137 vs 公开 n_pool=567;同算法随池缩小命中单调上升|条件=池内零干扰时指标为上界|错后=如池扩回 567 应回落至 ≈0.936 附近
152
+ 裁决:DEFER(非矛盾,是「不同条件空间不可直接等同」)
153
+ 依据:算法(first_evidence_rank + 同口径)未变,唯一改变的条件是池规模
154
+ 缺失维度:条件边界(池干扰度/池规模)
155
+ 验证路径:以 bench6 池跑公开配置、或以 567 池跑 bench6 配置做交叉验证
156
+ ```
157
+
158
+ ### 判定单 4 · 灵枢英文查询远低于中文
159
+
160
+ ```
161
+ 条件空间:观测位置=全局|观测工具=hit@1|时间窗口=同库双查|存在约束=灵枢库存中文层+英文原文,查询为中文关键词串 vs 英文自然问句
162
+ 白箱三问:依据=灵枢 zh 99% / en 47%;纯向量 RAG zh 97% / en 71%|条件=词法路命中依赖查询词面与入库词面同语言|错后=若英文查询也能命中中文层(双语词项映射),en 应上升
163
+ 裁决:ACCEPT(条件证据充分:入库语料与查询语料同源程度差异)
164
+ 依据:跨语言矩阵——凡入库英文原文者英文查询均不低于灵枢;中文查询则灵枢居首
165
+ 缺失维度:无
166
+ 验证路径:给灵枢补「英文查询→中文层」跨语言词项映射后再测
167
+ ```
168
+
169
+ ---
170
+
171
+ ## 8 观测:写入 / 查询成本(137 条池)
172
+
173
+ | 系统 | 写入耗时 | 中文查询 100 题 | 英文查询 100 题 |
174
+ |---|---|---|---|
175
+ | mem0 | 177.7s | 6.4s | 6.7s |
176
+ | Graphiti | 416.4s | 6.8s | 7.3s |
177
+ | GraphRAG | 建索引 616s(一次性) | 346.2s | 182.1s |
178
+ | Letta·归档直插 | 59.0s | 38.0s | 38.3s |
179
+ | Letta·agent自主 | 418.7s | 58.3s | 58.8s |
180
+ | 灵枢(**rust 引擎**)·单词法 | 进程内,未单列¹ | **0.008s** | **0.019s** |
181
+ | 灵枢(**rust 引擎**)·四路 | 同上¹ | 0.012s | 0.023s |
182
+ | 灵枢(**rust 引擎**)·词法+meta | 同上¹ | 0.009s | 0.021s |
183
+ | 纯向量 RAG | 进程内,未单列 | — | — |
184
+
185
+ > ¹ 灵枢写入走 python 进程内(`mdcg-eval` 为**只读检索核心**,无写入路径),未单列计时。
186
+ > **rust 三行为 rust 检索核心实测**(非 python):`mdcg-eval --serve` 引擎,预热 10 请求后逐请求 `perf_counter` 计时,口径 = 客户端端到端 JSON 行 IPC 调用 100 题的总墙钟时间(单题均值 0.07–0.24 ms,p95 ≤ 0.34 ms;复跑波动 <15%)。计时同批 hits 复算 hit@1/hit@5/MRR 与 py 基线逐项一致——测的即主表对齐口径。脚本与数据:`docs/experiments/bench6-rust-rerun/bench_latency.py` / `rust_latency.json`。竞品行含各自 SDK/HTTP 客户端开销,同为端到端口径,量级差距(10²–10⁴ 倍)远超客户端差异。
187
+
188
+ ---
189
+
190
+ ## 9 诚实边界(报告须原样引用)
191
+
192
+ 1. **池全为 gold 证据 → 池内零干扰,指标是上界**,不是端到端记忆能力;真实场景存在大量干扰 turn,各家差距可能与本表不同。
193
+ 2. **`question_zh` 是中文关键词串而非自然语言问句 → 评检索命中,非 QA**;无答案文本,无法评答案质量。
194
+ 3. **n=100 时题级命中率 CV≈8.3%**(n=500 时 3.7%,容量减半按 √5 放大)→ **家间差距小于约 16% 不可下结论**。据此,主表中「灵枢词法 99% vs 纯向量 97%」等差距**不可判为显著**;而「99% vs 0%(Letta agent)」「99% vs 31%(GraphRAG)」等大落差可下结论。
195
+ 4. 竞品行序为各家**自身返回顺序**(mem0/Graphiti 按相似度或图序,GraphRAG 为 sources 行序),非统一重排——差异部分来自各家排序口径本身。
196
+ 5. Letta 分「归档直插 / agent 自主」两模式分别报告;**不得**以 archival 的分数代表 Letta 整体,也不得以 agent 的 0 分否定 Letta 检索能力。
197
+
198
+ ---
199
+
200
+ ## 10 复现命令
201
+
202
+ ```bash
203
+ # 1) 固化口径层(首次;幂等)——题集已在 data/benchmarks/bench6-100-zh-en/
204
+ python -m md_cg.bench6_common --force
205
+
206
+ # 2) 主进程臂(灵枢 5 口径 + 纯向量 RAG)
207
+ python -m md_cg.bench6_arms
208
+
209
+ # 3) 六家统一评分(主表 + 分题型 + 落盘)
210
+ python -m md_cg.bench6_competitors --k 5
211
+ ```
212
+
213
+ **外部依赖(仅竞品臂需要)**:四家 LLM 竞品(mem0 / Graphiti / GraphRAG / Letta)的适配脚本运行在评测工作区,各以独立虚拟环境隔离,分别需要自身的图数据库服务、本地嵌入服务、记忆服务与 LLM API(其为各家服务的本地对接代码,涉各家凭据)。**公开评测入口不依赖任何竞品栈**——`data/benchmarks/bench6-100-zh-en/run_bench.py`(零依赖)提供口径层复现(默认运行即做口径自证)与 Adapter 协议(实现 `ingest` / `search` 两个方法即可接入任意系统跑同一题集),**接入任意 LLM 与向量方法进行测试都可复现**。本仓库公开的是**口径层 + 题集 + 评测入口 + 六家结果**,竞品数字可由 `data/benchmarks/bench6-100-zh-en/results_v1.0.json` 逐题核对。全流程按 AGENTS 第 15 条走 argv 列表 + `PYTHONUTF8=1`。
214
+
215
+ ---
216
+
217
+ ## 11 数据来源与署名
218
+
219
+ - 中文派生题库/语料:`locomo-zh-500`(本项目派生并公开,源自 LoCoMo,**CC BY-NC 4.0**)。
220
+ - 本报告题集:`data/benchmarks/bench6-100-zh-en/`(100 题 / 137 池,**CC BY-NC 4.0**,沿用上游许可)。
221
+ - 英文原始问句/陈述:上游 LoCoMo(经 `mteb/LoCoMo` 获取,revision `02e2c3dea15d9fdfd1cd7a0f65f5f8ae2ed4c1ac`)。
222
+ - 竞品版本:mem0 / Graphiti / GraphRAG 3.1.2 / Letta(`letta_client` 1.12.1)。
223
+ - 评分器:本项目 `md_cg/eval_common.py`(六家同口径,未改动既有指标实现)。
@@ -0,0 +1,100 @@
1
+ # 端到端 LoCoMo QA 同口径对照评测 v1.0(中文完整对话 · 自然问句)
2
+
3
+ > **日期**:2026-09-23 · **基线**:`main@d034c6e`
4
+ > **设定**(与 Mem0/Letta 论文对齐):**完整对话做记忆、自然问句做查询、LLM reader + LLM judge**。
5
+ > 记忆面 = LoCoMo 全量 5882 turn 完整对话(mteb/LoCoMo BEIR corpus)本地 Qwen3.8-27B 译为中文
6
+ > (人名/专名保留),逐 turn 原文写入灵枢(无摘要加工——写入侧加工正是被测对象本身)。
7
+ > 查询面 = 上游英文自然问句 LLM 译为中文;gold 答案 = 上游原始标注(1976/1976 逐题精确匹配)。
8
+ > **一句话结论**:同口径下灵枢检索注入 QA **17.2%** / full-context **16.4%**;检索面四组对照定因——
9
+ > **自然问句 × 对话原文的诚实下界 hit@10=40.2%**,题面派生偏置的「关键词串」口径 92.0% 不可外推;
10
+ > 改写/归一/形态调整均被实证排除(≤+3pp);**剩余词汇差的解法已拍板:认知图桥接(§5)**。
11
+
12
+ ---
13
+
14
+ ## 1 · 端到端 QA(500 题全量,reader/judge = deepseek-chat,temperature=0)
15
+
16
+ | 臂 | 注入 | QA准确率 | 拒答 | single_hop | temporal | adversarial |
17
+ |---|---|---|---|---|---|---|
18
+ | retrieval | 灵枢检索 top-10(`cg.search` 阶梯路) | **17.2%** | 299/500 | 27.2% | 2.5% | 9.7%(正确拒答口径见下) |
19
+ | full_context | 整段对话全量(17-36k 字/scene) | 16.4% | 337/500 | 25.4% | 2.5% | 10.6% |
20
+
21
+ - **retrieval 反超 full_context(+0.8pp)**:检索把 gold 拉到输入前部,避开长上下文中部衰减——
22
+ 机制见 §3 lost-in-the-middle 实证。
23
+ - 拒答 60-67% 是**合理行为**而非故障:§2 证明六成题 gold 根本不在检索候选里,
24
+ reader「无法确定」是证据不足的诚实输出(READER_SYS 明文要求)。
25
+ - 分题型逐项见 `results/locomo_qa_20260923_232140.json`(判分失败 0 行)。
26
+
27
+ ## 2 · 检索面四组对照(同一 5882 turn 中文对话库)
28
+
29
+ | 口径 | hit@1 | hit@5 | hit@10 | MRR |
30
+ |---|---|---|---|---|
31
+ | **A 自然问句**(真实用户形态) | 20.6% | 34.4% | **40.2%** | 0.264 |
32
+ | B 仓内关键词串题面 | 74.6% | 88.6% | 92.0% | 0.807 |
33
+ | C 自然问句 · 归一开 | 20.6% | 33.2% | 39.0% | 0.259 |
34
+ | D LLM 问句→关键词改写 | 23.8% | 36.6% | 43.2% | 0.291 |
35
+
36
+ **机制定论**:
37
+
38
+ 1. **B 含题面派生偏置**:zh-500 关键词题面从 gold turn 提炼、天然携带答案侧词汇
39
+ (问句「慈善赛跑提高什么关注?」的题面是「慈善跑 心理健康 发声…」——「心理健康」
40
+ 是答案词)。92.0% 是偏置上界,真实查询不可得;主链路 94.6% 同属
41
+ 「写入侧五槽加工 + 派生题面」双偏置叠加口径。
42
+ 2. **A 40.2% 是诚实下界**:问句词面 ≠ 答案词面的鸿沟在中文同样存在(比英文缓和但非零);
43
+ 同义扩展(fuzzy 路在场)未解。
44
+ 3. **D 证明改写救不回**(+3.0pp):改写只能抽问句已有词汇,答案侧词汇问句里没有——
45
+ 瓶颈是**词汇差**不是**形态差**。C 证明归一在此形态无差(对话原文库无 CCG 拆散面)。
46
+
47
+ ## 3 · lost-in-the-middle 实证(QA 低分的第二因素)
48
+
49
+ 同一 scene 对话文本集合(25.4k 字,逐行同内容、仅拼装顺序不同):
50
+
51
+ - 拼装使 gold turn 位于输入**前部**:同输入 3/3 稳定答对(q_131 → Ed Sheeran);
52
+ - 拼装使 gold turn 位于**中部**(parquet 时间序):5/5 稳定拒答。
53
+
54
+ deepseek-chat 对平铺长上下文中部的信息检索衰减是 QA 16-17% 的第二因素——
55
+ retrieval 臂小胜 full_context 臂正源于此。
56
+
57
+ ## 4 · 同行标尺与可比性声明
58
+
59
+ Mem0 论文(arXiv:2504.19413 Table 2,agent=GPT-4o-mini):Full-context 72.90 / Mem0ᵍ 68.44 /
60
+ Mem0 66.88 / Zep 65.99 / LangMem 58.10 / OpenAI memory 52.90 / A-Mem 48.38;
61
+ Letta Filesystem 复测 74.0(letta.com 2025-08);Zep 争议复评(blog.getzep.com 2025-05)。
62
+
63
+ **本评测 17.2% 与上表不可直接比**,三因素:①模型档(deepseek-chat vs GPT-4o-mini,
64
+ reader 与 judge 均弱一档);②注入形态(单块平铺文本 vs 结构化 messages/卡);③拒答口径
65
+ (本评测 READER_SYS 要求证据不足即拒答、judge 对模糊答案从严——同行 judge 普遍宽松)。
66
+ **方向意义**:在「拒答诚实口径」下,无语义检索的记忆系统面对自然问句普遍承压——
67
+ 这不是灵枢独有,而是词法记忆路线的共同边界(§2 四组对照即是证明)。
68
+
69
+ ## 5 · 方向拍板:认知图桥接(不上向量)
70
+
71
+ 使用者定案(2026-09-23):「这部分差距,后续我们用认知图解决——**把问题和对应概念放入
72
+ 认知图,附上因果条件,自然就能通过条件检索**。」
73
+
74
+ 设计意图(待专项实施):用户提问沉淀为**问题节点**,与其命中答案的**概念节点**(答案侧
75
+ 词汇/实体)建立**概念边**并附因果/生效条件;后续同类问法经 `cg(op=route)` 条件路由命中
76
+ 概念节点 → 经边取到答案侧词汇 → 词法检索闭合词汇差。与既有机制的同构关系:
77
+ 「语义联系是候选生成器,条件授予资格」(test_sem_noise 定稿)、渐进式检索的区分性条件
78
+ 收紧(bench_progressive)——query 侧概念桥接从「翻译/向量」换成「图上沉淀的条件边」,
79
+ 保持零向量依赖与全程可审计。
80
+
81
+ **验收口径**:A 口径(自然问句)hit@10 从 40.2% 提升至 B 口径水平(92%±)即路线成立;
82
+ 概念边沉淀质量(错边率)另设负例组守卫(防「错误答案长得像正确答案」的边污染)。
83
+
84
+ ## 6 · 复现
85
+
86
+ ```bash
87
+ # 前置:DEEPSEEK_API_KEY;翻译走 LM Studio 本地(--lm-studio)或 deepseek(默认)
88
+ python -X utf8 -m md_cg.bench_e2e_locomo_qa --translate --lm-studio # 语料/问句中文化(分片断点续传)
89
+ python -X utf8 -m md_cg.bench_e2e_locomo_qa # QA 500题×双臂
90
+ # 检索四组对照:§2 数字由 dialog_zh 池 + zh_queries/questions500 双查询面直算(本报告数据根)
91
+ ```
92
+
93
+ 产物:`D:\program\test\e2e_judge\results\locomo_qa_*.json`(QA 逐题)、
94
+ `upstream/zh_turns.json`(5882 turn 中文)、`upstream/zh_queries.json`(500 问句中文)、
95
+ `upstream/answers_map.json`(上游 gold,1976/1976)。评测器:`md_cg/bench_e2e_locomo_qa.py`。
96
+
97
+ ---
98
+
99
+ *关联:干扰池三臂评测见[端到端干扰池评测 v1.1](端到端干扰池评测_确定性裁决vsLLM_judge_v1.1.md)
100
+ (同日,摘要卡+关键词串口径 43.3%/40.0%——两份报告共同构成「检索形态 × 查询形态」双轴全景)。*