@furongjun1999/dsh-memory 0.4.11 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +552 -465
- 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 +143 -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/bench_lingshu_self/bench_self.py +140 -0
- package/docs/eval/bench_lingshu_self/self_bench_result.json +404 -0
- package/docs/eval/bench_lingshu_self//347/201/265/346/236/242/350/207/252/345/272/223/347/253/257/345/210/260/347/253/257/346/243/200/347/264/242/345/256/236/346/265/213_v1.0.md +38 -0
- package/docs/eval//344/270/215/345/217/257/351/235/240/346/200/247/350/220/275/345/234/260_P0_v1.0.md +185 -0
- 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/225/205/351/232/234/346/263/250/345/205/245/345/256/236/346/265/213_v1.0.md +422 -0
- 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/eval//347/253/257/345/210/260/347/253/257LoCoMoQA/345/220/214/345/217/243/345/276/204/345/257/271/347/205/247_v1.0.md +100 -0
- package/docs/eval//347/253/257/345/210/260/347/253/257/345/271/262/346/211/260/346/261/240/350/257/204/346/265/213_/347/241/256/345/256/232/346/200/247/350/243/201/345/206/263vsLLM_judge_v1.1.md +197 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v1.md +156 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v10.md +210 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v11.md +227 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v12.md +203 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v13.md +233 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v14.md +191 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v15.md +213 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v16.md +214 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v17.md +199 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v2.md +156 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v3.md +152 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v4.md +128 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v5.md +114 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v6.md +192 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v7.md +187 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v8.md +207 -0
- package/docs/eval//347/274/272/351/231/267/346/214/226/346/216/230_/350/207/252/344/270/273/350/277/255/344/273/243_v9.md +203 -0
- 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//345/256/211/345/205/250/345/256/241/350/256/241/345/256/236/351/224/232_v0.1.md +202 -0
- 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 +519 -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/images/lingshu-moonlight-covenant-poster-preview.jpg +0 -0
- package/docs/images/lingshu-moonlight-covenant-poster.png +0 -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//344/270/215/345/217/257/351/235/240/345/256/232/347/220/206/344/270/216/345/244/261/346/225/210/344/274/230/345/205/210/346/241/206/346/236/266_v0.3.md +365 -0
- 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//344/270/215/345/217/257/351/235/240/346/200/247/347/220/206/350/256/272_v0.1.md +343 -0
- 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/bridge.d.ts +9 -0
- package/lib/bridge.js +35 -0
- package/lib/hooks.js +36 -2
- package/lib/index.js +7 -1
- package/lib/lib/roleplay_web.js +116 -29
- package/lib/lib/token_store.d.ts +7 -1
- package/lib/lib/token_store.js +12 -3
- package/md_cg/__init__.py +7 -7
- package/md_cg/audit.py +379 -368
- package/md_cg/autonomy.py +287 -287
- package/md_cg/backfill.py +1328 -1327
- package/md_cg/backfill_bigdomain.py +34 -34
- package/md_cg/backfill_bucket_zh.py +35 -0
- 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_e2e_judge.py +532 -0
- package/md_cg/bench_e2e_locomo_qa.py +368 -0
- package/md_cg/bench_e2e_qa.py +256 -0
- 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 +301 -285
- package/md_cg/build_postings.py +73 -73
- package/md_cg/ccgc.py +1006 -948
- package/md_cg/census.py +132 -132
- package/md_cg/chain.py +315 -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 +1537 -1439
- package/md_cg/corpus.py +110 -110
- package/md_cg/crosscheck.py +1098 -1097
- package/md_cg/crypto.py +3 -1
- package/md_cg/d_meta.py +310 -310
- package/md_cg/datapath.py +78 -18
- package/md_cg/docindex.py +473 -473
- package/md_cg/eval_common.py +575 -575
- package/md_cg/evidence.py +4 -2
- package/md_cg/evolution.py +477 -477
- package/md_cg/export.py +222 -220
- package/md_cg/forgetting.py +581 -581
- package/md_cg/fsutil.py +377 -329
- package/md_cg/hotcache.py +48 -7
- 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 +338 -0
- package/md_cg/judgment_manifest.py +177 -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 +140 -107
- package/md_cg/mcp_server.py +403 -55
- package/md_cg/md_whitebox.py +345 -345
- package/md_cg/mdcg.py +783 -233
- package/md_cg/mdcos.py +500 -70
- 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 +694 -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 +300 -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 +143 -0
- package/md_cg/reconcile.py +228 -0
- package/md_cg/refindex.py +833 -833
- package/md_cg/refine.py +604 -604
- package/md_cg/review_cli.py +170 -0
- package/md_cg/roleviews.py +89 -89
- package/md_cg/routing.py +393 -365
- package/md_cg/run_tests.py +211 -0
- package/md_cg/scrub.py +13 -3
- package/md_cg/security.py +128 -18
- package/md_cg/self_state.py +1029 -1029
- package/md_cg/selfreport.py +152 -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 +7 -4
- package/md_cg/sources.py +816 -582
- package/md_cg/statushdr.py +179 -179
- package/md_cg/stg.py +54 -37
- package/md_cg/subgraph.py +729 -729
- package/md_cg/sustain.py +35 -5
- package/md_cg/tasks.py +470 -470
- package/md_cg/test_access_hints.py +147 -0
- 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_branch_discard_tombstone.py +136 -0
- package/md_cg/test_branches.py +13 -3
- 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_chain_read_isolate.py +168 -0
- 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_device_name.py +203 -0
- package/md_cg/test_datapath_root.py +199 -199
- package/md_cg/test_emit_negtail_cache.py +156 -0
- package/md_cg/test_en_pipeline.py +22 -2
- package/md_cg/test_gain_gate.py +212 -212
- package/md_cg/test_govern_directread.py +421 -0
- 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_i32_hotcache_env_key.py +218 -0
- package/md_cg/test_identity_attribution.py +96 -15
- package/md_cg/test_index_durability.py +17 -3
- package/md_cg/test_interop.py +95 -0
- package/md_cg/test_interop_judgment.py +228 -0
- package/md_cg/test_issue39_utf8_stdio.py +273 -0
- package/md_cg/test_lifecycle.py +309 -309
- package/md_cg/test_linkref.py +306 -306
- package/md_cg/test_links_concurrent_write.py +188 -0
- 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_merge_upsert.py +168 -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_n123_derive_expiry_chain.py +205 -0
- package/md_cg/test_n130_verify_falsified_protect.py +185 -0
- package/md_cg/test_n131_merge_gate.py +205 -0
- 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_p1x_ref_root.py +160 -0
- 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 +16 -7
- package/md_cg/test_p28_refcheck.py +305 -305
- package/md_cg/test_p29_session_ingest_export.py +354 -333
- package/md_cg/test_p2_mcp.py +3 -0
- 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 +7 -1
- 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 +153 -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 +316 -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_propose_tail_index.py +157 -0
- 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_read_scope_b27.py +277 -0
- package/md_cg/test_readcache_default_on.py +168 -0
- package/md_cg/test_readcache_precise_inval.py +270 -0
- package/md_cg/test_readcache_prodpath.py +203 -0
- package/md_cg/test_reconcile_v0.py +294 -0
- package/md_cg/test_retr_gates_prodpath.py +140 -0
- package/md_cg/test_retr_s1.py +344 -340
- package/md_cg/test_retr_s1b.py +276 -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 +392 -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 +9 -3
- package/md_cg/test_retr_score_once.py +208 -0
- package/md_cg/test_review_conformance.py +367 -367
- package/md_cg/test_review_onepass.py +170 -0
- package/md_cg/test_role_views.py +354 -354
- package/md_cg/test_rrf_graph_seed_cache.py +154 -0
- package/md_cg/test_security_audit.py +155 -0
- package/md_cg/test_security_audit_b26.py +161 -0
- package/md_cg/test_security_audit_v21.py +250 -0
- package/md_cg/test_sem_noise.py +242 -242
- package/md_cg/test_semantic_canonical.py +16 -2
- package/md_cg/test_session_isolation.py +168 -0
- package/md_cg/test_snapshot_autoclose.py +187 -0
- package/md_cg/test_subproc_encoding.py +192 -192
- package/md_cg/test_sustain_mutual.py +153 -153
- package/md_cg/test_tail_watermark_race.py +208 -0
- package/md_cg/test_tasks.py +409 -409
- package/md_cg/test_tenant_env_override_warn.py +139 -0
- package/md_cg/test_tenant_registry_corrupt_warn.py +151 -0
- 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 +38 -20
- package/md_cg/test_validity_filter.py +280 -280
- package/md_cg/test_verify_answer.py +138 -138
- package/md_cg/test_verify_dirty_reconcile.py +157 -0
- 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 +6 -3
- package/md_cg/tokens.py +85 -14
- 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 +668 -667
- package/md_cg/vision_evidence.py +667 -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/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/multilang_ir.py +128 -124
- 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 +20 -8
- package/package.json +101 -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 +33 -0
- package/src/hooks.ts +38 -2
- package/src/index.ts +526 -518
- 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 +116 -29
- package/src/lib/token_store.ts +13 -3
- 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,144 +1,144 @@
|
|
|
1
|
-
# Pi 可学习优点 · 灵枢大脑改进交接文档
|
|
2
|
-
|
|
3
|
-
> 交接方:ZCode 端 · 接收方:**CodeBuddy 端**
|
|
4
|
-
> 交接时间:2026-09-15 · 依据:荣指令「整理完整的 Pi 可学习优点文档,交接 CodeBuddy 处理,避免灵枢大脑版本不一致」
|
|
5
|
-
> 素材:`agi-architectures/pi/`(浅克隆,MIT 许可,代码思想可吸收)· 三轮源码深读结论(状态管理/会话持久化/压缩、扩展机制、上下文工程、协议哲学)
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 0. 一句话交接
|
|
10
|
-
|
|
11
|
-
pi(Pi Agent Harness,105k★)把**事件溯源、显式状态机、渐进披露、可逆压缩、钩子化扩展**做到了 coding agent 领域的标杆;本文档将其七项可学习优点逐项映射到灵枢大脑(`md_cg`)的改进落点,每项带 pi 源码证据、灵枢现状基线、建议落点与验收口径。
|
|
12
|
-
|
|
13
|
-
## 1. 版本与落点纪律(⚠️ 防版本不一致,先读)
|
|
14
|
-
|
|
15
|
-
| 仓 | 角色 | 本次改动落点 |
|
|
16
|
-
|---|---|---|
|
|
17
|
-
| `dsh-memory/` | **大脑 · 唯一主线**(荣 2026-09-14 裁定:中文编译器并入大脑作核心架构) | ✅ **本文件全部改进落这里**(`md_cg/` 为主) |
|
|
18
|
-
| `AEIS/` | 身体仓:记忆真源数据(`data/mdcg/`)+ `tools/coggraph/` 可视化管线 | ❌ 不改代码;数据真源对管线**只读** |
|
|
19
|
-
| `protocol-compiler/` | 已冻结(世界模型测试地点,荣 2026-09-14 裁定) | ❌ 不动 |
|
|
20
|
-
|
|
21
|
-
- 记忆真源 = `AEIS/data/mdcg/`(11,195 节点,纯 md,主链路零 SQLite);`md_cg` 通过路径锚(`data/paths.json`)访问,**不要**在 md_cg 内硬编码本机路径(沿用 `--root`/`MDCG_ROOT`/datapath 约定)。
|
|
22
|
-
- coggraph 可视化管线(DSH→CodeBuddy 另一份交接 `AEIS/docs/知识图谱项目_交接文档_20260914.md`)与本文件**并行不冲突**:那边管可视化与语义层,本文件管写入纪律与运行时。两者都遵守「管线只读真源、产物不入库」。
|
|
23
|
-
- 改动后必须跑全量回归(`python -m md_cg.test_pXX` 形式,60+ 套件)不回退;测试只能模块方式跑,直接 `pytest md_cg/` 会崩(相对导入,已知 P2 缺陷)。
|
|
24
|
-
|
|
25
|
-
## 2. pi 素材位置(查证入口)
|
|
26
|
-
|
|
27
|
-
| 内容 | 路径(相对 `agi-architectures/pi/`) |
|
|
28
|
-
|---|---|
|
|
29
|
-
| 状态机/会话/存储 | `packages/agent/src/harness/session/`、`runtime/`、`drive/` |
|
|
30
|
-
| 压缩 | `packages/agent/src/harness/compaction/compaction.ts`(865 行) |
|
|
31
|
-
| 扩展机制 | `packages/coding-agent/docs/extensions.md`(API 全典)、`src/core/extensions/` |
|
|
32
|
-
| 上下文组装 | `packages/coding-agent/src/core/system-prompt.ts`、`skills.ts`、`tools/` |
|
|
33
|
-
| 安全立场 | `packages/coding-agent/docs/security.md` |
|
|
34
|
-
|
|
35
|
-
## 3. 可学习优点清单(按建议优先级排序)
|
|
36
|
-
|
|
37
|
-
> **完成度判据(2026-09-16 补正)**:各项的「落地状态」是**手工标注、无机械守卫**,历史上多次滞后于代码(① ② ④ ⑥ 已入库而本文件长期漏标)。**判断某项是否完成,请以认知图落地记录 + `git log` 提交取证为准**,本文件的标注只作索引——与「手写行号必腐化」同构:无守卫的手工标注必漂移。此纪律已由实证触发:本轮曾据「本文件未标落地状态」误判 ① 未落地,被使用者纠正。
|
|
38
|
-
|
|
39
|
-
### ④★P0 记忆演化 fork(最高价值——条件论反事实的实验场)
|
|
40
|
-
|
|
41
|
-
- **pi 机制**:会话是 entry 树,任意历史节点可 fork;两种 scope(`branch` 只拷贝某分支路径 / `tree` 拷全树),运行态一律不复制(`session/types.ts:562-602`、`jsonl/repo.ts:146-196`、`fork-policy.ts:56-63`);被放弃旁支由 branch_summary 归档(2048 token 定长摘要,`branch-summarization.ts:87-118,274`),切回时提供上下文。
|
|
42
|
-
- **灵枢现状**:认知图是**单一演化线**(`_evolution/ledger.md` 2,650 行账本),没有假设分支。条件论的「负条件/反事实显式化」在记忆层没有实验场。
|
|
43
|
-
- **建议落点**:`md_cg/mdcg.py` 新增 fork 层(节点 frontmatter 加 `branch_id`/`branched_from`;派生索引记分支 tip),`stg.py` 支持分支时间线;新增 `branch_summary` 节点类型(复用 `NEG_MEMORY_MARKS` 式的必填 MARKS 模式)。语义:大规模改写/遗忘策略变更前先 fork 推演,验证通过合并回主支(合并=按 `derived_from` 溯源回写),失败归档 branch_summary 教训节点。
|
|
44
|
-
- **验收**:fork→改写→合并后主支节点 `derived_from` 链完整可回溯;放弃分支不污染主支检索(召回主支时 branch 节点零命中)。
|
|
45
|
-
- **落地状态(2026-09-16 · CodeBuddy 端):✅ 已落地**(commit `419305c`)。落点 `md_cg/branches.py`(新,分支真源)+ `md_cg/test_branches.py`(新)+ `mdcg.py`/`mdcos.py`/`mcp_server.py` 接线。语义:`BRANCH_MARKS` 教训必填 + 命名守卫;`fork`(副本 nid=`<主支>@<bid>`,layer/tags/importance/cs 继承旧 fm,`derived_from=[主支]`/`relation=split_from`,fm 落 `branch_id`/`branched_from`/`branch_note`);`rewrite` 为**分支改写的唯一正路**——关键机制发现:`add` 是**全量重建 fm**(非增量更新),裸 add 改写分支节点不重传 `branch_id` 会让副本在索引退化成主支、实验内容泄漏进主支检索,故 `rewrite` 强制归属/血缘从旧 fm 继承、同名 extra 键剥离、override 快照留痕;`merge` 分支级合并(逐节点按 `branched_from` 溯源回写,主支缺失 `skipped` 不炸);`discard`(require_admin→MARKS 校验→`branch_summary_<bid>` 教训节点入 knowledge→文件 `os.replace` 移冷区 `_branches/<bid>/`→索引摘除→audit);`list_branches`。检索**一处过滤全链路生效**(`mdcg.search/_stage/_scan_nodes` 与 `mdcos._candidates` 加 `branch=None`:分支节点仅主支+本 branch 可见,与 session 过滤正交);`mdcos` insight 增六分支 act。
|
|
46
|
-
**偏离建议**:实现落**新模块** `branches.py` 而非文档建议的内联进 `mdcg.py`(`stg.py` 分支时间线未做)。**边界(如实)**:分支节点**不出库**(冷区 `_branches/` 在 root 下 LAYERS 外、索引隐身——永不删除但检索不可见);`merge` 是分支级而非节点级。验收:`test_branches` **41/41** 全绿(含主支零污染,断言口径=分支 nid 不在命中集而非结果为空)、回归 10 套件 292 断言全绿、cogmap check 绿、lint 0。
|
|
47
|
-
|
|
48
|
-
### ⑥★P0 写入路径钩子化(闸门即扩展)
|
|
49
|
-
|
|
50
|
-
- **pi 机制**:全生命周期事件总线,每个钩子可改变行为——`before_agent_start` 改提示词、`context` 每次 LLM 调用前改消息、`tool_call` 阻断/改参、`session_before_compact` 整体替换压缩(`docs/extensions.md:277-349,452-475,780-848`)。闸门/路径保护/审批全是以扩展形态叠加的,核心没有硬编码策略。
|
|
51
|
-
- **灵枢现状**:写入侧闸门族已经是管线形态——role 作用域闸(`mcp_server.py:1434`)→ 冲突闸(:1656)→ 审核闸(:1707)→ 校验闸(:1715)→ 主动遗忘闸门(`forgetting.assess` 三问四态)→ writelimit(写侧限流+同构聚合,`writelimit.py`)→ canonical 语义归一(`semantic/canonical.py`)。**次序与启停硬编码在 write 路径里**,加一道闸要改核心代码。
|
|
52
|
-
- **建议落点**:`md_cg/mcp_server.py` 写路径重构为拦截器链:`before_write(ctx) -> verdict`(可 ACCEPT/MERGE/DROP/DEFER/改写)与 `after_write(ctx)` 两个挂载点,现有六道闸全部改注册为拦截器(行为不变,回归护航),token 角色校验保留在链首**不可卸载**(见 §4 反面清单——不学 pi 的全权信任)。
|
|
53
|
-
- **验收**:全部既有写入测试(`test_md_writepath.py`/`test_writelimit.py`/`test_verify_answer.py` 等)零改动通过;新增/移除一个拦截器不改核心文件。
|
|
54
|
-
- **落地状态(2026-09-15 · CodeBuddy 端):✅ 已落地**(commit `419305c`)。落点 `md_cg/writepipe.py`(新,拦截器链真源):write 分支原 128 行硬编码流程重构为链式——`register_before`/`unregister` 即插即拔、**链尾 executor 常驻**(保证「链上无拦截器也能落盘」)、`after` 观测者、REWRITE 语义(拦截器可改写内容后交下游);`mcp_server.py` 的 op=write 收敛为**一行分发**。
|
|
55
|
-
**权限闸保持库层不可绕过**(刻意的不对称):「卸掉链上全部拦截器」≠ 取得写权限,token 角色校验不因闸门可组合化而下放——对齐 §4 反面清单「不学 pi 的全权信任」。验收:`test_writepipe` **18/18** 全绿 + 全部既有写入测试**零改动通过**(writepath 52 / writelimit 全过 / verify_answer 31 / identity 14 / conformance 26 / p2_mcp 63)。
|
|
56
|
-
|
|
57
|
-
### ①P1 上下文经济学:工具面与纪律的分层驻留
|
|
58
|
-
|
|
59
|
-
- **pi 机制**:system prompt 约 150 词骨架(`system-prompt.ts:127-144`);工具只以**一行 snippet** 常驻系统提示,完整描述只进 API tools 字段(`system-prompt.ts:82-84`);8 个内建工具默认只激活 4 个(`agent-session.ts:2831-2834`);skills 只驻留「name+description+path」三元组 XML 索引,正文由 agent 任务匹配时自己 read(`skills.ts:355-383`)。
|
|
60
|
-
- **灵枢现状**:MCP 工具(cg/stg)的 op 参数空间全量 schema 常驻;16 条工作纪律全文常驻 AGENTS.md。
|
|
61
|
-
- **建议落点**:`md_cg/mcp_server.py` 工具 schema 瘦身(一行职责+`docs/工具详细说明.md` 按需引用);纪律/技能分层(索引常驻、正文文件化按需读);评估工具子集按 profile 启停(对齐已有 `tools: 'core'|'brain'|'all'` 三档,做到档内再分层)。
|
|
62
|
-
- **验收**:瘦身前后工具描述 token 数对比产物(目标 ≥50% 削减);检索/写入功能回归零变化。
|
|
63
|
-
- **落地状态(2026-09-16 · CodeBuddy 端):✅ 已落地**(commit `c789e95`,同批含「索引幽灵条目根因修复」)。落点 `md_cg/tool_face.py`(新,**投影真源**)+ `md_cg/test_tool_face.py`(新)+ `mcp_server.tools_for_surface` 返回 slim 投影(开关 `MDCG_TOOL_FACE=full` 回到真源)+ cg 新增 **op=help**(`tokens.ALL_OPS` 同步登记)。
|
|
64
|
-
**信息守恒的结构性保证(本项能减 token 而不减能力的原因)**:被投影掉的原文**不复制、不搬运**,`cg(op=help, query=…)` **从真源即时渲染取回**——不存在第二真源、零漂移面。这是「瘦身」与「信息丢失」的分界线。**偏离建议**:文档建议的「纪律/技能分层驻留」「按 profile 分层启停」两项本轮**未做**(本轮只落工具面投影层)。**顺带修正**:补齐 6 个「op 枚举里有、说明段缺失」的真源文档段(session/ingest/export/maintain/consolidate/insight)——分层后这些会真丢能力,属实测发现的既有缺口。
|
|
65
|
-
验收:注入面 kernel **20878→8330 字符(−60.10%)**、full31 20347→15221(−25.19%)、all 33 工具 41225→23507(−42.98%);`test_tool_face` **23 断言**全绿(削减≥50% + 工具名/参数名/顺序/required/类型/枚举值集**逐位不变** + 外置参数经 op=help **逐字**取回 + op 枚举每项都有说明段 + 开关与幂等 + 真源 schema 零改动);MCP 回归 63/63;72 套件全量回归除 2 个 pre-existing 失败外全绿。
|
|
66
|
-
|
|
67
|
-
### ②P1 记忆节点显式生命周期状态机
|
|
68
|
-
|
|
69
|
-
- **pi 机制**:运行操作 = 13 叶子显式状态机(`session/types.ts:315-329`),drive 循环按 `at` 分发;一轮无任何进展抛 `SessionInvariantError`(`drive.ts:101-104`)——非法迁移在结构上不可能。
|
|
70
|
-
- **灵枢现状**:节点生命周期状态**散落**:writelimit 的 `tidy:converged` 标记、forgetting 的 importance 降权、`_evolution/ledger.md` 账本、`protect` 的 protected 标记——没有一个统一状态字段,迁移合法性无校验。
|
|
71
|
-
- **建议落点**:`nodefile.py` frontmatter 新增 `state` 字段(建议集:`active → converged → demoted → archived`,受保护节点单独豁免),`mdcg.py` 写入时校验迁移合法性(非法迁移拒绝,负路由);存量节点默认 `active`,一次性回填。
|
|
72
|
-
- **验收**:非法迁移用例被拒且回归零变化;`_index.json` 索引快照带 state(免读文件可查)。
|
|
73
|
-
- **落地状态(2026-09-16 · CodeBuddy 端):✅ 已落地**(commit `2ebf8f0`)。落点 `md_cg/lifecycle.py`(新,**状态机唯一真源**)+ `md_cg/test_lifecycle.py`(新)。`STATES` = `active → converged → demoted → archived`;`TRANSITIONS` 合法迁移表(逐级降级/回升,**拒跳级**);`check()` 纯函数裁决(`code ∈ ok/noop/unknown_state/illegal_transition/protected`);`stamp()` 就地推进(复用供需等字段的**同批落盘收口点**,免重复写盘);`set_state()` 单点推进 + `_lifecycle.jsonl` 审计;`backfill()` 存量回填(dry-run/apply 幂等)。
|
|
74
|
-
**偏离建议(字段名,重要)**:新增字段取 **`lifecycle_state`** 而非文档建议的 `state`——`state` 已被认知图**裁决四态**(ACCEPT/REJECT/DEFER/BLINDSPOT)占用,复用会让「资格裁决态」与「生命周期态」两个正交轴撞进同一字段(真源节点 fm 现同时带 `state` 与 `lifecycle_state`,可实证两轴并置)。**边界(如实)**:本项落地**不含** Ghidra G3 所设想的 `unanalyzed` 取值——状态集仅四项,分析覆盖度不进生命周期轴(G3 改由 conformance 派生判据承载,见 ⑤ 落地状态)。
|
|
75
|
-
|
|
76
|
-
### ③P2 写入两段式提交(intent/结果对账)
|
|
77
|
-
|
|
78
|
-
- **pi 机制**:工具调用先持久化 intent+参数(status=effect_pending)再执行,完成后原子写结果;崩溃后 `replay:"safe"` 工具重放,否则合成 interrupted 结果——消息永不缺失(`drive/tools.ts:187-227,515-540`)。
|
|
79
|
-
- **灵枢现状**:`_audit.jsonl` 已是追加式操作日志(coggraph 会话串链的数据源),但只有 op=add 事后记录,**没有写入意图的先行持久化**,崩溃时无法区分「写了没落盘」。
|
|
80
|
-
- **建议落点**:`md_cg` 写路径在闸门通过后先落 `_audit.jsonl` intent 事件(含 content_hash),写入完成落 outcome 事件;启动时对账(有 intent 无 outcome 的写入做 content_hash 校验补账)。工具幂等声明可后置(md_cg 写入天然可重放:同 hash 幂等)。
|
|
81
|
-
- **验收**:kill -9 模拟半途写入后重启,对账报告正确补账/标记;`test_lock.py` 回归通过。
|
|
82
|
-
- **落地状态(2026-09-16 · CodeBuddy 端):✅ 已落地**。`md_cg/twophase.py`(新,两段式真源)+ 两条真实落盘路径接线(`writepipe.py`:链尾执行器 / `_gate_gated` 替代落盘路径各自 begin→commit)+ 库层门面(`mdcg.reconcile_writes` / `pending_writes`)+ MCP 启动自动对账(`mcp_server.py`,失败不阻塞启动但必须 stderr 上报)。**偏离建议**:账本落**独立文件** `_write_2pc.jsonl` 而非本文档建议的 `_audit.jsonl`——理由见 `twophase.py` docstring(`_audit.jsonl` 已被当作单一语义流消费,混入三类事件会扰动既有断言口径;本仓已有 `protect.py/_protected_audit.jsonl` 独立审计惯例)。**边界(如实)**:对账只做「补账 / 如实标记」,**不重放写入**;`append_jsonl` 在 Windows 非原子(对账是增益、不是「保证不丢」);`_gate_audit` 的 REJECT 负记忆与各闸 propose(无落盘动作)不在覆盖面内。验收:`python -m md_cg.test_twophase` 10 组 35 项全绿 + 全量回归零新增失败。
|
|
83
|
-
|
|
84
|
-
### ⑤P2 conformance:数据健康不变量的周期巡检
|
|
85
|
-
|
|
86
|
-
- **pi 机制**:`session/testing/conformance/`(storage 920 行 + session-repo 1185 行)把存储承诺写成断言:事务原子提交、seq 严格递增、非法写被拒且状态完全不变、close/reopen 状态保持、重放确定性。
|
|
87
|
-
- **灵枢现状**:机制测试 60+ 套件很强;但**数据健康不变量**没有周期断言。2026-09-15 审计(灵枢 node_26b0973a)发现的存量问题:knowledge 层索引节点混层 57.9%、role 存量 99.99% 为空、evidence_count 仅 6 条、精确重复 90 条、闸门 DROP/DEFER=0、召回率 7%——全靠人肉审计发现。
|
|
88
|
-
- **建议落点**:`md_cg/census.py` 产品化:把审计脚本(临时位置 `Temp/audit_write_effect.py`,可向 ZCode 端索取)改写为断言集(混层比例阈值/重复度阈值/字段覆盖率下限/闸门四态分布),挂 `sustain` 周期巡检;超阈值告警不自动改数据(治理另走 tidy/merge,永不删除)。
|
|
89
|
-
- **验收**:census 断言集可一键复跑;对当前真源产出首份基线报告(以上数字应复现)。
|
|
90
|
-
- **落地状态(2026-09-16 · CodeBuddy 端):✅ 已落地**。`md_cg/conformance.py`(新,断言集真源)+ `md_cg/test_conformance.py`(53 断言自测)+ `sustain._tick_conformance` 挂点(复用 6h tidy 节奏,不新开周期)+ `.github/workflows/conformance-check.yml`。
|
|
91
|
-
**偏离建议**:①**不改造 `census.py`** 而新建 `conformance.py`——census 是**节点清单工具**(`by_keys`/`report`,答「有多少、在哪」),conformance 是**不变量断言集**(答「是否失真」),职责不同;且 census 已有 `test_census_prune` 既有口径,改其语义会牵连回归。②G3 `unanalyzed` 用**派生判据**(`evidence_count==0 ∧ basis 空 ∧ state 空`)而非字段级占位——生命周期是单向降级轴、与分析覆盖正交,塞同字段即破坏正交性;且 `verification_basis` 已有 `other` 逃逸口(真源 273 条在用),「分析过但无法归类」有归宿。③基线报告落**真源库同级私有目录**(`AEIS/data/conformance_baseline_mdcg.json`)、不入公开仓——基线是环境特定运维产物,随库增长变动,入库即制造虚假同步义务。
|
|
92
|
-
**口径更正(关键,9-15 审计数字的复现前提)**:审计的「role 99.99% 为空」「evidence_count 仅 6 条」是 **knowledge 层分母**;全库分母会把 99.991% 的空缺摊薄成「role 2.13%、evidence 12 条」,把严重空缺伪装成「还行」。故断言集**判据一律取 knowledge 层口径**、全库口径仅作对照。据此:role[knowledge]=0.009%(↔ 99.991% 空,与审计逐位吻合)、evidence[knowledge]=0.054%(↔ knowledge 层 6 条,吻合)。
|
|
93
|
-
**首份基线(2026-09-16,真源 nodes=11666)**:混层 6505/11113=**58.5%**(审计 57.9%,差=期间库增长);`dir_mismatch=0`、`path_missing=0`、悬空边 0(不变量全绿);重复 content_hash **93 组/186 节点**(审计 90 条);闸门 decisions **142**(accept 115 / reject 21 / edit 6)、inbox_pending 0;触达率 **8.7%**(审计 7%;源为滚动追加日志,差异未逐条复算,故**不纳入基线不劣化比对**——日志轮转会误报);G3 unanalyzed 派生 **4619(39.6%)**。
|
|
94
|
-
**G1 新发现(正交性审计的增量产出)**:①边类型空间**不封闭**——`above/counterpart/generalizes/instance_of` **未声明已用**(读侧退化 `chain.DEFAULT_EDGE_WEIGHT=0.50`,不炸但权重失真)、另有 8 个声明未用(`applies_to/parent_of/spatial_*` 等);②**96.9%(5543/5719)的边用 legacy `type` 键**而非规范 `relation_type`——取证更正:`subgraph.children_index:122`/`parents_index:162` 已含 `or e.get("type")` 容错,**读侧不忽略**(`normalize_edge` docstring 称「会被静默忽略」属**文档滞后于代码**,已登记 `DOC_CODE_DRIFT`);故该项判 **WARN 非 FAIL**(不冒充硬失败),仅以「不劣化」为判据;③`role` 与 `tag_prefix` **无模块级真源**(自由文本/命名约定)→ 标 `None`→BLINDSPOT,不冒充封闭;④`hierarchical` 同名反义(md_cg=本节点是子 / 白箱源库=source 是父)已登记为方向口径分歧;`part_of/parent_of/contains` 已核对**逐字对称、无分歧**(防止被反复误报)。
|
|
95
|
-
**验收证据**:`python -m md_cg.test_conformance` **53/53 全绿**(对照 test_p27【9】教训:自测**自备 tempfile 合成库**,外部 clone 下集成段自动 SKIP,不依赖仓外目录);**回归 16 套件零失败**(conformance/census_prune/p14_sustain/sustain_mutual/p30/p41/p2_mcp 64/cond_match 17/p33 58/p36 34/p37 42/sem_noise 7/writepipe 18/branches 41/identity 14/autonomy 10,墙钟 3.6s);lint 0。
|
|
96
|
-
|
|
97
|
-
### ⑦P3 上下文组装工程细节(零散但便宜)
|
|
98
|
-
|
|
99
|
-
pi 的细节清单(出处省略,均可直接对照源码):错误/中止的 assistant 消息不入上下文;read 截断 2000 行/50KB 附续读提示;bash 大输出全量落盘临时文件+消息保尾部;图片自动缩 2000px、token 估算按 4800 字符/张;AGENTS.md 祖先链发现+worktree 防重复;**system prompt 不持久化,会话恢复时实时重建**(配置变更自动反映到旧会话)。
|
|
100
|
-
灵枢对应落点:`stg.py`/recall 组装路径与 `compact_context`;「错误消息不入上下文」与「大输出落盘保尾」两条最值得先做。
|
|
101
|
-
- **落地状态(2026-09-16 · CodeBuddy 端):✅ 六条全落地 + 一条取证后判定「结构性已满足」**(改动面:`hive/exec.py`、`hive/test_exec_tools.py`、`md_cg/mcp_server.py`、`md_cg/test_read_clip.py`、`scripts/render_discipline.py`、`scripts/verify_discipline.py`、`scripts/test_injection_chain.py`、`docs/discipline/harnesses.yaml`、`.github/workflows/discipline-check.yml`)。
|
|
102
|
-
| pi 细节 | 灵枢落点 | 与 pi 的偏离 |
|
|
103
|
-
|---|---|---|
|
|
104
|
-
| 错误/中止 assistant 消息不入上下文 | `exec.py` 空轮护栏:`content` 与 `tool_calls` **双空** → 记日志 + `progress(error)` + `error` 终态,不再冒充有效终答(旧行为曾产出 `ok=true` + 空 content 的假成功) | 判据取「双空」而非「有 error 字段」——错误轮本身可能带有效 content(工具失败但模型给了说明),一律丢弃会**丢真信息** |
|
|
105
|
-
| read 截断 2000 行/50KB 附续读提示 | `mcp_server.py` `_clip_text` 双阈值(`READ_MAX_LINES`/`READ_MAX_BYTES`)+ `offset`/`next_offset` 续读;截断时**显式**返回 `truncated/total_lines/total_bytes/note`,未截断路径零新增键(旧调用方无感) | 阈值同 pi;**不静默**——「截了多少、从哪续」是返回体必带字段,不靠模型猜 |
|
|
106
|
-
| bash 大输出全量落盘 + 消息保尾 | `exec.py` 工具回喂面:全量落 `tool_<i>_<j>.json`,回喂消息保**头+尾**并插「中间省略」提示(对齐 `_dump_step`+`_render` 既有形态) | 保留头部(错误常在首屏),pi 只保尾 |
|
|
107
|
-
| 图片自动缩 2000px、4800 字符/张 | `exec.py` context_files 面:零依赖探测尺寸(PNG IHDR / JPEG SOF,不读像素内容);超阈值按需处理并反馈「是否已压缩」;token 折算 `IMAGE_CHARS_PER=4800` | **不主动缩图**(处置由调用方决定、结果如实回报),不做隐式重编码 |
|
|
108
|
-
| AGENTS.md 祖先链发现 + worktree 防重复 | `render_discipline.py`(`_walk_ancestors` + `discover_injection_chain`)/`verify_discipline.py`(`check_injection_matrix`)/`harnesses.yaml`(`injection:` 声明段 + 每 target `slot:`) | 见下方「⑤ 关键取舍」 |
|
|
109
|
-
| system prompt 不持久化、恢复时重建 | `exec.py` `resolve_system_prompt`:`system_prompt_from` 声明后**每次执行重建**(rust 侧 claimed 重投的崩溃恢复窗口也覆盖),缺文件 **fail-closed**(明确失败优于静默沿用旧提示词) | **取证结论:默认路径结构性已满足**——hive 每次 spawn 由调用方重建 `system_prompt`,`spec.json` 是**任务证据**而非 pi 所指「持久化会话状态」,故不存在 pi 那个缺陷本体;仅补一条显式重建通道,未做无靶改动 |
|
|
110
|
-
**⑤ 关键取舍(防重复的真实落点)**:去重落在**目录层**——走祖先链按物理目录身份(realpath+normcase)折叠别名拼写,使 worktree/junction/大小写别名下同一份件只查一次。**反面已实证**:按「git 仓身份 + 仓内相对路径」做键**会错**——worktree 与其主仓的 `AGENTS.md` 是同相对路径但**物理不同的两个文件**(各自 checkout 一份),折叠即把真实重复注入源静默藏起;故此类同仓不同物理文件只**标注**(`wt_dups`)不折叠。判据分两档:**硬失败**(`path_dup` 同物理文件被两个 target 写;`root_shadow` 仓根遮蔽本地私有件 → 后者使本地纪律注入失效)与**发现面报告**(祖先链同槽位命中:仓内判定同源指纹、仓外属宿主侧事实,本仓不裁决但不得假定不存在);每个 file target 必须声明 `slot` 且产物名在其槽位清单内(否则遮蔽判定失真),有守卫。
|
|
111
|
-
**验收证据**:`hive/test_exec_tools.py` **47/47**、`md_cg/test_read_clip.py` **14/14**、`scripts/test_injection_chain.py` **35/35**(含 junction 别名折叠实证、`path_dup`/`root_shadow` 两硬判据的**正向与恢复双向**断言、防重复反面对照);`scripts/run_tests.py` 新增 `scripts` 组(scripts/ 非包 → 直跑);`verify_discipline.py` 注入面全绿;CI `discipline-check.yml` 增挂注入面自检步(Linux 下 junction 项自动 SKIP,属环境差异非失败)。
|
|
112
|
-
|
|
113
|
-
## 4. 反面清单(不学什么,与灵枢哲学冲突)
|
|
114
|
-
|
|
115
|
-
| pi 做法 | 为什么不学 | 灵枢对应原则 |
|
|
116
|
-
|---|---|---|
|
|
117
|
-
| 无 sandbox/无审批,扩展以用户全权运行(security.md:35 自述有意设计,隔离外包 OS/容器) | 信任必须**结构强制且可复算**,不能靠文档告诫+一道 project trust | 位置效应、写权限互斥、凭据六角色(designer/reflection/verifier/recorder/output/sustain/guest) |
|
|
118
|
-
| No MCP 立场(CLI+README 替代协议) | 灵枢保持双形态接口:MCP 服务 MCP 阵营(资格闸服务端强制),CLI 形态补「md 目录直改设防」后再开;协议哲学见荣 2026-09-15 纲领(唯一协议=智能论,字节层放开) | 智能论=唯一行为协议 |
|
|
119
|
-
| 子进程模型(OASIS 式批处理/每工具一进程) | md_cg 主链路常驻+Rust `--serve` 检索形态已占优 | 记忆真源唯一+多端共享 |
|
|
120
|
-
| 会话即全部记忆(无跨会话沉淀) | pi 的 session 文件就是它的全部记忆;灵枢的认知图蒸馏(16 条闭环)是**灵枢独有的维度**,绝不为对齐 pi 而弱化 | 记忆闭环(第 16 条) |
|
|
121
|
-
|
|
122
|
-
## 5. 与既有工作线的边界(防撞车)
|
|
123
|
-
|
|
124
|
-
- **writelimit.py(已落地 2026-09-15)**:contextual 层写侧限流+同构聚合+读侧 tidy——不要重做;③/⑤ 与它互补(两段式对账、census 断言)。
|
|
125
|
-
- **coggraph 交接(DSH→CodeBuddy,另一份文档)**:可视化管线/语义层/命名治理归那边;本文件的 ①④⑥ 改 `md_cg` 核心不碰 `tools/coggraph/`。
|
|
126
|
-
- **审计遗留五项**(role 回填/evidence 补齐/精确重复 90/闸门加严/召回 7%):⑤ 的 census 会持续暴露它们;修复动作(回填/合并)另立子步,先断言后治理。
|
|
127
|
-
|
|
128
|
-
## 6. 建议施工顺序
|
|
129
|
-
|
|
130
|
-
1. **⑥ 钩子化**(先改结构,后续一切闸门策略都挂上去)→ 2. **④ fork**(条件论落地最大增量)→ 3. **① 描述瘦身**(立即降 token,独立可并行)→ 4. **② 状态机** → 5. **③ 两段式** → 6. **⑤ census** → 7. **⑦ 细节**。
|
|
131
|
-
每步:实现 → 全量回归 → 灵枢归档(16 条四要素)→ 看板/文档同步。
|
|
132
|
-
|
|
133
|
-
> **进度(2026-09-16 取证核)**:第 **1–6 步均已落地**——⑥④ 见 `419305c`、③ 见 `4201238`、① 见 `c789e95`、② 见 `2ebf8f0`、⑤ 见 `8fffc24`;**仅剩第 7 步 ⑦ 未开工**。落点与验收数字见 §3 各项「落地状态」。
|
|
134
|
-
|
|
135
|
-
## 7. 快速上手(CodeBuddy 5 分钟)
|
|
136
|
-
|
|
137
|
-
```bash
|
|
138
|
-
# 1. 读本文档 §1 落点纪律 + §4 反面清单
|
|
139
|
-
# 2. 查证 pi 源码(任选两条路径核对本文档行号引用):
|
|
140
|
-
# agi-architectures/pi/packages/agent/src/harness/session/types.ts:315
|
|
141
|
-
# agi-architectures/pi/packages/coding-agent/docs/extensions.md:277
|
|
142
|
-
# 3. 确认灵枢基线:python -m md_cg.test_p0(及全量 test_pXX 回归绿)
|
|
143
|
-
# 4. §6 第 1–6 步(⑥④①②③⑤)已落地、仅 ⑦ 未开工——续做前先按 §3「完成度判据」取证
|
|
144
|
-
```
|
|
1
|
+
# Pi 可学习优点 · 灵枢大脑改进交接文档
|
|
2
|
+
|
|
3
|
+
> 交接方:ZCode 端 · 接收方:**CodeBuddy 端**
|
|
4
|
+
> 交接时间:2026-09-15 · 依据:荣指令「整理完整的 Pi 可学习优点文档,交接 CodeBuddy 处理,避免灵枢大脑版本不一致」
|
|
5
|
+
> 素材:`agi-architectures/pi/`(浅克隆,MIT 许可,代码思想可吸收)· 三轮源码深读结论(状态管理/会话持久化/压缩、扩展机制、上下文工程、协议哲学)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 0. 一句话交接
|
|
10
|
+
|
|
11
|
+
pi(Pi Agent Harness,105k★)把**事件溯源、显式状态机、渐进披露、可逆压缩、钩子化扩展**做到了 coding agent 领域的标杆;本文档将其七项可学习优点逐项映射到灵枢大脑(`md_cg`)的改进落点,每项带 pi 源码证据、灵枢现状基线、建议落点与验收口径。
|
|
12
|
+
|
|
13
|
+
## 1. 版本与落点纪律(⚠️ 防版本不一致,先读)
|
|
14
|
+
|
|
15
|
+
| 仓 | 角色 | 本次改动落点 |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| `dsh-memory/` | **大脑 · 唯一主线**(荣 2026-09-14 裁定:中文编译器并入大脑作核心架构) | ✅ **本文件全部改进落这里**(`md_cg/` 为主) |
|
|
18
|
+
| `AEIS/` | 身体仓:记忆真源数据(`data/mdcg/`)+ `tools/coggraph/` 可视化管线 | ❌ 不改代码;数据真源对管线**只读** |
|
|
19
|
+
| `protocol-compiler/` | 已冻结(世界模型测试地点,荣 2026-09-14 裁定) | ❌ 不动 |
|
|
20
|
+
|
|
21
|
+
- 记忆真源 = `AEIS/data/mdcg/`(11,195 节点,纯 md,主链路零 SQLite);`md_cg` 通过路径锚(`data/paths.json`)访问,**不要**在 md_cg 内硬编码本机路径(沿用 `--root`/`MDCG_ROOT`/datapath 约定)。
|
|
22
|
+
- coggraph 可视化管线(DSH→CodeBuddy 另一份交接 `AEIS/docs/知识图谱项目_交接文档_20260914.md`)与本文件**并行不冲突**:那边管可视化与语义层,本文件管写入纪律与运行时。两者都遵守「管线只读真源、产物不入库」。
|
|
23
|
+
- 改动后必须跑全量回归(`python -m md_cg.test_pXX` 形式,60+ 套件)不回退;测试只能模块方式跑,直接 `pytest md_cg/` 会崩(相对导入,已知 P2 缺陷)。
|
|
24
|
+
|
|
25
|
+
## 2. pi 素材位置(查证入口)
|
|
26
|
+
|
|
27
|
+
| 内容 | 路径(相对 `agi-architectures/pi/`) |
|
|
28
|
+
|---|---|
|
|
29
|
+
| 状态机/会话/存储 | `packages/agent/src/harness/session/`、`runtime/`、`drive/` |
|
|
30
|
+
| 压缩 | `packages/agent/src/harness/compaction/compaction.ts`(865 行) |
|
|
31
|
+
| 扩展机制 | `packages/coding-agent/docs/extensions.md`(API 全典)、`src/core/extensions/` |
|
|
32
|
+
| 上下文组装 | `packages/coding-agent/src/core/system-prompt.ts`、`skills.ts`、`tools/` |
|
|
33
|
+
| 安全立场 | `packages/coding-agent/docs/security.md` |
|
|
34
|
+
|
|
35
|
+
## 3. 可学习优点清单(按建议优先级排序)
|
|
36
|
+
|
|
37
|
+
> **完成度判据(2026-09-16 补正)**:各项的「落地状态」是**手工标注、无机械守卫**,历史上多次滞后于代码(① ② ④ ⑥ 已入库而本文件长期漏标)。**判断某项是否完成,请以认知图落地记录 + `git log` 提交取证为准**,本文件的标注只作索引——与「手写行号必腐化」同构:无守卫的手工标注必漂移。此纪律已由实证触发:本轮曾据「本文件未标落地状态」误判 ① 未落地,被使用者纠正。
|
|
38
|
+
|
|
39
|
+
### ④★P0 记忆演化 fork(最高价值——条件论反事实的实验场)
|
|
40
|
+
|
|
41
|
+
- **pi 机制**:会话是 entry 树,任意历史节点可 fork;两种 scope(`branch` 只拷贝某分支路径 / `tree` 拷全树),运行态一律不复制(`session/types.ts:562-602`、`jsonl/repo.ts:146-196`、`fork-policy.ts:56-63`);被放弃旁支由 branch_summary 归档(2048 token 定长摘要,`branch-summarization.ts:87-118,274`),切回时提供上下文。
|
|
42
|
+
- **灵枢现状**:认知图是**单一演化线**(`_evolution/ledger.md` 2,650 行账本),没有假设分支。条件论的「负条件/反事实显式化」在记忆层没有实验场。
|
|
43
|
+
- **建议落点**:`md_cg/mdcg.py` 新增 fork 层(节点 frontmatter 加 `branch_id`/`branched_from`;派生索引记分支 tip),`stg.py` 支持分支时间线;新增 `branch_summary` 节点类型(复用 `NEG_MEMORY_MARKS` 式的必填 MARKS 模式)。语义:大规模改写/遗忘策略变更前先 fork 推演,验证通过合并回主支(合并=按 `derived_from` 溯源回写),失败归档 branch_summary 教训节点。
|
|
44
|
+
- **验收**:fork→改写→合并后主支节点 `derived_from` 链完整可回溯;放弃分支不污染主支检索(召回主支时 branch 节点零命中)。
|
|
45
|
+
- **落地状态(2026-09-16 · CodeBuddy 端):✅ 已落地**(commit `419305c`)。落点 `md_cg/branches.py`(新,分支真源)+ `md_cg/test_branches.py`(新)+ `mdcg.py`/`mdcos.py`/`mcp_server.py` 接线。语义:`BRANCH_MARKS` 教训必填 + 命名守卫;`fork`(副本 nid=`<主支>@<bid>`,layer/tags/importance/cs 继承旧 fm,`derived_from=[主支]`/`relation=split_from`,fm 落 `branch_id`/`branched_from`/`branch_note`);`rewrite` 为**分支改写的唯一正路**——关键机制发现:`add` 是**全量重建 fm**(非增量更新),裸 add 改写分支节点不重传 `branch_id` 会让副本在索引退化成主支、实验内容泄漏进主支检索,故 `rewrite` 强制归属/血缘从旧 fm 继承、同名 extra 键剥离、override 快照留痕;`merge` 分支级合并(逐节点按 `branched_from` 溯源回写,主支缺失 `skipped` 不炸);`discard`(require_admin→MARKS 校验→`branch_summary_<bid>` 教训节点入 knowledge→文件 `os.replace` 移冷区 `_branches/<bid>/`→索引摘除→audit);`list_branches`。检索**一处过滤全链路生效**(`mdcg.search/_stage/_scan_nodes` 与 `mdcos._candidates` 加 `branch=None`:分支节点仅主支+本 branch 可见,与 session 过滤正交);`mdcos` insight 增六分支 act。
|
|
46
|
+
**偏离建议**:实现落**新模块** `branches.py` 而非文档建议的内联进 `mdcg.py`(`stg.py` 分支时间线未做)。**边界(如实)**:分支节点**不出库**(冷区 `_branches/` 在 root 下 LAYERS 外、索引隐身——永不删除但检索不可见);`merge` 是分支级而非节点级。验收:`test_branches` **41/41** 全绿(含主支零污染,断言口径=分支 nid 不在命中集而非结果为空)、回归 10 套件 292 断言全绿、cogmap check 绿、lint 0。
|
|
47
|
+
|
|
48
|
+
### ⑥★P0 写入路径钩子化(闸门即扩展)
|
|
49
|
+
|
|
50
|
+
- **pi 机制**:全生命周期事件总线,每个钩子可改变行为——`before_agent_start` 改提示词、`context` 每次 LLM 调用前改消息、`tool_call` 阻断/改参、`session_before_compact` 整体替换压缩(`docs/extensions.md:277-349,452-475,780-848`)。闸门/路径保护/审批全是以扩展形态叠加的,核心没有硬编码策略。
|
|
51
|
+
- **灵枢现状**:写入侧闸门族已经是管线形态——role 作用域闸(`mcp_server.py:1434`)→ 冲突闸(:1656)→ 审核闸(:1707)→ 校验闸(:1715)→ 主动遗忘闸门(`forgetting.assess` 三问四态)→ writelimit(写侧限流+同构聚合,`writelimit.py`)→ canonical 语义归一(`semantic/canonical.py`)。**次序与启停硬编码在 write 路径里**,加一道闸要改核心代码。
|
|
52
|
+
- **建议落点**:`md_cg/mcp_server.py` 写路径重构为拦截器链:`before_write(ctx) -> verdict`(可 ACCEPT/MERGE/DROP/DEFER/改写)与 `after_write(ctx)` 两个挂载点,现有六道闸全部改注册为拦截器(行为不变,回归护航),token 角色校验保留在链首**不可卸载**(见 §4 反面清单——不学 pi 的全权信任)。
|
|
53
|
+
- **验收**:全部既有写入测试(`test_md_writepath.py`/`test_writelimit.py`/`test_verify_answer.py` 等)零改动通过;新增/移除一个拦截器不改核心文件。
|
|
54
|
+
- **落地状态(2026-09-15 · CodeBuddy 端):✅ 已落地**(commit `419305c`)。落点 `md_cg/writepipe.py`(新,拦截器链真源):write 分支原 128 行硬编码流程重构为链式——`register_before`/`unregister` 即插即拔、**链尾 executor 常驻**(保证「链上无拦截器也能落盘」)、`after` 观测者、REWRITE 语义(拦截器可改写内容后交下游);`mcp_server.py` 的 op=write 收敛为**一行分发**。
|
|
55
|
+
**权限闸保持库层不可绕过**(刻意的不对称):「卸掉链上全部拦截器」≠ 取得写权限,token 角色校验不因闸门可组合化而下放——对齐 §4 反面清单「不学 pi 的全权信任」。验收:`test_writepipe` **18/18** 全绿 + 全部既有写入测试**零改动通过**(writepath 52 / writelimit 全过 / verify_answer 31 / identity 14 / conformance 26 / p2_mcp 63)。
|
|
56
|
+
|
|
57
|
+
### ①P1 上下文经济学:工具面与纪律的分层驻留
|
|
58
|
+
|
|
59
|
+
- **pi 机制**:system prompt 约 150 词骨架(`system-prompt.ts:127-144`);工具只以**一行 snippet** 常驻系统提示,完整描述只进 API tools 字段(`system-prompt.ts:82-84`);8 个内建工具默认只激活 4 个(`agent-session.ts:2831-2834`);skills 只驻留「name+description+path」三元组 XML 索引,正文由 agent 任务匹配时自己 read(`skills.ts:355-383`)。
|
|
60
|
+
- **灵枢现状**:MCP 工具(cg/stg)的 op 参数空间全量 schema 常驻;16 条工作纪律全文常驻 AGENTS.md。
|
|
61
|
+
- **建议落点**:`md_cg/mcp_server.py` 工具 schema 瘦身(一行职责+`docs/工具详细说明.md` 按需引用);纪律/技能分层(索引常驻、正文文件化按需读);评估工具子集按 profile 启停(对齐已有 `tools: 'core'|'brain'|'all'` 三档,做到档内再分层)。
|
|
62
|
+
- **验收**:瘦身前后工具描述 token 数对比产物(目标 ≥50% 削减);检索/写入功能回归零变化。
|
|
63
|
+
- **落地状态(2026-09-16 · CodeBuddy 端):✅ 已落地**(commit `c789e95`,同批含「索引幽灵条目根因修复」)。落点 `md_cg/tool_face.py`(新,**投影真源**)+ `md_cg/test_tool_face.py`(新)+ `mcp_server.tools_for_surface` 返回 slim 投影(开关 `MDCG_TOOL_FACE=full` 回到真源)+ cg 新增 **op=help**(`tokens.ALL_OPS` 同步登记)。
|
|
64
|
+
**信息守恒的结构性保证(本项能减 token 而不减能力的原因)**:被投影掉的原文**不复制、不搬运**,`cg(op=help, query=…)` **从真源即时渲染取回**——不存在第二真源、零漂移面。这是「瘦身」与「信息丢失」的分界线。**偏离建议**:文档建议的「纪律/技能分层驻留」「按 profile 分层启停」两项本轮**未做**(本轮只落工具面投影层)。**顺带修正**:补齐 6 个「op 枚举里有、说明段缺失」的真源文档段(session/ingest/export/maintain/consolidate/insight)——分层后这些会真丢能力,属实测发现的既有缺口。
|
|
65
|
+
验收:注入面 kernel **20878→8330 字符(−60.10%)**、full31 20347→15221(−25.19%)、all 33 工具 41225→23507(−42.98%);`test_tool_face` **23 断言**全绿(削减≥50% + 工具名/参数名/顺序/required/类型/枚举值集**逐位不变** + 外置参数经 op=help **逐字**取回 + op 枚举每项都有说明段 + 开关与幂等 + 真源 schema 零改动);MCP 回归 63/63;72 套件全量回归除 2 个 pre-existing 失败外全绿。
|
|
66
|
+
|
|
67
|
+
### ②P1 记忆节点显式生命周期状态机
|
|
68
|
+
|
|
69
|
+
- **pi 机制**:运行操作 = 13 叶子显式状态机(`session/types.ts:315-329`),drive 循环按 `at` 分发;一轮无任何进展抛 `SessionInvariantError`(`drive.ts:101-104`)——非法迁移在结构上不可能。
|
|
70
|
+
- **灵枢现状**:节点生命周期状态**散落**:writelimit 的 `tidy:converged` 标记、forgetting 的 importance 降权、`_evolution/ledger.md` 账本、`protect` 的 protected 标记——没有一个统一状态字段,迁移合法性无校验。
|
|
71
|
+
- **建议落点**:`nodefile.py` frontmatter 新增 `state` 字段(建议集:`active → converged → demoted → archived`,受保护节点单独豁免),`mdcg.py` 写入时校验迁移合法性(非法迁移拒绝,负路由);存量节点默认 `active`,一次性回填。
|
|
72
|
+
- **验收**:非法迁移用例被拒且回归零变化;`_index.json` 索引快照带 state(免读文件可查)。
|
|
73
|
+
- **落地状态(2026-09-16 · CodeBuddy 端):✅ 已落地**(commit `2ebf8f0`)。落点 `md_cg/lifecycle.py`(新,**状态机唯一真源**)+ `md_cg/test_lifecycle.py`(新)。`STATES` = `active → converged → demoted → archived`;`TRANSITIONS` 合法迁移表(逐级降级/回升,**拒跳级**);`check()` 纯函数裁决(`code ∈ ok/noop/unknown_state/illegal_transition/protected`);`stamp()` 就地推进(复用供需等字段的**同批落盘收口点**,免重复写盘);`set_state()` 单点推进 + `_lifecycle.jsonl` 审计;`backfill()` 存量回填(dry-run/apply 幂等)。
|
|
74
|
+
**偏离建议(字段名,重要)**:新增字段取 **`lifecycle_state`** 而非文档建议的 `state`——`state` 已被认知图**裁决四态**(ACCEPT/REJECT/DEFER/BLINDSPOT)占用,复用会让「资格裁决态」与「生命周期态」两个正交轴撞进同一字段(真源节点 fm 现同时带 `state` 与 `lifecycle_state`,可实证两轴并置)。**边界(如实)**:本项落地**不含** Ghidra G3 所设想的 `unanalyzed` 取值——状态集仅四项,分析覆盖度不进生命周期轴(G3 改由 conformance 派生判据承载,见 ⑤ 落地状态)。
|
|
75
|
+
|
|
76
|
+
### ③P2 写入两段式提交(intent/结果对账)
|
|
77
|
+
|
|
78
|
+
- **pi 机制**:工具调用先持久化 intent+参数(status=effect_pending)再执行,完成后原子写结果;崩溃后 `replay:"safe"` 工具重放,否则合成 interrupted 结果——消息永不缺失(`drive/tools.ts:187-227,515-540`)。
|
|
79
|
+
- **灵枢现状**:`_audit.jsonl` 已是追加式操作日志(coggraph 会话串链的数据源),但只有 op=add 事后记录,**没有写入意图的先行持久化**,崩溃时无法区分「写了没落盘」。
|
|
80
|
+
- **建议落点**:`md_cg` 写路径在闸门通过后先落 `_audit.jsonl` intent 事件(含 content_hash),写入完成落 outcome 事件;启动时对账(有 intent 无 outcome 的写入做 content_hash 校验补账)。工具幂等声明可后置(md_cg 写入天然可重放:同 hash 幂等)。
|
|
81
|
+
- **验收**:kill -9 模拟半途写入后重启,对账报告正确补账/标记;`test_lock.py` 回归通过。
|
|
82
|
+
- **落地状态(2026-09-16 · CodeBuddy 端):✅ 已落地**。`md_cg/twophase.py`(新,两段式真源)+ 两条真实落盘路径接线(`writepipe.py`:链尾执行器 / `_gate_gated` 替代落盘路径各自 begin→commit)+ 库层门面(`mdcg.reconcile_writes` / `pending_writes`)+ MCP 启动自动对账(`mcp_server.py`,失败不阻塞启动但必须 stderr 上报)。**偏离建议**:账本落**独立文件** `_write_2pc.jsonl` 而非本文档建议的 `_audit.jsonl`——理由见 `twophase.py` docstring(`_audit.jsonl` 已被当作单一语义流消费,混入三类事件会扰动既有断言口径;本仓已有 `protect.py/_protected_audit.jsonl` 独立审计惯例)。**边界(如实)**:对账只做「补账 / 如实标记」,**不重放写入**;`append_jsonl` 在 Windows 非原子(对账是增益、不是「保证不丢」);`_gate_audit` 的 REJECT 负记忆与各闸 propose(无落盘动作)不在覆盖面内。验收:`python -m md_cg.test_twophase` 10 组 35 项全绿 + 全量回归零新增失败。
|
|
83
|
+
|
|
84
|
+
### ⑤P2 conformance:数据健康不变量的周期巡检
|
|
85
|
+
|
|
86
|
+
- **pi 机制**:`session/testing/conformance/`(storage 920 行 + session-repo 1185 行)把存储承诺写成断言:事务原子提交、seq 严格递增、非法写被拒且状态完全不变、close/reopen 状态保持、重放确定性。
|
|
87
|
+
- **灵枢现状**:机制测试 60+ 套件很强;但**数据健康不变量**没有周期断言。2026-09-15 审计(灵枢 node_26b0973a)发现的存量问题:knowledge 层索引节点混层 57.9%、role 存量 99.99% 为空、evidence_count 仅 6 条、精确重复 90 条、闸门 DROP/DEFER=0、召回率 7%——全靠人肉审计发现。
|
|
88
|
+
- **建议落点**:`md_cg/census.py` 产品化:把审计脚本(临时位置 `Temp/audit_write_effect.py`,可向 ZCode 端索取)改写为断言集(混层比例阈值/重复度阈值/字段覆盖率下限/闸门四态分布),挂 `sustain` 周期巡检;超阈值告警不自动改数据(治理另走 tidy/merge,永不删除)。
|
|
89
|
+
- **验收**:census 断言集可一键复跑;对当前真源产出首份基线报告(以上数字应复现)。
|
|
90
|
+
- **落地状态(2026-09-16 · CodeBuddy 端):✅ 已落地**。`md_cg/conformance.py`(新,断言集真源)+ `md_cg/test_conformance.py`(53 断言自测)+ `sustain._tick_conformance` 挂点(复用 6h tidy 节奏,不新开周期)+ `.github/workflows/conformance-check.yml`。
|
|
91
|
+
**偏离建议**:①**不改造 `census.py`** 而新建 `conformance.py`——census 是**节点清单工具**(`by_keys`/`report`,答「有多少、在哪」),conformance 是**不变量断言集**(答「是否失真」),职责不同;且 census 已有 `test_census_prune` 既有口径,改其语义会牵连回归。②G3 `unanalyzed` 用**派生判据**(`evidence_count==0 ∧ basis 空 ∧ state 空`)而非字段级占位——生命周期是单向降级轴、与分析覆盖正交,塞同字段即破坏正交性;且 `verification_basis` 已有 `other` 逃逸口(真源 273 条在用),「分析过但无法归类」有归宿。③基线报告落**真源库同级私有目录**(`AEIS/data/conformance_baseline_mdcg.json`)、不入公开仓——基线是环境特定运维产物,随库增长变动,入库即制造虚假同步义务。
|
|
92
|
+
**口径更正(关键,9-15 审计数字的复现前提)**:审计的「role 99.99% 为空」「evidence_count 仅 6 条」是 **knowledge 层分母**;全库分母会把 99.991% 的空缺摊薄成「role 2.13%、evidence 12 条」,把严重空缺伪装成「还行」。故断言集**判据一律取 knowledge 层口径**、全库口径仅作对照。据此:role[knowledge]=0.009%(↔ 99.991% 空,与审计逐位吻合)、evidence[knowledge]=0.054%(↔ knowledge 层 6 条,吻合)。
|
|
93
|
+
**首份基线(2026-09-16,真源 nodes=11666)**:混层 6505/11113=**58.5%**(审计 57.9%,差=期间库增长);`dir_mismatch=0`、`path_missing=0`、悬空边 0(不变量全绿);重复 content_hash **93 组/186 节点**(审计 90 条);闸门 decisions **142**(accept 115 / reject 21 / edit 6)、inbox_pending 0;触达率 **8.7%**(审计 7%;源为滚动追加日志,差异未逐条复算,故**不纳入基线不劣化比对**——日志轮转会误报);G3 unanalyzed 派生 **4619(39.6%)**。
|
|
94
|
+
**G1 新发现(正交性审计的增量产出)**:①边类型空间**不封闭**——`above/counterpart/generalizes/instance_of` **未声明已用**(读侧退化 `chain.DEFAULT_EDGE_WEIGHT=0.50`,不炸但权重失真)、另有 8 个声明未用(`applies_to/parent_of/spatial_*` 等);②**96.9%(5543/5719)的边用 legacy `type` 键**而非规范 `relation_type`——取证更正:`subgraph.children_index:122`/`parents_index:162` 已含 `or e.get("type")` 容错,**读侧不忽略**(`normalize_edge` docstring 称「会被静默忽略」属**文档滞后于代码**,已登记 `DOC_CODE_DRIFT`);故该项判 **WARN 非 FAIL**(不冒充硬失败),仅以「不劣化」为判据;③`role` 与 `tag_prefix` **无模块级真源**(自由文本/命名约定)→ 标 `None`→BLINDSPOT,不冒充封闭;④`hierarchical` 同名反义(md_cg=本节点是子 / 白箱源库=source 是父)已登记为方向口径分歧;`part_of/parent_of/contains` 已核对**逐字对称、无分歧**(防止被反复误报)。
|
|
95
|
+
**验收证据**:`python -m md_cg.test_conformance` **53/53 全绿**(对照 test_p27【9】教训:自测**自备 tempfile 合成库**,外部 clone 下集成段自动 SKIP,不依赖仓外目录);**回归 16 套件零失败**(conformance/census_prune/p14_sustain/sustain_mutual/p30/p41/p2_mcp 64/cond_match 17/p33 58/p36 34/p37 42/sem_noise 7/writepipe 18/branches 41/identity 14/autonomy 10,墙钟 3.6s);lint 0。
|
|
96
|
+
|
|
97
|
+
### ⑦P3 上下文组装工程细节(零散但便宜)
|
|
98
|
+
|
|
99
|
+
pi 的细节清单(出处省略,均可直接对照源码):错误/中止的 assistant 消息不入上下文;read 截断 2000 行/50KB 附续读提示;bash 大输出全量落盘临时文件+消息保尾部;图片自动缩 2000px、token 估算按 4800 字符/张;AGENTS.md 祖先链发现+worktree 防重复;**system prompt 不持久化,会话恢复时实时重建**(配置变更自动反映到旧会话)。
|
|
100
|
+
灵枢对应落点:`stg.py`/recall 组装路径与 `compact_context`;「错误消息不入上下文」与「大输出落盘保尾」两条最值得先做。
|
|
101
|
+
- **落地状态(2026-09-16 · CodeBuddy 端):✅ 六条全落地 + 一条取证后判定「结构性已满足」**(改动面:`hive/exec.py`、`hive/test_exec_tools.py`、`md_cg/mcp_server.py`、`md_cg/test_read_clip.py`、`scripts/render_discipline.py`、`scripts/verify_discipline.py`、`scripts/test_injection_chain.py`、`docs/discipline/harnesses.yaml`、`.github/workflows/discipline-check.yml`)。
|
|
102
|
+
| pi 细节 | 灵枢落点 | 与 pi 的偏离 |
|
|
103
|
+
|---|---|---|
|
|
104
|
+
| 错误/中止 assistant 消息不入上下文 | `exec.py` 空轮护栏:`content` 与 `tool_calls` **双空** → 记日志 + `progress(error)` + `error` 终态,不再冒充有效终答(旧行为曾产出 `ok=true` + 空 content 的假成功) | 判据取「双空」而非「有 error 字段」——错误轮本身可能带有效 content(工具失败但模型给了说明),一律丢弃会**丢真信息** |
|
|
105
|
+
| read 截断 2000 行/50KB 附续读提示 | `mcp_server.py` `_clip_text` 双阈值(`READ_MAX_LINES`/`READ_MAX_BYTES`)+ `offset`/`next_offset` 续读;截断时**显式**返回 `truncated/total_lines/total_bytes/note`,未截断路径零新增键(旧调用方无感) | 阈值同 pi;**不静默**——「截了多少、从哪续」是返回体必带字段,不靠模型猜 |
|
|
106
|
+
| bash 大输出全量落盘 + 消息保尾 | `exec.py` 工具回喂面:全量落 `tool_<i>_<j>.json`,回喂消息保**头+尾**并插「中间省略」提示(对齐 `_dump_step`+`_render` 既有形态) | 保留头部(错误常在首屏),pi 只保尾 |
|
|
107
|
+
| 图片自动缩 2000px、4800 字符/张 | `exec.py` context_files 面:零依赖探测尺寸(PNG IHDR / JPEG SOF,不读像素内容);超阈值按需处理并反馈「是否已压缩」;token 折算 `IMAGE_CHARS_PER=4800` | **不主动缩图**(处置由调用方决定、结果如实回报),不做隐式重编码 |
|
|
108
|
+
| AGENTS.md 祖先链发现 + worktree 防重复 | `render_discipline.py`(`_walk_ancestors` + `discover_injection_chain`)/`verify_discipline.py`(`check_injection_matrix`)/`harnesses.yaml`(`injection:` 声明段 + 每 target `slot:`) | 见下方「⑤ 关键取舍」 |
|
|
109
|
+
| system prompt 不持久化、恢复时重建 | `exec.py` `resolve_system_prompt`:`system_prompt_from` 声明后**每次执行重建**(rust 侧 claimed 重投的崩溃恢复窗口也覆盖),缺文件 **fail-closed**(明确失败优于静默沿用旧提示词) | **取证结论:默认路径结构性已满足**——hive 每次 spawn 由调用方重建 `system_prompt`,`spec.json` 是**任务证据**而非 pi 所指「持久化会话状态」,故不存在 pi 那个缺陷本体;仅补一条显式重建通道,未做无靶改动 |
|
|
110
|
+
**⑤ 关键取舍(防重复的真实落点)**:去重落在**目录层**——走祖先链按物理目录身份(realpath+normcase)折叠别名拼写,使 worktree/junction/大小写别名下同一份件只查一次。**反面已实证**:按「git 仓身份 + 仓内相对路径」做键**会错**——worktree 与其主仓的 `AGENTS.md` 是同相对路径但**物理不同的两个文件**(各自 checkout 一份),折叠即把真实重复注入源静默藏起;故此类同仓不同物理文件只**标注**(`wt_dups`)不折叠。判据分两档:**硬失败**(`path_dup` 同物理文件被两个 target 写;`root_shadow` 仓根遮蔽本地私有件 → 后者使本地纪律注入失效)与**发现面报告**(祖先链同槽位命中:仓内判定同源指纹、仓外属宿主侧事实,本仓不裁决但不得假定不存在);每个 file target 必须声明 `slot` 且产物名在其槽位清单内(否则遮蔽判定失真),有守卫。
|
|
111
|
+
**验收证据**:`hive/test_exec_tools.py` **47/47**、`md_cg/test_read_clip.py` **14/14**、`scripts/test_injection_chain.py` **35/35**(含 junction 别名折叠实证、`path_dup`/`root_shadow` 两硬判据的**正向与恢复双向**断言、防重复反面对照);`scripts/run_tests.py` 新增 `scripts` 组(scripts/ 非包 → 直跑);`verify_discipline.py` 注入面全绿;CI `discipline-check.yml` 增挂注入面自检步(Linux 下 junction 项自动 SKIP,属环境差异非失败)。
|
|
112
|
+
|
|
113
|
+
## 4. 反面清单(不学什么,与灵枢哲学冲突)
|
|
114
|
+
|
|
115
|
+
| pi 做法 | 为什么不学 | 灵枢对应原则 |
|
|
116
|
+
|---|---|---|
|
|
117
|
+
| 无 sandbox/无审批,扩展以用户全权运行(security.md:35 自述有意设计,隔离外包 OS/容器) | 信任必须**结构强制且可复算**,不能靠文档告诫+一道 project trust | 位置效应、写权限互斥、凭据六角色(designer/reflection/verifier/recorder/output/sustain/guest) |
|
|
118
|
+
| No MCP 立场(CLI+README 替代协议) | 灵枢保持双形态接口:MCP 服务 MCP 阵营(资格闸服务端强制),CLI 形态补「md 目录直改设防」后再开;协议哲学见荣 2026-09-15 纲领(唯一协议=智能论,字节层放开) | 智能论=唯一行为协议 |
|
|
119
|
+
| 子进程模型(OASIS 式批处理/每工具一进程) | md_cg 主链路常驻+Rust `--serve` 检索形态已占优 | 记忆真源唯一+多端共享 |
|
|
120
|
+
| 会话即全部记忆(无跨会话沉淀) | pi 的 session 文件就是它的全部记忆;灵枢的认知图蒸馏(16 条闭环)是**灵枢独有的维度**,绝不为对齐 pi 而弱化 | 记忆闭环(第 16 条) |
|
|
121
|
+
|
|
122
|
+
## 5. 与既有工作线的边界(防撞车)
|
|
123
|
+
|
|
124
|
+
- **writelimit.py(已落地 2026-09-15)**:contextual 层写侧限流+同构聚合+读侧 tidy——不要重做;③/⑤ 与它互补(两段式对账、census 断言)。
|
|
125
|
+
- **coggraph 交接(DSH→CodeBuddy,另一份文档)**:可视化管线/语义层/命名治理归那边;本文件的 ①④⑥ 改 `md_cg` 核心不碰 `tools/coggraph/`。
|
|
126
|
+
- **审计遗留五项**(role 回填/evidence 补齐/精确重复 90/闸门加严/召回 7%):⑤ 的 census 会持续暴露它们;修复动作(回填/合并)另立子步,先断言后治理。
|
|
127
|
+
|
|
128
|
+
## 6. 建议施工顺序
|
|
129
|
+
|
|
130
|
+
1. **⑥ 钩子化**(先改结构,后续一切闸门策略都挂上去)→ 2. **④ fork**(条件论落地最大增量)→ 3. **① 描述瘦身**(立即降 token,独立可并行)→ 4. **② 状态机** → 5. **③ 两段式** → 6. **⑤ census** → 7. **⑦ 细节**。
|
|
131
|
+
每步:实现 → 全量回归 → 灵枢归档(16 条四要素)→ 看板/文档同步。
|
|
132
|
+
|
|
133
|
+
> **进度(2026-09-16 取证核)**:第 **1–6 步均已落地**——⑥④ 见 `419305c`、③ 见 `4201238`、① 见 `c789e95`、② 见 `2ebf8f0`、⑤ 见 `8fffc24`;**仅剩第 7 步 ⑦ 未开工**。落点与验收数字见 §3 各项「落地状态」。
|
|
134
|
+
|
|
135
|
+
## 7. 快速上手(CodeBuddy 5 分钟)
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# 1. 读本文档 §1 落点纪律 + §4 反面清单
|
|
139
|
+
# 2. 查证 pi 源码(任选两条路径核对本文档行号引用):
|
|
140
|
+
# agi-architectures/pi/packages/agent/src/harness/session/types.ts:315
|
|
141
|
+
# agi-architectures/pi/packages/coding-agent/docs/extensions.md:277
|
|
142
|
+
# 3. 确认灵枢基线:python -m md_cg.test_p0(及全量 test_pXX 回归绿)
|
|
143
|
+
# 4. §6 第 1–6 步(⑥④①②③⑤)已落地、仅 ⑦ 未开工——续做前先按 §3「完成度判据」取证
|
|
144
|
+
```
|