@furongjun1999/dsh-memory 0.7.5 → 0.8.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 +43 -15
- package/docs/eval/issue64_replay_check_/346/240/270/351/252/214/344/270/216/344/277/256/345/244/215_v1.0.md +284 -0
- package/docs/eval/issue65_session_recall_/344/274/232/350/257/235/351/232/224/347/246/273_/346/240/270/351/252/214/344/270/216/344/277/256/345/244/215_v1.0.md +329 -0
- package/docs/eval//345/217/221/345/270/20313_/344/270/212/344/270/213/346/226/207/350/207/252/347/256/241/347/220/206/346/234/272/345/210/266_v1.0.md +2 -2
- package/docs/eval//345/217/221/345/270/20314_/350/272/253/344/275/223/303/227/350/204/221/347/273/204/345/220/210_v1.0.md +160 -0
- package/docs/eval//345/217/221/345/270/20315_/344/274/232/350/257/235/351/232/224/347/246/273/344/277/256/345/244/215/344/270/216/350/272/253/344/275/223/345/272/223/345/261/225/347/244/272_v1.0.md +88 -0
- package/docs/eval//351/262/270/345/250/230/344/270/203/347/261/273/347/212/266/346/200/201/350/277/275/350/270/252_v1.0.md +176 -0
- package/docs/mdcg//344/270/226/347/225/214/346/250/241/345/236/213/345/212/237/350/203/275/347/253/257_/344/275/277/347/224/250/344/270/216/350/277/220/347/273/264_v1.0.md +92 -13
- 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 +43 -43
- package/docs/mdcg//345/217/221/345/270/203/351/227/250/347/246/201/351/223/276_v0.1.md +14 -3
- package/docs/mdcg//347/235/241/347/234/240/345/221/250/346/234/237_/350/277/220/347/273/264/345/211/215/346/217/220/344/270/216/347/273/264/346/212/244/346/214/207/345/215/227_v1.0.md +9 -4
- package/docs/plans//347/201/265/346/236/242/350/272/253/344/275/223/303/227/350/204/221_/344/270/226/347/225/214/346/250/241/345/236/213/345/257/271/346/216/245/350/256/276/350/256/241_v0.1.md +45 -2
- package/md_cg/chain.py +23 -7
- package/md_cg/consolidate.py +81 -10
- package/md_cg/lifecycle.py +7 -0
- package/md_cg/mcp_server.py +22 -0
- package/md_cg/mdcg.py +6 -1
- package/md_cg/mdcos.py +24 -1
- package/md_cg/scrub.py +4 -2
- package/md_cg/sleep.py +60 -10
- package/md_cg/test_lifecycle_retire_leak.py +90 -0
- package/md_cg/test_p45_session_identity.py +250 -3
- package/md_cg/test_p6_consolidate.py +389 -7
- package/md_cg/test_sleep_gitlock.py +134 -0
- package/md_cg/test_spatial_coords3d.py +292 -0
- package/package.json +2 -2
- package/skills/plugin.json +1 -1
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# 发布 v0.8.1:session_recall 会话隔离修复(issue #65)+ 完整身体库展示位
|
|
2
|
+
|
|
3
|
+
> 版本 0.8.1 | 提交 `733a4ad3` 及其前 2 笔(版本递增与本报告为其后一笔)| 2026-10-07
|
|
4
|
+
> 前版 v0.8.0(身体×脑组合)
|
|
5
|
+
|
|
6
|
+
## 一、本版范围(v0.8.0 → v0.8.1 共 3 笔 + 本版提交)
|
|
7
|
+
|
|
8
|
+
| # | 提交 | 内容 |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| 1 | `733a4ad3` | **issue #65 修复**:`session_recall` ③ 近期事件段按会话隔离——多窗口并发时的静默跨会话污染消除 |
|
|
11
|
+
| 2 | `2c7da0f7` | README:完整身体库 [lingshu](https://github.com/FuRongJun-1999/lingshu) 展示位三落点(平台全景/架构节「可以展示什么」八能力面/文档导航表) |
|
|
12
|
+
| 3 | `79104b08` | 发布14 报告回填(0.8.0 registry 回验读数:1592 文件/hash 逐字节对拍、dist-tags.latest=0.8.0) |
|
|
13
|
+
| 4 | 本版提交 | 版本递增(8 处)+ README 版本表 + 本报告 |
|
|
14
|
+
|
|
15
|
+
(issue #64 修复(`e5723d35`)已随 v0.8.0 发布,不在本版范围。)
|
|
16
|
+
|
|
17
|
+
## 二、issue #65 修复(本版核心)
|
|
18
|
+
|
|
19
|
+
外部报告(ducc239,对 v0.7.5 实测)——`session_recall` 的「③ 近期事件」段未按会话隔离:
|
|
20
|
+
③ 段调 `recent_events` 不传会话(`recent_events` 无 session 形参、仅 private/secret 档做
|
|
21
|
+
会话归属判断),recent 段恒为**全进程窗口**——多窗口并发时 A 窗口的注入包混入 B 窗口报文
|
|
22
|
+
(被模型当用户输入处理、可被压缩检查点记入,**静默污染**)。
|
|
23
|
+
|
|
24
|
+
**修前复现**(隔离库,MCP 真实入口与直调两路径读数一致):假会话 id → 返回 3 条全库事件;
|
|
25
|
+
会话 A → 混入「会话B的第一句话」;缺 `meta.session` 的无归属事件在两会话下均漏入。
|
|
26
|
+
|
|
27
|
+
**修复**(`mdcos.py` ③ 段):取 `evs` 后按会话过滤——真实会话 id → `meta.session` 严格相等
|
|
28
|
+
(缺 `meta.session` 者丢弃:最坏空窗口,杜绝错块);显式 `session="*"` → 不过滤(跨会话汇总,
|
|
29
|
+
与 `stg` 的 `"*"` 同款语义);falsy(None/"")→ 退回旧行为(全局窗口);`strip` 防空白包裹
|
|
30
|
+
的星号。docstring 同步口径段(recent 跟会话走;notes 已跟;tasks/goals 有意跨会话)。
|
|
31
|
+
|
|
32
|
+
**验证**:守卫扩 `test_p45_session_identity.py` **R65 组 12 断言(42/42)**——含 MCP
|
|
33
|
+
`_session_call` 端到端、缺 meta 两态、`"*"`/`" "`/None/""、compact 回归、文档口径在位;
|
|
34
|
+
**定点变异自证六腿**(删过滤/删星号例外/去 strip/放行缺 meta/去 falsy 守卫/文档反转,
|
|
35
|
+
红项数 5/2/1/4/2/1 各恰等于登记值、每腿红集为唯一指纹)+ ANCHOR-MISS 漂移探针 fail-closed;
|
|
36
|
+
**独立复核 ACCEPT**(双树对照、oracle 直读 `_recent.jsonl` 对拍、退化探针非空池防空转、
|
|
37
|
+
old/new 逐位、多实例形态)。报告见 `docs/eval/issue65_session_recall_会话隔离_核验与修复_v1.0.md`。
|
|
38
|
+
|
|
39
|
+
## 三、完整身体库展示位(README)
|
|
40
|
+
|
|
41
|
+
[FuRongJun-1999/lingshu](https://github.com/FuRongJun-1999/lingshu)(独立公开仓 · MIT)在
|
|
42
|
+
README 三落点展示:平台全景节广播段、架构节「完整身体库(lingshu)可以展示什么」小节
|
|
43
|
+
(八能力面表:身体×脑闭环/世界模型七层闭环/世界推演循环/3D 场景与角色/白箱生成与读回/
|
|
44
|
+
自研蜂窝神经网络/记忆可视化/理论地基+上手两行)、文档导航表加行;原「AEIS 仅作可选身体
|
|
45
|
+
能力后端」表述更新为指向对外完整版 lingshu。
|
|
46
|
+
|
|
47
|
+
## 四、工程面读数(发布时点实测)
|
|
48
|
+
|
|
49
|
+
| 关卡 | 读数 |
|
|
50
|
+
|---|---|
|
|
51
|
+
| python 全量 | **359/359 通过**(5 跳过) |
|
|
52
|
+
| TS 全量 | 144 项(**143 pass / 0 fail / 1 skip**) |
|
|
53
|
+
| `npm run gate` | **12 腿 PASS**(含 cargo 35、rank_parity 10/10、路径门禁、body_e2e_smoke) |
|
|
54
|
+
| 出货冒烟 | tarball `furongjun1999-dsh-memory-0.8.1.tgz`、清单 **1593 条目**、serverInfo `0.8.1`、tools `['cg','stg']`、真握手 rc=0 |
|
|
55
|
+
| 容器栈一(rust:bookworm) | `linux_verify.sh full` 汇总 **49 pass / 0 fail**(含 smoke 22/0) |
|
|
56
|
+
| 容器栈二(node:22-bookworm) | TS 144 项 **141 pass / 0 fail / 3 skip** |
|
|
57
|
+
| registry 回验 | 待使用者 `npm publish` 后回填(`check_publish_artifact --registry 0.8.1` + hash 对拍) |
|
|
58
|
+
|
|
59
|
+
## 五、边界与如实声明
|
|
60
|
+
|
|
61
|
+
- **登记不回**:`recall(include_recent=True)` 的近期尾巴(`mdcos.py:1952`)同缺口事实成立——
|
|
62
|
+
显式开关面且无会话参数可用,不随本修复动(issue #65 报告与修复报告均如实注明)。
|
|
63
|
+
- **TS 注释面**:`src/` 侧注释与构建产物 `lib/lib/mdcg_client.d.ts` 为文档漂移项(随 build 再生),
|
|
64
|
+
不影响行为。
|
|
65
|
+
- **DSH 侧实际升级验证**:报告者本机补丁的撤除与升级验证由使用者侧进行。
|
|
66
|
+
- **历史面**:issue #65 报告提及的 v0.7.5 行为均以 HEAD 复核读数为准(本版修复后行为矩阵见 §二)。
|
|
67
|
+
|
|
68
|
+
## 六、发布三关(复跑口径)
|
|
69
|
+
|
|
70
|
+
1. `python -X utf8 scripts/run_tests.py --jobs 4` → 359/359;
|
|
71
|
+
2. `npm run build` + `npm test` → 143/0/1;
|
|
72
|
+
3. `npm run gate` → 12 腿 PASS;
|
|
73
|
+
4. 容器双栈:栈一 `rust:bookworm` `bash scripts/linux_verify.sh full`;栈二 `node:22-bookworm`
|
|
74
|
+
`npm install --include=dev && npm run build && node --import tsx --test test/*.test.ts`。
|
|
75
|
+
|
|
76
|
+
`npm publish` 由使用者执行(编排侧无发布密钥,2026-10-04 指示);发布后 registry 回验
|
|
77
|
+
(tarball/hash 对拍)读数回填本报告。
|
|
78
|
+
|
|
79
|
+
## 七、复跑命令(中性占位)
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# 本版核心修复面
|
|
83
|
+
python -X utf8 -m md_cg.test_p45_session_identity # 42/42(含 R65 组)
|
|
84
|
+
python -X utf8 -m md_cg.test_p45_session_identity --self-proof # 定点变异自证(六腿)
|
|
85
|
+
# 会话隔离行为矩阵(隔离库探针,参考 issue65 修复报告 §四)
|
|
86
|
+
# registry 回验(publish 后)
|
|
87
|
+
python scripts/check_publish_artifact.py --registry 0.8.1
|
|
88
|
+
```
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# 鲸娘七类状态追踪 v1.0——人物/地点/时间/事件/因果/物品/情感
|
|
2
|
+
|
|
3
|
+
> 使用者 2026-10-06 指令:「按照理论和现有功能将人物,地点,时间,事件,因果,物品,情感等状态进行追踪。」
|
|
4
|
+
> 前置=鲸娘语料预处理第一步(思考块剥离+双身份分流,件 `scripts/whale_corpus_prep.py`)。
|
|
5
|
+
> 本件:`scripts/whale_state_tracker.py`(v7),**单点复用** P1 抽取器 v4 的机件与被复核规则。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 一、理论依据(纪律 1:先查理论)
|
|
10
|
+
|
|
11
|
+
| 来源 | 借用的口径 |
|
|
12
|
+
|---|---|
|
|
13
|
+
| 《AI 故事创作的状态维护调研 v0.1》 | **八维度**(情节/人物/心理/环境/世界/时间/地点/物品)与状态寄存器 schema——本件按使用者给定的七类取法落地 |
|
|
14
|
+
| 《角色扮演一致性锚调研 v0.1》 | **四问审计法**;更新语义三分——**不变式**(永不改)/ **可覆盖**(新值替换旧值)/ **追加**(只增不改) |
|
|
15
|
+
| P1 抽取器 v4(三率已复核) | 切块/引用块剥离/证据短证/五元事件机件与 11 个槽位规则(**单点复用,不复制第二份**) |
|
|
16
|
+
|
|
17
|
+
## 二、七类编目(真实语料读数)
|
|
18
|
+
|
|
19
|
+
**输入**:鲸娘主语料(1546 轮段);**输出**:26 条五元事件(`state_events_v7.jsonl`)+编目(`v7_catalog.json`)。
|
|
20
|
+
|
|
21
|
+
| 类别 | 事件 | 槽位 | 更新语义(挂账口径) |
|
|
22
|
+
|---|---|---|---|
|
|
23
|
+
| 人物 | 7 | 记忆特性×2、名字×1、外貌规格(体型)×2、日记制度×2 | 不变式为主(名字=可覆盖+撤回) |
|
|
24
|
+
| 地点 | 2 | 住所×1、店铺规模×1 | 可覆盖(迁移) |
|
|
25
|
+
| 时间 | 1 | 时节×1 | 追加(背景事实) |
|
|
26
|
+
| 事件 | — | **台账行族=26 条**(每条五元事件即事件记录,seq=时间轴;不重复建槽) | 追加 |
|
|
27
|
+
| 因果 | — | 0 独立槽位(v1 **以证据链 quotes/seq 承载**——见 §四噪声依据) | 追加 |
|
|
28
|
+
| 物品 | 9 | 宝物清单×4、房贷×3、菜品与菜单×2 | 可覆盖+追加 |
|
|
29
|
+
| 情感 | 7 | 关系阶段×5、早安吻与早安咬×2 | 可覆盖(关系);追加(互动) |
|
|
30
|
+
|
|
31
|
+
**未分类=0**(fail-visible 设计:任何未入映射的槽位会显式列出,本跑为空)。
|
|
32
|
+
|
|
33
|
+
**v7 新增规则(仅一条,词形基于探针实测)**:`时间·时节`——首现「夏天|夏日」
|
|
34
|
+
(探针:盛夏 0 命中;夏天/夏日 5 命中,首现轮 394)。
|
|
35
|
+
|
|
36
|
+
## 三、端到端验证(现有功能全链,隔离库)
|
|
37
|
+
|
|
38
|
+
抽取 → **MCP `cg(op=state_event)`** → 台账 → `state_slots` 投影 → `stg(op=state_chain)` 查询:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
写入 26/26 条;投影槽位数 12(隔离根为临时目录,已清理)
|
|
42
|
+
鲸鱼小姐·住所 = '海边的大房子(海景别墅)'(active)
|
|
43
|
+
鲸鱼小姐·名字 = None(retired) ← 撤回事件正确退役
|
|
44
|
+
鲸鱼小姐·房贷 = None(retired) ← 用户侧声明玩笑后作废
|
|
45
|
+
鲸鱼小姐·关系阶段 = '合伙人/老板娘(开店)'(active)
|
|
46
|
+
…
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
零在役库写入(`--feed` 走临时隔离根;`--feed-root` 显式给出才保留供复核)。
|
|
50
|
+
|
|
51
|
+
## 四、边界与如实声明
|
|
52
|
+
|
|
53
|
+
- **「承诺」类不做独立抽取**:词形 `答应|说好了|约定|拉钩` 全篇 **138 命中**——口语高频,
|
|
54
|
+
独立抽槽必产噪声;v1 如实不做(候选读数存档,留待更专门的方法)。
|
|
55
|
+
- **「因果」类不做裸词形抽取**:`为了` 59 命中 / `因为` 225 命中,同为口语高频;
|
|
56
|
+
v1 以**证据链**(每条事件的 quotes 轮号+seq 时间轴)承载因果可查性——
|
|
57
|
+
完整因果图属后续(可接 `cg(op=causal)` 边面,另立)。
|
|
58
|
+
- **「事件」类不建独立槽位**:每条五元事件本身就是事件记录(锚分类学的「追加类锚」),
|
|
59
|
+
重复建槽=第二真源,明确不做。
|
|
60
|
+
- 类别编目**不改 v4 槽位名**(与 P1 三率读数同源,零重命名零漂移)。
|
|
61
|
+
- 「时节」属背景事实类(非争议状态),首现轮来自角色侧叙述亦采——与 v4「用户侧=事实源」
|
|
62
|
+
的政策面(争议状态)不同层,已注明。
|
|
63
|
+
|
|
64
|
+
## 五、复跑命令(中性占位)
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# 七类编目(只读语料、输出仓外)
|
|
68
|
+
python -X utf8 scripts/whale_state_tracker.py --corpus <语料.md> --out <仓外目录>
|
|
69
|
+
|
|
70
|
+
# 端到端(MCP 全链,隔离临时根)
|
|
71
|
+
python -X utf8 scripts/whale_state_tracker.py --corpus <语料.md> --out <仓外目录> --feed
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 六(v1.1 增补)· 状态追踪图:世界书 + 大事记 + 分幕大纲
|
|
77
|
+
|
|
78
|
+
使用者 2026-10-06:「整理出完整的状态追踪图……可以追溯故事的完整发展脉络和内容变化。
|
|
79
|
+
类似酒馆世界书或者是小说故事的大纲。」
|
|
80
|
+
|
|
81
|
+
**件** `scripts/whale_state_atlas.py`——一份 md 三视图同源(现有功能单点复用:事件经
|
|
82
|
+
库层 `state_events.append` 落台账 → `state_slots.project(include_retired=True,
|
|
83
|
+
history=True)` 投影出具**权威**现值/退役/变迁史;幕末快照按事件序现算):
|
|
84
|
+
|
|
85
|
+
1. **世界书条目**(按七类分节):每个槽位一张卡——**现值**/状态(active|retired)/
|
|
86
|
+
**变迁史**(old→new、五类 kind、发生时点轮号、≤30 字证据短证可回原文核对)——
|
|
87
|
+
即「酒馆世界书条目」的可追溯版(带变更链,而非静态设定)。
|
|
88
|
+
2. **大事记时间线**:全部状态事件按序一行一条(轮号|类别|槽位|变更|类型)。
|
|
89
|
+
3. **分幕大纲**:幕界=事件间隔机械聚类(gap ≥ 60 轮)+**单事件幕并入后幕**(机械
|
|
90
|
+
规则,避免碎读)——本语料实测 **5 幕**:轮 136–613(定身份/背景/记忆澄清)、
|
|
91
|
+
687–1040(宝物入账/搭档)、1108–1245(搬迁/规格修正/房贷撤回)、1308–1413
|
|
92
|
+
(开店/新菜)、1475–1534(日记制度/晨间仪式/扩张);每幕含事件清单+
|
|
93
|
+
**幕末状态快照**(该时点各槽位现值)——「每章末世界长什么样」。
|
|
94
|
+
|
|
95
|
+
**实测读数**:26 事件 → 12 槽位卡;md 7,447 字;产物落私域(`--out` 仓外 fail-closed)。
|
|
96
|
+
|
|
97
|
+
**如实边界**:本图是**状态骨架**(状态事件轴),非全量情节摘要(无情节抽取器);
|
|
98
|
+
分幕为机械聚类非情节判断;证据短证 ≤30 字、含轮号。**可选后续**:导出酒馆格式
|
|
99
|
+
worldbook JSON(key=槽位/实体触发词 + content=现值与变迁——待规格确认后做)。
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# 状态追踪图(读 v7 事件 → md;输出必须仓外)
|
|
103
|
+
python -X utf8 scripts/whale_state_atlas.py --events <state_events_v7.jsonl> \
|
|
104
|
+
--out <仓外 .md 路径> [--act-gap 60]
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 七(v1.2 增补)· 通用常驻件:多主体状态追踪(核心能力定位)
|
|
110
|
+
|
|
111
|
+
使用者 2026-10-06 定位:「这个功能可以常驻,维护其他角色的状态追踪,这应该要作为
|
|
112
|
+
语义时空图的核心功能。」
|
|
113
|
+
|
|
114
|
+
**交付** `scripts/state_atlas.py`——**通用多主体**追踪图(与语料线两件并列):
|
|
115
|
+
|
|
116
|
+
- **常驻形态=查询时现算只读视图**(与 `state_slots` 同哲学,不存第二真源):任何时刻
|
|
117
|
+
调用即得最新;台账为唯一真源。**不依赖后台任务**。
|
|
118
|
+
- **多主体**:`--subject` 单取,缺省把库中**全部主体**各出一节(一份 md=全角色世界书);
|
|
119
|
+
类别缺省按槽位「·」前缀推断,可 `--cat-map` 传映射表(鲸娘七类表即一例)。
|
|
120
|
+
- **三视图同款**(世界书卡/大事记/分幕)+ 可选 `--worldbook-json`(酒馆风格
|
|
121
|
+
`[{keys, content, subject}]`)。
|
|
122
|
+
- **库根解析与 zcode MCP 同源**(`--root`>env>`~/.zcode` 配置>缺省;复用一个 resolve
|
|
123
|
+
单点)——**防双库分叉**的接线实测:不带 `--root` 运行时解析到权威库根(曾抓出过
|
|
124
|
+
缺省根指向 C 盘遗留库的分叉缺陷,本件不再踩)。
|
|
125
|
+
- 只读;`--out` 一律仓外(fail-closed)。
|
|
126
|
+
|
|
127
|
+
**实测读数**:
|
|
128
|
+
|
|
129
|
+
| 项 | 读数 |
|
|
130
|
+
|---|---|
|
|
131
|
+
| 多主体演示(隔离库:鲸娘真语料 26 条+合成第二角色 4 条,合成条已在演示脚本标注) | **2 主体 / 30 事件 / 15 槽位 / md 7,783 字 / worldbook 15 条** |
|
|
132
|
+
| 权威在役库实测(只读) | 台账 **0 条事件**、0 主体——机制全链就位、数据处女地;空库优雅退(171 字纯头) |
|
|
133
|
+
| 根解析同源 | 不带 `--root` 实跑解析到权威库根 ✓ |
|
|
134
|
+
|
|
135
|
+
**记账纪律(通用指引,从本语料线三层消歧口径提炼)**:状态变更发生时记账;用户侧
|
|
136
|
+
声明优先;非事实三类(玩笑/元层/回忆转述)如实标注不复盖;撤回=old 有值 new 空。
|
|
137
|
+
|
|
138
|
+
**待裁(常驻自动化增强)**:是否在睡眠周期「整理」档挂「按主体预生成追踪图 md →
|
|
139
|
+
状态面」——现状按需现算已满足「打开即最新」,预生成仅为「打开就有文件」的缓存物;
|
|
140
|
+
改常驻循环属生产行为变更,须单独立项。
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# 通用多主体追踪图(任意库、任意主体;输出必须仓外)
|
|
144
|
+
python -X utf8 scripts/state_atlas.py [--root <库根>] [--subject <主体>] \
|
|
145
|
+
--out <仓外 .md> [--acts] [--worldbook-json <仓外 .json>]
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## 八(v1.3 增补)· 会话链路接入:轮写入链第二步(使用者 2026-10-06 裁定)
|
|
151
|
+
|
|
152
|
+
> 「把这个功能作为会话的 10 轮信息写入,并在写入 mdcg 的时候做处理……每次写入
|
|
153
|
+
> 异步加了一些过程,但是好处是得到了可维护的状态……原始信息的关系追溯。」
|
|
154
|
+
|
|
155
|
+
**件** `scripts/state_extract.py`+`sync_zcode_session.py` 接线(每轮写入链第二步):
|
|
156
|
+
|
|
157
|
+
- **接线**:`sync_to_window`(zcode 端每轮——Stop 钩子/冷启动/压缩恢复共用)在写
|
|
158
|
+
`_recent` 窗口的**同一循环内**,对同一轮调保守抽取 → `state_events.append` 进台账。
|
|
159
|
+
钩子轮末子进程运行=会话外处理(「异步」);**逐轮 fail-soft**,抽取失败绝不影响
|
|
160
|
+
窗口写入。
|
|
161
|
+
- **保守口径**:只抽用户轮(真人=事实源);仅两条高精度规则(`地点·所在` 迁移 /
|
|
162
|
+
`情感·偏好`,负向显式记「不喜欢:」);值剥句尾语气词;同值去重;证据
|
|
163
|
+
`[auto] session=… turn=…`+`actor=state_extract`(可整体甄别/清理);开关
|
|
164
|
+
`MDCG_STATE_EXTRACT` **缺省开**(=0 关)。
|
|
165
|
+
- **三层同源**:认知图(`_recent`/知识面)+语义时空图(台账/投影/`state_atlas`)+
|
|
166
|
+
原文(会话 md 镜像/全量转写),evidence 互指——关系可追溯。
|
|
167
|
+
- **读数**:守卫 `scripts/test_state_extract.py` **10/10**(噪声三族「在看不抽/计划
|
|
168
|
+
不抽/助手轮不抽」零命中、去重、变值成链 old→new、证据格式、开关、接线单点);
|
|
169
|
+
全量 **359/359**。
|
|
170
|
+
- **DSH 端**:同款接线在插件侧(TS),属后续件(须改插件并随包发布);本批仅
|
|
171
|
+
zcode 端在线。
|
|
172
|
+
- **已知边界(留裁决)**:「住在这里」类泛化词形会命中,收窄与否归使用者。
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
*v1.3 · 2026-10-06 · 编排侧编制;v1.0 规则与端到端+v1.1 状态追踪图+v1.2 通用常驻件+v1.3 会话链路接入(轮写入链第二步)*
|
|
@@ -278,28 +278,107 @@ python -X utf8 -m md_cg.test_lifecycle_retire_leak # 守卫 R1–R4
|
|
|
278
278
|
锚点仍回出(取证:`identity.profile` 返回的 `anchors[0].content` 含归档节点正文标记);
|
|
279
279
|
按上条判据它属**定向面**(`subject_id` 是显式选择键,与 `cg.get` 同族),故**本轮未接线**
|
|
280
280
|
(其文件不在本轮允许改动面内)。
|
|
281
|
-
-
|
|
282
|
-
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
281
|
+
- **面的接线状态(2026-10-06 使用者裁定批落地——原「已知未覆盖面」四项处置)**:
|
|
282
|
+
- **基类 `MdCG.search` → 已接线**(`md_cg/mdcg.py` 候选条件加 `lifecycle.is_archived`
|
|
283
|
+
判据):plain `MdCG` 实例(白箱 KB / 离线脚本 / 测试)的默认检索面与生产路径
|
|
284
|
+
同口径(守卫 R5,含「converged 降权轴不误剔」对照)。
|
|
285
|
+
- **因果链/图面 `chain.adjacency` → 已接线**(新增 `skip_archived=True` 缺省参数):
|
|
286
|
+
退役节点出边整体不入表、指向退役目标的边截断——`cg(op=causal, action=chain)`、
|
|
287
|
+
`predict.*` 等读/预测面不再扩散进 archived(守卫 R6.0/R6.1/R6.4,含缓存已热
|
|
288
|
+
时归档的实测腿)。**维护面显式旁路**:`scrub` 去污染抽查传
|
|
289
|
+
`skip_archived=False` 取全量表(守卫 R6.2/R6.3 钉住旁路——面的判据分工:
|
|
290
|
+
默认读/注入面必消费、维护/管理面直读)。
|
|
291
|
+
- **缓存失效钩子(本批实证的兑现缺口)**:状态迁移改变 `is_archived` 读数,
|
|
292
|
+
而 `chain` 邻接缓存在 `set_state` 后此前**未失效**(探针实证:归档后
|
|
293
|
+
`causal_chain` 仍含目标)——现 `lifecycle.set_state` 写盘点同点调用
|
|
294
|
+
`chain.invalidate_cache`(懒导入,`invalidate_cache` 自吞异常不阻断推进)。
|
|
295
|
+
- **结构/拓扑面 `subgraph.children_index` / `parents_index` → 裁定不接**
|
|
296
|
+
(调用方给显式父/子 id、返回 id 映射不回正文,属定向/结构面,直读)——
|
|
297
|
+
守卫 R7.0/R7.1 把裁定**钉住**:子节点退役后映射仍在;未来若有人"顺手接线",
|
|
298
|
+
R7.1 转红即提醒先改裁定。
|
|
299
|
+
- **rust 检索内核 → 已接线**(`rust/src/store.rs`):`Entry` 增
|
|
300
|
+
`lifecycle_state` 字段(键名与 Python `lifecycle.STATE_FIELD` 同源)、
|
|
301
|
+
`candidates()` 剔除 `archived`(缺键/非法=active,fail-open;converged/
|
|
302
|
+
demoted 仍参与)——crate 单测 `archived_entries_excluded_from_candidates`
|
|
303
|
+
与 `lifecycle_state_parsed_from_index_json` 双钉;两侧口径一致由
|
|
304
|
+
`rank_parity` 门禁腿继续看守(评测语料无 archived,逐位零位移)。
|
|
294
305
|
- 跨进程一致性:判据只读**本进程索引条目**(`lifecycle_state` 由
|
|
295
306
|
`lifecycle._sync_index` 随迁移同步并落 `_index_log`),他进程刚归档、本进程索引
|
|
296
307
|
尚未重载的窗口内读数可能滞后(与 `lifecycle.set_state` 的既有落盘口径同源)。
|
|
297
308
|
|
|
298
309
|
---
|
|
299
310
|
|
|
311
|
+
## 十、多主体状态追踪(核心能力与常驻读取视图)
|
|
312
|
+
|
|
313
|
+
> 使用者 2026-10-06 定位:「这个功能可以常驻,维护其他角色的状态追踪,这应该要
|
|
314
|
+
> 作为语义时空图的核心功能。」
|
|
315
|
+
|
|
316
|
+
**能力陈述**:状态追踪(多主体 · 五元事件 · 槽位投影)是语义时空图的**核心功能**——
|
|
317
|
+
`subject` 参数化到任意主体(角色/机构/我),台账(`_state_events.jsonl`)为唯一真源,
|
|
318
|
+
其余全为投影/视图。
|
|
319
|
+
|
|
320
|
+
**常驻形态**=**查询时现算的只读视图**(与 `state_slots` 同哲学,不存第二真源):
|
|
321
|
+
任何时刻调用即得最新;不依赖后台任务。工具面(均在 `scripts/`):
|
|
322
|
+
|
|
323
|
+
| 件 | 用途 |
|
|
324
|
+
|---|---|
|
|
325
|
+
| `state_atlas.py` | **通用多主体追踪图**(常驻件):一份 md=全角色世界书(现值/退役/变迁史/大事记/分幕)+可选 `--worldbook-json`(酒馆风格 key/content) |
|
|
326
|
+
| `whale_state_tracker.py` | 语料线抽取器(把会话语料转五元事件;鲸娘规则集,机件可仿建他角色规则包) |
|
|
327
|
+
| `whale_state_atlas.py` | 语料线专用追踪图(从抽取产物 md 生成) |
|
|
328
|
+
| `state_slots.py`(CLI) | 槽位投影只读入口(恒可用,`--status` 等) |
|
|
329
|
+
| `stg(op=state_chain)` | MCP 查询面(flag `MDCG_STG_STATE` 默认关——纪律不变,与 CLI 恒可用互补) |
|
|
330
|
+
|
|
331
|
+
**库根解析(与 zcode MCP 同源,防双库分叉)**:`--root` > env `MDCG_ROOT` >
|
|
332
|
+
`~/.zcode/cli/config.json` 的 `mcp.servers.mdcg.env.MDCG_ROOT` > `mdcg_root()` 缺省。
|
|
333
|
+
**只读纪律**:工具面只读,`--out` 一律仓外(fail-closed)。
|
|
334
|
+
|
|
335
|
+
**记账纪律(通用指引,从鲸娘线三层消歧口径提炼)**:①状态变更发生时记账(谁的
|
|
336
|
+
什么槽位、old/new、五类 kind);②**用户侧声明优先**(用户明确说出的状态为准,
|
|
337
|
+
角色自述的「记错」不复盖真值);③非事实三类(玩笑/元层/回忆转述)如实标注、
|
|
338
|
+
不覆盖真值;④撤回=old 有值 new 空(显式作废,不做静默改写)。
|
|
339
|
+
|
|
340
|
+
**在役现状(2026-10-06 实测)**:权威库(AEIS 数据区库根——根解析同源口径见上)
|
|
341
|
+
台账**0 条事件**——机制全链就位、数据处女地;多主体渲染由隔离库演示验证
|
|
342
|
+
(2 主体/30 事件/15 槽位/15 条 worldbook 条目,读数见 `docs/eval/` 报告 v1.2 节)。
|
|
343
|
+
|
|
344
|
+
**待裁(常驻自动化的可选增强)**:是否在睡眠周期「整理」档挂一步
|
|
345
|
+
「按主体预生成追踪图 md → 状态面」——现状为**按需现算**(打开即最新),预生成仅为
|
|
346
|
+
「打开就有文件」的缓存物;改常驻循环属生产行为变更,须单独立项。
|
|
347
|
+
|
|
348
|
+
### 会话链路接入(轮写入链第二步;使用者 2026-10-06 裁定)
|
|
349
|
+
|
|
350
|
+
> 「把这个功能作为会话的 10 轮信息写入,并在写入 mdcg 的时候做处理……每次写入
|
|
351
|
+
> 异步加了一些过程,但是好处是得到了可维护的状态,同时具备了认知图和语义时空图,
|
|
352
|
+
> 原始信息的关系追溯。」
|
|
353
|
+
|
|
354
|
+
- **接线单点**:`scripts/sync_zcode_session.py::sync_to_window`(zcode 端每轮——
|
|
355
|
+
Stop 钩子/冷启动/压缩恢复共用同一链路)——写 `_recent` 窗口的**同一循环内**对同一轮
|
|
356
|
+
调 `scripts/state_extract.py` 保守抽取 → `state_events.append` 进台账。钩子在轮末以
|
|
357
|
+
子进程运行(会话外处理,即「异步」),**逐轮 fail-soft**(抽取失败绝不影响窗口写入
|
|
358
|
+
与轮次推进)。
|
|
359
|
+
- **保守口径(写入在役库的纪律:宁可漏不可误)**:只抽**用户轮**(真人=事实源);
|
|
360
|
+
仅两条高精度规则(`地点·所在` 迁移 / `情感·偏好`,负向显式记「不喜欢:」);值剥
|
|
361
|
+
句尾语气词;**同值去重**(防每轮重复记账);证据 `[auto] session=… turn=…`、
|
|
362
|
+
`actor=state_extract`——可整体甄别/清理;开关 `MDCG_STATE_EXTRACT` **缺省开**
|
|
363
|
+
(=0 关)。探针已证:裸词形(承诺 138 / 因果 59/225 命中)不进规则表。
|
|
364
|
+
- **三层同源+关系追溯**:认知图(`_recent`/知识面)+语义时空图(台账/`state_slots`
|
|
365
|
+
投影/`state_atlas` 视图)+原文(会话 md 镜像/全量转写)——事件 `evidence` 带
|
|
366
|
+
session/轮号/短证,任一层可回查另两层。
|
|
367
|
+
- **读数**:守卫 `scripts/test_state_extract.py` **10/10**(噪声三族零命中、去重、
|
|
368
|
+
变值成链、证据格式、开关、接线单点)+全量 **359/359**。
|
|
369
|
+
- **DSH 端**:同款接线位于插件侧(TS)——属后续件(须改插件并随包发布);本批仅
|
|
370
|
+
zcode 端在线,DSH 端行为不变。
|
|
371
|
+
- **已知边界(留裁决)**:「住在这里」类泛化词形会命中(值取「里」等)——v1 词形
|
|
372
|
+
如此,收窄与否归使用者。
|
|
373
|
+
|
|
374
|
+
---
|
|
375
|
+
|
|
300
376
|
## 修订记录
|
|
301
377
|
|
|
302
378
|
| 日期 | 要点 |
|
|
303
379
|
|---|---|
|
|
304
380
|
| 2026-10-06 | v1.0 首版(P3 批):全链(台账→投影→查询→记账口→CLI→探针)/ 开关 `MDCG_STG_STATE` 默认关与 CLI 恒可用 / 授权口径(`state_event`→`write` 词映射,actor 恒取令牌)/ 探针三读数复跑命令 / 边界如实(§一–§八) |
|
|
305
381
|
| 2026-10-06 | 补 §九「退役纪律」:节点 `lifecycle_state=archived` 的默认检索剔除(判据单点 `lifecycle.is_archived`,消费面 `MdCGOS._candidates` + `stg._scan_one` + 会话续接注入面 `session_recall` 四段〔要点/活跃目标/任务台账/未解问题〕)/ 两套「退役」词义分界 / 不受限面(直读·审计·**台账管理查询面**·统计)与「生命周期恢复 ≠ `op=restore`(删除轴)」/ 《秤》5.2 探针四读数(面计数口径)与守卫复跑 / 边界如实(未覆盖面:基类 `MdCG.search`、因果链面 `chain.adjacency`、结构面 `subgraph`、rust 内核、定向面 `identity.profile`) |
|
|
382
|
+
| 2026-10-06 | **边界四项裁定批落地(使用者裁定:1/2/4 接、3 不接)**:基类 `MdCG.search` 接线(R5)/ `chain.adjacency` 接线(`skip_archived` 参数,R6;scrub 维护面显式旁路)/ rust 内核接线(crate 单测双钉)/ `subgraph` 结构面**裁定不接**(R7 钉住裁定);并补 `lifecycle.set_state` 的 `chain.invalidate_cache` 同点失效(本批探针实证的缓存缺口);守卫 36→45 断言 |
|
|
383
|
+
| 2026-10-06 | **补 §十「多主体状态追踪」(核心能力定位,使用者 2026-10-06)**:常驻形态=查询时现算只读视图(不存第二真源);工具面四件(`state_atlas` 通用多主体 / 语料线两件 / CLI);库根解析与 MCP 同源(防双库分叉);记账纪律四条(从鲸娘线三层消歧口径提炼);在役台账 0 条实测+隔离多主体演示读数;睡眠档预生成列为待裁 |
|
|
384
|
+
| 2026-10-06 | **补 §十「会话链路接入」(轮写入链第二步,使用者 2026-10-06 裁定)**:`sync_to_window` 同循环内对同一轮保守抽取(`state_extract`:仅用户轮/两条高精度规则/去重/证据可甄别;开关缺省开)→ 台账;三层同源+关系追溯;守卫 `test_state_extract` 10/10、全量 359/359;DSH 端同款接线列后续件 |
|
|
@@ -41,44 +41,44 @@ MCP stdio:md_cg/mcp_server.py
|
|
|
41
41
|
|
|
42
42
|
| 功能 | 显式调用 | 代码位置(点击直达源码行) |
|
|
43
43
|
|---|---|---|
|
|
44
|
-
| 按需披露(投影后完整工具 / 参数文档即时取回) | `cg(op=help)` | [`help`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
45
|
-
| 状态事件记账(追加五元事件;查询走 stg(state_chain)) | `cg(op=state_event)` | [`state_event`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
46
|
-
| 验证态 / 双时间轴 / 履历(含冷路径队列;只读) | `cg(op=status)` | [`status`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
47
|
-
| 三元组反查(派生边任意端 / 谓词 / 时间反查;只读) | `cg(op=edges)` | [`edges`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
48
|
-
| 理论检索(领域理论 / 方法论文) | `cg(op=theory)` | [`theory`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
49
|
-
| 记忆互链(节点间链接管理) | `cg(op=link)` | [`link`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
50
|
-
| 服务信息 / 健康 | `cg(op=info)` | [`info`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
51
|
-
| 路由:意图→知识+建议能力 | `cg(op=route)` | [`route`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
52
|
-
| 读取(按 id / 召回 / 预算) | `cg(op=read)` | [`read`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
53
|
-
| 证据审计视图(现值/出处链/两存备择/盲区/退役史;只读) | `cg(op=audit)` | [`audit`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
54
|
-
| 写入(含冲突检测 / 闸门 / 审核) | `cg(op=write)` | [`write`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
55
|
-
| 目标(写入 / 状态 / 清单) | `cg(op=goal)` | [`goal`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
56
|
-
| 任务实体(登记 / 计划 / 状态 / 结果;done 无结果拒收) | `cg(op=task)` | [`task`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
57
|
-
| 最近记忆(事件窗口) | `cg(op=recent)` | [`recent`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
58
|
-
| 外部裁决回填(节点证据验证) | `cg(op=verify)` | [`verify`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
59
|
-
| 审核队列(DEFER / 提案裁决) | `cg(op=review)` | [`review`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
60
|
-
| 主动遗忘 / 恢复 | `cg(op=forget)` | [`forget`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
61
|
-
| 保护(不可遗忘) | `cg(op=protect)` | [`protect`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
62
|
-
| 身份维度 | `cg(op=identity)` | [`identity`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
63
|
-
| 一致性检测 | `cg(op=consistency)` | [`consistency`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
64
|
-
| 元认知(盲区聚合) | `cg(op=metacognition)` | [`metacognition`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
65
|
-
| 自我状态 | `cg(op=self_state)` | [`self_state`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
66
|
-
| 演化(记忆结构演化) | `cg(op=evolution)` | [`evolution`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
67
|
-
| 飞轮 / 自愈 | `cg(op=sustain)` | [`sustain`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
68
|
-
| 洗脑 / 去污染 | `cg(op=scrub)` | [`scrub`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
69
|
-
| 预测 / 因果门 | `cg(op=predict)` | [`predict`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
70
|
-
| 因果链 | `cg(op=causal)` | [`causal`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
71
|
-
| 白箱能力库(AEIS 能力显式调用) | `cg(op=whitebox)` | [`whitebox`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
72
|
-
| 代码索引 | `cg(op=index_code)` | [`index_code`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
73
|
-
| 文档索引 | `cg(op=index_doc)` | [`index_doc`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
74
|
-
| 引用 / 反向引用 | `cg(op=ref)` | [`ref`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
75
|
-
| 会话管理(多会话归属与过滤) | `cg(op=session)` | [`session`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
76
|
-
| 导入落图 | `cg(op=ingest)` | [`ingest`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
77
|
-
| 导出 | `cg(op=export)` | [`export`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
78
|
-
| 维护 | `cg(op=maintain)` | [`maintain`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
79
|
-
| 记忆固化 / 整理 | `cg(op=consolidate)` | [`consolidate`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
80
|
-
| 洞察 / 自主探索(信息差驱动) | `cg(op=insight)` | [`insight`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
81
|
-
| CCG 六要素编译(对话→候选→编外复核→落库) | `cg(op=ccg)` | [`ccg`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
44
|
+
| 按需披露(投影后完整工具 / 参数文档即时取回) | `cg(op=help)` | [`help`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2137) → [`_help_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2055) |
|
|
45
|
+
| 状态事件记账(追加五元事件;查询走 stg(state_chain)) | `cg(op=state_event)` | [`state_event`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2464) |
|
|
46
|
+
| 验证态 / 双时间轴 / 履历(含冷路径队列;只读) | `cg(op=status)` | [`status`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2146) → [`_status_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1970) |
|
|
47
|
+
| 三元组反查(派生边任意端 / 谓词 / 时间反查;只读) | `cg(op=edges)` | [`edges`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2149) → [`_edges_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2026) |
|
|
48
|
+
| 理论检索(领域理论 / 方法论文) | `cg(op=theory)` | [`theory`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2152) → [`theory`](../../md_cg/theory.py) |
|
|
49
|
+
| 记忆互链(节点间链接管理) | `cg(op=link)` | [`link`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2169) → [`evidence`](../../md_cg/evidence.py) → [`links`](../../md_cg/links.py) → [`provenance`](../../md_cg/provenance.py) → [`security`](../../md_cg/security.py) → [`signer`](../../md_cg/signer.py) |
|
|
50
|
+
| 服务信息 / 健康 | `cg(op=info)` | [`info`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2285) → [`audit`](../../md_cg/audit.py) → [`generation`](../../md_cg/generation.py) → [`links`](../../md_cg/links.py) → [`nodefile`](../../md_cg/nodefile.py) → [`theory`](../../md_cg/theory.py) |
|
|
51
|
+
| 路由:意图→知识+建议能力 | `cg(op=route)` | [`route`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2326) |
|
|
52
|
+
| 读取(按 id / 召回 / 预算) | `cg(op=read)` | [`read`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2347) → [`refindex`](../../md_cg/refindex.py) |
|
|
53
|
+
| 证据审计视图(现值/出处链/两存备择/盲区/退役史;只读) | `cg(op=audit)` | [`audit`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2402) → [`auditview`](../../md_cg/auditview.py) |
|
|
54
|
+
| 写入(含冲突检测 / 闸门 / 审核) | `cg(op=write)` | [`write`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2422) → [`writepipe`](../../md_cg/writepipe.py) |
|
|
55
|
+
| 目标(写入 / 状态 / 清单) | `cg(op=goal)` | [`goal`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2430) |
|
|
56
|
+
| 任务实体(登记 / 计划 / 状态 / 结果;done 无结果拒收) | `cg(op=task)` | [`task`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2449) → [`_task_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2068) |
|
|
57
|
+
| 最近记忆(事件窗口) | `cg(op=recent)` | [`recent`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2452) |
|
|
58
|
+
| 外部裁决回填(节点证据验证) | `cg(op=verify)` | [`verify`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2484) |
|
|
59
|
+
| 审核队列(DEFER / 提案裁决) | `cg(op=review)` | [`review`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2489) |
|
|
60
|
+
| 主动遗忘 / 恢复 | `cg(op=forget)` | [`forget`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2510) |
|
|
61
|
+
| 保护(不可遗忘) | `cg(op=protect)` | [`protect`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2519) → [`_protect_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1256) |
|
|
62
|
+
| 身份维度 | `cg(op=identity)` | [`identity`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2522) → [`_identity_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1284) |
|
|
63
|
+
| 一致性检测 | `cg(op=consistency)` | [`consistency`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2525) → [`_consistency_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1335) |
|
|
64
|
+
| 元认知(盲区聚合) | `cg(op=metacognition)` | [`metacognition`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2528) → [`_metacognition_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1364) |
|
|
65
|
+
| 自我状态 | `cg(op=self_state)` | [`self_state`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2531) → [`_self_state_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1399) |
|
|
66
|
+
| 演化(记忆结构演化) | `cg(op=evolution)` | [`evolution`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2534) → [`_evolution_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1534) |
|
|
67
|
+
| 飞轮 / 自愈 | `cg(op=sustain)` | [`sustain`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2537) → [`_sustain_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1635) |
|
|
68
|
+
| 洗脑 / 去污染 | `cg(op=scrub)` | [`scrub`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2540) → [`_scrub_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1756) |
|
|
69
|
+
| 预测 / 因果门 | `cg(op=predict)` | [`predict`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2543) → [`_predict_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1461) |
|
|
70
|
+
| 因果链 | `cg(op=causal)` | [`causal`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2546) → [`_causal_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L1495) |
|
|
71
|
+
| 白箱能力库(AEIS 能力显式调用) | `cg(op=whitebox)` | [`whitebox`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2549) → [`_whitebox_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L3222) |
|
|
72
|
+
| 代码索引 | `cg(op=index_code)` | [`index_code`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2552) → [`refindex`](../../md_cg/refindex.py) → [`security`](../../md_cg/security.py) |
|
|
73
|
+
| 文档索引 | `cg(op=index_doc)` | [`index_doc`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2596) → [`refindex`](../../md_cg/refindex.py) → [`security`](../../md_cg/security.py) |
|
|
74
|
+
| 引用 / 反向引用 | `cg(op=ref)` | [`ref`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2639) → [`_ref_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L3122) |
|
|
75
|
+
| 会话管理(多会话归属与过滤) | `cg(op=session)` | [`session`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2642) → [`_session_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2843) |
|
|
76
|
+
| 导入落图 | `cg(op=ingest)` | [`ingest`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2645) → [`_ingest_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2922) |
|
|
77
|
+
| 导出 | `cg(op=export)` | [`export`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2648) → [`_export_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2947) |
|
|
78
|
+
| 维护 | `cg(op=maintain)` | [`maintain`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2651) → [`_maintain_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2969) |
|
|
79
|
+
| 记忆固化 / 整理 | `cg(op=consolidate)` | [`consolidate`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2654) → [`_consolidate_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L3047) |
|
|
80
|
+
| 洞察 / 自主探索(信息差驱动) | `cg(op=insight)` | [`insight`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2657) → [`_insight_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L3072) |
|
|
81
|
+
| CCG 六要素编译(对话→候选→编外复核→落库) | `cg(op=ccg)` | [`ccg`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2660) → [`_ccg_call`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L2667) |
|
|
82
82
|
|
|
83
83
|
<!-- FUNCMAP:END -->
|
|
84
84
|
|
|
@@ -97,11 +97,11 @@ MCP stdio:md_cg/mcp_server.py
|
|
|
97
97
|
|
|
98
98
|
| 功能 | 显式调用 | 代码位置(点击直达源码行) |
|
|
99
99
|
|---|---|---|
|
|
100
|
-
| 两节点关系 | `stg(op=relation)` | [`relation`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
101
|
-
| 时间线 | `stg(op=timeline)` | [`timeline`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
102
|
-
| 锚点检索(时空窗口) | `stg(op=anchors)` | [`anchors`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
103
|
-
| 时空一致性 | `stg(op=consistency)` | [`consistency`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
104
|
-
| 状态槽位投影(现值 / 区间 / 变迁史) | `stg(op=state_chain)` | [`state_chain`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#
|
|
100
|
+
| 两节点关系 | `stg(op=relation)` | [`relation`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L3252) |
|
|
101
|
+
| 时间线 | `stg(op=timeline)` | [`timeline`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L3254) |
|
|
102
|
+
| 锚点检索(时空窗口) | `stg(op=anchors)` | [`anchors`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L3261) |
|
|
103
|
+
| 时空一致性 | `stg(op=consistency)` | [`consistency`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L3265) |
|
|
104
|
+
| 状态槽位投影(现值 / 区间 / 变迁史) | `stg(op=state_chain)` | [`state_chain`](https://github.com/FuRongJun-1999/dsh-memory/blob/main/md_cg/mcp_server.py#L3268) |
|
|
105
105
|
|
|
106
106
|
<!-- FUNCMAP:END -->
|
|
107
107
|
|
|
@@ -27,13 +27,20 @@
|
|
|
27
27
|
> 两道互补(R3 只覆盖发布清单内的件,覆盖不到 hive/ 等非发布目录)。合成夹具(`X:/custom`、
|
|
28
28
|
> `C:/Windows/win.ini` 等)与通用通例(Git/Docker 默认安装路径)不在判据面,避免平凡红;
|
|
29
29
|
> 判据带 `--selftest`(正负样例 + 不命中自身源码)与注入探针红侧自证。
|
|
30
|
+
>
|
|
31
|
+
> **2026-10-06 更新(0.8.0 身体×脑对接 · 四条裁定之四:冒烟进发布链)**:门禁链再由 **11 条
|
|
32
|
+
> 扩至 12 条腿**——链尾新增 `scripts/body_e2e_smoke.py`(**身体侧视角 MCP 全链冒烟**:身体侧
|
|
33
|
+
> 进程逐行 JSON-RPC → 记账 `cg(op=state_event)` → 台账 → 投影 → 查询 `stg(op=state_chain)`;
|
|
34
|
+
> 隔离库(临时根断言)、零在役写入、退出码判据、内嵌合成样本与 `--events` 真实序列两态)。
|
|
35
|
+
> Linux 容器腿同步补登(python 套件清单新增守卫 + 本冒烟独立 record 行);同批新增守卫
|
|
36
|
+
> `md_cg/test_spatial_coords3d`(spatial 直存透传:15 断言 + 两处定点变异自证)入容器清单。
|
|
30
37
|
|
|
31
38
|
## 三层防线
|
|
32
39
|
|
|
33
40
|
| 层 | 触发 | 跑什么 | 行为 |
|
|
34
41
|
|---|---|---|---|
|
|
35
42
|
| 本地 pre-commit | `git commit` | `python scripts/cogmap_sync.py build` + 认知图投影两道(建最小库 → `verify_discipline.py --cg-root`) | **自动重挂**行号并把两份投影文档一并暂存;投影判据体真跑,红了即拒提交(`--no-verify` 可绕) |
|
|
36
|
-
| 发布链 | `npm publish` | `prepublishOnly`:build → test → **`npm run gate
|
|
43
|
+
| 发布链 | `npm publish` | `prepublishOnly`:build → test → **`npm run gate`**(十二道门禁,见下) | 任一步失败即阻断发布 |
|
|
37
44
|
| CI | push / PR | `cogmap-check.yml`:`cogmap_sync.py check` + `link_check.py` | 远端兜底红灯 |
|
|
38
45
|
|
|
39
46
|
## 为什么本地钩子跑 build 而不是 check
|
|
@@ -56,7 +63,7 @@ git config core.hooksPath scripts/git-hooks
|
|
|
56
63
|
|
|
57
64
|
## 发布门禁清单(`npm run gate`)
|
|
58
65
|
|
|
59
|
-
`prepublishOnly` 在 build + test 之后调用 `npm run gate
|
|
66
|
+
`prepublishOnly` 在 build + test 之后调用 `npm run gate`,十二道门禁与 CI **同形但不完全同覆盖**:
|
|
60
67
|
|
|
61
68
|
| # | 命令 | 守什么 | 对应 CI |
|
|
62
69
|
|---|---|---|---|
|
|
@@ -71,11 +78,15 @@ git config core.hooksPath scripts/git-hooks
|
|
|
71
78
|
| 9 | `python scripts/gate_rust_crate_test.py` | `cargo test` @ `rust/`(Rust 侧口径漂移的回归保障) | **无**(`hive-check.yml` 只跑 `hive/Cargo.toml`,`rust/` 至今零 CI) |
|
|
72
79
|
| 10 | `python scripts/gate_rust_parity.py` | `scripts/rank_parity.py` 逐位对拍(Python `search_rrf` vs Rust `mdcg-eval --serve`) | **无** |
|
|
73
80
|
| 11 | `python scripts/check_local_paths.py` | **追踪面本机路径门禁**:`git ls-files` 全量公开面上不得有本机目录结构路径(npm 面由第 2 道 R3 另守;判据=机器实有前缀 8 族 + `--selftest` 正负样例 + 不命中自身源码) | `publish-artifact-check.yml`(同 workflow 内自检 + 扫描两步) |
|
|
81
|
+
| 12 | `python scripts/body_e2e_smoke.py` | **身体×脑组合冒烟**(0.8.0 对接):身体侧视角经 MCP 全链——记账 → 台账 → 投影 → 查询;隔离库、退出码判据、两态样本(内置/真实序列) | **无**(仅本地/发布链;Linux 容器腿同款一行) |
|
|
74
82
|
|
|
75
|
-
> **第 11
|
|
83
|
+
> **第 11 道追加在链尾是有意的(2026-10-06 起其后又有第 12 道,位序意图不变)**:第 3 道的 C2 位序断言(smoke 腿紧随第 2 道)与
|
|
76
84
|
> `test_gate_rust_legs.py` 的链尾等价复跑通道(自 Rust 腿①起截尾)都不受影响;
|
|
77
85
|
> 路径违规是本机秒级可判面,位序不承担反馈距离职责。
|
|
78
86
|
|
|
87
|
+
> **第 12 道追加在链尾同样是刻意的**:它是跨仓组合面冒烟(依赖 spawn 一个隔离 MCP 子进程,
|
|
88
|
+
> 秒级);C2 位序断言与 `test_gate_rust_legs.py` 链尾截尾逻辑均按「Rust 腿起点」定位,不受尾追加影响(实测 53/0 全过)。
|
|
89
|
+
|
|
79
90
|
> **第 3 道的位序不是随意的**:它紧跟第 2 道(同为「发布件面」),且**必须在第 4 道
|
|
80
91
|
> `cogmap_sync.py check` 之前**——前者的 `npm pack` 会触发 `prepare`(= 本仓的 `tsc` 构建,
|
|
81
92
|
> 会重写 `lib/`),越靠近链首越能让「包面自检」与「包已定形」两件事挨着发生;塞在链尾则
|
|
@@ -288,10 +288,14 @@ python -X utf8 -m md_cg.sleep --status # 只读:含 last_cycle(
|
|
|
288
288
|
处置 = **人工重启常驻进程**(宿主侧重启 serve / 重新拉起灵枢插件);重启后从
|
|
289
289
|
心跳戳与 `<state_root>/sleep/_sleep.jsonl` 台账接着看。
|
|
290
290
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
291
|
+
**残留锁(有界自清,2026-10-06 落地)**:git 子进程被 kill 后可能留下 `index.lock`
|
|
292
|
+
——现由 `sleep._clear_git_lock` **有界**自清(三闸口径):①只碰本模块影子仓
|
|
293
|
+
(单属仓,无第三方合法持锁面);②时机两处——`_git` 每次调用**前置巡检**清
|
|
294
|
+
**超龄锁**(mtime ≥ 300s ≫ 全调用 120s 超时上界,即崩溃残留),超时 kill 后
|
|
295
|
+
**force 清**当场残留(此刻仓内锁只可能来自被 kill 进程);③其余一律不动——
|
|
296
|
+
超时消息如实带「已自动清理 / 未动,若后续报 lock 请人工核删」处置读数。
|
|
297
|
+
清理动作记一行 `git_lock_cleared` 台账(含 age_s/force)。守卫
|
|
298
|
+
`python -X utf8 -m md_cg.test_sleep_gitlock`(8 断言,含「新锁不误删」反向腿)。
|
|
295
299
|
|
|
296
300
|
### 4. issue #63 的现场判据(四条,引录)
|
|
297
301
|
|
|
@@ -327,6 +331,7 @@ T3 循环续走回归 / T4 进度面 / T5 审计面)+ `--mutate` 定点变
|
|
|
327
331
|
|
|
328
332
|
| 日期 | 要点 |
|
|
329
333
|
|---|---|
|
|
334
|
+
| 2026-10-06 | **v1.3**(退役/锁裁定批):残留锁**有界自清**落地(`_clear_git_lock` 三闸+`_git` 两时机:前置巡检清超龄、超时 kill 后 force 清;台账 `git_lock_cleared`;守卫 `md_cg.test_sleep_gitlock` 8 断言)——原「是否自动清理待裁(issue #63 台账)」收口 |
|
|
330
335
|
| 2026-10-06 | **v1.2**(issue #63):常驻循环三层无界收口——①`sleep._git` 加 `timeout=120s` + `stdin=subprocess.DEVNULL`(超时抛 `SleepGitTimeout`,与 rc≠0 失败文案分开、物化超时另支文案)②六档进/出刷既有心跳戳(`current_tick` / `last_tick_done` / `last_tick_error`)+ `stale_tick` 告警(只上报不杀线程,处置=人工重启)③同批加固 interop / audit / units / bench×3(whitebox Popen 不在加固面)——见 §十 |
|
|
331
336
|
| 2026-10-06 | **v1.1**(issue #60/#61):①物化 `ok` 拆为「物化成功」+ `face_stable` 读数,**物化成功即迭代**(真源面漂移交并发闸、主库优先)②新增手动入口 `--once` / `--once --dry-run`(零落盘预览)与 `--status` 的 `last_cycle` 读数 ③台账 skip 文案区分「门拦」与「物化未完成」——见 §三.5 / §四 / §六 / §九 |
|
|
332
337
|
| 2026-10-01 | v1.0 首版:版本库位置 / 维护动作(看历史·看改动·只 revert 的回退·冲突挂起)/ 开关与自动边界 / P2·P4 发版披露(§一–§八) |
|