@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.
- package/README.md +16 -16
- package/codebuddy/CODEBUDDY.md +11 -3
- package/codebuddy/README.md +92 -90
- package/codebuddy/mcp.json +27 -27
- 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
- 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
- package/docs/README.md +142 -111
- package/docs/discipline/harnesses.yaml +244 -226
- package/docs/discipline/templates/full.md.tmpl +61 -61
- package/docs/discipline/templates/rules.mdc.tmpl +68 -0
- package/docs/discipline/templates/skill.md.tmpl +23 -23
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/docs/mdcg/README/350/257/246/347/273/206/347/211/210_v0.4.10.md +646 -646
- package/docs/mdcg/lingshu_tutorial.html +14449 -14449
- package/docs/mdcg/release_v0.4.11.md +49 -0
- package/docs/mdcg/release_v0.4.5.md +55 -55
- package/docs/mdcg/tool_table_v0.3.0.md +117 -117
- 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
- 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
- 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
- package/docs/mdcg//345/217/221/345/270/203/351/227/250/347/246/201/351/223/276_v0.1.md +54 -0
- 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
- 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
- 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
- package/docs/mdcg//347/274/272/345/217/243/345/215/225_P0/346/224/266/345/217/243_v0.1.md +270 -270
- 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
- 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
- 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
- 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
- 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
- package/docs/swarm//350/234/202/347/276/244/344/272/222/350/201/224_v0.1.md +704 -704
- 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
- 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
- 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
- package/docs/theory//346/231/272/350/203/275/350/256/2723.4.md +5260 -5260
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/dsh/README.md +82 -82
- package/dsh/cordis.yml.example +139 -139
- package/dsh/update-lingshu.bat +11 -11
- package/lib/hooks.js +36 -2
- package/lib/lib/roleplay_web.js +427 -427
- package/md_cg/__init__.py +7 -7
- package/md_cg/audit.py +368 -368
- package/md_cg/autonomy.py +287 -287
- package/md_cg/backfill.py +1327 -1327
- package/md_cg/backfill_bigdomain.py +34 -34
- package/md_cg/bench6_arms.py +410 -410
- package/md_cg/bench6_common.py +230 -230
- package/md_cg/bench6_competitors.py +212 -212
- package/md_cg/bench_axis_domain.py +257 -257
- package/md_cg/bench_blind_comp.py +308 -308
- package/md_cg/bench_en_atoms_public.py +230 -230
- package/md_cg/bench_governance.py +348 -348
- package/md_cg/bench_lme_zh.py +410 -410
- package/md_cg/bench_locomo.py +121 -121
- package/md_cg/bench_locomo_zh.py +450 -450
- package/md_cg/bench_locomo_zh_public.py +147 -147
- package/md_cg/bench_longmem.py +112 -112
- package/md_cg/bench_membench.py +632 -632
- package/md_cg/bench_p0.py +149 -149
- package/md_cg/bench_progressive.py +287 -287
- package/md_cg/bench_role_views.py +238 -238
- package/md_cg/bench_task_ab.py +243 -243
- package/md_cg/bench_task_ab_llm.py +408 -408
- package/md_cg/bench_unified_en.py +204 -204
- package/md_cg/bench_zh_mad.py +601 -601
- package/md_cg/blindspot_tickets.py +123 -123
- package/md_cg/branches.py +285 -285
- package/md_cg/build_postings.py +73 -73
- package/md_cg/ccgc.py +1005 -948
- package/md_cg/census.py +132 -132
- package/md_cg/chain.py +300 -300
- package/md_cg/codeindex.py +531 -531
- package/md_cg/coldverify.py +292 -292
- package/md_cg/comment_gate.py +337 -337
- package/md_cg/cond_compose.py +190 -190
- package/md_cg/cond_facts.py +154 -154
- package/md_cg/cond_template.json +106 -106
- package/md_cg/condition_anchor.py +142 -142
- package/md_cg/conformance.py +726 -726
- package/md_cg/consistency.py +717 -717
- package/md_cg/consolidate.py +1536 -1439
- package/md_cg/corpus.py +110 -110
- package/md_cg/crosscheck.py +1097 -1097
- package/md_cg/crypto.py +437 -437
- package/md_cg/d_meta.py +310 -310
- package/md_cg/datapath.py +334 -334
- package/md_cg/docindex.py +473 -473
- package/md_cg/eval_common.py +575 -575
- package/md_cg/evidence.py +580 -580
- package/md_cg/evolution.py +477 -477
- package/md_cg/export.py +220 -220
- package/md_cg/forgetting.py +581 -581
- package/md_cg/fsutil.py +329 -329
- package/md_cg/hotcache.py +238 -214
- package/md_cg/hyperedge.py +251 -251
- package/md_cg/identity.py +390 -390
- package/md_cg/insight.py +500 -500
- package/md_cg/interop.py +199 -0
- package/md_cg/lexicon/build_cedict_en_zh.py +329 -329
- package/md_cg/lexicon/build_standard_en.py +171 -171
- package/md_cg/lexicon/expand_en_zh.py +211 -211
- package/md_cg/lifecycle.py +272 -272
- package/md_cg/linkref.py +280 -280
- package/md_cg/links.py +622 -622
- package/md_cg/mcp_server.py +129 -32
- package/md_cg/md_whitebox.py +345 -345
- package/md_cg/mdcg.py +176 -117
- package/md_cg/mdcos.py +79 -13
- package/md_cg/metacognition.py +591 -591
- package/md_cg/migrate.py +119 -119
- package/md_cg/migrate_aeis.py +221 -221
- package/md_cg/migrate_roleplay.py +293 -293
- package/md_cg/migrate_wisdom_graph.py +360 -360
- package/md_cg/mreview/__init__.py +25 -25
- package/md_cg/mreview/__main__.py +110 -110
- package/md_cg/mreview/bundle.py +178 -178
- package/md_cg/mreview/candidates.py +262 -262
- package/md_cg/mreview/govern.py +693 -693
- package/md_cg/mreview/locate.py +939 -939
- package/md_cg/mreview/pipeline.py +728 -728
- package/md_cg/mreview/rules/duplication.json +21 -21
- package/md_cg/mreview/rules/field_coverage.json +54 -54
- package/md_cg/mreview/rules/source_license.json +21 -21
- package/md_cg/mreview/rules/template_flow.json +21 -21
- package/md_cg/mreview/ruleset.py +252 -252
- package/md_cg/nodefile.py +575 -575
- package/md_cg/pooling.py +484 -472
- package/md_cg/postings.py +298 -298
- package/md_cg/predict.py +1100 -1100
- package/md_cg/progressive.py +123 -123
- package/md_cg/protect.py +272 -272
- package/md_cg/protocol/md_cg_gate.proto +33 -33
- package/md_cg/protocol.py +372 -372
- package/md_cg/provenance.py +582 -582
- package/md_cg/reach.py +453 -453
- package/md_cg/readcache.py +85 -0
- package/md_cg/refindex.py +833 -833
- package/md_cg/refine.py +604 -604
- package/md_cg/roleviews.py +89 -89
- package/md_cg/routing.py +365 -365
- package/md_cg/scrub.py +852 -852
- package/md_cg/security.py +274 -274
- package/md_cg/self_state.py +1029 -1029
- package/md_cg/selfreport.py +151 -151
- package/md_cg/semantic/__init__.py +10 -10
- package/md_cg/semantic/canonical.py +122 -122
- package/md_cg/semantic/en_normalizer.py +364 -364
- package/md_cg/semantic/en_zh_map.json +28694 -0
- package/md_cg/semantic/export_en_zh_map.py +64 -0
- package/md_cg/semantic/unify.py +45 -0
- package/md_cg/semantic/zh_en_atoms.py +139 -139
- package/md_cg/signer.py +562 -562
- package/md_cg/sources.py +815 -582
- package/md_cg/statushdr.py +179 -179
- package/md_cg/stg.py +48 -37
- package/md_cg/subgraph.py +729 -729
- package/md_cg/sustain.py +1138 -1138
- package/md_cg/tasks.py +470 -470
- package/md_cg/test_action_derive.py +203 -203
- package/md_cg/test_audit_rotate.py +270 -270
- package/md_cg/test_autonomy.py +143 -143
- package/md_cg/test_bench_governance.py +102 -102
- package/md_cg/test_blindspot_tickets.py +166 -166
- package/md_cg/test_branches.py +249 -249
- package/md_cg/test_ccg_perturb.py +184 -184
- package/md_cg/test_ccgc.py +433 -433
- package/md_cg/test_census_prune.py +81 -81
- package/md_cg/test_cond_compose_anchors.py +76 -76
- package/md_cg/test_cond_match.py +165 -165
- package/md_cg/test_condition_anchor.py +81 -81
- package/md_cg/test_d_meta.py +412 -412
- package/md_cg/test_datapath_root.py +199 -199
- package/md_cg/test_en_pipeline.py +166 -166
- package/md_cg/test_gain_gate.py +212 -212
- package/md_cg/test_health_scale.py +173 -173
- package/md_cg/test_hive_ingest.py +285 -0
- package/md_cg/test_hot_cold.py +215 -215
- package/md_cg/test_hyperedge.py +245 -245
- package/md_cg/test_i26_empty_first_write.py +116 -0
- package/md_cg/test_i27_e041_identity.py +128 -0
- package/md_cg/test_i28_hotcache_prodpath.py +122 -0
- package/md_cg/test_identity_attribution.py +147 -147
- package/md_cg/test_index_durability.py +224 -224
- package/md_cg/test_interop.py +93 -0
- package/md_cg/test_lifecycle.py +309 -309
- package/md_cg/test_linkref.py +306 -306
- package/md_cg/test_lock.py +43 -43
- package/md_cg/test_md_access_parity.py +255 -255
- package/md_cg/test_md_writepath.py +345 -345
- package/md_cg/test_mdstore_search_parity.py +160 -0
- package/md_cg/test_mr_m2.py +587 -587
- package/md_cg/test_mr_m3.py +710 -710
- package/md_cg/test_mr_m4.py +485 -485
- package/md_cg/test_p0.py +250 -250
- package/md_cg/test_p1.py +316 -316
- package/md_cg/test_p10_identity.py +173 -173
- package/md_cg/test_p11_consistency.py +233 -233
- package/md_cg/test_p12_metacognition.py +212 -212
- package/md_cg/test_p13_encryption.py +241 -241
- package/md_cg/test_p14_sustain.py +249 -249
- package/md_cg/test_p15_scrub.py +280 -280
- package/md_cg/test_p16_self_state.py +301 -301
- package/md_cg/test_p17_predict.py +354 -354
- package/md_cg/test_p18_whitebox.py +171 -171
- package/md_cg/test_p19_migrate_roleplay.py +149 -149
- package/md_cg/test_p20_evolution.py +315 -315
- package/md_cg/test_p21_tokens.py +293 -270
- package/md_cg/test_p22_theory.py +175 -175
- package/md_cg/test_p23_links.py +311 -311
- package/md_cg/test_p24_evidence.py +227 -227
- package/md_cg/test_p25_weights.py +156 -156
- package/md_cg/test_p26_refindex.py +416 -416
- package/md_cg/test_p27_docindex.py +765 -765
- package/md_cg/test_p28_refcheck.py +305 -305
- package/md_cg/test_p29_session_ingest_export.py +354 -333
- package/md_cg/test_p3.py +11 -2
- package/md_cg/test_p30_maintain.py +330 -330
- package/md_cg/test_p31_insight.py +534 -534
- package/md_cg/test_p32_backfill.py +298 -298
- package/md_cg/test_p33_ccg_wiring.py +293 -293
- package/md_cg/test_p34_crosscheck.py +331 -331
- package/md_cg/test_p35_conditioned_claim.py +252 -252
- package/md_cg/test_p36_kp_align.py +230 -230
- package/md_cg/test_p37_condition_space.py +248 -248
- package/md_cg/test_p38_concurrent_flush.py +102 -0
- package/md_cg/test_p38_contextualize.py +273 -273
- package/md_cg/test_p39_verify_flow.py +113 -0
- package/md_cg/test_p39_vision_evidence.py +369 -369
- package/md_cg/test_p40_refine_worklist.py +241 -241
- package/md_cg/test_p41_evolve_patrol.py +224 -224
- package/md_cg/test_p42_provenance.py +269 -269
- package/md_cg/test_p43_pooling.py +412 -398
- package/md_cg/test_p44_md_whitebox.py +231 -231
- package/md_cg/test_p45_session_identity.py +219 -219
- package/md_cg/test_p46_unit_scope.py +272 -272
- package/md_cg/test_p47_session_view.py +281 -0
- package/md_cg/test_p4_fuzzy.py +223 -223
- package/md_cg/test_p5_semantic.py +226 -226
- package/md_cg/test_p6_consolidate.py +440 -387
- package/md_cg/test_p7_goals_recent.py +202 -202
- package/md_cg/test_p8_subgraph_chain.py +200 -200
- package/md_cg/test_p9_forget_protect.py +231 -231
- package/md_cg/test_predict_beta.py +135 -135
- package/md_cg/test_preflight_failclosed.py +100 -100
- package/md_cg/test_progressive.py +146 -146
- package/md_cg/test_protocol.py +243 -243
- package/md_cg/test_reach.py +378 -378
- package/md_cg/test_reach_keys.py +201 -201
- package/md_cg/test_read_clip.py +141 -141
- package/md_cg/test_readcache_prodpath.py +155 -0
- package/md_cg/test_retr_gates_prodpath.py +140 -0
- package/md_cg/test_retr_s1.py +340 -340
- package/md_cg/test_retr_s1b.py +209 -209
- package/md_cg/test_retr_s3.py +194 -194
- package/md_cg/test_retr_s4.py +163 -163
- package/md_cg/test_retr_s5.py +200 -200
- package/md_cg/test_retr_s6.py +157 -157
- package/md_cg/test_retr_s7.py +384 -384
- package/md_cg/test_retr_s8_time.py +369 -316
- package/md_cg/test_retr_s9_edges.py +286 -286
- package/md_cg/test_retr_s9_entity_ctx.py +175 -175
- package/md_cg/test_review_conformance.py +367 -367
- package/md_cg/test_role_views.py +354 -354
- package/md_cg/test_sem_noise.py +242 -242
- package/md_cg/test_semantic_canonical.py +241 -241
- package/md_cg/test_subproc_encoding.py +192 -192
- package/md_cg/test_sustain_mutual.py +153 -153
- package/md_cg/test_tasks.py +409 -409
- package/md_cg/test_tool_face.py +189 -189
- package/md_cg/test_transfer.py +180 -180
- package/md_cg/test_trust.py +361 -361
- package/md_cg/test_twophase.py +286 -286
- package/md_cg/test_v14_fixes.py +397 -397
- package/md_cg/test_validity_filter.py +280 -280
- package/md_cg/test_verify_answer.py +138 -138
- package/md_cg/test_wisdom_md_store.py +292 -292
- package/md_cg/test_writelimit.py +197 -197
- package/md_cg/test_writepipe.py +214 -214
- package/md_cg/theory.py +273 -273
- package/md_cg/tokens.py +677 -663
- package/md_cg/tool_face.py +260 -260
- package/md_cg/trust.py +986 -950
- package/md_cg/twophase.py +231 -231
- package/md_cg/units.py +667 -667
- package/md_cg/vision_evidence.py +666 -666
- package/md_cg/weights.py +624 -624
- package/md_cg/whitebox.py +527 -527
- package/md_cg/whitebox_kb/__init__.py +37 -37
- package/md_cg/whitebox_kb/aeis_core/__init__.py +42 -42
- package/md_cg/whitebox_kb/aeis_core/semantic.py +280 -280
- package/md_cg/whitebox_kb/aeis_core/textutil.py +13 -13
- package/md_cg/whitebox_kb/engine.py +310 -310
- package/md_cg/whitebox_kb/seed_knowledge//346/231/272/350/203/275/350/256/2723.4.md +5260 -5260
- package/md_cg/whitebox_kb/wisdom/browser_units.py +2631 -2631
- package/md_cg/whitebox_kb/wisdom/causal_discover.py +432 -432
- package/md_cg/whitebox_kb/wisdom/chat_engine.py +1506 -1506
- package/md_cg/whitebox_kb/wisdom/code_solidified.json +6195 -6195
- package/md_cg/whitebox_kb/wisdom/compiler_code_units.py +3033 -3033
- package/md_cg/whitebox_kb/wisdom/condition_algebra.py +112 -112
- package/md_cg/whitebox_kb/wisdom/condition_frame.py +315 -315
- package/md_cg/whitebox_kb/wisdom/condition_kb.py +108 -108
- package/md_cg/whitebox_kb/wisdom/conflict_map.json +4445 -4445
- package/md_cg/whitebox_kb/wisdom/core/lexer.py +512 -512
- package/md_cg/whitebox_kb/wisdom/core/name_checker.py +1023 -1023
- package/md_cg/whitebox_kb/wisdom/cspmn.py +258 -258
- package/md_cg/whitebox_kb/wisdom/csre.py +264 -264
- package/md_cg/whitebox_kb/wisdom/danmaku_audit.py +252 -252
- package/md_cg/whitebox_kb/wisdom/distilled_condition_units.json +6417 -6417
- package/md_cg/whitebox_kb/wisdom/docs/WB-EVAL-20260902b.json +1950 -1950
- package/md_cg/whitebox_kb/wisdom/docs/WB-EVAL-20260902c.json +1296 -1296
- package/md_cg/whitebox_kb/wisdom/docs/whitebox_capability_graph_demo.json +59 -59
- package/md_cg/whitebox_kb/wisdom/graph_db_units.py +3089 -3089
- package/md_cg/whitebox_kb/wisdom/knowledge_points.py +318 -318
- package/md_cg/whitebox_kb/wisdom/md_access.py +470 -470
- package/md_cg/whitebox_kb/wisdom/md_store.py +276 -251
- package/md_cg/whitebox_kb/wisdom/migrate_wisdom.py +476 -476
- package/md_cg/whitebox_kb/wisdom/navigate.py +248 -248
- package/md_cg/whitebox_kb/wisdom/neural_retrieve.py +224 -224
- package/md_cg/whitebox_kb/wisdom/os_units.py +2735 -2735
- package/md_cg/whitebox_kb/wisdom/pattern_separation.py +376 -376
- package/md_cg/whitebox_kb/wisdom/prereq_map.json +364 -364
- package/md_cg/whitebox_kb/wisdom/python_code_units.py +2766 -2766
- package/md_cg/whitebox_kb/wisdom/role_solidified.json +7 -7
- package/md_cg/whitebox_kb/wisdom/route_memory.py +244 -244
- package/md_cg/whitebox_kb/wisdom/scene_reconstruction.py +148 -148
- package/md_cg/whitebox_kb/wisdom/snr_report.json +40 -40
- package/md_cg/whitebox_kb/wisdom/test_code_compose_domains.py +7541 -7541
- package/md_cg/whitebox_kb/wisdom/test_compiler_self_bootstrap.py +354 -354
- package/md_cg/whitebox_kb/wisdom/test_ecosystem_assembly.py +158 -158
- package/md_cg/whitebox_kb/wisdom/test_ecosystem_demos.py +193 -193
- package/md_cg/whitebox_kb/wisdom/test_graph_db.py +292 -292
- package/md_cg/whitebox_kb/wisdom/test_python_self_bootstrap.py +160 -160
- package/md_cg/whitebox_kb/wisdom/trigger_words_index.json +4366 -4366
- package/md_cg/whitebox_kb/wisdom/verifier.py +1297 -1297
- package/md_cg/writelimit.py +356 -356
- package/md_cg/writepipe.py +550 -542
- package/package.json +97 -96
- package/skills/plugin.json +54 -54
- package/skills/skills/designer-perspective/SKILL.md +158 -158
- package/skills/skills/designer-perspective/references/01-observation-position.md +66 -66
- package/skills/skills/designer-perspective/references/02-structure-recognition.md +62 -62
- package/skills/skills/designer-perspective/references/03-direction-judgment.md +55 -55
- package/skills/skills/designer-perspective/references/04-qualification-verdict.md +72 -72
- package/skills/skills/designer-perspective/references/05-condition-attribution.md +74 -74
- package/skills/skills/designer-perspective/scripts/designer.py +545 -545
- package/skills/skills/designer-perspective/tests/cases.jsonl +17 -17
- package/skills/skills/designer-perspective/tests/selftest.py +61 -61
- package/skills/skills/lingshu-browser/SKILL.md +60 -60
- package/skills/skills/lingshu-compiler/SKILL.md +56 -56
- package/skills/skills/lingshu-compiler/units/analyze-type-infer/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/check-name-real/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-assign/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-expr-tree/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-full-pipeline/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-func-def/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-if-then/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-logic-expr/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-recursive/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-scope/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-type-check/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compile-while/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0010c4bf/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0355bffb/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0361708a/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-054a0414/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-05a1691a/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-05eeed1e/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0622a1f6/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-08b54217/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0a62b70c/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0ab24d00/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0e093688/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0e82b966/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0ee9b9b9/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-0f3787e6/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-1028685f/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-11897630/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-16661b9b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-1f722303/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-25be1262/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-2a76ba07/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-2dbea54a/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-2df52f16/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-2ec2c9d2/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-2f8c8f39/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-38378ac7/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-39457d2e/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-39fb5926/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-47f4fbfa/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-4a8cd1f1/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-4b230b6b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-4cbbda95/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-4d5a68ff/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-56dc9bdd/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-57e76ebe/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-61ff016b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-63eae588/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-64c4224b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-66377955/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-674ab4f6/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-6af76fd6/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-6d979db2/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-6de326c0/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-6f1c0eea/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-724d6c9b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-7690177f/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-7b229a7d/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-7f471b3a/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-815cad08/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-83c61634/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-8c798c81/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-8dd747ac/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-90324d0a/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-94b8d72d/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-94f12231/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-95937c16/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-98a5625b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-98b4c42f/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-98e3894a/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-9bdfe4b8/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-9d9b4e83/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-9f7be5ad/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-a6daf076/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-a7995a0c/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-a8399248/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-aabbd099/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-afe169d8/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-b0678bda/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-b09bd196/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-b1396e23/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-b9b31ce0/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-c10264a7/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-cb1e8e4b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-ccafd438/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-cda9c262/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-ce648068/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-cf5776a4/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-d974e5d3/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-e3979fd3/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-eb1cf2b5/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-ecb30d5b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-f8c8b24b/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-f99fedbe/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-fa8ff5f7/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/compiler-fe1b058d/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/lex-chinese-program/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/lex-dao-de-jing/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/lex-nine-chapters/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-arithmetic/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-array-ops/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-closure-call/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-closure-create/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-compare/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-cond-jump/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-cond-space/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-exception/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-func-call/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-loop-run/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-profiling/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-refcount/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-run-loop/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-short-circuit/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-stack-guard/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-stack-ops/SKILL.md +45 -45
- package/skills/skills/lingshu-compiler/units/vm-trust-accum/SKILL.md +45 -45
- package/skills/skills/lingshu-graph/SKILL.md +63 -63
- package/skills/skills/lingshu-net/SKILL.md +48 -48
- package/skills/skills/lingshu-os/SKILL.md +64 -64
- package/skills/skills/lingshu-pylang/SKILL.md +71 -71
- package/src/bridge.ts +401 -401
- package/src/hooks.ts +38 -2
- package/src/lib/datapath.ts +326 -326
- package/src/lib/mdcg_client.ts +413 -413
- package/src/lib/mutual.ts +428 -428
- package/src/lib/prompt_safety.ts +62 -62
- package/src/lib/python_path.ts +71 -71
- package/src/lib/roleplay_web.ts +932 -932
- package/src/lib/token_store.ts +192 -192
- package/src/tools.ts +212 -212
- package/zcode/AGENTS.md +11 -3
- package/zcode/README.md +41 -41
- /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`(六家同口径,未改动既有指标实现)。
|