@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.
- package/README.md +92 -37
- package/codebuddy/CODEBUDDY.md +195 -185
- 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
- package/docs/README.md +111 -0
- package/docs/discipline/harnesses.yaml +215 -152
- package/docs/discipline/templates/full.md.tmpl +60 -58
- 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
- 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
- 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
- package/docs/experiments/m4-role-probe/census.py +86 -0
- package/docs/experiments/m4-role-probe/probe.py +89 -0
- package/docs/experiments/mapped_confidence/bench_mapped_conf.py +216 -0
- package/docs/experiments/mapped_confidence/post_check.py +75 -0
- package/docs/experiments/mapped_confidence/repro_thirdparty_tol.py +83 -0
- package/docs/experiments/mapped_confidence/result_mapped_conf.json +215 -0
- 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
- package/docs/{README → mdcg/README}/350/257/246/347/273/206/347/211/210_v0.4.5.md +9 -9
- 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
- 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
- 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
- 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
- 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
- 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
- package/docs/{ → mdcg/}/347/274/272/345/217/243/345/215/225_P0/346/224/266/345/217/243_v0.1.md +2 -2
- 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
- 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
- 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
- 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
- package/docs/{ → swarm/}/350/234/202/347/276/244/344/272/222/350/201/224_v0.1.md +3 -3
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/dsh/README.md +1 -1
- package/lib/hooks.d.ts +5 -0
- package/lib/hooks.js +10 -1
- package/lib/lib/prompt_safety.d.ts +48 -0
- package/lib/lib/prompt_safety.js +62 -0
- package/md_cg/audit.py +76 -2
- package/md_cg/bench_membench.py +10 -5
- package/md_cg/bench_progressive.py +48 -9
- package/md_cg/branches.py +275 -0
- package/md_cg/ccgc.py +884 -0
- package/md_cg/conformance.py +662 -0
- package/md_cg/consistency.py +1 -1
- package/md_cg/corpus.py +1 -1
- package/md_cg/eval_common.py +6 -5
- package/md_cg/forgetting.py +11 -3
- package/md_cg/fsutil.py +63 -1
- package/md_cg/identity.py +2 -2
- package/md_cg/insight.py +2 -2
- package/md_cg/lifecycle.py +262 -0
- package/md_cg/mcp_server.py +547 -140
- package/md_cg/mdcg.py +206 -18
- package/md_cg/mdcos.py +512 -50
- package/md_cg/metacognition.py +2 -2
- package/md_cg/mreview/__init__.py +25 -0
- package/md_cg/mreview/__main__.py +107 -0
- package/md_cg/mreview/bundle.py +170 -0
- package/md_cg/mreview/candidates.py +253 -0
- package/md_cg/mreview/govern.py +674 -0
- package/md_cg/mreview/locate.py +905 -0
- package/md_cg/mreview/pipeline.py +701 -0
- package/md_cg/mreview/rules/duplication.json +21 -0
- package/md_cg/mreview/rules/field_coverage.json +54 -0
- package/md_cg/mreview/rules/source_license.json +21 -0
- package/md_cg/mreview/rules/template_flow.json +21 -0
- package/md_cg/mreview/ruleset.py +238 -0
- package/md_cg/nodefile.py +38 -0
- package/md_cg/predict.py +24 -6
- package/md_cg/protect.py +4 -4
- package/md_cg/refindex.py +41 -2
- package/md_cg/scrub.py +5 -1
- package/md_cg/self_state.py +1 -1
- package/md_cg/semantic/en_normalizer.py +85 -25
- package/md_cg/sustain.py +18 -0
- package/md_cg/tasks.py +447 -0
- package/md_cg/test_action_derive.py +203 -0
- package/md_cg/test_audit_rotate.py +270 -0
- package/md_cg/test_branches.py +249 -0
- package/md_cg/test_ccg_perturb.py +1 -1
- package/md_cg/test_ccgc.py +423 -0
- package/md_cg/test_conformance.py +343 -0
- package/md_cg/test_en_pipeline.py +24 -0
- package/md_cg/test_health_scale.py +173 -0
- package/md_cg/test_identity_attribution.py +6 -0
- package/md_cg/test_index_durability.py +224 -0
- package/md_cg/test_lifecycle.py +309 -0
- package/md_cg/test_mr_m1.py +679 -0
- package/md_cg/test_mr_m2.py +587 -0
- package/md_cg/test_mr_m3.py +703 -0
- package/md_cg/test_mr_m4.py +485 -0
- package/md_cg/test_p1.py +1 -1
- package/md_cg/test_p11_consistency.py +1 -1
- package/md_cg/test_p12_metacognition.py +2 -2
- package/md_cg/test_p16_self_state.py +1 -1
- package/md_cg/test_p26_refindex.py +1 -1
- package/md_cg/test_p27_docindex.py +22 -2
- package/md_cg/test_p28_refcheck.py +1 -1
- package/md_cg/test_p29_session_ingest_export.py +1 -1
- package/md_cg/test_p2_mcp.py +7 -1
- package/md_cg/test_p38_contextualize.py +1 -1
- package/md_cg/test_p39_vision_evidence.py +1 -1
- package/md_cg/test_p40_refine_worklist.py +1 -1
- package/md_cg/test_p41_evolve_patrol.py +1 -1
- package/md_cg/test_p42_provenance.py +1 -1
- package/md_cg/test_p43_pooling.py +41 -13
- package/md_cg/test_read_clip.py +137 -0
- package/md_cg/test_review_conformance.py +310 -0
- package/md_cg/test_tasks.py +409 -0
- package/md_cg/test_tool_face.py +189 -0
- package/md_cg/test_twophase.py +286 -0
- package/md_cg/test_writepipe.py +210 -0
- package/md_cg/theory.py +1 -1
- package/md_cg/tokens.py +95 -5
- package/md_cg/tool_face.py +250 -0
- package/md_cg/twophase.py +221 -0
- package/md_cg/units.py +546 -0
- package/md_cg/vision_evidence.py +1 -1
- package/md_cg/weights.py +1 -1
- package/md_cg/whitebox.py +1 -1
- package/md_cg/whitebox_kb/data/verify_cache.json +28 -0
- package/md_cg/whitebox_kb/data/verify_savings.jsonl +46 -0
- package/md_cg/whitebox_kb/wisdom/audit_log/chain_heat.json +10 -10
- package/md_cg/whitebox_kb/wisdom/wisdom-book-cloud.db-shm +0 -0
- package/md_cg/whitebox_kb/wisdom/wisdom-book-cloud.db-wal +0 -0
- package/md_cg/writelimit.py +19 -3
- package/md_cg/writepipe.py +372 -0
- package/package.json +1 -1
- package/src/hooks.ts +10 -1
- package/src/lib/prompt_safety.ts +62 -0
- package/zcode/AGENTS.md +195 -185
- 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
- /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
- /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
- /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
- /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
- /package/docs/{guardrail-charter.md → mdcg/guardrail-charter.md} +0 -0
- /package/docs/{lingshu_tutorial.html → mdcg/lingshu_tutorial.html} +0 -0
- /package/docs/{memory-assessment.html → mdcg/memory-assessment.html} +0 -0
- /package/docs/{memory_score.html → mdcg/memory_score.html} +0 -0
- /package/docs/{memory_score.png → mdcg/memory_score.png} +0 -0
- /package/docs/{release_v0.3.0.md → mdcg/release_v0.3.0.md} +0 -0
- /package/docs/{release_v0.4.5.md → mdcg/release_v0.4.5.md} +0 -0
- /package/docs/{tool_table_v0.3.0.md → mdcg/tool_table_v0.3.0.md} +0 -0
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /package/docs/{ → theory/}/346/231/272/350/203/275/350/256/2723.4.md" +0 -0
- /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
- /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,221 +0,0 @@
|
|
|
1
|
-
# 功能调用映射表 v0.1(功能 → 显式代码)
|
|
2
|
-
|
|
3
|
-
> 目标:**任何一个功能,都能从这份文档查到它调用的是哪段代码**。
|
|
4
|
-
> 所有调用都是显式的——没有隐式 provider、没有隐式记忆后端。
|
|
5
|
-
>
|
|
6
|
-
> 版本:v0.1 · 2026-09-10 · 对应改造:md_cg 唯一真源 / AEIS 降能力库 / 白箱下线 / roleplay+mutual 归 LIB。
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 0. 三条总原则
|
|
11
|
-
|
|
12
|
-
| 原则 | 含义 | 落点 |
|
|
13
|
-
| --- | --- | --- |
|
|
14
|
-
| **唯一真源** | 记忆的写 / 读 / 裁决 / 留痕只有一处:md_cg 认知图 | `md_cg/` |
|
|
15
|
-
| **能力库** | AEIS 不再存记忆,只提供能力(白箱引擎、角色生成) | 由 md_cg 显式调用 |
|
|
16
|
-
| **显式调用** | 每个功能 = 一条写明参数的调用,可 grep 可追踪 | 本表 |
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
DSH 插件 (src/)
|
|
20
|
-
│ src/lib/mdcg_client.ts ← 插件侧唯一显式入口
|
|
21
|
-
▼
|
|
22
|
-
MCP stdio:md_cg/mcp_server.py
|
|
23
|
-
│ cg(op=...) / stg(op=...) ← 两个认知基元(kernel 面)
|
|
24
|
-
│ mdcg_remember ← 写入工具(跳过 audit 的写入口,见 §1 注)
|
|
25
|
-
├──────────────► md_cg/*.py (认知图内部实现)
|
|
26
|
-
└─ cg(op=whitebox) ─► md_cg/whitebox.py ─► AEIS 能力库(python -m aeis.mcp.server)
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## 1. 认知基元 `cg`(`md_cg/mcp_server.py:_cg_call`,入口 L1058)
|
|
32
|
-
|
|
33
|
-
| 功能 | 显式调用 | 代码位置 |
|
|
34
|
-
| --- | --- | --- |
|
|
35
|
-
| 服务信息 / 健康 | `cg(op=info)` | `mcp_server.py:1062` → `audit.kinds` |
|
|
36
|
-
| 路由:意图→知识+建议能力 | `cg(op=route)` | `mcp_server.py:1070` → `MdCG.search` |
|
|
37
|
-
| 读取(按 id / 召回 / 预算) | `cg(op=read)` | `mcp_server.py:1090` → `MdCG.get` / `MdCG.recall` / `MdCG.search` |
|
|
38
|
-
| 写入(含冲突检测/闸门/**审核**) | `cg(op=write)` | `mcp_server.py:1344` → `audit.audit` + `MdCG.add` / `remember_gated` / `propose` |
|
|
39
|
-
| **插件写入入口(跳过审核)** | `mdcg_remember` | `mcp_server.py:1691` → `MdCG.remember_gated`(gated=true)/ `MdCG.add`(gated=false) |
|
|
40
|
-
| 目标 | `cg(op=goal)` | `mcp_server.py:1190` → `MdCG.add_goal` / `set_goal_status` / `list_goals` |
|
|
41
|
-
| 最近记忆 | `cg(op=recent)` | `mcp_server.py:1209` → `MdCG.remember_event` / `recent_events` |
|
|
42
|
-
| 外部裁决回填 | `cg(op=verify)` | `mcp_server.py:1221` → `MdCG.verify` |
|
|
43
|
-
| 审核队列 | `cg(op=review)` | `mcp_server.py:1225` → `MdCG.review_*` |
|
|
44
|
-
| 主动遗忘 / 恢复 | `cg(op=forget)` | `mcp_server.py:1241` → `MdCG.forget` / `restore` |
|
|
45
|
-
| 保护(不可遗忘) | `cg(op=protect)` | `mcp_server.py:1247` → `_protect_call` → `md_cg/protect.py` |
|
|
46
|
-
| 身份维度 | `cg(op=identity)` | `mcp_server.py:1250` → `_identity_call` → `md_cg/identity.py` |
|
|
47
|
-
| 一致性检测 | `cg(op=consistency)` | `mcp_server.py:1253` → `_consistency_call` → `md_cg/consistency.py` |
|
|
48
|
-
| 元认知 | `cg(op=metacognition)` | `mcp_server.py:1256` → `_metacognition_call` → `md_cg/metacognition.py` |
|
|
49
|
-
| 自我状态 | `cg(op=self_state)` | `mcp_server.py:1259` → `_self_state_call` → `md_cg/self_state.py` |
|
|
50
|
-
| 飞轮 / 自愈 | `cg(op=sustain)` | `mcp_server.py:1262` → `_sustain_call` → `md_cg/sustain.py` |
|
|
51
|
-
| 洗脑 / 去污染 | `cg(op=scrub)` | `mcp_server.py:1265` → `_scrub_call` → `md_cg/scrub.py` |
|
|
52
|
-
| 预测 / 因果门 | `cg(op=predict)` | `mcp_server.py:1268` → `_predict_call` → `md_cg/predict.py` |
|
|
53
|
-
| 因果链 | `cg(op=causal)` | `mcp_server.py:1271` → `_causal_call` → `md_cg/chain.py` |
|
|
54
|
-
| **白箱能力库** | `cg(op=whitebox)` | `mcp_server.py:1274` → `_whitebox_call` → `md_cg/whitebox.py`(见 §3) |
|
|
55
|
-
| 代码索引 | `cg(op=index_code)` | `mcp_server.py:1277` → `md_cg/codeindex.py` |
|
|
56
|
-
|
|
57
|
-
> ⚠️ **插件写入必须走 `mdcg_remember`,不能走 `cg(op=write)`**:
|
|
58
|
-
> `cg(op=write)` 先过 `audit.audit(content_kind)`,未声明 `content_kind` 且未配置
|
|
59
|
-
> `MDCG_POLICY_FILE` 时恒判 BLINDSPOT/DEFER —— 只进审核队列、**永不落盘**。
|
|
60
|
-
> 实测:自动记忆走 `cg(op=write)` 时 0 篇 md 文档;改用 `mdcg_remember(gated=true)`
|
|
61
|
-
> 后 verdict=ACCEPT、md 文档数=1、timeline/read 均命中。
|
|
62
|
-
> `cg(op=write)` 仍保留给「需要审核留痕的显式写入」场景。
|
|
63
|
-
|
|
64
|
-
## 2. 语义时空基元 `stg`(`mcp_server.py:_stg_call`,入口 L1316)
|
|
65
|
-
|
|
66
|
-
| 功能 | 显式调用 | 代码位置 |
|
|
67
|
-
| --- | --- | --- |
|
|
68
|
-
| 两节点关系 | `stg(op=relation)` | `mcp_server.py:1320` → `stg.relation` |
|
|
69
|
-
| 时间线 | `stg(op=timeline)` | `mcp_server.py:1322` → `stg.timeline` |
|
|
70
|
-
| 锚点检索 | `stg(op=anchors)` | `mcp_server.py:1326` → `stg.anchors` |
|
|
71
|
-
| 时空一致性 | `stg(op=consistency)` | `mcp_server.py:1329` → `stg.consistency` |
|
|
72
|
-
|
|
73
|
-
## 3. 白箱能力库(`md_cg/whitebox.py`,AEIS 降为能力库后的唯一入口)
|
|
74
|
-
|
|
75
|
-
白箱 LLM provider **已下线**(不再注册 `lingshu-whitebox`);能力改由 md_cg 显式调用并留痕。
|
|
76
|
-
|
|
77
|
-
| 功能 | 显式调用 | 代码位置 |
|
|
78
|
-
| --- | --- | --- |
|
|
79
|
-
| 统一分发 | `cg(op=whitebox, action=...)` | `mcp_server.py:1274` → `_whitebox_call`(L1306)→ `whitebox.dispatch`(`whitebox.py:387`) |
|
|
80
|
-
| 白箱问答 | `action=ask` | `whitebox.py:322 ask` → `WhiteboxClient.ask`(`whitebox.py:185`)→ 能力库 `wisdom_chat` |
|
|
81
|
-
| 白箱编码 | `action=remember` | `whitebox.py:334 remember` → `WhiteboxClient.remember`(`whitebox.py:194`)→ 能力库 `remember` |
|
|
82
|
-
| **验证编码能力** | `action=verify_encoding` | `whitebox.py:234 verify_encoding`:写入口令→追问命中 |
|
|
83
|
-
| **验证已有知识回答能力** | `action=verify_existing` | `whitebox.py:266 verify_existing`:探针问题 route=self 且非空 |
|
|
84
|
-
| 连通性探测 | `action=ping` | `whitebox.py:300 ping` |
|
|
85
|
-
| 验证报告 | `action=report` | `whitebox.py:366 report`(self 层留痕汇总) |
|
|
86
|
-
| 留痕 | — | `whitebox.py:350 _record` → `cg.add(layer=self, tags=['whitebox:verify'], verification_basis='test')` |
|
|
87
|
-
|
|
88
|
-
> 细粒度工具别名:`mdcg_whitebox`(`mcp_server.py:1345`)与 `cg(op=whitebox)` 等价。
|
|
89
|
-
> 启动命令可由 `MDCG_WHITEBOX_CMD` / `MDCG_WHITEBOX_ARGS` / `MDCG_WHITEBOX_TIMEOUT` 覆盖(`whitebox.py:61`)。
|
|
90
|
-
|
|
91
|
-
## 4. 插件侧 LIB 本地库(`src/lib/`)
|
|
92
|
-
|
|
93
|
-
### 4.1 `mdcg_client.ts` —— 插件调用认知图的唯一显式入口
|
|
94
|
-
|
|
95
|
-
| 插件方法 | 映射到 | 说明 |
|
|
96
|
-
| --- | --- | --- |
|
|
97
|
-
| `cg(args)` / `stg(args)` | MCP `cg` / `stg` | 逃生口,显式传参 |
|
|
98
|
-
| `route(intent)` | `cg(op=route)` | 意图 → 知识 + 建议能力 |
|
|
99
|
-
| `read(query)` / `get(nodeId)` | `cg(op=read)` | 语义召回 / 按 id 取 |
|
|
100
|
-
| `write(content, extra)` | MCP `mdcg_remember`(gated=false) | 直写 `MdCG.add`;角色 / 转录 / 导入复用 |
|
|
101
|
-
| `remember(content, extra)` | MCP `mdcg_remember`(gated=true, layer=contextual) | 记忆沉淀 + 主动遗忘闸门 |
|
|
102
|
-
| `recall(query, k)` | `cg(op=read, query, k)` | 语义召回;读取记 access log(复用观测) |
|
|
103
|
-
| `verify(nodeId, evidence, verdict)` | `cg(op=verify)` | 外部裁决回填 |
|
|
104
|
-
| `recent(limit)` | `cg(op=recent)` | 近期事件窗口 |
|
|
105
|
-
| `timeline(limit)` | `stg(op=timeline)` | 最近记忆时间线(自动召回注入用) |
|
|
106
|
-
| `identity(subjectId)` | `cg(op=identity)` | 身份维度读取 |
|
|
107
|
-
| `whitebox(action, extra)` | `cg(op=whitebox)` | 白箱能力验证 |
|
|
108
|
-
| `serviceInfo()` | `cg(op=info)` | 服务信息 |
|
|
109
|
-
| `verifyClaim(claim)` | `cg(op=read)` + 依据强度判定 | 互维 memory 通道 |
|
|
110
|
-
| `writeRole(roleId, content)` | `mdcg_remember(layer=knowledge)` | 角色定义落图 |
|
|
111
|
-
| `writeTranscript(roleId, sid, who, text)` | `mdcg_remember(layer=contextual)` | 对话转录落图 |
|
|
112
|
-
|
|
113
|
-
身份注入:`MDCG_ROOT / MDCG_TENANT / MDCG_CLEARANCE / MDCG_ACTOR / MDCG_IDENTITY`
|
|
114
|
-
(`mdcg_client.ts` 构造器)。**写入还需凭据**:`MDCG_TOKEN`(推荐)或
|
|
115
|
-
`MDCG_LEGACY_ENV_AUTH=1`(兼容旧部署)——**两者都不设即默认状态**:只读 guest
|
|
116
|
-
(读 / 召回 / 时间线可用,写入全失败、不落盘)。
|
|
117
|
-
|
|
118
|
-
### 4.2 `roleplay_web.ts` —— 角色扮演网页(LIB 本地库)
|
|
119
|
-
|
|
120
|
-
| 功能 | 显式调用 | 代码位置 |
|
|
121
|
-
| --- | --- | --- |
|
|
122
|
-
| 对话生成 | 能力库 `roleplay_chat` | `roleplay_web.ts:765` |
|
|
123
|
-
| 用户发言落图 | `MdcgClient.writeTranscript(role, cid, 'user', msg)` | `roleplay_web.ts:765` → `mdcg_remember` |
|
|
124
|
-
| 角色回复落图 | `MdcgClient.writeTranscript(role, cid, 'assistant', reply)` | `roleplay_web.ts:784` → `mdcg_remember` |
|
|
125
|
-
| 新建角色 | 能力库 `role_create` + `MdcgClient.writeRole` | `roleplay_web.ts:848` / `851` |
|
|
126
|
-
| 导入记忆/锚点/价值观 | 能力库 `role_import` + `MdcgClient.write`(三导入→knowledge/self/structural) | `roleplay_web.ts:681` / `692` |
|
|
127
|
-
| 落图开关 | `toGraph(label, fn)`(未就绪静默跳过,失败仅告警) | `roleplay_web.ts:451` |
|
|
128
|
-
|
|
129
|
-
### 4.3 `mutual.ts` —— 互维维护(LIB 本地库)
|
|
130
|
-
|
|
131
|
-
| 功能 | 显式调用 | 代码位置 |
|
|
132
|
-
| --- | --- | --- |
|
|
133
|
-
| memory 通道核验 | `MdcgClient.verifyClaim`(注入),未就绪回退能力库 `wisdom_verify` | `index.ts:274` |
|
|
134
|
-
| 复核通道 | 能力库 `think`(DeepSeek 独立复核) | `index.ts:296` |
|
|
135
|
-
| 双通道合并裁决 | `combineVerdict` | `mutual.ts:236` |
|
|
136
|
-
| 任务处理 | `processTask` → `whiteboxVerify` + `llmReview` | `mutual.ts:267` |
|
|
137
|
-
| 心跳 / 任务扫描 | `writeHeartbeat` / `scanTasks` | `mutual.ts`(默认导出 L406) |
|
|
138
|
-
|
|
139
|
-
### 4.4 `whitebox_llm.ts` —— 白箱 LLM 适配器(**已下线,保留为本地库**)
|
|
140
|
-
|
|
141
|
-
- 不再被 `src/index.ts` 安装 → DSH 设置页无 `lingshu-whitebox` provider。
|
|
142
|
-
- 保留原因:未来成熟后恢复;或作为库复用 `isCardFormat()` 等纯函数。
|
|
143
|
-
- 白箱能力验证改走 §3 的 `cg(op=whitebox)`。
|
|
144
|
-
|
|
145
|
-
## 5. 数据迁移
|
|
146
|
-
|
|
147
|
-
| 功能 | 显式命令 | 代码位置 |
|
|
148
|
-
| --- | --- | --- |
|
|
149
|
-
| AEIS(sqlite)→ 认知图 | `python -m md_cg.migrate_aeis --db <sqlite> --root <md_root>` | `md_cg/migrate_aeis.py:migrate` |
|
|
150
|
-
| 角色扮演 + 互维 → 认知图 | `python -m md_cg.migrate_roleplay --data-dir <roleplay_data> --root <md_root> [--mutual-dir <~/.lingxu_net>]` | `md_cg/migrate_roleplay.py:migrate` |
|
|
151
|
-
|
|
152
|
-
`migrate_roleplay` 的映射:
|
|
153
|
-
|
|
154
|
-
| 源 | 目标层 | node_id |
|
|
155
|
-
| --- | --- | --- |
|
|
156
|
-
| `roleplay/_roles.json` 角色 | knowledge | `roleplay_role_<id>` |
|
|
157
|
-
| `*_items`(memory / anchors / values) | knowledge / self / structural | `roleplay_<role>_<kind>_<i>` |
|
|
158
|
-
| `transcripts/<role>__<cid>.jsonl` 每轮 | contextual | `roleplay_turn_<role>_<cid>_<idx>` |
|
|
159
|
-
| 互维 `result-<id>.json` / `task-<id>.json` | contextual | `mutual_task_<id>` |
|
|
160
|
-
|
|
161
|
-
验证:P18 `python -m md_cg.test_p18_whitebox`;P19 `python -m md_cg.test_p19_migrate_roleplay`。
|
|
162
|
-
|
|
163
|
-
## 6. 配置项 → 生效位置
|
|
164
|
-
|
|
165
|
-
| 配置 | 默认 | 生效位置 |
|
|
166
|
-
| --- | --- | --- |
|
|
167
|
-
| `mdcg.enabled` | true | `index.ts:189` 是否启动认知图子进程 |
|
|
168
|
-
| `mdcg.root` | `data/mdcg` | `MDCG_ROOT` → `mdcg_client.ts:81` |
|
|
169
|
-
| `mdcg.actor` | `dsh-memory` | `MDCG_ACTOR`;**须与迁移 `--actor` 一致** |
|
|
170
|
-
| `mdcg.tenant` | `default` | `MDCG_TENANT`;**须与迁移 `--tenant` 一致** |
|
|
171
|
-
| `mdcg.clearance` | `private` | `MDCG_CLEARANCE`;决定能读写的密级上限 |
|
|
172
|
-
| `env.MDCG_TOKEN` | **无(写权限默认关闭)** | 认知图写入凭据。签发:`python -m md_cg.tokens issue --role designer --actor dsh-memory --clearance internal --ops-allow … --layers-allow …`(`--ops-allow` / `--layers-allow` 只能收窄,`--role recorder` 为最小权限版) |
|
|
173
|
-
| `env.MDCG_LEGACY_ENV_AUTH` | 无 | 兼容旧部署的 env 直连身份(`recorder`);与 `MDCG_TOKEN` 都不设 → 只读 `guest` |
|
|
174
|
-
| `env.MDCG_CAN_ADMIN` | 无 | 配合 legacy auth:`'1'` → `designer`(可写 `self` 层,角色 anchors 导入需要) |
|
|
175
|
-
|
|
176
|
-
**写权限默认关闭**:不配凭据时插件以只读 `guest` 运行——读 / 召回 / 时间线
|
|
177
|
-
照常,写入不落盘(`index.ts` 启动告警)。是否打开由用户决定。三种身份的
|
|
178
|
-
实际覆盖(用 `_probe_token.py` 对真实 MCP 进程实测):
|
|
179
|
-
|
|
180
|
-
| 调用点 | `guest`(默认) | `record`(最小权限) | `designer`(收窄版) |
|
|
181
|
-
| --- | --- | --- | --- |
|
|
182
|
-
| `route` / `read` / `recall` / `recent` / `stg(op=timeline)` | ✓ | ✓ | ✓ |
|
|
183
|
-
| `cg(op=whitebox)` | ✓ | ✗ | ✓ |
|
|
184
|
-
| `cg(op=goal)` | ✗ | ✓ | ✓ |
|
|
185
|
-
| `cg(op=identity)` / `cg(op=verify)` | ✗ | ✗ | ✓ |
|
|
186
|
-
| `mdcg_remember` → contextual / knowledge / structural | ✗ | ✓ | ✓ |
|
|
187
|
-
| `mdcg_remember` → self(角色 anchors 导入) | ✗ | ✗ | ✓ |
|
|
188
|
-
| 管理类(`forget` / `restore` / `review_decide`) | ✗ | ✗ | ✗(收窄后不留) |
|
|
189
|
-
| `mutual.enabled` | false | `index.ts:256` 是否启动互维维护 |
|
|
190
|
-
| `MDCG_MCP_SURFACE` | `kernel` | `mcp_server.py`:kernel 仅 `cg`/`stg`,full 另含 29 个细粒度工具 |
|
|
191
|
-
|
|
192
|
-
## 7. 关键约定
|
|
193
|
-
|
|
194
|
-
1. **身份绑定加密**:私有内容按 `(tenant, actor)` 派生 DEK;换身份读同一节点 = 「不可读即不存在」。
|
|
195
|
-
故迁移脚本 `--tenant/--actor` 必须与插件 `config.mdcg.tenant/actor` 一致。
|
|
196
|
-
2. **依据强度**:`verification_basis` 取值限 `compiler | test | measurement | formal_proof | data | other`;
|
|
197
|
-
互维判定视前五者为「强依据」(`mdcg_client.ts:56`)。
|
|
198
|
-
3. **失败降级**:认知图未就绪时,互维回退能力库 `wisdom_verify`(`index.ts:274`);
|
|
199
|
-
角色扮演落图失败仅告警,不阻断对话(`roleplay_web.ts:446`)。
|
|
200
|
-
4. **写权限 fail-closed 且默认关闭**:md_cg 无 `MDCG_TOKEN` / `MDCG_LEGACY_ENV_AUTH=1`
|
|
201
|
-
时降级为只读 `guest`——`route`/`read`/`recall`/`timeline` 正常(自动召回不受影响),
|
|
202
|
-
但 `mdcg_remember` 全部 `AccessDenied`、不落盘。**默认即此状态**,打开写权限由用户
|
|
203
|
-
自行决定;插件不代为注入凭据,只在启动时告警(`index.ts`),避免「看起来在记忆、
|
|
204
|
-
其实没落盘」。写 `self` 层(角色 anchors 导入)须 `designer`
|
|
205
|
-
(`MDCG_CAN_ADMIN=1` 或收窄版 designer 令牌)。
|
|
206
|
-
5. **写入通道唯一**:所有插件写入经 `mdcg_remember`;`cg(op=write)` 会走 audit
|
|
207
|
-
(未声明 `content_kind` 时永不落盘),仅供需要审核留痕的显式调用。
|
|
208
|
-
6. **stdio 一律 UTF-8**:`MdcgClient` 构造子进程时强制 `PYTHONIOENCODING=utf-8`。
|
|
209
|
-
Windows 下 piped Python 默认 `gbk` + `surrogateescape`,Node 写的 UTF-8 中文会被
|
|
210
|
-
解成孤立代理字符(`\udcXX`)→ md_cg 落盘/回写 `UnicodeEncodeError`,**中文记忆
|
|
211
|
-
全部失败**。md_cg 自带测试(`test_p2_mcp.py`)与 `test/bridge.test.ts` 均以该
|
|
212
|
-
环境变量启动,客户端此前漏设。
|
|
213
|
-
|
|
214
|
-
## 8. 变更记录
|
|
215
|
-
|
|
216
|
-
| 日期 | 变更 |
|
|
217
|
-
| --- | --- |
|
|
218
|
-
| 2026-09-10 | md_cg 定为唯一真源;AEIS 降能力库;白箱 provider 下线(保留本地库)+ 新增 `cg(op=whitebox)` 验证通道;roleplay/mutual 迁入 `src/lib` 并改用认知图;新增 `migrate_roleplay.py` 与 P18/P19 测试。 |
|
|
219
|
-
| 2026-09-10 | **写入通道修正**:插件写入由 `cg(op=write)` 改为 MCP `mdcg_remember`(`cg(op=write)` 过 audit,未声明 content_kind 时永不落盘);自动记忆改用 `mdcg_remember(gated=true)`,实测 ACCEPT + md 落盘 + timeline/read 命中。补写入凭据(`MDCG_TOKEN` / `MDCG_LEGACY_ENV_AUTH`)与启动期告警。 |
|
|
220
|
-
| 2026-09-10 | **stdio 编码修正**:`MdcgClient` 子进程强制 `PYTHONIOENCODING=utf-8`。此前 Windows 下 gbk/surrogateescape 解码导致中文内容 `UnicodeEncodeError`,中文记忆无法落盘(实测真实桥 E2E 复现并修复)。 |
|
|
221
|
-
| 2026-09-10 | **写权限改为「默认关闭 + 令牌化」**:`MDCG_TOKEN` 取代 `MDCG_LEGACY_ENV_AUTH` 成为推荐路径,示例配置一律注释掉(由用户决定是否打开);`md_cg/tokens.py` 的 `issue` 子命令补齐 `--ops-allow` / `--layers-allow`(对齐 Python API 已有的收窄能力)。三种身份的实际覆盖矩阵见 §6。 |
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|