@furongjun1999/dsh-memory 0.4.11 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (504) hide show
  1. package/README.md +16 -16
  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 +142 -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//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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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 -503
  24. 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
  25. 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
  26. 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
  27. 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
  28. package/docs/mdcg/README/350/257/246/347/273/206/347/211/210_v0.4.10.md +646 -646
  29. package/docs/mdcg/lingshu_tutorial.html +14449 -14449
  30. package/docs/mdcg/release_v0.4.11.md +49 -0
  31. package/docs/mdcg/release_v0.4.5.md +55 -55
  32. package/docs/mdcg/tool_table_v0.3.0.md +117 -117
  33. 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
  34. 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
  35. 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
  36. package/docs/mdcg//345/217/221/345/270/203/351/227/250/347/246/201/351/223/276_v0.1.md +54 -0
  37. 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
  38. 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
  39. 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
  40. package/docs/mdcg//347/274/272/345/217/243/345/215/225_P0/346/224/266/345/217/243_v0.1.md +270 -270
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. package/docs/swarm//350/234/202/347/276/244/344/272/222/350/201/224_v0.1.md +704 -704
  47. 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
  48. 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
  49. 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
  50. package/docs/theory//346/231/272/350/203/275/350/256/2723.4.md +5260 -5260
  51. 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
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. package/dsh/README.md +82 -82
  59. package/dsh/cordis.yml.example +139 -139
  60. package/dsh/update-lingshu.bat +11 -11
  61. package/lib/hooks.js +36 -2
  62. package/lib/lib/roleplay_web.js +427 -427
  63. package/md_cg/__init__.py +7 -7
  64. package/md_cg/audit.py +368 -368
  65. package/md_cg/autonomy.py +287 -287
  66. package/md_cg/backfill.py +1327 -1327
  67. package/md_cg/backfill_bigdomain.py +34 -34
  68. package/md_cg/bench6_arms.py +410 -410
  69. package/md_cg/bench6_common.py +230 -230
  70. package/md_cg/bench6_competitors.py +212 -212
  71. package/md_cg/bench_axis_domain.py +257 -257
  72. package/md_cg/bench_blind_comp.py +308 -308
  73. package/md_cg/bench_en_atoms_public.py +230 -230
  74. package/md_cg/bench_governance.py +348 -348
  75. package/md_cg/bench_lme_zh.py +410 -410
  76. package/md_cg/bench_locomo.py +121 -121
  77. package/md_cg/bench_locomo_zh.py +450 -450
  78. package/md_cg/bench_locomo_zh_public.py +147 -147
  79. package/md_cg/bench_longmem.py +112 -112
  80. package/md_cg/bench_membench.py +632 -632
  81. package/md_cg/bench_p0.py +149 -149
  82. package/md_cg/bench_progressive.py +287 -287
  83. package/md_cg/bench_role_views.py +238 -238
  84. package/md_cg/bench_task_ab.py +243 -243
  85. package/md_cg/bench_task_ab_llm.py +408 -408
  86. package/md_cg/bench_unified_en.py +204 -204
  87. package/md_cg/bench_zh_mad.py +601 -601
  88. package/md_cg/blindspot_tickets.py +123 -123
  89. package/md_cg/branches.py +285 -285
  90. package/md_cg/build_postings.py +73 -73
  91. package/md_cg/ccgc.py +1005 -948
  92. package/md_cg/census.py +132 -132
  93. package/md_cg/chain.py +300 -300
  94. package/md_cg/codeindex.py +531 -531
  95. package/md_cg/coldverify.py +292 -292
  96. package/md_cg/comment_gate.py +337 -337
  97. package/md_cg/cond_compose.py +190 -190
  98. package/md_cg/cond_facts.py +154 -154
  99. package/md_cg/cond_template.json +106 -106
  100. package/md_cg/condition_anchor.py +142 -142
  101. package/md_cg/conformance.py +726 -726
  102. package/md_cg/consistency.py +717 -717
  103. package/md_cg/consolidate.py +1536 -1439
  104. package/md_cg/corpus.py +110 -110
  105. package/md_cg/crosscheck.py +1097 -1097
  106. package/md_cg/crypto.py +437 -437
  107. package/md_cg/d_meta.py +310 -310
  108. package/md_cg/datapath.py +334 -334
  109. package/md_cg/docindex.py +473 -473
  110. package/md_cg/eval_common.py +575 -575
  111. package/md_cg/evidence.py +580 -580
  112. package/md_cg/evolution.py +477 -477
  113. package/md_cg/export.py +220 -220
  114. package/md_cg/forgetting.py +581 -581
  115. package/md_cg/fsutil.py +329 -329
  116. package/md_cg/hotcache.py +238 -214
  117. package/md_cg/hyperedge.py +251 -251
  118. package/md_cg/identity.py +390 -390
  119. package/md_cg/insight.py +500 -500
  120. package/md_cg/interop.py +199 -0
  121. package/md_cg/lexicon/build_cedict_en_zh.py +329 -329
  122. package/md_cg/lexicon/build_standard_en.py +171 -171
  123. package/md_cg/lexicon/expand_en_zh.py +211 -211
  124. package/md_cg/lifecycle.py +272 -272
  125. package/md_cg/linkref.py +280 -280
  126. package/md_cg/links.py +622 -622
  127. package/md_cg/mcp_server.py +129 -32
  128. package/md_cg/md_whitebox.py +345 -345
  129. package/md_cg/mdcg.py +176 -117
  130. package/md_cg/mdcos.py +79 -13
  131. package/md_cg/metacognition.py +591 -591
  132. package/md_cg/migrate.py +119 -119
  133. package/md_cg/migrate_aeis.py +221 -221
  134. package/md_cg/migrate_roleplay.py +293 -293
  135. package/md_cg/migrate_wisdom_graph.py +360 -360
  136. package/md_cg/mreview/__init__.py +25 -25
  137. package/md_cg/mreview/__main__.py +110 -110
  138. package/md_cg/mreview/bundle.py +178 -178
  139. package/md_cg/mreview/candidates.py +262 -262
  140. package/md_cg/mreview/govern.py +693 -693
  141. package/md_cg/mreview/locate.py +939 -939
  142. package/md_cg/mreview/pipeline.py +728 -728
  143. package/md_cg/mreview/rules/duplication.json +21 -21
  144. package/md_cg/mreview/rules/field_coverage.json +54 -54
  145. package/md_cg/mreview/rules/source_license.json +21 -21
  146. package/md_cg/mreview/rules/template_flow.json +21 -21
  147. package/md_cg/mreview/ruleset.py +252 -252
  148. package/md_cg/nodefile.py +575 -575
  149. package/md_cg/pooling.py +484 -472
  150. package/md_cg/postings.py +298 -298
  151. package/md_cg/predict.py +1100 -1100
  152. package/md_cg/progressive.py +123 -123
  153. package/md_cg/protect.py +272 -272
  154. package/md_cg/protocol/md_cg_gate.proto +33 -33
  155. package/md_cg/protocol.py +372 -372
  156. package/md_cg/provenance.py +582 -582
  157. package/md_cg/reach.py +453 -453
  158. package/md_cg/readcache.py +85 -0
  159. package/md_cg/refindex.py +833 -833
  160. package/md_cg/refine.py +604 -604
  161. package/md_cg/roleviews.py +89 -89
  162. package/md_cg/routing.py +365 -365
  163. package/md_cg/scrub.py +852 -852
  164. package/md_cg/security.py +274 -274
  165. package/md_cg/self_state.py +1029 -1029
  166. package/md_cg/selfreport.py +151 -151
  167. package/md_cg/semantic/__init__.py +10 -10
  168. package/md_cg/semantic/canonical.py +122 -122
  169. package/md_cg/semantic/en_normalizer.py +364 -364
  170. package/md_cg/semantic/en_zh_map.json +28694 -0
  171. package/md_cg/semantic/export_en_zh_map.py +64 -0
  172. package/md_cg/semantic/unify.py +45 -0
  173. package/md_cg/semantic/zh_en_atoms.py +139 -139
  174. package/md_cg/signer.py +562 -562
  175. package/md_cg/sources.py +815 -582
  176. package/md_cg/statushdr.py +179 -179
  177. package/md_cg/stg.py +48 -37
  178. package/md_cg/subgraph.py +729 -729
  179. package/md_cg/sustain.py +1138 -1138
  180. package/md_cg/tasks.py +470 -470
  181. package/md_cg/test_action_derive.py +203 -203
  182. package/md_cg/test_audit_rotate.py +270 -270
  183. package/md_cg/test_autonomy.py +143 -143
  184. package/md_cg/test_bench_governance.py +102 -102
  185. package/md_cg/test_blindspot_tickets.py +166 -166
  186. package/md_cg/test_branches.py +249 -249
  187. package/md_cg/test_ccg_perturb.py +184 -184
  188. package/md_cg/test_ccgc.py +433 -433
  189. package/md_cg/test_census_prune.py +81 -81
  190. package/md_cg/test_cond_compose_anchors.py +76 -76
  191. package/md_cg/test_cond_match.py +165 -165
  192. package/md_cg/test_condition_anchor.py +81 -81
  193. package/md_cg/test_d_meta.py +412 -412
  194. package/md_cg/test_datapath_root.py +199 -199
  195. package/md_cg/test_en_pipeline.py +166 -166
  196. package/md_cg/test_gain_gate.py +212 -212
  197. package/md_cg/test_health_scale.py +173 -173
  198. package/md_cg/test_hive_ingest.py +285 -0
  199. package/md_cg/test_hot_cold.py +215 -215
  200. package/md_cg/test_hyperedge.py +245 -245
  201. package/md_cg/test_i26_empty_first_write.py +116 -0
  202. package/md_cg/test_i27_e041_identity.py +128 -0
  203. package/md_cg/test_i28_hotcache_prodpath.py +122 -0
  204. package/md_cg/test_identity_attribution.py +147 -147
  205. package/md_cg/test_index_durability.py +224 -224
  206. package/md_cg/test_interop.py +93 -0
  207. package/md_cg/test_lifecycle.py +309 -309
  208. package/md_cg/test_linkref.py +306 -306
  209. package/md_cg/test_lock.py +43 -43
  210. package/md_cg/test_md_access_parity.py +255 -255
  211. package/md_cg/test_md_writepath.py +345 -345
  212. package/md_cg/test_mdstore_search_parity.py +160 -0
  213. package/md_cg/test_mr_m2.py +587 -587
  214. package/md_cg/test_mr_m3.py +710 -710
  215. package/md_cg/test_mr_m4.py +485 -485
  216. package/md_cg/test_p0.py +250 -250
  217. package/md_cg/test_p1.py +316 -316
  218. package/md_cg/test_p10_identity.py +173 -173
  219. package/md_cg/test_p11_consistency.py +233 -233
  220. package/md_cg/test_p12_metacognition.py +212 -212
  221. package/md_cg/test_p13_encryption.py +241 -241
  222. package/md_cg/test_p14_sustain.py +249 -249
  223. package/md_cg/test_p15_scrub.py +280 -280
  224. package/md_cg/test_p16_self_state.py +301 -301
  225. package/md_cg/test_p17_predict.py +354 -354
  226. package/md_cg/test_p18_whitebox.py +171 -171
  227. package/md_cg/test_p19_migrate_roleplay.py +149 -149
  228. package/md_cg/test_p20_evolution.py +315 -315
  229. package/md_cg/test_p21_tokens.py +293 -270
  230. package/md_cg/test_p22_theory.py +175 -175
  231. package/md_cg/test_p23_links.py +311 -311
  232. package/md_cg/test_p24_evidence.py +227 -227
  233. package/md_cg/test_p25_weights.py +156 -156
  234. package/md_cg/test_p26_refindex.py +416 -416
  235. package/md_cg/test_p27_docindex.py +765 -765
  236. package/md_cg/test_p28_refcheck.py +305 -305
  237. package/md_cg/test_p29_session_ingest_export.py +354 -333
  238. package/md_cg/test_p3.py +11 -2
  239. package/md_cg/test_p30_maintain.py +330 -330
  240. package/md_cg/test_p31_insight.py +534 -534
  241. package/md_cg/test_p32_backfill.py +298 -298
  242. package/md_cg/test_p33_ccg_wiring.py +293 -293
  243. package/md_cg/test_p34_crosscheck.py +331 -331
  244. package/md_cg/test_p35_conditioned_claim.py +252 -252
  245. package/md_cg/test_p36_kp_align.py +230 -230
  246. package/md_cg/test_p37_condition_space.py +248 -248
  247. package/md_cg/test_p38_concurrent_flush.py +102 -0
  248. package/md_cg/test_p38_contextualize.py +273 -273
  249. package/md_cg/test_p39_verify_flow.py +113 -0
  250. package/md_cg/test_p39_vision_evidence.py +369 -369
  251. package/md_cg/test_p40_refine_worklist.py +241 -241
  252. package/md_cg/test_p41_evolve_patrol.py +224 -224
  253. package/md_cg/test_p42_provenance.py +269 -269
  254. package/md_cg/test_p43_pooling.py +412 -398
  255. package/md_cg/test_p44_md_whitebox.py +231 -231
  256. package/md_cg/test_p45_session_identity.py +219 -219
  257. package/md_cg/test_p46_unit_scope.py +272 -272
  258. package/md_cg/test_p47_session_view.py +281 -0
  259. package/md_cg/test_p4_fuzzy.py +223 -223
  260. package/md_cg/test_p5_semantic.py +226 -226
  261. package/md_cg/test_p6_consolidate.py +440 -387
  262. package/md_cg/test_p7_goals_recent.py +202 -202
  263. package/md_cg/test_p8_subgraph_chain.py +200 -200
  264. package/md_cg/test_p9_forget_protect.py +231 -231
  265. package/md_cg/test_predict_beta.py +135 -135
  266. package/md_cg/test_preflight_failclosed.py +100 -100
  267. package/md_cg/test_progressive.py +146 -146
  268. package/md_cg/test_protocol.py +243 -243
  269. package/md_cg/test_reach.py +378 -378
  270. package/md_cg/test_reach_keys.py +201 -201
  271. package/md_cg/test_read_clip.py +141 -141
  272. package/md_cg/test_readcache_prodpath.py +155 -0
  273. package/md_cg/test_retr_gates_prodpath.py +140 -0
  274. package/md_cg/test_retr_s1.py +340 -340
  275. package/md_cg/test_retr_s1b.py +209 -209
  276. package/md_cg/test_retr_s3.py +194 -194
  277. package/md_cg/test_retr_s4.py +163 -163
  278. package/md_cg/test_retr_s5.py +200 -200
  279. package/md_cg/test_retr_s6.py +157 -157
  280. package/md_cg/test_retr_s7.py +384 -384
  281. package/md_cg/test_retr_s8_time.py +369 -316
  282. package/md_cg/test_retr_s9_edges.py +286 -286
  283. package/md_cg/test_retr_s9_entity_ctx.py +175 -175
  284. package/md_cg/test_review_conformance.py +367 -367
  285. package/md_cg/test_role_views.py +354 -354
  286. package/md_cg/test_sem_noise.py +242 -242
  287. package/md_cg/test_semantic_canonical.py +241 -241
  288. package/md_cg/test_subproc_encoding.py +192 -192
  289. package/md_cg/test_sustain_mutual.py +153 -153
  290. package/md_cg/test_tasks.py +409 -409
  291. package/md_cg/test_tool_face.py +189 -189
  292. package/md_cg/test_transfer.py +180 -180
  293. package/md_cg/test_trust.py +361 -361
  294. package/md_cg/test_twophase.py +286 -286
  295. package/md_cg/test_v14_fixes.py +397 -397
  296. package/md_cg/test_validity_filter.py +280 -280
  297. package/md_cg/test_verify_answer.py +138 -138
  298. package/md_cg/test_wisdom_md_store.py +292 -292
  299. package/md_cg/test_writelimit.py +197 -197
  300. package/md_cg/test_writepipe.py +214 -214
  301. package/md_cg/theory.py +273 -273
  302. package/md_cg/tokens.py +677 -663
  303. package/md_cg/tool_face.py +260 -260
  304. package/md_cg/trust.py +986 -950
  305. package/md_cg/twophase.py +231 -231
  306. package/md_cg/units.py +667 -667
  307. package/md_cg/vision_evidence.py +666 -666
  308. package/md_cg/weights.py +624 -624
  309. package/md_cg/whitebox.py +527 -527
  310. package/md_cg/whitebox_kb/__init__.py +37 -37
  311. package/md_cg/whitebox_kb/aeis_core/__init__.py +42 -42
  312. package/md_cg/whitebox_kb/aeis_core/semantic.py +280 -280
  313. package/md_cg/whitebox_kb/aeis_core/textutil.py +13 -13
  314. package/md_cg/whitebox_kb/engine.py +310 -310
  315. package/md_cg/whitebox_kb/seed_knowledge//346/231/272/350/203/275/350/256/2723.4.md +5260 -5260
  316. package/md_cg/whitebox_kb/wisdom/browser_units.py +2631 -2631
  317. package/md_cg/whitebox_kb/wisdom/causal_discover.py +432 -432
  318. package/md_cg/whitebox_kb/wisdom/chat_engine.py +1506 -1506
  319. package/md_cg/whitebox_kb/wisdom/code_solidified.json +6195 -6195
  320. package/md_cg/whitebox_kb/wisdom/compiler_code_units.py +3033 -3033
  321. package/md_cg/whitebox_kb/wisdom/condition_algebra.py +112 -112
  322. package/md_cg/whitebox_kb/wisdom/condition_frame.py +315 -315
  323. package/md_cg/whitebox_kb/wisdom/condition_kb.py +108 -108
  324. package/md_cg/whitebox_kb/wisdom/conflict_map.json +4445 -4445
  325. package/md_cg/whitebox_kb/wisdom/core/lexer.py +512 -512
  326. package/md_cg/whitebox_kb/wisdom/core/name_checker.py +1023 -1023
  327. package/md_cg/whitebox_kb/wisdom/cspmn.py +258 -258
  328. package/md_cg/whitebox_kb/wisdom/csre.py +264 -264
  329. package/md_cg/whitebox_kb/wisdom/danmaku_audit.py +252 -252
  330. package/md_cg/whitebox_kb/wisdom/distilled_condition_units.json +6417 -6417
  331. package/md_cg/whitebox_kb/wisdom/docs/WB-EVAL-20260902b.json +1950 -1950
  332. package/md_cg/whitebox_kb/wisdom/docs/WB-EVAL-20260902c.json +1296 -1296
  333. package/md_cg/whitebox_kb/wisdom/docs/whitebox_capability_graph_demo.json +59 -59
  334. package/md_cg/whitebox_kb/wisdom/graph_db_units.py +3089 -3089
  335. package/md_cg/whitebox_kb/wisdom/knowledge_points.py +318 -318
  336. package/md_cg/whitebox_kb/wisdom/md_access.py +470 -470
  337. package/md_cg/whitebox_kb/wisdom/md_store.py +276 -251
  338. package/md_cg/whitebox_kb/wisdom/migrate_wisdom.py +476 -476
  339. package/md_cg/whitebox_kb/wisdom/navigate.py +248 -248
  340. package/md_cg/whitebox_kb/wisdom/neural_retrieve.py +224 -224
  341. package/md_cg/whitebox_kb/wisdom/os_units.py +2735 -2735
  342. package/md_cg/whitebox_kb/wisdom/pattern_separation.py +376 -376
  343. package/md_cg/whitebox_kb/wisdom/prereq_map.json +364 -364
  344. package/md_cg/whitebox_kb/wisdom/python_code_units.py +2766 -2766
  345. package/md_cg/whitebox_kb/wisdom/role_solidified.json +7 -7
  346. package/md_cg/whitebox_kb/wisdom/route_memory.py +244 -244
  347. package/md_cg/whitebox_kb/wisdom/scene_reconstruction.py +148 -148
  348. package/md_cg/whitebox_kb/wisdom/snr_report.json +40 -40
  349. package/md_cg/whitebox_kb/wisdom/test_code_compose_domains.py +7541 -7541
  350. package/md_cg/whitebox_kb/wisdom/test_compiler_self_bootstrap.py +354 -354
  351. package/md_cg/whitebox_kb/wisdom/test_ecosystem_assembly.py +158 -158
  352. package/md_cg/whitebox_kb/wisdom/test_ecosystem_demos.py +193 -193
  353. package/md_cg/whitebox_kb/wisdom/test_graph_db.py +292 -292
  354. package/md_cg/whitebox_kb/wisdom/test_python_self_bootstrap.py +160 -160
  355. package/md_cg/whitebox_kb/wisdom/trigger_words_index.json +4366 -4366
  356. package/md_cg/whitebox_kb/wisdom/verifier.py +1297 -1297
  357. package/md_cg/writelimit.py +356 -356
  358. package/md_cg/writepipe.py +550 -542
  359. package/package.json +97 -96
  360. package/skills/plugin.json +54 -54
  361. package/skills/skills/designer-perspective/SKILL.md +158 -158
  362. package/skills/skills/designer-perspective/references/01-observation-position.md +66 -66
  363. package/skills/skills/designer-perspective/references/02-structure-recognition.md +62 -62
  364. package/skills/skills/designer-perspective/references/03-direction-judgment.md +55 -55
  365. package/skills/skills/designer-perspective/references/04-qualification-verdict.md +72 -72
  366. package/skills/skills/designer-perspective/references/05-condition-attribution.md +74 -74
  367. package/skills/skills/designer-perspective/scripts/designer.py +545 -545
  368. package/skills/skills/designer-perspective/tests/cases.jsonl +17 -17
  369. package/skills/skills/designer-perspective/tests/selftest.py +61 -61
  370. package/skills/skills/lingshu-browser/SKILL.md +60 -60
  371. package/skills/skills/lingshu-compiler/SKILL.md +56 -56
  372. package/skills/skills/lingshu-compiler/units/analyze-type-infer/SKILL.md +45 -45
  373. package/skills/skills/lingshu-compiler/units/check-name-real/SKILL.md +45 -45
  374. package/skills/skills/lingshu-compiler/units/compile-assign/SKILL.md +45 -45
  375. package/skills/skills/lingshu-compiler/units/compile-expr-tree/SKILL.md +45 -45
  376. package/skills/skills/lingshu-compiler/units/compile-full-pipeline/SKILL.md +45 -45
  377. package/skills/skills/lingshu-compiler/units/compile-func-def/SKILL.md +45 -45
  378. package/skills/skills/lingshu-compiler/units/compile-if-then/SKILL.md +45 -45
  379. package/skills/skills/lingshu-compiler/units/compile-logic-expr/SKILL.md +45 -45
  380. package/skills/skills/lingshu-compiler/units/compile-recursive/SKILL.md +45 -45
  381. package/skills/skills/lingshu-compiler/units/compile-scope/SKILL.md +45 -45
  382. package/skills/skills/lingshu-compiler/units/compile-type-check/SKILL.md +45 -45
  383. package/skills/skills/lingshu-compiler/units/compile-while/SKILL.md +45 -45
  384. package/skills/skills/lingshu-compiler/units/compiler-0010c4bf/SKILL.md +45 -45
  385. package/skills/skills/lingshu-compiler/units/compiler-0355bffb/SKILL.md +45 -45
  386. package/skills/skills/lingshu-compiler/units/compiler-0361708a/SKILL.md +45 -45
  387. package/skills/skills/lingshu-compiler/units/compiler-054a0414/SKILL.md +45 -45
  388. package/skills/skills/lingshu-compiler/units/compiler-05a1691a/SKILL.md +45 -45
  389. package/skills/skills/lingshu-compiler/units/compiler-05eeed1e/SKILL.md +45 -45
  390. package/skills/skills/lingshu-compiler/units/compiler-0622a1f6/SKILL.md +45 -45
  391. package/skills/skills/lingshu-compiler/units/compiler-08b54217/SKILL.md +45 -45
  392. package/skills/skills/lingshu-compiler/units/compiler-0a62b70c/SKILL.md +45 -45
  393. package/skills/skills/lingshu-compiler/units/compiler-0ab24d00/SKILL.md +45 -45
  394. package/skills/skills/lingshu-compiler/units/compiler-0e093688/SKILL.md +45 -45
  395. package/skills/skills/lingshu-compiler/units/compiler-0e82b966/SKILL.md +45 -45
  396. package/skills/skills/lingshu-compiler/units/compiler-0ee9b9b9/SKILL.md +45 -45
  397. package/skills/skills/lingshu-compiler/units/compiler-0f3787e6/SKILL.md +45 -45
  398. package/skills/skills/lingshu-compiler/units/compiler-1028685f/SKILL.md +45 -45
  399. package/skills/skills/lingshu-compiler/units/compiler-11897630/SKILL.md +45 -45
  400. package/skills/skills/lingshu-compiler/units/compiler-16661b9b/SKILL.md +45 -45
  401. package/skills/skills/lingshu-compiler/units/compiler-1f722303/SKILL.md +45 -45
  402. package/skills/skills/lingshu-compiler/units/compiler-25be1262/SKILL.md +45 -45
  403. package/skills/skills/lingshu-compiler/units/compiler-2a76ba07/SKILL.md +45 -45
  404. package/skills/skills/lingshu-compiler/units/compiler-2dbea54a/SKILL.md +45 -45
  405. package/skills/skills/lingshu-compiler/units/compiler-2df52f16/SKILL.md +45 -45
  406. package/skills/skills/lingshu-compiler/units/compiler-2ec2c9d2/SKILL.md +45 -45
  407. package/skills/skills/lingshu-compiler/units/compiler-2f8c8f39/SKILL.md +45 -45
  408. package/skills/skills/lingshu-compiler/units/compiler-38378ac7/SKILL.md +45 -45
  409. package/skills/skills/lingshu-compiler/units/compiler-39457d2e/SKILL.md +45 -45
  410. package/skills/skills/lingshu-compiler/units/compiler-39fb5926/SKILL.md +45 -45
  411. package/skills/skills/lingshu-compiler/units/compiler-47f4fbfa/SKILL.md +45 -45
  412. package/skills/skills/lingshu-compiler/units/compiler-4a8cd1f1/SKILL.md +45 -45
  413. package/skills/skills/lingshu-compiler/units/compiler-4b230b6b/SKILL.md +45 -45
  414. package/skills/skills/lingshu-compiler/units/compiler-4cbbda95/SKILL.md +45 -45
  415. package/skills/skills/lingshu-compiler/units/compiler-4d5a68ff/SKILL.md +45 -45
  416. package/skills/skills/lingshu-compiler/units/compiler-56dc9bdd/SKILL.md +45 -45
  417. package/skills/skills/lingshu-compiler/units/compiler-57e76ebe/SKILL.md +45 -45
  418. package/skills/skills/lingshu-compiler/units/compiler-61ff016b/SKILL.md +45 -45
  419. package/skills/skills/lingshu-compiler/units/compiler-63eae588/SKILL.md +45 -45
  420. package/skills/skills/lingshu-compiler/units/compiler-64c4224b/SKILL.md +45 -45
  421. package/skills/skills/lingshu-compiler/units/compiler-66377955/SKILL.md +45 -45
  422. package/skills/skills/lingshu-compiler/units/compiler-674ab4f6/SKILL.md +45 -45
  423. package/skills/skills/lingshu-compiler/units/compiler-6af76fd6/SKILL.md +45 -45
  424. package/skills/skills/lingshu-compiler/units/compiler-6d979db2/SKILL.md +45 -45
  425. package/skills/skills/lingshu-compiler/units/compiler-6de326c0/SKILL.md +45 -45
  426. package/skills/skills/lingshu-compiler/units/compiler-6f1c0eea/SKILL.md +45 -45
  427. package/skills/skills/lingshu-compiler/units/compiler-724d6c9b/SKILL.md +45 -45
  428. package/skills/skills/lingshu-compiler/units/compiler-7690177f/SKILL.md +45 -45
  429. package/skills/skills/lingshu-compiler/units/compiler-7b229a7d/SKILL.md +45 -45
  430. package/skills/skills/lingshu-compiler/units/compiler-7f471b3a/SKILL.md +45 -45
  431. package/skills/skills/lingshu-compiler/units/compiler-815cad08/SKILL.md +45 -45
  432. package/skills/skills/lingshu-compiler/units/compiler-83c61634/SKILL.md +45 -45
  433. package/skills/skills/lingshu-compiler/units/compiler-8c798c81/SKILL.md +45 -45
  434. package/skills/skills/lingshu-compiler/units/compiler-8dd747ac/SKILL.md +45 -45
  435. package/skills/skills/lingshu-compiler/units/compiler-90324d0a/SKILL.md +45 -45
  436. package/skills/skills/lingshu-compiler/units/compiler-94b8d72d/SKILL.md +45 -45
  437. package/skills/skills/lingshu-compiler/units/compiler-94f12231/SKILL.md +45 -45
  438. package/skills/skills/lingshu-compiler/units/compiler-95937c16/SKILL.md +45 -45
  439. package/skills/skills/lingshu-compiler/units/compiler-98a5625b/SKILL.md +45 -45
  440. package/skills/skills/lingshu-compiler/units/compiler-98b4c42f/SKILL.md +45 -45
  441. package/skills/skills/lingshu-compiler/units/compiler-98e3894a/SKILL.md +45 -45
  442. package/skills/skills/lingshu-compiler/units/compiler-9bdfe4b8/SKILL.md +45 -45
  443. package/skills/skills/lingshu-compiler/units/compiler-9d9b4e83/SKILL.md +45 -45
  444. package/skills/skills/lingshu-compiler/units/compiler-9f7be5ad/SKILL.md +45 -45
  445. package/skills/skills/lingshu-compiler/units/compiler-a6daf076/SKILL.md +45 -45
  446. package/skills/skills/lingshu-compiler/units/compiler-a7995a0c/SKILL.md +45 -45
  447. package/skills/skills/lingshu-compiler/units/compiler-a8399248/SKILL.md +45 -45
  448. package/skills/skills/lingshu-compiler/units/compiler-aabbd099/SKILL.md +45 -45
  449. package/skills/skills/lingshu-compiler/units/compiler-afe169d8/SKILL.md +45 -45
  450. package/skills/skills/lingshu-compiler/units/compiler-b0678bda/SKILL.md +45 -45
  451. package/skills/skills/lingshu-compiler/units/compiler-b09bd196/SKILL.md +45 -45
  452. package/skills/skills/lingshu-compiler/units/compiler-b1396e23/SKILL.md +45 -45
  453. package/skills/skills/lingshu-compiler/units/compiler-b9b31ce0/SKILL.md +45 -45
  454. package/skills/skills/lingshu-compiler/units/compiler-c10264a7/SKILL.md +45 -45
  455. package/skills/skills/lingshu-compiler/units/compiler-cb1e8e4b/SKILL.md +45 -45
  456. package/skills/skills/lingshu-compiler/units/compiler-ccafd438/SKILL.md +45 -45
  457. package/skills/skills/lingshu-compiler/units/compiler-cda9c262/SKILL.md +45 -45
  458. package/skills/skills/lingshu-compiler/units/compiler-ce648068/SKILL.md +45 -45
  459. package/skills/skills/lingshu-compiler/units/compiler-cf5776a4/SKILL.md +45 -45
  460. package/skills/skills/lingshu-compiler/units/compiler-d974e5d3/SKILL.md +45 -45
  461. package/skills/skills/lingshu-compiler/units/compiler-e3979fd3/SKILL.md +45 -45
  462. package/skills/skills/lingshu-compiler/units/compiler-eb1cf2b5/SKILL.md +45 -45
  463. package/skills/skills/lingshu-compiler/units/compiler-ecb30d5b/SKILL.md +45 -45
  464. package/skills/skills/lingshu-compiler/units/compiler-f8c8b24b/SKILL.md +45 -45
  465. package/skills/skills/lingshu-compiler/units/compiler-f99fedbe/SKILL.md +45 -45
  466. package/skills/skills/lingshu-compiler/units/compiler-fa8ff5f7/SKILL.md +45 -45
  467. package/skills/skills/lingshu-compiler/units/compiler-fe1b058d/SKILL.md +45 -45
  468. package/skills/skills/lingshu-compiler/units/lex-chinese-program/SKILL.md +45 -45
  469. package/skills/skills/lingshu-compiler/units/lex-dao-de-jing/SKILL.md +45 -45
  470. package/skills/skills/lingshu-compiler/units/lex-nine-chapters/SKILL.md +45 -45
  471. package/skills/skills/lingshu-compiler/units/vm-arithmetic/SKILL.md +45 -45
  472. package/skills/skills/lingshu-compiler/units/vm-array-ops/SKILL.md +45 -45
  473. package/skills/skills/lingshu-compiler/units/vm-closure-call/SKILL.md +45 -45
  474. package/skills/skills/lingshu-compiler/units/vm-closure-create/SKILL.md +45 -45
  475. package/skills/skills/lingshu-compiler/units/vm-compare/SKILL.md +45 -45
  476. package/skills/skills/lingshu-compiler/units/vm-cond-jump/SKILL.md +45 -45
  477. package/skills/skills/lingshu-compiler/units/vm-cond-space/SKILL.md +45 -45
  478. package/skills/skills/lingshu-compiler/units/vm-exception/SKILL.md +45 -45
  479. package/skills/skills/lingshu-compiler/units/vm-func-call/SKILL.md +45 -45
  480. package/skills/skills/lingshu-compiler/units/vm-loop-run/SKILL.md +45 -45
  481. package/skills/skills/lingshu-compiler/units/vm-profiling/SKILL.md +45 -45
  482. package/skills/skills/lingshu-compiler/units/vm-refcount/SKILL.md +45 -45
  483. package/skills/skills/lingshu-compiler/units/vm-run-loop/SKILL.md +45 -45
  484. package/skills/skills/lingshu-compiler/units/vm-short-circuit/SKILL.md +45 -45
  485. package/skills/skills/lingshu-compiler/units/vm-stack-guard/SKILL.md +45 -45
  486. package/skills/skills/lingshu-compiler/units/vm-stack-ops/SKILL.md +45 -45
  487. package/skills/skills/lingshu-compiler/units/vm-trust-accum/SKILL.md +45 -45
  488. package/skills/skills/lingshu-graph/SKILL.md +63 -63
  489. package/skills/skills/lingshu-net/SKILL.md +48 -48
  490. package/skills/skills/lingshu-os/SKILL.md +64 -64
  491. package/skills/skills/lingshu-pylang/SKILL.md +71 -71
  492. package/src/bridge.ts +401 -401
  493. package/src/hooks.ts +38 -2
  494. package/src/lib/datapath.ts +326 -326
  495. package/src/lib/mdcg_client.ts +413 -413
  496. package/src/lib/mutual.ts +428 -428
  497. package/src/lib/prompt_safety.ts +62 -62
  498. package/src/lib/python_path.ts +71 -71
  499. package/src/lib/roleplay_web.ts +932 -932
  500. package/src/lib/token_store.ts +192 -192
  501. package/src/tools.ts +212 -212
  502. package/zcode/AGENTS.md +11 -3
  503. package/zcode/README.md +41 -41
  504. /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`(六家同口径,未改动既有指标实现)。