@furongjun1999/dsh-memory 0.4.7 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/README.md +92 -37
  2. package/codebuddy/CODEBUDDY.md +195 -185
  3. package/docs/Pi/345/217/257/345/255/246/344/271/240/344/274/230/347/202/271_/347/201/265/346/236/242/345/244/247/350/204/221/346/224/271/350/277/233/344/272/244/346/216/245_20260915.md +144 -0
  4. package/docs/README.md +111 -0
  5. package/docs/discipline/harnesses.yaml +215 -152
  6. package/docs/discipline/templates/full.md.tmpl +60 -58
  7. package/docs/eval//347/254/254/344/270/211/346/226/271/351/252/214/350/257/201/346/212/245/345/221/212_LoCoMo_/347/201/265/346/236/242_.md +127 -0
  8. package/docs/eval//347/254/254/344/270/211/346/226/271/351/252/214/350/257/201/346/212/245/345/221/212_LoCoMo_/347/201/265/346/236/242_.png +0 -0
  9. package/docs/eval//347/254/254/344/270/211/346/226/271/351/252/214/350/257/201/346/212/245/345/221/212_/347/201/265/346/236/242_vs_dejavu_/347/273/237/344/270/200/350/257/204/345/210/206_v7.md +202 -0
  10. package/docs/experiments/m4-role-probe/census.py +86 -0
  11. package/docs/experiments/m4-role-probe/probe.py +89 -0
  12. package/docs/experiments/mapped_confidence/bench_mapped_conf.py +216 -0
  13. package/docs/experiments/mapped_confidence/post_check.py +75 -0
  14. package/docs/experiments/mapped_confidence/repro_thirdparty_tol.py +83 -0
  15. package/docs/experiments/mapped_confidence/result_mapped_conf.json +215 -0
  16. package/docs/{ → hive/}/350/234/202/345/267/242/345/267/245/344/275/234/350/256/260/345/277/206_/351/241/271/347/233/256/350/256/241/345/210/222.md +14 -2
  17. package/docs/{README → mdcg/README}/350/257/246/347/273/206/347/211/210_v0.4.5.md +9 -9
  18. package/docs/{ → mdcg/}/344/270/273/344/273/243/347/220/206/345/255/220/344/273/243/347/220/206/350/256/260/345/277/206/346/236/266/346/236/204/350/256/276/350/256/241.md +1 -1
  19. 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 +261 -0
  20. package/docs/{ → mdcg/}/345/215/225/345/205/203/350/207/252/346/210/221/351/224/232/347/202/271_/347/263/273/347/273/237/346/217/220/347/244/272/350/257/215/346/240/207/345/207/206_v0.3.md +1 -1
  21. package/docs/mdcg//345/255/220/344/273/243/347/220/206/351/205/215/347/275/256/346/240/207/345/207/206_v0.4.md +148 -0
  22. package/docs/{ → mdcg/}/346/272/220/347/240/201/347/272/247/346/236/266/346/236/204/345/256/241/350/256/241_GPT/346/211/271/350/257/204/345/257/271/347/205/247_v1.0.md +2 -2
  23. package/docs/{ → mdcg/}/347/201/265/346/236/242/344/270/211/345/261/202/346/213/206/345/210/206/350/247/204/345/210/222_v0.1.md +181 -181
  24. package/docs/{ → mdcg/}/347/274/272/345/217/243/345/215/225_P0/346/224/266/345/217/243_v0.1.md +2 -2
  25. package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276_G4-G8/347/274/272/345/217/243/350/243/201/345/256/232/345/215/225_v0.1.md +1 -1
  26. package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276_/347/264/242/345/274/225/344/270/216/345/267/245/347/250/213/350/247/204/350/214/203/345/214/226_/350/256/241/345/210/222_v0.1.md +4 -4
  27. package/docs/{ → mdcg/}/350/256/260/345/277/206/346/223/215/344/275/234/347/263/273/347/273/237_MdCGOS/344/270/216MCP/346/216/245/345/205/245_v0.1.md +2 -2
  28. package/docs/plans/GridWorld/346/234/200/345/260/217/351/227/255/347/216/257/350/247/204/346/240/274_v0.1.md +176 -0
  29. package/docs/{ → swarm/}/350/234/202/347/276/244/344/272/222/350/201/224_v0.1.md +3 -3
  30. package/docs/swarm//350/234/202/347/276/244/345/220/214/351/224/231/346/243/200/346/265/213/345/256/236/351/252/214/345/215/217/350/256/256_v0.1.md +242 -0
  31. package/docs/theory//345/215/225/347/272/277/347/250/213/344/270/216/346/263/250/346/204/217/345/212/233/351/233/206/344/270/255_/346/227/240/344/272/211/350/256/256/347/220/206/350/256/272/346/226/207/346/241/243_v1.0.md +129 -0
  32. package/docs/theory//345/271/266/345/217/221/345/277/205/347/204/266/346/200/247/347/220/206/350/256/272_v0.2.md +134 -0
  33. package/docs/theory//346/246/202/345/277/265/345/210/206/345/261/202/345/257/271/351/275/220/350/241/250_v0.1.md +145 -0
  34. 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 +3 -3
  35. package/docs/{ → theory/}/347/220/206/350/256/272/344/273/223/346/213/206/345/210/206/344/270/216/347/231/275/347/256/261/347/237/245/350/257/206/345/272/223/345/206/205/350/277/201_v0.1.md +1 -1
  36. package/docs/theory//350/256/244/347/237/245/344/273/243/347/220/206/344/270/216/346/224/266/346/225/233/347/273/223/346/236/204_/346/235/241/344/273/266/350/256/272/351/207/215/346/236/204_v0.1.md +221 -0
  37. package/docs/world_model//344/270/226/347/225/214/346/250/241/345/236/213_/347/245/236/347/273/217/347/275/221/347/273/234/345/272/225/345/261/202/346/236/266/346/236/204_v1.0.md +237 -0
  38. package/docs//345/255/230/347/256/227/344/270/200/344/275/223/346/236/266/346/236/204/345/255/246/344/271/240_/345/244/226/351/203/250/347/220/206/350/256/272/345/257/271/347/205/247/344/270/216/350/267/257/347/272/277/344/272/244/346/216/245_20260916.md +98 -0
  39. package/docs//345/255/230/347/256/227/344/270/200/344/275/223/347/245/236/347/273/217/347/275/221/347/273/234/346/236/266/346/236/204_/346/200/273/347/272/262/344/270/216/344/272/244/346/216/245_20260916.md +109 -0
  40. 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 +34 -6
  41. package/docs//347/231/275/347/256/261/345/214/226/347/272/262/351/242/206_/344/270/211/351/241/271/347/233/256/345/255/246/344/271/240/346/200/273/346/236/266/346/236/204/344/270/216Ghidra/344/272/244/346/216/245_20260916.md +104 -0
  42. package/docs//350/256/260/345/277/206/350/257/204/345/256/241/347/263/273/347/273/237_/347/253/213/351/241/271/350/256/276/350/256/241/344/270/216/346/226/275/345/267/245/344/272/244/346/216/245_20260915.md +183 -0
  43. package/dsh/README.md +1 -1
  44. package/lib/hooks.d.ts +5 -0
  45. package/lib/hooks.js +10 -1
  46. package/lib/lib/prompt_safety.d.ts +48 -0
  47. package/lib/lib/prompt_safety.js +62 -0
  48. package/md_cg/audit.py +76 -2
  49. package/md_cg/bench_membench.py +10 -5
  50. package/md_cg/bench_progressive.py +48 -9
  51. package/md_cg/branches.py +275 -0
  52. package/md_cg/ccgc.py +884 -0
  53. package/md_cg/conformance.py +662 -0
  54. package/md_cg/consistency.py +1 -1
  55. package/md_cg/corpus.py +1 -1
  56. package/md_cg/eval_common.py +6 -5
  57. package/md_cg/forgetting.py +11 -3
  58. package/md_cg/fsutil.py +63 -1
  59. package/md_cg/identity.py +2 -2
  60. package/md_cg/insight.py +2 -2
  61. package/md_cg/lifecycle.py +262 -0
  62. package/md_cg/mcp_server.py +547 -140
  63. package/md_cg/mdcg.py +206 -18
  64. package/md_cg/mdcos.py +512 -50
  65. package/md_cg/metacognition.py +2 -2
  66. package/md_cg/mreview/__init__.py +25 -0
  67. package/md_cg/mreview/__main__.py +107 -0
  68. package/md_cg/mreview/bundle.py +170 -0
  69. package/md_cg/mreview/candidates.py +253 -0
  70. package/md_cg/mreview/govern.py +674 -0
  71. package/md_cg/mreview/locate.py +905 -0
  72. package/md_cg/mreview/pipeline.py +701 -0
  73. package/md_cg/mreview/rules/duplication.json +21 -0
  74. package/md_cg/mreview/rules/field_coverage.json +54 -0
  75. package/md_cg/mreview/rules/source_license.json +21 -0
  76. package/md_cg/mreview/rules/template_flow.json +21 -0
  77. package/md_cg/mreview/ruleset.py +238 -0
  78. package/md_cg/nodefile.py +38 -0
  79. package/md_cg/predict.py +24 -6
  80. package/md_cg/protect.py +4 -4
  81. package/md_cg/refindex.py +41 -2
  82. package/md_cg/scrub.py +5 -1
  83. package/md_cg/self_state.py +1 -1
  84. package/md_cg/semantic/en_normalizer.py +85 -25
  85. package/md_cg/sustain.py +18 -0
  86. package/md_cg/tasks.py +447 -0
  87. package/md_cg/test_action_derive.py +203 -0
  88. package/md_cg/test_audit_rotate.py +270 -0
  89. package/md_cg/test_branches.py +249 -0
  90. package/md_cg/test_ccg_perturb.py +1 -1
  91. package/md_cg/test_ccgc.py +423 -0
  92. package/md_cg/test_conformance.py +343 -0
  93. package/md_cg/test_en_pipeline.py +24 -0
  94. package/md_cg/test_health_scale.py +173 -0
  95. package/md_cg/test_identity_attribution.py +6 -0
  96. package/md_cg/test_index_durability.py +224 -0
  97. package/md_cg/test_lifecycle.py +309 -0
  98. package/md_cg/test_mr_m1.py +679 -0
  99. package/md_cg/test_mr_m2.py +587 -0
  100. package/md_cg/test_mr_m3.py +703 -0
  101. package/md_cg/test_mr_m4.py +485 -0
  102. package/md_cg/test_p1.py +1 -1
  103. package/md_cg/test_p11_consistency.py +1 -1
  104. package/md_cg/test_p12_metacognition.py +2 -2
  105. package/md_cg/test_p16_self_state.py +1 -1
  106. package/md_cg/test_p26_refindex.py +1 -1
  107. package/md_cg/test_p27_docindex.py +22 -2
  108. package/md_cg/test_p28_refcheck.py +1 -1
  109. package/md_cg/test_p29_session_ingest_export.py +1 -1
  110. package/md_cg/test_p2_mcp.py +7 -1
  111. package/md_cg/test_p38_contextualize.py +1 -1
  112. package/md_cg/test_p39_vision_evidence.py +1 -1
  113. package/md_cg/test_p40_refine_worklist.py +1 -1
  114. package/md_cg/test_p41_evolve_patrol.py +1 -1
  115. package/md_cg/test_p42_provenance.py +1 -1
  116. package/md_cg/test_p43_pooling.py +41 -13
  117. package/md_cg/test_read_clip.py +137 -0
  118. package/md_cg/test_review_conformance.py +310 -0
  119. package/md_cg/test_tasks.py +409 -0
  120. package/md_cg/test_tool_face.py +189 -0
  121. package/md_cg/test_twophase.py +286 -0
  122. package/md_cg/test_writepipe.py +210 -0
  123. package/md_cg/theory.py +1 -1
  124. package/md_cg/tokens.py +95 -5
  125. package/md_cg/tool_face.py +250 -0
  126. package/md_cg/twophase.py +221 -0
  127. package/md_cg/units.py +546 -0
  128. package/md_cg/vision_evidence.py +1 -1
  129. package/md_cg/weights.py +1 -1
  130. package/md_cg/whitebox.py +1 -1
  131. package/md_cg/whitebox_kb/data/verify_cache.json +28 -0
  132. package/md_cg/whitebox_kb/data/verify_savings.jsonl +46 -0
  133. package/md_cg/whitebox_kb/wisdom/audit_log/chain_heat.json +10 -10
  134. package/md_cg/whitebox_kb/wisdom/wisdom-book-cloud.db-shm +0 -0
  135. package/md_cg/whitebox_kb/wisdom/wisdom-book-cloud.db-wal +0 -0
  136. package/md_cg/writelimit.py +19 -3
  137. package/md_cg/writepipe.py +372 -0
  138. package/package.json +1 -1
  139. package/src/hooks.ts +10 -1
  140. package/src/lib/prompt_safety.ts +62 -0
  141. package/zcode/AGENTS.md +195 -185
  142. package/docs//345/212/237/350/203/275/350/260/203/347/224/250/346/230/240/345/260/204/350/241/250_v0.1.md +0 -221
  143. /package/docs/{AGI → eval/AGI}/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v1.0.md" +0 -0
  144. /package/docs/{AGI → eval/AGI}/344/270/203/347/273/264/350/257/204/345/210/206/346/212/245/345/221/212_md_cg_v2.0.md" +0 -0
  145. /package/docs/{ → eval/}/345/256/236/351/252/214/346/226/271/346/241/210_/345/255/246/344/271/240/351/227/255/347/216/257AB/344/270/216/346/250/252/350/257/204_v1.0.md" +0 -0
  146. /package/docs/{ → eval/}/346/250/252/350/257/204_/345/205/255/345/256/266100/351/242/230/344/270/255/350/213/261/345/217/214/346/237/245_v1.0.md" +0 -0
  147. /package/docs/{guardrail-charter.md → mdcg/guardrail-charter.md} +0 -0
  148. /package/docs/{lingshu_tutorial.html → mdcg/lingshu_tutorial.html} +0 -0
  149. /package/docs/{memory-assessment.html → mdcg/memory-assessment.html} +0 -0
  150. /package/docs/{memory_score.html → mdcg/memory_score.html} +0 -0
  151. /package/docs/{memory_score.png → mdcg/memory_score.png} +0 -0
  152. /package/docs/{release_v0.3.0.md → mdcg/release_v0.3.0.md} +0 -0
  153. /package/docs/{release_v0.4.5.md → mdcg/release_v0.4.5.md} +0 -0
  154. /package/docs/{tool_table_v0.3.0.md → mdcg/tool_table_v0.3.0.md} +0 -0
  155. /package/docs/{ → mdcg/}/344/273/244/347/211/214/344/270/216/350/247/222/350/211/262/346/235/203/350/201/214/345/210/206/347/246/273_v0.1.md" +0 -0
  156. /package/docs/{ → mdcg/}/347/201/265/346/236/24282/345/267/245/345/205/267_/345/212/237/350/203/275/346/225/264/347/220/206/344/270/216/350/277/201/347/247/273/346/230/240/345/260/204_v0.1.md" +0 -0
  157. /package/docs/{ → mdcg/}/347/201/265/346/236/242MCP/345/267/245/345/205/267/346/200/273/350/241/250_v3.4.md" +0 -0
  158. /package/docs/{ → mdcg/}/347/201/265/346/236/242_/350/207/252/346/210/221/345/261/202/345/256/232/344/271/211.md" +0 -0
  159. /package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276_MD/347/233/256/345/275/225/346/226/271/346/241/210_v0.1.md" +0 -0
  160. /package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276_/346/235/241/344/273/266/347/251/272/351/227/264/345/220/210/346/210/220/344/270/216/347/224/237/346/225/210/346/235/241/344/273/266/345/217/243/345/276/204_v0.1.md" +0 -0
  161. /package/docs/{ → mdcg/}/350/256/244/347/237/245/345/233/276/344/275/234/344/270/272/350/256/260/345/277/206/346/223/215/344/275/234/347/263/273/347/273/237_/350/257/204/344/274/260/344/270/216/350/267/257/347/272/277_v0.1.md" +0 -0
  162. /package/docs/{ → plans/}/345/221/275/345/220/215/346/262/273/347/220/206_/351/241/271/347/233/256/350/256/241/345/210/222.md" +0 -0
  163. /package/docs/{ → plans/}/347/237/245/350/257/206/345/233/276/350/260/261/351/241/271/347/233/256_/344/272/244/346/216/245/346/226/207/346/241/243_20260914.md" +0 -0
  164. /package/docs/{ → swarm/}/350/234/202/347/276/244/345/244/232/346/231/272/350/203/275/344/275/223_/344/275/277/347/224/250/346/212/245/345/221/212_20260913.md" +0 -0
  165. /package/docs/{ → swarm/}/350/234/202/347/276/244/345/244/232/346/231/272/350/203/275/344/275/223_/345/212/237/350/203/275/350/257/264/346/230/216_v0.6.md" +0 -0
  166. /package/docs/{ → swarm/}/350/234/202/347/276/244/347/233/262/345/214/272/346/240/207/350/256/260_v1.0.md" +0 -0
  167. /package/docs/{ → theory/}/344/277/241/346/201/257/345/267/256/344/270/272/344/273/200/344/271/210/345/277/205/347/204/266/345/255/230/345/234/250/344/270/224/350/207/252/347/204/266/346/211/251/345/244/247.md" +0 -0
  168. /package/docs/{ → theory/}/346/231/272/350/203/275/347/232/204/345/205/254/347/220/206/345/214/226/345/237/272/347/237/263.md" +0 -0
  169. /package/docs/{ → theory/}/346/231/272/350/203/275/347/232/204/350/256/244/347/237/245/350/277/207/347/250/213.md" +0 -0
  170. /package/docs/{ → theory/}/346/231/272/350/203/275/350/256/2723.4.md" +0 -0
  171. /package/docs/{ → theory/}/347/231/275/347/256/261/346/231/272/350/203/275/346/230/257/344/273/200/344/271/210/357/274/237.md" +0 -0
  172. /package/docs/{ → theory/}/347/231/275/347/256/261/346/231/272/350/203/275/347/263/273/345/210/227/302/267/347/254/254/344/272/224/347/257/207/357/274/232/350/256/251AI/347/234/237/346/255/243/350/243/205/344/270/212/350/256/260/345/277/206.md" +0 -0
@@ -1,181 +1,181 @@
1
- # 灵枢三层拆分规划 v0.1
2
-
3
- > 状态:规划稿(未执行任何文件搬迁)
4
- > 日期:2026-09-10
5
- > 范围:理论(灵)/ 大脑(brain)/ 身体(body)三仓职责分离与主仓库瘦身
6
- > 性质:**本文只定义职责与顺序,不构成搬迁授权**;所有搬迁动作须先通过 Phase 0 裁决。
7
-
8
- ---
9
-
10
- ## 0. 背景与结论
11
-
12
- ### 0.1 现状问题
13
-
14
- | 问题 | 表现 |
15
- |---|---|
16
- | 主仓库职责混杂 | `dsh-memory` 同时承载「记忆大脑」与「工程/身体运行时」(`docker/`、`scripts/` 看门狗、宿主启动脚本),二者依赖量级完全不同 |
17
- | 同名不同物 | 历史命名中「AEIS」既指理论方(CTP)自带的工程副本,又指 `dsh-memory` 的 Python 大脑包,导致「aeis = 大脑」的旧语义债 |
18
- | 跨库同步困难 | 同一份工程内容在多库各存一份,改动需人工同步,真源不清 |
19
- | 断链 | `AEIS/tools/*` 指向 `dsh-memory\llm-adapter-poc`,该路径当前不存在(待 Phase 0 核实) |
20
- | 交付面过宽 | 完整灵枢 = 理论 + 大脑 + 身体,体量巨大;理论难懂、身体重依赖,二者都阻碍了「大多数人只需大脑」这一主路径 |
21
-
22
- ### 0.2 结论(本次收敛)
23
-
24
- **主仓库不再放工程内容的完整实现,只放「大脑」。**
25
-
26
- - 完整灵枢 = **灵** + **脑** + **身**;但对外**默认只交付大脑**。
27
- - 理论(灵)与身体(身)作为大脑的**可选下层 / 上层**,通过 README 分层入口引导,而非塞进主仓库。
28
- - 分离的直接收益:消除跨库重复实现,真源唯一,降低同步成本。
29
- - 面向人群:理论 → 研究者;身体 → 少数需具身者;**大脑 → 大多数人(默认入口)**。
30
-
31
- ---
32
-
33
- ## 1. 三层定位
34
-
35
- | 仓 | 角色 | 内容边界 | 默认读者 | 依赖量级 |
36
- |---|---|---|---|---|
37
- | CTP / CommonTrustProtocol | **理论(灵)** | 协议、认识论、信任账本;**不含工程实现**(待剥离自带 `aeis/` 工程副本) | 研究者 | 无(纯文档/协议) |
38
- | **dsh-memory(主仓库)** | **大脑** | `md_cg` 认知图内核 + MCP/npm 接口 + 记忆数据;**纯逻辑、零重依赖** | **大多数人(默认入口)** | 轻(标准库 + 轻量 npm) |
39
- | AEIS / body | **身体** | 传感器、语音、执行器、docker 运行环境、模型权重、宿主看门狗 | 少数需具身者 | 重(设备/模型/容器) |
40
-
41
- **一句话各自定位**
42
-
43
- - 灵:定义「什么样的智能值得被信任」——协议与公理,不落代码。
44
- - 脑:定义「记住什么、如何召回、如何自演化」——可在任意宿主上单独运行。
45
- - 身:定义「如何感知与作用于世界」——可选,且可替换。
46
-
47
- ---
48
-
49
- ## 2. 主仓库(大脑)取舍清单
50
-
51
- ### 2.1 保留(= 大脑本体)
52
-
53
- | 路径 | 内容 | 理由 |
54
- |---|---|---|
55
- | `md_cg/` | 认知图内核(98 py:consolidate / refine / pooling / provenance / whitebox / MCP server…) | 大脑核心,纯 Python |
56
- | `src/` | MCP / npm 插件接口(8 ts) | 大脑对外唯一入口 |
57
- | `test/` | 集成测试 | 大脑正确性保障 |
58
- | `data/` | 记忆数据(**归位须待 Phase 3**) | 大脑资产,非工程副产物 |
59
- | `package.json` / `tsconfig.json` | 构建定义 | 轻依赖 |
60
- | `README.md` / `docs/` | 分层入口文档 | 需重写为三层入口(Phase 4) |
61
-
62
- ### 2.2 移出或降级(= 身体 / 工程)
63
-
64
- | 路径 | 处置 | 去向 |
65
- |---|---|---|
66
- | `docker/` | 移出 | 身体仓(运行环境) |
67
- | `dsh-web-start.bat` | 移出 | 身体仓(宿主启动) |
68
- | `scripts/`(看门狗 ps1 / vbs) | 移出 | 身体仓(宿主守护) |
69
- | 语音 / 模型权重 / 设备相关资源 | 移出 | 身体仓 |
70
-
71
- ### 2.3 断链修复(Phase 2 处理)
72
-
73
- - `AEIS/tools/*` → `dsh-memory\llm-adapter-poc`(当前缺失)。
74
- - 二选一:**补齐**该路径,或**声明废弃**并从文档/代码中移除引用。
75
- - 原则:不允许存在「文档指向不存在路径」的悬空引用。
76
-
77
- ---
78
-
79
- ## 3. 分期任务规划
80
-
81
- > 顺序不可交换:**先裁决 → 再冻接口 → 再搬代码 → 最后动数据**。
82
- > 每一期均有独立验收,未通过不得进入下一期。
83
-
84
- ### Phase 0 — 裁决(不搬任何文件)
85
-
86
- | # | 任务 | 产出 |
87
- |---|---|---|
88
- | 0.1 | `diff -rq` 定 `aeis` 唯一真源(CTP 侧 vs 独立仓侧) | 真源结论 + diff 快照存档 |
89
- | 0.2 | 一句话写死「身体」操作定义:设备端口 / 世界载体 / 宿主客户端(三择一) | 定义条目(可导出为边界表) |
90
- | 0.3 | 将 `data/mdcg` 声明为大脑资产,并**冻结写入** | 冻结记录 + 恢复步骤 |
91
-
92
- **验收**:真源唯一;身体定义可一句话导出;`data/mdcg` 冻结生效且可恢复。
93
-
94
- ### Phase 1 — 接口先行(仍不搬文件)
95
-
96
- | # | 任务 | 产出 |
97
- |---|---|---|
98
- | 1.1 | 冻结 brain↔body 契约:只暴露**能力名**,不暴露执行细节 | 契约表(能力名 + 入参/出参语义) |
99
- | 1.2 | 跑通两条链路各一次:身体取知识(`cg(op=whitebox)`)、大脑写记忆(`mdcg_remember`) | 双向链路验证记录 |
100
-
101
- **验收**:契约冻结且带版本号;两条链路各绿一次。
102
-
103
- ### Phase 2 — 代码剥离
104
-
105
- | # | 任务 | 产出 |
106
- |---|---|---|
107
- | 2.1 | 主仓库移除重依赖目录(见 §2.2) | 瘦身后的主仓库 |
108
- | 2.2 | CTP 侧剥离自带 `aeis/` 工程副本(或反向声明 CTP 为发布源) | 剥离/声明记录 |
109
- | 2.3 | 修复 `AEIS/tools/*` 断链 | 补齐或废弃说明 |
110
-
111
- **验收**:主仓库在干净环境 `pip install` / `npm install` 后**无重依赖**即可运行大脑。
112
-
113
- > **详规**:理论仓具体拆分清单、主仓切 `md_cg` 的逐行改动点、白箱知识库内迁的依赖阻断与搬迁映射,见 [docs/理论仓拆分与白箱知识库内迁_v0.1.md](理论仓拆分与白箱知识库内迁_v0.1.md)。
114
-
115
- ### Phase 3 — 数据迁移(最后做 · 不可逆)
116
-
117
- | # | 任务 | 产出 |
118
- |---|---|---|
119
- | 3.1 | **先演练回退**:`mdcg.enabled: false` + 数据不迁移,确认旧通道可用 | 回退演练记录 |
120
- | 3.2 | 再迁 `data/mdcg` | 迁移报告(幂等 + 备份) |
121
-
122
- **验收**:迁移后节点数与原库一致(当前基准 **6340** 节点);数量不符即说明密级 / root / actor 未对齐,须回退重来。
123
-
124
- ### Phase 4 — 命名与文档统一
125
-
126
- | # | 任务 | 产出 |
127
- |---|---|---|
128
- | 4.1 | 全库统一「灵 / 大脑 / 身体」表述 | 术语表 |
129
- | 4.2 | 同步 README 与 `docs/`,清掉「aeis = 大脑」旧语义债 | 修订后的分层入口文档 |
130
-
131
- **验收**:README 三层入口清晰,无「aeis = 大脑」歧义表述;命名与职责一致。
132
-
133
- ---
134
-
135
- ## 4. 贯穿全程的三条铁律
136
-
137
- 1. **先定职责、再定归属**——库名是历史沉积,不是功能声明。不得因为「名字里有 aeis」就归给理论方。
138
- 2. **接口冻结早于代码搬迁**——否则拆的是目录,不是耦合;耦合仍在,只是换了个地方报错。
139
- 3. **数据最后动且可回退**——`data/mdcg` 挪错是**静默失效**(写入只打 warn),6340 节点无法从代码重建。
140
-
141
- ---
142
-
143
- ## 5. 风险与回退
144
-
145
- | 风险 | 触发条件 | 回退动作 |
146
- |---|---|---|
147
- | 记忆真源错位 | `mdcg.root` 落到错误目录,写入静默告警 | 恢复 `data/mdcg` 原位 + `mdcg.enabled: false` |
148
- | 写入冻结期间数据丢失 | Phase 0 冻结但未建备份 | 冻结前先做全量备份(必须前置) |
149
- | 契约冻结不彻底 | 身体侧仍直接读大脑文件 | 强制走契约能力名,禁止跨层直连 |
150
- | 真源判断错误 | Phase 0 diff 结论有误 | 保留 diff 快照,可重判并回滚剥离 |
151
-
152
- **迁移不可逆点**:Phase 3.2。进入前必须完成 Phase 3.1 回退演练。
153
-
154
- ---
155
-
156
- ## 6. 明确不做(边界声明)
157
-
158
- - 本文**不授权**任何文件实际搬迁 / 删除。
159
- - 本文**不改变**任何运行时配置、不修改 `cordis.patch.yml`、不动 `data/mdcg` 内容。
160
- - 本文**不替代** Phase 0 的裁决结论——若裁决结果与本规划假设冲突,以裁决为准并回改本文。
161
-
162
- ---
163
-
164
- ## 7. 下一步(三个裁决性动作)
165
-
166
- 1. `diff -rq` 定 `aeis` 真源;
167
- 2. 一句话写死「身体」定义;
168
- 3. 冻结 `data/mdcg` 写入(含前置备份)。
169
-
170
- > 这三件做完,搬迁清单会自动收敛;在此之前动手,等于在大脑里留一个没有海马体的身体。
171
-
172
- ---
173
-
174
- ## 附:术语对照
175
-
176
- | 本文用语 | 对应现状命名 | 说明 |
177
- |---|---|---|
178
- | 灵 / 理论 | 智能论 v3.4、CTP、CommonTrustProtocol | 协议与认识论 |
179
- | 大脑 / brain | `md_cg`、`dsh-memory`、`@furongjun1999/dsh-memory` | 认知图 + MCP 接口 + 记忆数据 |
180
- | 身体 / body | AEIS(独立仓)、`docker/`、`scripts/`、`src` 之外的宿主层 | 传感器 / 执行器 / 宿主运行时 |
181
- | 真源 | single source of truth | 同一内容只允许一处为准 |
1
+ # 灵枢三层拆分规划 v0.1
2
+
3
+ > 状态:规划稿(未执行任何文件搬迁)
4
+ > 日期:2026-09-10
5
+ > 范围:理论(灵)/ 大脑(brain)/ 身体(body)三仓职责分离与主仓库瘦身
6
+ > 性质:**本文只定义职责与顺序,不构成搬迁授权**;所有搬迁动作须先通过 Phase 0 裁决。
7
+
8
+ ---
9
+
10
+ ## 0. 背景与结论
11
+
12
+ ### 0.1 现状问题
13
+
14
+ | 问题 | 表现 |
15
+ |---|---|
16
+ | 主仓库职责混杂 | `dsh-memory` 同时承载「记忆大脑」与「工程/身体运行时」(`docker/`、`scripts/` 看门狗、宿主启动脚本),二者依赖量级完全不同 |
17
+ | 同名不同物 | 历史命名中「AEIS」既指理论方(CTP)自带的工程副本,又指 `dsh-memory` 的 Python 大脑包,导致「aeis = 大脑」的旧语义债 |
18
+ | 跨库同步困难 | 同一份工程内容在多库各存一份,改动需人工同步,真源不清 |
19
+ | 断链 | `AEIS/tools/*` 指向 `dsh-memory\llm-adapter-poc`,该路径当前不存在(待 Phase 0 核实) |
20
+ | 交付面过宽 | 完整灵枢 = 理论 + 大脑 + 身体,体量巨大;理论难懂、身体重依赖,二者都阻碍了「大多数人只需大脑」这一主路径 |
21
+
22
+ ### 0.2 结论(本次收敛)
23
+
24
+ **主仓库不再放工程内容的完整实现,只放「大脑」。**
25
+
26
+ - 完整灵枢 = **灵** + **脑** + **身**;但对外**默认只交付大脑**。
27
+ - 理论(灵)与身体(身)作为大脑的**可选下层 / 上层**,通过 README 分层入口引导,而非塞进主仓库。
28
+ - 分离的直接收益:消除跨库重复实现,真源唯一,降低同步成本。
29
+ - 面向人群:理论 → 研究者;身体 → 少数需具身者;**大脑 → 大多数人(默认入口)**。
30
+
31
+ ---
32
+
33
+ ## 1. 三层定位
34
+
35
+ | 仓 | 角色 | 内容边界 | 默认读者 | 依赖量级 |
36
+ |---|---|---|---|---|
37
+ | CTP / CommonTrustProtocol | **理论(灵)** | 协议、认识论、信任账本;**不含工程实现**(待剥离自带 `aeis/` 工程副本) | 研究者 | 无(纯文档/协议) |
38
+ | **dsh-memory(主仓库)** | **大脑** | `md_cg` 认知图内核 + MCP/npm 接口 + 记忆数据;**纯逻辑、零重依赖** | **大多数人(默认入口)** | 轻(标准库 + 轻量 npm) |
39
+ | AEIS / body | **身体** | 传感器、语音、执行器、docker 运行环境、模型权重、宿主看门狗 | 少数需具身者 | 重(设备/模型/容器) |
40
+
41
+ **一句话各自定位**
42
+
43
+ - 灵:定义「什么样的智能值得被信任」——协议与公理,不落代码。
44
+ - 脑:定义「记住什么、如何召回、如何自演化」——可在任意宿主上单独运行。
45
+ - 身:定义「如何感知与作用于世界」——可选,且可替换。
46
+
47
+ ---
48
+
49
+ ## 2. 主仓库(大脑)取舍清单
50
+
51
+ ### 2.1 保留(= 大脑本体)
52
+
53
+ | 路径 | 内容 | 理由 |
54
+ |---|---|---|
55
+ | `md_cg/` | 认知图内核(98 py:consolidate / refine / pooling / provenance / whitebox / MCP server…) | 大脑核心,纯 Python |
56
+ | `src/` | MCP / npm 插件接口(8 ts) | 大脑对外唯一入口 |
57
+ | `test/` | 集成测试 | 大脑正确性保障 |
58
+ | `data/` | 记忆数据(**归位须待 Phase 3**) | 大脑资产,非工程副产物 |
59
+ | `package.json` / `tsconfig.json` | 构建定义 | 轻依赖 |
60
+ | `README.md` / `docs/` | 分层入口文档 | 需重写为三层入口(Phase 4) |
61
+
62
+ ### 2.2 移出或降级(= 身体 / 工程)
63
+
64
+ | 路径 | 处置 | 去向 |
65
+ |---|---|---|
66
+ | `docker/` | 移出 | 身体仓(运行环境) |
67
+ | `dsh-web-start.bat` | 移出 | 身体仓(宿主启动) |
68
+ | `scripts/`(看门狗 ps1 / vbs) | 移出 | 身体仓(宿主守护) |
69
+ | 语音 / 模型权重 / 设备相关资源 | 移出 | 身体仓 |
70
+
71
+ ### 2.3 断链修复(Phase 2 处理)
72
+
73
+ - `AEIS/tools/*` → `dsh-memory\llm-adapter-poc`(当前缺失)。
74
+ - 二选一:**补齐**该路径,或**声明废弃**并从文档/代码中移除引用。
75
+ - 原则:不允许存在「文档指向不存在路径」的悬空引用。
76
+
77
+ ---
78
+
79
+ ## 3. 分期任务规划
80
+
81
+ > 顺序不可交换:**先裁决 → 再冻接口 → 再搬代码 → 最后动数据**。
82
+ > 每一期均有独立验收,未通过不得进入下一期。
83
+
84
+ ### Phase 0 — 裁决(不搬任何文件)
85
+
86
+ | # | 任务 | 产出 |
87
+ |---|---|---|
88
+ | 0.1 | `diff -rq` 定 `aeis` 唯一真源(CTP 侧 vs 独立仓侧) | 真源结论 + diff 快照存档 |
89
+ | 0.2 | 一句话写死「身体」操作定义:设备端口 / 世界载体 / 宿主客户端(三择一) | 定义条目(可导出为边界表) |
90
+ | 0.3 | 将 `data/mdcg` 声明为大脑资产,并**冻结写入** | 冻结记录 + 恢复步骤 |
91
+
92
+ **验收**:真源唯一;身体定义可一句话导出;`data/mdcg` 冻结生效且可恢复。
93
+
94
+ ### Phase 1 — 接口先行(仍不搬文件)
95
+
96
+ | # | 任务 | 产出 |
97
+ |---|---|---|
98
+ | 1.1 | 冻结 brain↔body 契约:只暴露**能力名**,不暴露执行细节 | 契约表(能力名 + 入参/出参语义) |
99
+ | 1.2 | 跑通两条链路各一次:身体取知识(`cg(op=whitebox)`)、大脑写记忆(`mdcg_remember`) | 双向链路验证记录 |
100
+
101
+ **验收**:契约冻结且带版本号;两条链路各绿一次。
102
+
103
+ ### Phase 2 — 代码剥离
104
+
105
+ | # | 任务 | 产出 |
106
+ |---|---|---|
107
+ | 2.1 | 主仓库移除重依赖目录(见 §2.2) | 瘦身后的主仓库 |
108
+ | 2.2 | CTP 侧剥离自带 `aeis/` 工程副本(或反向声明 CTP 为发布源) | 剥离/声明记录 |
109
+ | 2.3 | 修复 `AEIS/tools/*` 断链 | 补齐或废弃说明 |
110
+
111
+ **验收**:主仓库在干净环境 `pip install` / `npm install` 后**无重依赖**即可运行大脑。
112
+
113
+ > **详规**:理论仓具体拆分清单、主仓切 `md_cg` 的逐行改动点、白箱知识库内迁的依赖阻断与搬迁映射,见 [docs/theory/理论仓拆分与白箱知识库内迁_v0.1.md](../theory/理论仓拆分与白箱知识库内迁_v0.1.md)。
114
+
115
+ ### Phase 3 — 数据迁移(最后做 · 不可逆)
116
+
117
+ | # | 任务 | 产出 |
118
+ |---|---|---|
119
+ | 3.1 | **先演练回退**:`mdcg.enabled: false` + 数据不迁移,确认旧通道可用 | 回退演练记录 |
120
+ | 3.2 | 再迁 `data/mdcg` | 迁移报告(幂等 + 备份) |
121
+
122
+ **验收**:迁移后节点数与原库一致(当前基准 **6340** 节点);数量不符即说明密级 / root / actor 未对齐,须回退重来。
123
+
124
+ ### Phase 4 — 命名与文档统一
125
+
126
+ | # | 任务 | 产出 |
127
+ |---|---|---|
128
+ | 4.1 | 全库统一「灵 / 大脑 / 身体」表述 | 术语表 |
129
+ | 4.2 | 同步 README 与 `docs/`,清掉「aeis = 大脑」旧语义债 | 修订后的分层入口文档 |
130
+
131
+ **验收**:README 三层入口清晰,无「aeis = 大脑」歧义表述;命名与职责一致。
132
+
133
+ ---
134
+
135
+ ## 4. 贯穿全程的三条铁律
136
+
137
+ 1. **先定职责、再定归属**——库名是历史沉积,不是功能声明。不得因为「名字里有 aeis」就归给理论方。
138
+ 2. **接口冻结早于代码搬迁**——否则拆的是目录,不是耦合;耦合仍在,只是换了个地方报错。
139
+ 3. **数据最后动且可回退**——`data/mdcg` 挪错是**静默失效**(写入只打 warn),6340 节点无法从代码重建。
140
+
141
+ ---
142
+
143
+ ## 5. 风险与回退
144
+
145
+ | 风险 | 触发条件 | 回退动作 |
146
+ |---|---|---|
147
+ | 记忆真源错位 | `mdcg.root` 落到错误目录,写入静默告警 | 恢复 `data/mdcg` 原位 + `mdcg.enabled: false` |
148
+ | 写入冻结期间数据丢失 | Phase 0 冻结但未建备份 | 冻结前先做全量备份(必须前置) |
149
+ | 契约冻结不彻底 | 身体侧仍直接读大脑文件 | 强制走契约能力名,禁止跨层直连 |
150
+ | 真源判断错误 | Phase 0 diff 结论有误 | 保留 diff 快照,可重判并回滚剥离 |
151
+
152
+ **迁移不可逆点**:Phase 3.2。进入前必须完成 Phase 3.1 回退演练。
153
+
154
+ ---
155
+
156
+ ## 6. 明确不做(边界声明)
157
+
158
+ - 本文**不授权**任何文件实际搬迁 / 删除。
159
+ - 本文**不改变**任何运行时配置、不修改 `cordis.patch.yml`、不动 `data/mdcg` 内容。
160
+ - 本文**不替代** Phase 0 的裁决结论——若裁决结果与本规划假设冲突,以裁决为准并回改本文。
161
+
162
+ ---
163
+
164
+ ## 7. 下一步(三个裁决性动作)
165
+
166
+ 1. `diff -rq` 定 `aeis` 真源;
167
+ 2. 一句话写死「身体」定义;
168
+ 3. 冻结 `data/mdcg` 写入(含前置备份)。
169
+
170
+ > 这三件做完,搬迁清单会自动收敛;在此之前动手,等于在大脑里留一个没有海马体的身体。
171
+
172
+ ---
173
+
174
+ ## 附:术语对照
175
+
176
+ | 本文用语 | 对应现状命名 | 说明 |
177
+ |---|---|---|
178
+ | 灵 / 理论 | 智能论 v3.4、CTP、CommonTrustProtocol | 协议与认识论 |
179
+ | 大脑 / brain | `md_cg`、`dsh-memory`、`@furongjun1999/dsh-memory` | 认知图 + MCP 接口 + 记忆数据 |
180
+ | 身体 / body | AEIS(独立仓)、`docker/`、`scripts/`、`src` 之外的宿主层 | 传感器 / 执行器 / 宿主运行时 |
181
+ | 真源 | single source of truth | 同一内容只允许一处为准 |
@@ -1,6 +1,6 @@
1
1
  # 认知图 · P0 收口 证据单(G2 索引接线 + G3 能力标签)v0.1
2
2
 
3
- > 来源:`docs/认知图_索引与工程规范化_计划_v0.1.md` 的 R4/R5 前置项 —— **G2(文档/代码索引接线)** 与
3
+ > 来源:`docs/mdcg/认知图_索引与工程规范化_计划_v0.1.md` 的 R4/R5 前置项 —— **G2(文档/代码索引接线)** 与
4
4
  > **G3(能力标签注入)**;G1(生效条件口径接线到各前缀)已于上一批次闭合(`evo-20260910-152148-2b35`)。
5
5
  > 目标工程:**dsh-memory / md_cg(认知图 + 记忆 OS)**
6
6
  > 证据口径:源码级核对 + **真实库(`AEIS/data/mdcg`)复算** + 前后冻结基线对照(不采信估计值)
@@ -38,7 +38,7 @@
38
38
  |---|---|---|
39
39
  | **G2** 索引接线(md_cg / src / docs 三大域) | ✅ 执行 | 计划 §六 R4/R5 的前置「先有索引」 |
40
40
  | **G3** 能力标签注入(`cap:<op>`) | ✅ 执行 | 计划 §四「索引节点缺能力归属」 |
41
- | G1 生效条件口径接线到各前缀 | ⏸ 已闭合 | 上一批次,见 `docs/认知图_条件空间合成与生效条件口径_v0.1.md` |
41
+ | G1 生效条件口径接线到各前缀 | ⏸ 已闭合 | 上一批次,见 `docs/mdcg/认知图_条件空间合成与生效条件口径_v0.1.md` |
42
42
  | G7 / G8 / G4 / G5 / G6 | ⬜ 不执行 | 登记待定(§八);G8 已裁定方案留作后续依据 |
43
43
 
44
44
  **执行通道(必须记录的环境事实)**:常驻 MCP 服务进程启动于当日改造**之前**,其内存模块缺 `CONDITION_SLOTS` / `condition_space_text`
@@ -1,6 +1,6 @@
1
1
  # 认知图 · G4–G8 缺口裁定单(条件空间声明 + 四态裁决)v0.1
2
2
 
3
- > 来源:`docs/缺口单_P0收口_v0.1.md` §八「DEFER 登记项」——**G4 层归属错位 / G5 视觉证据未落 / G6 node_ 结构提炼 /
3
+ > 来源:`docs/mdcg/缺口单_P0收口_v0.1.md` §八「DEFER 登记项」——**G4 层归属错位 / G5 视觉证据未落 / G6 node_ 结构提炼 /
4
4
  > G7 自主演化无驱动 / G8 溯源链缺失**,外加缺口单 §6.1 的「索引节点应域级分池降权,而非吃 GLOBAL_CAP」。
5
5
  > 目标工程:**dsh-memory / md_cg(认知图 + 记忆 OS)**
6
6
  > 证据口径:源码级核对(行号可回溯)+ **真实库(`AEIS/data/mdcg`)只读复算** + 前后冻结基线对照(不采信估计值、不转述文档结论)
@@ -101,7 +101,7 @@ judge_qualification(mdcg.py:709-714)
101
101
  "lineno":383,"end":462,"lang":"py","hash":"9f2c1ab3de44"}
102
102
 
103
103
  // 文档节点
104
- "doc_ref": {"path":"docs/认知图_MD目录方案_v0.1.md","heading":"9. 分阶段实施(稳健)",
104
+ "doc_ref": {"path":"docs/mdcg/认知图_MD目录方案_v0.1.md","heading":"9. 分阶段实施(稳健)",
105
105
  "heading_path":["9. 分阶段实施(稳健)"],"level":2,
106
106
  "lineno":491,"end":513,"anchor":"9-分阶段实施稳健","hash":"41ab77c0e1d9"}
107
107
  ```
@@ -161,7 +161,7 @@ judge_qualification(mdcg.py:709-714)
161
161
  |---|---|---|---|
162
162
  | **R0** | ✅ **已完成**(§十一 取证纪录):全量 28 用例基线取证 + 修 4 条缺陷(`corpus.reset_root` 全量 rmtree / 3 处编码) | 28/28 全绿;P0 25/25、P1 38/38、P11 27/27、P12 32/32 | ✅ |
163
163
  | **R1** | ✅ **已完成**(§十二 取证纪录):`codeindex.render` 改产 CCG 6 行、`EXTRACTORS` 后缀注册化(AST 精确 / TS-JS 弱提取)、`op=ref` 回读 + 漂移检测、`truncated`/`skipped_suffixes` 显式上报;实测 §1.3-1(role 档位) | ✅ 代码节点判定 **ACCEPT**(不再 BLINDSPOT);`op=ref` 回读文本与源区间**逐字一致**、`hash_match` 检出漂移 | ✅ |
164
- | **R2** | ✅ **已完成**(§十三 取证纪录):`docindex.py`(章节切块 + CCG 渲染 + `doc_ref`)+ `op=index_doc`;裁 §1.3-3(层/密级) | ✅ `docs/` 全部 md(实测 **19/19**,非静默跳过)切块可定位;`docs/认知图_MD目录方案_v0.1.md` 的 §9 表被判 **ACCEPT** 且给出行号 `L491-L516` | ✅ |
164
+ | **R2** | ✅ **已完成**(§十三 取证纪录):`docindex.py`(章节切块 + CCG 渲染 + `doc_ref`)+ `op=index_doc`;裁 §1.3-3(层/密级) | ✅ `docs/` 全部 md(实测 **19/19**,非静默跳过)切块可定位;`docs/mdcg/认知图_MD目录方案_v0.1.md` 的 §9 表被判 **ACCEPT** 且给出行号 `L491-L516` | ✅ |
165
165
  | **R3** | ✅ **已完成**(§十四 取证纪录):`_refindex.json` 增量(抄 `sources.Ingestor` 范式)+ `check_refs` 漂移巡检 + `truncated` 显式上报 + 接入 `sustain.diagnose` | ✅ 改源文件一行 → `ref check` 报 stale(重建后消除);删源 → dangling;`max_files` 触发时 `truncated=true` 且写进水位;`diagnose` 报 `ref_stale`、`heal` 的 `rebuild_refs` 修复 | ✅ |
166
166
  | **R3.1** | ✅ **已完成**(§十五 取证纪录,2026-09-12):节点级对账——`prune_orphans`(改标题产生的过期代)+ `prune_dangling`(源已删的悬空节点),接入 `index_code`/`index_doc` 与 `op=ref action=prune` | ✅ P27 §10/§10b 全绿;真实现场悬空 **20 → 0**(`LIVE_HITS=0`/`TRASH_HITS=20`);受影响面 7 模块 6 绿 1 环境红 | ✅ |
167
167
  | **R3.2** | ✅ **已完成**(§十五 取证纪录,2026-09-12):索引器**追加排除** `skip_dirs`(`index_code`/`index_doc`)——把 `.gitignore` 已忽略却物理留存的实验产物挡在门外,替代「调大 `max_files`」这一掩盖手段 | ✅ P27 **75/0** 全绿(§9 由 `500/2388` 红转 `30/30`);新增 §9b 验证匹配口径 / 只增不减 / 可审计;受影响面 10 模块全绿 | ✅ |
@@ -223,7 +223,7 @@ md_cg 侧再补 `timeout_ms` 与 `needs_clearance` 两个扩展字段。裁剪
223
223
  3. **`hash` 不是内容寻址**:只做变更探测,不保证「内容相同即同节点」。
224
224
  4. ~~R0 有一个待闭环疑点~~ → **已在 §十一 闭环**。「`test_p1` EXIT 1 且输出仅 165 字节」的根因与 `test_p0` 同一类:受管环境下 `os.remove` 被环境 shim 接管,
225
225
  删除量越阈即中断进程;且失败形态是**静默截断 + 非零退出**,不是一条 FAIL。现已改为不清空目录(原子覆盖 + 等号守门),并全量复跑验证。
226
- 5. **当前工作区未提交**:`docs/认知图_MD目录方案_v0.1.md`、`bench_p0.py`、`census.py`、`test_p0.py`、`test_p1.py` 已改,`md_cg/corpus.py` 未跟踪——R0 应先收口提交,再动索引层。
226
+ 5. **当前工作区未提交**:`docs/mdcg/认知图_MD目录方案_v0.1.md`、`bench_p0.py`、`census.py`、`test_p0.py`、`test_p1.py` 已改,`md_cg/corpus.py` 未跟踪——R0 应先收口提交,再动索引层。
227
227
 
228
228
  ---
229
229
 
@@ -253,7 +253,7 @@ md_cg 侧再补 `timeout_ms` 与 `needs_clearance` 两个扩展字段。裁剪
253
253
  `_md_cg_p0` 实测 **0 文件**——说明第一个 `reset_root(ROOT)` 已清空+重建成功,死在第二个;
254
254
  `_md_cg_p1` 实测 **350 文件**(< 500)故通过——**只差 150 就到阈值**,这正是历史上「P1 EXIT 1 / 165 字节」的同源形态。
255
255
 
256
- **关键点:文档早已裁决过**。`docs/认知图_MD目录方案_v0.1.md:365-367` 原文:
256
+ **关键点:文档早已裁决过**。`docs/mdcg/认知图_MD目录方案_v0.1.md:365-367` 原文:
257
257
  > 幂等性:迁移按 node id 原子覆盖写,可反复执行,**不需要先清空目录**。(这不只是便利:清空目录依赖 `rmtree`,
258
258
  > 在有安全策略的环境下会被拦截,而"必须先删除才能重跑"的迁移脚本本身就是个脆弱设计。)
259
259
 
@@ -35,10 +35,10 @@ P8 34 · P9 37 · P10 24 · P11 27 · P12 32 · P13 42 · P14 44 · P15 53 · P1
35
35
  | 3 | **RRF 并行多路召回** | `search_rrf(...)` | 词法 / 条件桶 / 实体 / 图扩展 四路并行 → Reciprocal Rank Fusion;结果带 **provenance**(可审计)|
36
36
  | 4 | **审核队列 edit/merge** | `propose` · `review_list` · `review_decide` | 海马体式 `hippocampus/inbox.jsonl` → `decisions.jsonl`;裁决 **accept / reject / edit / merge** |
37
37
  | 5 | **tombstone + 恢复检查** | `forget` · `restore` · `is_tombstoned` | 软删除入 `trash/` + `_deletions.jsonl` 删除清单;恢复时校验,须 `force` 才可强恢复 |
38
- | 6 | **payload-free 审计** | `_audit` · `audit_records` | 每次变更只记 `{t,op,id,actor,payload_hash}`,**绝不记内容** |
38
+ | 6 | **payload-free 审计 + 分片轮转** | `_audit` · `audit_records` · `rotate_audit` · `audit_scale` | 每次变更只记 `{t,op,id,actor,payload_hash}`,**绝不记内容**;活动日志超 `AUDIT_ROTATE_BYTES` 即 `os.replace` 原子切分(分片数 ≤ `AUDIT_KEEP_SHARDS`)⇒ **单文件与总量都有上界**;读数走 O(1) 元数据口径(超大历史分片只给量级并标 `exact=False`)|
39
39
  | 7 | **budget-driven pack** | `recall(query, budget_tokens)` | 装到预算花完;**超大条目跳过而非停下**(继续尝试更小的)|
40
40
 
41
- 另:`health_os()` 在原有健康度上并入 OS 指标(role 分布 / 待审数 / 墓碑数 / 审计事件数 / 反思数)。
41
+ 另:`health_os()` 在原有健康度上并入 OS 指标(role 分布 / 待审数 / 墓碑数 / 审计事件数 / 反思数);审计面另透出**轮转证据**:`audit_shards` / `audit_total_bytes` / `audit_total_events` / `audit_total_exact` / `audit_oversized`。
42
42
 
43
43
  ---
44
44