@a9i5k4/dsh-auto-memory 2.2.1 → 2.2.3
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 +1 -1
- package/README.zh-CN.md +1 -1
- package/docs/A3-RISK-ASSESSMENT-20260830.md +61 -0
- package/docs/COT-WATCH-RFC.md +88 -0
- package/docs/DUAL-TIER-RATIFICATION-PROMPT.md +71 -0
- package/docs/HANDOFF-HARNESS.md +78 -0
- package/docs/HANDOFF-M8-M9-M10.md +203 -0
- package/docs/HY4-TOUR-LOGO-HANDOFF-2.md +60 -0
- package/docs/HY4-TOUR-LOGO-HANDOFF.md +100 -0
- package/docs/ISSUE-REPLY-UNATTENDED.md +31 -0
- package/docs/K3-LANDING-HANDOFF.md +76 -0
- package/docs/LANDING-OUTLINE.md +85 -0
- package/docs/M-CM-PLAN.md +166 -0
- package/docs/M-CM-STATE.md +64 -0
- package/docs/M3B-CONTRACT.md +461 -0
- package/docs/M4-CONTRACT.md +1207 -0
- package/docs/M5-CONTRACT.md +383 -0
- package/docs/M6-CONTRACT.md +342 -0
- package/docs/M7-ACTIVATION-ALGO-REFERENCES.md +104 -0
- package/docs/M7-ACTIVATION-CALIBRATION.md +144 -0
- package/docs/M7-ACTIVATION-FEATURE-AGENT-PROMPT.md +79 -0
- package/docs/M7-ACTIVATION-FEATURE-CALIBRATION.md +58 -0
- package/docs/M7-ACTIVATION-FEATURE-DESIGN.md +124 -0
- package/docs/M7-ACTIVATION-V2-CONTROLLED-SHADOW.md +127 -0
- package/docs/M7-ACTIVATION-V2-HANDOFF.md +132 -0
- package/docs/M7-ACTIVATION-V2-HOLDEDOUT-EVAL.md +94 -0
- package/docs/M7-ACTIVATION-V2-HOLDEDOUT-SHADOW.md +60 -0
- package/docs/M7-ACTIVATION-V2-LIVE-SHADOW-PLAN.md +85 -0
- package/docs/M7-ACTIVATION-V2-PAPER.md +303 -0
- package/docs/M7-AGENT-HANDOFF-PROMPT.md +63 -0
- package/docs/M7-ALGORITHM-DECISION.md +174 -0
- package/docs/M7-AUTONOMOUS-STATE.md +252 -0
- package/docs/M7-BENCHMARK-PLAN.md +78 -0
- package/docs/M7-CLOSED-LOOP-WIRING.md +110 -0
- package/docs/M7-EMBEDDING-BENCHMARK.md +164 -0
- package/docs/M7-INTERFACE-DIGEST.md +144 -0
- package/docs/M7-LABEL-REVIEW-REPORT.md +107 -0
- package/docs/M7-LEXICAL-TUNING.md +58 -0
- package/docs/M7-LIVE-SHADOW-SCRIPT.md +30 -0
- package/docs/M7-PYTHON-IMPLEMENTATION-REPORT.md +92 -0
- package/docs/M7-RESEARCH-PAPER.md +442 -0
- package/docs/M7-TASKSET-DISPATCH.md +213 -0
- package/docs/M8-MEMORY-HUB.md +105 -0
- package/docs/MEMORY-SYSTEMS-SURVEY-2026-09.md +166 -0
- package/docs/NEXT-MAJOR-PROMO.md +363 -0
- package/docs/NEXT-MAJOR-README-DRAFT.zh.md +205 -0
- package/docs/NEXT-MAJOR-VISION.md +112 -0
- package/docs/PREVIEW-NEXT-STEPS.md +229 -0
- package/docs/PROJECT-FREEZE-AND-ROADMAP.md +200 -0
- package/docs/PROMO-STYLE-GUIDE.md +84 -0
- package/docs/PYTHON-SIDECAR-CONTRACT.md +539 -0
- package/docs/R2-POLICY-PLUMBING-BLUEPRINT.md +99 -0
- package/docs/RELEASE-READINESS-PLAN.md +91 -0
- package/docs/RELEASE-SEMANTIC-OPTION.md +181 -0
- package/docs/S1-SCIENTIFIC-RIGOR.md +269 -0
- package/docs/S2-DEEP-ABSORPTION.md +259 -0
- package/docs/S3-TARGET-ARCHITECTURE.md +172 -0
- package/docs/USER-GUIDE.zh-CN.md +98 -0
- package/docs/banner.jpg +0 -0
- package/docs/implementation-handoff-context.zh-CN.md +429 -0
- package/docs/landing/index.html +1745 -0
- package/docs/paper-figures/fig1_model_quality.png +0 -0
- package/docs/paper-figures/fig2_chunk_reversal.png +0 -0
- package/docs/paper-figures/fig3_latency.png +0 -0
- package/docs/paper-figures/fig4_hybrid.png +0 -0
- package/docs/paper-figures/fig5_rerank_tradeoff.png +0 -0
- package/docs/paper-figures/fig6_cluster_sweep.png +0 -0
- package/docs/paper-figures/fig7_resource.png +0 -0
- package/docs/paper-figures-v2/fig1_echo_trap.png +0 -0
- package/docs/paper-figures-v2/fig2_pr_paths.png +0 -0
- package/docs/paper-figures-v2/fig3_coefficients.png +0 -0
- package/docs/paper-figures-v2/fig4_calibration.png +0 -0
- package/docs/paper-figures-v2/fig5_order_ablation.png +0 -0
- package/docs/paper-figures-v2/fig6_containment.png +0 -0
- package/docs/proactive-associative-memory-architecture.html +659 -0
- package/docs/proactive-associative-memory-meta-code.html +1058 -0
- package/docs/proactive-associative-memory-research-report.zh-CN.md +685 -0
- package/docs/proactive-associative-memory-system-map.html +1580 -0
- package/docs/promo/first-run-guide.html +397 -0
- package/docs/promo/homepage.html +384 -0
- package/docs/screenshots/calendar-en.png +0 -0
- package/docs/screenshots/calendar-zh.png +0 -0
- package/docs/screenshots/connect-en.png +0 -0
- package/docs/screenshots/connect-zh.png +0 -0
- package/docs/screenshots/main-connect-en.png +0 -0
- package/docs/screenshots/main-connect-zh.png +0 -0
- package/docs/screenshots/overview-en.png +0 -0
- package/docs/screenshots/overview-zh.png +0 -0
- package/docs/screenshots/panel-hub.png +0 -0
- package/docs/screenshots/panel-overview.png +0 -0
- package/docs/screenshots/panel-refine.png +0 -0
- package/docs/screenshots/promo/promo-0-banner-v2.png +0 -0
- package/docs/screenshots/promo/promo-1-hero.png +0 -0
- package/docs/screenshots/promo/promo-2-tour.png +0 -0
- package/docs/screenshots/promo/promo-3-recall.png +0 -0
- package/docs/screenshots/promo/promo-4-unattended.png +0 -0
- package/docs/screenshots/promo/promo-5-external.png +0 -0
- package/docs/screenshots/promo/promo-6-greeting.png +0 -0
- package/docs/screenshots/reflections-en.png +0 -0
- package/docs/screenshots/search-zh.png +0 -0
- package/docs/screenshots/settings-2-zh.png +0 -0
- package/docs/screenshots/settings-debug-zh.png +0 -0
- package/docs/screenshots/settings-en.png +0 -0
- package/docs/screenshots/settings-zh.png +0 -0
- package/docs/screenshots/tour-core.png +0 -0
- package/docs/screenshots/tour-external.png +0 -0
- package/docs/screenshots/tour-toggles.png +0 -0
- package/docs/screenshots/tour-welcome.png +0 -0
- package/docs/screenshots/workspace-map-zh.png +0 -0
- package/docs/social-preview.png +0 -0
- package/lib/client.js +207 -4
- package/lib/index.js +25 -5
- package/package.json +3 -1
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# M7-2 算法决策(冻结)
|
|
2
|
+
|
|
3
|
+
> 冻结:2026-08-24 · 依据:docs/M7-EMBEDDING-BENCHMARK.md(L1+L2 双层)
|
|
4
|
+
> · artifacts/m7-benchmark-pre/results.{json,csv}
|
|
5
|
+
> 效力:本文档是 M7-3 production embedding/tokenizer/chunk 实现的唯一依据;
|
|
6
|
+
> 代码不得出现计划外模型或策略。变更需新 benchmark + 升 policyVersion。
|
|
7
|
+
|
|
8
|
+
## D1 默认 embedding provider
|
|
9
|
+
|
|
10
|
+
**BAAI/bge-m3 @ revision 5617a9f61b028005a4858fdac845db406aefb181(MIT)**
|
|
11
|
+
|
|
12
|
+
- L1:R@5=0.966(para-512)/0.989(fixed-256)、MRR 0.889/0.894、nDCG@10
|
|
13
|
+
0.920/0.977、跨语言 20/20、代码类 10/10;p50/p95=122/189ms(≤500ms
|
|
14
|
+
预算,5s deadline 余量 26x);峰值 RSS 2.05GB;加载 2.8s;corpus 编码
|
|
15
|
+
41-48 chunks/s。
|
|
16
|
+
- L2(真实 251 episodes/40 查询):R@5=0.925、MRR 0.793、nDCG 0.837、
|
|
17
|
+
hard-neg 0.074、p95 241ms——领先 qwen3/e5 12.5pt R@5。**确认 D1。**
|
|
18
|
+
- 淘汰 multilingual-e5-large:修正用法后跨语言仅 0.60、R@5 0.727;且 512
|
|
19
|
+
token 硬上限与长 chunk 策略冲突。失败证据见 benchmark §4.3。
|
|
20
|
+
- qwen3-embedding-0.6b(Apache-2.0)列为**备选**:hard-negative 判别更优
|
|
21
|
+
(0.074 vs 0.111)、R@10 略优;但 p50≈300ms/p95≈500ms 压线、RSS 峰值
|
|
22
|
+
4.7GB。若 M7-4 rerank 后双子错误仍显著,可评估以 qwen3 换取判别力——
|
|
23
|
+
届时需重跑本 benchmark 全套(M7-2 门槛不得跳过)。
|
|
24
|
+
- 裸 cosine 不优先 correction(supersede 4/8 失败)→ D4 融合层必须带
|
|
25
|
+
supersede/时效特征;禁止靠换 embedding 模型解决(benchmark 证明三模型
|
|
26
|
+
同病,是任务性质而非模型缺陷)。
|
|
27
|
+
|
|
28
|
+
## D2 tokenizer 与 chunk policy(冻结为 m7_chunk_pre_v1)
|
|
29
|
+
|
|
30
|
+
- **dense tokenizer**:bge-m3 自带 XLM-R sentencepiece BPE;禁止 jieba/
|
|
31
|
+
任何外部预切(benchmark 语料即按此构建;jieba supersede 记录 r082 为
|
|
32
|
+
契约层禁令)。
|
|
33
|
+
- **chunk 策略:para-512-noov**——模型 tokenizer id 空间段落贪心装包,
|
|
34
|
+
上限 512 token;单段超限时该段内硬切窗(无重叠);special tokens(<s>
|
|
35
|
+
</s>)由编码器在窗外交付。段落切分按记录内 `\n` 边界。
|
|
36
|
+
- 依据(双层):L2 真实分布最优(R@5 0.925/MRR 0.793/nDCG 0.837,
|
|
37
|
+
hard-neg 0.074);L1 合成压力层次优(-2.3pt R@5 vs fixed-256)。
|
|
38
|
+
真实 episode 的答案依赖上下文、双子靠细节区分,大窗占优;段落对齐
|
|
39
|
+
与硬切同分(para=fixed@512),但保持标题/QA/列表语义单元完整,是零
|
|
40
|
+
成本保险。L1 的 256 优势来自合成 gold 紧凑,不外推。
|
|
41
|
+
- 256 窗仅作为 L1 压力层的已知次选;overlap(ov64)无收益→不采用;
|
|
42
|
+
1024 在 L1 劣化(-3.4pt)→禁用为默认(hard-neg 0.037 的收益交给
|
|
43
|
+
M7-3 融合与 M7-4 rerank 追,不靠加大窗)。
|
|
44
|
+
- M7-1 占位 chunking(整记录单 chunk)就此作废:derived state 须按
|
|
45
|
+
configHash 失配全量重建(契约 §10 已有该规则,M7-3 落实)。
|
|
46
|
+
- chunkId 仍是派生定位 chk_pre_=hash(memoryId+recordDigest+chunkOrdinal),
|
|
47
|
+
**新增 chunkOrdinal 入 hash**(占位版无序数;避免同记录多 chunk 撞 id);
|
|
48
|
+
chunkId 永不替代 memoryId。
|
|
49
|
+
- 聚合到父 memory:top-1 chunk 分数即 memory 分数(不平均);tie-break
|
|
50
|
+
score 降序→memoryId 字典序→chunkOrdinal(契约 §11.2 保持)。
|
|
51
|
+
|
|
52
|
+
## D3 向量表示与检索(冻结)
|
|
53
|
+
|
|
54
|
+
- float32 NumPy 矩阵,行 L2 归一,cosine=点积;查询侧同 tokenizer 同归一。
|
|
55
|
+
- 查询无前缀/无 instruction(bge-m3 官方 FAQ);查询 token 上限 256。
|
|
56
|
+
- 检索前按 workspaceRef scope 过滤(宿主侧硬门,benchmark 镜像入侵证据);
|
|
57
|
+
exact 全矩阵扫描,禁 ANN(规模门槛:>5 万 chunk 或 p95>500ms 才重开
|
|
58
|
+
benchmark 评 FAISS IndexFlatIP——exact 等价升级优先,HNSW 仍需另证)。
|
|
59
|
+
- 每 vector 绑定 provider/model/revision/dimension/normalization/
|
|
60
|
+
configHash/sourceEpoch/sourceVersion/recordDigest/chunkId;任一不匹配=
|
|
61
|
+
整个 derived index stale→全量重建,禁止混用(契约 §10)。
|
|
62
|
+
|
|
63
|
+
## D4 交给 M7-3 的明确输入
|
|
64
|
+
|
|
65
|
+
1. production provider:bge-m3 pinned revision(见 model-manifest.json,
|
|
66
|
+
sha256 逐文件);离线部署=按 manifest 下载核验(hf-mirror 通道已验证)。
|
|
67
|
+
2. worker:python/worker_semantic_pre_v1.py(新增,不改动已 tested 的
|
|
68
|
+
worker_pre_v1.py);复用其协议层(canonical/digest/拒绝矩阵),在
|
|
69
|
+
index_sync commit 后做 tokenizer chunking+embedding,derived 目录结构
|
|
70
|
+
<DSH_HOME>/memory/semantic-pre/{derived-corpus.json, vectors.f32,
|
|
71
|
+
vectors-meta.json(identity block)};health 回 embed 能力;context_push
|
|
72
|
+
时 dense 检索 top-8 产出 candidate_result(仍不直接激活)。
|
|
73
|
+
3. 对照 arms(全部跑 L1+L2):lexical(复刻 lexical_pre_v2:NFKC+CJK 2-gram
|
|
74
|
+
+哈工大停用词+BM25 k1=1.2 b=0.75)、dense、bm25s sparse(MIT,自定义
|
|
75
|
+
splitter 复刻同款分词)、weighted fusion、RRF(k 消融 {10,20,40,60,100});
|
|
76
|
+
模型 sparse(bge-m3 sparse_linear.pt)为可选 arm,若引入需补下载+核验。
|
|
77
|
+
4. supersede/时效特征进入融合(基准证据:裸 cosine 4/8 失败);具体权重
|
|
78
|
+
由 M7-3 消融冻结。
|
|
79
|
+
5. CI:fixture vectors 已冻结(smoke-test-m72-pre.mjs);M7-3 新增的检索/
|
|
80
|
+
融合测试同样用 fixture,不联网。
|
|
81
|
+
|
|
82
|
+
## D5 已驳回的路线(留档)
|
|
83
|
+
|
|
84
|
+
- e5-large(跨语言失败+512 上限)· jieba 预切(违反分层+supersede r082)
|
|
85
|
+
· overlap chunking(无收益)· 1024 长窗(R@5 -3.4pt)· ANN/图数据库
|
|
86
|
+
(规模未到,契约 §11.5)· 以换模型解决 supersede(三模型同病)。
|
|
87
|
+
- qwen3-0.6b 暂不采用(延迟/内存),保留为 M7-4 后的条件备选。
|
|
88
|
+
|
|
89
|
+
## D6 融合 policy(冻结为 hybrid_fusion_pre_v1,M7-3)
|
|
90
|
+
|
|
91
|
+
- **默认融合:weighted min-max 归一线性融合,dense 权重 0.7 + lexical 0.3**;
|
|
92
|
+
lexical arm = lexical_pre_v2 的 Python 对齐复刻(NFKC+CJK 2-gram+哈工大 507
|
|
93
|
+
停用词+BM25 k1=1.2 b=0.75,停用词表运行时从 lib/shadow-retrieval-pre.js
|
|
94
|
+
提取,零拷贝漂移)。lexical_pre_v2 仍是强制 baseline/fallback。
|
|
95
|
+
- 依据(artifacts/m7-hybrid-pre/results.csv):L2 真实分布 weighted w=0.7
|
|
96
|
+
R@5=0.950/MRR=0.866/hardneg=0.074,全面优于 dense-only(0.925/0.774)与
|
|
97
|
+
lexical-only(0.825/0.787);L1 压力层 w=0.7 R@5=0.966 与 dense 持平
|
|
98
|
+
(MRR 0.837 vs 0.882,可接受代价)。
|
|
99
|
+
- RRF:k∈{10,20,40,60,100} 结果完全一致(不敏感),保留 k=60 为文档化备选,
|
|
100
|
+
不作默认(MRR 劣于 weighted:0.813 vs 0.866)。
|
|
101
|
+
- bm25s 库(0.3.10,Lucene)与自研复刻 R@5 完全一致(L1 0.773/L2 0.825)
|
|
102
|
+
——**库交叉验证通过,生产不引入 bm25s 依赖**(零新运行时依赖)。
|
|
103
|
+
- supersede 惩罚 γ∈{0.02,0.05} 无可测效果(L1 sup 保持 0.5)→ 不冻结;
|
|
104
|
+
correction 排序问题移交 M7-6 特征层(supersede 边+时效+evidence)。
|
|
105
|
+
- tie-break 恒定:融合分降序→memoryId 字典序→chunkOrdinal。
|
|
106
|
+
|
|
107
|
+
## D8 Clustering Shadow 结论(M7 任务集 §七,shadow-only)
|
|
108
|
+
|
|
109
|
+
- 基准(artifacts/m7-cluster-pre/):对象=memory record(块向量均值→L2),
|
|
110
|
+
真值=手写主题(双子共题/其余单题/distractor 小组)。
|
|
111
|
+
- **结论:agglomerative(cosine,average linkage,thr≈0.3)为 shadow 参考实现**
|
|
112
|
+
——NMI 0.916/B-cubed 0.782/125 簇,bootstrap 稳定性 0.995(5×80% 子采样);
|
|
113
|
+
thr 0.5+ 粗簇化质量崩塌(B-cubed 0.44→0.07)。
|
|
114
|
+
- **HDBSCAN 不适用本语料形态**:单例主题为主 → 噪声率 62-100%
|
|
115
|
+
(mcs=3 时 known-topic 噪声 0.68);"噪声"即真实语义形态,soft membership
|
|
116
|
+
无处着力。留档不采用。
|
|
117
|
+
- UMAP(仅可视化)与 BERTopic(标注层)skipped-by-scope(任务集定位即非门)。
|
|
118
|
+
- L2 真实语料结构参考:thr=0.5 仅 5 簇——真实记忆高度单例化,聚类在
|
|
119
|
+
M7-6 中的价值应是"簇支持特征"而非主召回,维持 shadow,不接 M6。
|
|
120
|
+
- 簇 artifact 形状已按任务集落盘(clusters.json:clusterId/members/centroid
|
|
121
|
+
前 8 维/medoid/radius/softMembership(HDBSCAN 时)/noise/keywords/
|
|
122
|
+
policyVersion=cluster_shadow_pre_v1)。
|
|
123
|
+
|
|
124
|
+
## D9 Rerank 决策(M7-4,冻结为 rerank_policy_pre_v1 = deferred-optional)
|
|
125
|
+
|
|
126
|
+
- 候选(全部 pinned+核验):bge-reranker-v2-m3 @953dc6f6f85a(Apache-2.0,
|
|
127
|
+
2.29GB,load 1.7s);qwen3-reranker-0.6b @e61197ed4502(Apache-2.0,1.21GB,
|
|
128
|
+
load 0.8s)。FlashRank 跳过:模型托管在代理外网络不可达(记录)。
|
|
129
|
+
- **质量证据(bge-reranker top50→10 全量)**:L1 R@5 0.966→1.0、MRR
|
|
130
|
+
0.837→0.947、supersede 0.5→0.625;L2 MRR 0.866→0.892、hardneg 0.074→
|
|
131
|
+
0.037。qwen3 探针(10 查询×10 对):R@5=1.0 双层,但 hardneg 劣于 bge
|
|
132
|
+
(0.33/0.125 vs 0.11/0.04)。
|
|
133
|
+
- **延迟证据(CPU,生产形态)**:bge p50 26-33s/查询(50 对);qwen3 探针
|
|
134
|
+
0.8-0.95s/对→外推 40-48s/50 对。两者超 500ms 预算 **50-90 倍**。
|
|
135
|
+
- **决策:rerank 不接生产同步路径**。冻结为 deferred-optional:仅允许
|
|
136
|
+
异步/batch 场景或 activation 非关键链路使用;重开条件=量化(int8 ONNX)
|
|
137
|
+
或 GPU 推理把 50 对压进 500ms,届时须重跑本消融。timeout/unavailable
|
|
138
|
+
保序语义在接线时实现(M7-4 未接线,无生产影响)。
|
|
139
|
+
- 若未来启用:默认 bge-reranker-v2-m3(质量+hardneg 全面占优)。
|
|
140
|
+
|
|
141
|
+
## D10 Graph 条件门(M7-5,结论=skipped-by-benchmark)
|
|
142
|
+
|
|
143
|
+
- 8 条多跳探针(supersede 双端点问题):hybrid top-10 已在 **6/8** 同时
|
|
144
|
+
覆盖双端点;剩余 2 条的 hop2 缺口可由 M7-6 的 supersede/时效特征在
|
|
145
|
+
融合层补(JS provenance 已携带边,零图存储成本)。
|
|
146
|
+
- 语料仅 7 条 supersede 边——不足以证明 networkx/PPR 的维护成本合理。
|
|
147
|
+
- **按任务集 §九:skipped-by-benchmark 视为正确完成**;重开条件=
|
|
148
|
+
LongMemEval/LoCoMo 或自有大规模多跳集证明 hybrid+特征仍不足。
|
|
149
|
+
- 零重型服务(Neo4j/Graphiti)引入,与契约 §11.5 一致。
|
|
150
|
+
|
|
151
|
+
## D11 M7-6/M7-7 状态
|
|
152
|
+
|
|
153
|
+
- M7-6 已实现(worker_semantic_pre_v1):per-session 语义状态
|
|
154
|
+
(sessionId+workspaceKey+scope,close_session 清除)、双阈值
|
|
155
|
+
suppress/prefetch/emit(T_on>T_off 滞回)、cooldownObs 冷却、特征
|
|
156
|
+
分组落日志(denseTop/margin/evidence seen·cite·correction/tool
|
|
157
|
+
failures/recency)、**shadow 校准默认**;active 模式的 activation_request
|
|
158
|
+
帧逐字段过 M6 validateActivationRequestPre(smoke-test-m76 Q2 实证)。
|
|
159
|
+
阈值默认 tOn=0.62/tOff=0.52 为初值,生产启用前须用 shadow 日志校准
|
|
160
|
+
(activation-shadow.jsonl 即校准数据源)。
|
|
161
|
+
- M7-7 已实现:judgement shadow(8 类 kindCandidate+keep/merge/supersede
|
|
162
|
+
建议,marker+启发式分类),只写 judgement-shadow.jsonl;每条带
|
|
163
|
+
sourceIds/contextVersion/miv/support+counter evidence/confidence/
|
|
164
|
+
policyVersion;零 MEMORY.md/evidence/Procedure 写入(m77 断言)。
|
|
165
|
+
- 两者均为 shadow,不触发任何 M6 注入(除 active 模式显式开启)。
|
|
166
|
+
|
|
167
|
+
## D7 状态
|
|
168
|
+
|
|
169
|
+
- **M7-2..M7-7 全部 tested(2026-08-24)**:D1-D11 冻结齐全;回归 26 项
|
|
170
|
+
(M0-M6 20+m70/m71/m72/m73/m76/m77)全绿;全部默认关闭/影子态,未接
|
|
171
|
+
生产 activation(唯一例外=worker activationPolicy.mode='active' 显式
|
|
172
|
+
开启,且需三重门+M6 validator 双重把关)。
|
|
173
|
+
- **M7-8(唯一人工门)未执行**:等待用户重启/开关授权;步骤见
|
|
174
|
+
PYTHON-SIDECAR-CONTRACT §19.8。未经 live 验证不标 live。
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
# M7 Autonomous State(自主推进状态文件)
|
|
2
|
+
|
|
3
|
+
> 生成:2026-08-24 01:40 (Asia/Shanghai);最近更新 01:55
|
|
4
|
+
> **最高执行依据:docs/M7-TASKSET-DISPATCH.md(DeepSeek harness 总派发 Agent
|
|
5
|
+
> 任务集逐字副本,2026-08-24 01:51 粘贴)。本文件与其冲突时以任务集为准。**
|
|
6
|
+
> 接口速查:docs/M7-INTERFACE-DIGEST.md(M5/M6/SidecarClient/worker 全部
|
|
7
|
+
> 字段级契约摘要,恢复会话先读它可省大量重读)。
|
|
8
|
+
> 用途:长期自治的唯一人类可读状态。上下文压缩/进程恢复后,先读
|
|
9
|
+
> system-map、M7 contract/report、本文件、artifacts/m7-autonomous-pre/state.json
|
|
10
|
+
> 和 git status,然后从 nextExactAction 继续,不得从头重新规划。
|
|
11
|
+
> 纪律:不 commit/push/tag/publish;不碰 127.0.0.1:3080 宿主(只读 GET 也不改状态);
|
|
12
|
+
> M7-8 live 是唯一人工门,到点暂停。
|
|
13
|
+
|
|
14
|
+
## immutableObjective
|
|
15
|
+
|
|
16
|
+
在 D:\dsh-auto-memory preview 分支上,自主完成 M7-2(embedding benchmark)至
|
|
17
|
+
M7-7(judgement shadow)的代码、artifact、测试与文档;不回退 M7-0/M7-1 协议与
|
|
18
|
+
index_sync 语义;不接生产 activation(默认关闭零副作用);到 M7-8 停止并输出
|
|
19
|
+
需要用户执行的精确步骤。全部产物保持未提交。
|
|
20
|
+
|
|
21
|
+
## capabilityMatrix(2026-08-24 审计,全部只读探针)
|
|
22
|
+
|
|
23
|
+
| capability | 值 | 证据 |
|
|
24
|
+
| --- | --- | --- |
|
|
25
|
+
| repoRead | true | git status/docs/lib 读取正常 |
|
|
26
|
+
| repoWrite | true | Write/Edit 工具可用 |
|
|
27
|
+
| shell | true | Git Bash,后台任务可用 |
|
|
28
|
+
| pythonExecutable | true | 独立 venv D:\dsh-auto-memory\python\bench\.venv (3.10.11);系统 3.14.6 无 torch |
|
|
29
|
+
| networkAccess | partial | hf-mirror.com 可达(~0.4-4MB/s);huggingface.co/google 直连失败(用户已关代理);github 200;pip/pytorch.org 可达 |
|
|
30
|
+
| externalMemoryRead | true | 契约 §4 全部 8 路径存在(workbuddy/projects 104M、codex/sessions 46M、md 文件 4-12K) |
|
|
31
|
+
| loopbackReadOnly | partial | 127.0.0.1:3080 有 HTTP 响应,/debug/state 404(宿主在跑,路径未暴露;仅 GET,零写入) |
|
|
32
|
+
| dshLifecycleControl | true(能力)/false(授权) | dsh 命令存在;本轮用户明令禁止停止/重启 3080 → 视为 false |
|
|
33
|
+
| subagents | true | ZCode Agent 工具可用(仅只读研究/复核,主 Agent 唯一 writer) |
|
|
34
|
+
|
|
35
|
+
不假设存在 memory_recall_pre/memory_external_pre/goal/calendar 等 DeepSeek
|
|
36
|
+
Harness 工具;未暴露即不模拟。无 dshLifecycleControl 授权不构成离线 M7 阻断:
|
|
37
|
+
M7-2~M7-7 照常推进,M7-8 人工门停止。
|
|
38
|
+
|
|
39
|
+
## currentPhase / currentSubtask
|
|
40
|
+
|
|
41
|
+
- currentPhase: **M7-8 Phase F shadow calibration COMPLETE(2026-08-24)——verdict=`insufficient_gold_for_active`,维持 shadow;生产 tOn/tOff 默认未动**
|
|
42
|
+
- currentSubtask: 无(等待:①人工审查 73 条标签翻转 isGold;②特征层修正(回声抑制/意图信号/margin-evidence 门)后重新校准;③届时才谈 §19.8 active canary 人工门)
|
|
43
|
+
- 详见 docs/M7-ACTIVATION-CALIBRATION.md 与 artifacts/m7-live-pre/calibration-cal20260824-1855/
|
|
44
|
+
- 回归终态:**26 项全绿**;专项断言 m72=21/m73=55/m76=33/m77=15;
|
|
45
|
+
卫生检查全净;状态已备份至 artifacts/m7-autonomous-pre/backups/。
|
|
46
|
+
|
|
47
|
+
## M7-7.5 Hardening(2026-08-24 14:10 完成——审阅意见全部闭环)
|
|
48
|
+
|
|
49
|
+
- P0 真实 BGE 建库:BgeM3Embedder 补 build_doc_ids(specials 包裹+512 截断)
|
|
50
|
+
与 encode_texts(单一模板);worker build_vectors 按 provider 分派(tokenizer
|
|
51
|
+
id 直通 vs 字符窗)。real-smoke 12 断言全过(建库/归一/identity/双语 top1)。
|
|
52
|
+
- P1 D6 进生产:weighted dense0.7+lexical0.3(BM25 对齐公式,全量授权文本),
|
|
53
|
+
影子候选带三分量;search.mode/wDense 可配默认 hybrid。
|
|
54
|
+
- P1 三重过滤:dense_search 显式 workspaceRef+scope+miv;wsref_of 为 JS
|
|
55
|
+
published function 的逐字节镜像(对拍一致);N9 同 miv 跨工作区泄漏用例通过。
|
|
56
|
+
- P1 激活特征:correction 负向(-0.20)+硬抑制(conflictDropped);toolFailures
|
|
57
|
+
+0.05 权重(分数=特征重算断言);occurredAt 全链传递但 index_sync 契约恒
|
|
58
|
+
null→recency 已接线休眠(固化于 m76 Q6)。
|
|
59
|
+
- P1 query 双 special:统一 add_special_tokens=False+encode_ids 单点包裹。
|
|
60
|
+
- P2 gitignore:模型缓存/原始语料 jsonl/venv 全部隔离(check-ignore 验证)。
|
|
61
|
+
- 顺手修复:f1 测试三处硬编码日期跨日界 flake→动态日期(20 断言全过)。
|
|
62
|
+
- 回归:**26 项全绿**(m73=59/m76=44 断言更新后);卫生全净。
|
|
63
|
+
- 二轮复核修正(2026-08-24 15:00):首次 gitignore 修复写错位置(嵌套文件+根相对路径→零命中,
|
|
64
|
+
审阅者实测正确)。已移入根 .gitignore 并删除错误嵌套文件;.hf-cache(2.29G)/models(9.7G)/
|
|
65
|
+
.venv/日志/m7-corpus-pre/*.jsonl 全部 check-ignore IGNORED;论文/汇总 results/model-manifest/
|
|
66
|
+
privacy-report 保持可提交。原始 corpus jsonl 留在本地供 shadow 标定。
|
|
67
|
+
- 终态回归:**最新代码上 26/26 全绿复跑 + 真 BGE smoke 重跑通过(20.5s,0 fails)**——即审阅
|
|
68
|
+
要求的"微修后再跑一次最终 26/26"已完成。
|
|
69
|
+
- M7-8 前余项(非 Agent 可完成):shadow 阈值标定需真实对话数据 → 用户执行 §19.8 十步
|
|
70
|
+
(首轮 mode='shadow'),Agent 依据 activation-shadow.jsonl 标定 tOn/tOff 后才切 active canary。
|
|
71
|
+
|
|
72
|
+
## M7-8 Phase F Shadow Semantic Calibration(2026-08-24 完成——未 live,维持 shadow)
|
|
73
|
+
|
|
74
|
+
- runId=calibration-cal20260824-1855;73 条标注(live 16/episodes 57;activate 31/prefetch 16/suppress 16/harmful 10),**isGold=0**。
|
|
75
|
+
- 离线 harness 复刻生产路径(真 BGE-M3、para-512、hybrid 0.7/0.3、评分公式);保真交叉验证:episodes 面 274 chunks 与 M7-2 L2 一致,live 39 行分数重算 39/39 吻合。
|
|
76
|
+
- 核心发现:**回声陷阱**——suppress 类"生活记录回声"cal-0009 得分 0.6507 高于全部 activate 正例(max 0.5914);当前默认 (0.62/0.52) 在 65 条可评估样本上的唯一 emit 即该错误激活;契约网格内无任何格子同时满足 precision 优先与可用 recall(全格 harmfulActivations=0、correction/跨 ws 泄漏=0)。
|
|
77
|
+
- 结论:`insufficient_gold_for_active`;不推荐任何 tOn/tOff 进 active;`m7_semantic_threshold_pre_v2-DRAFT-NOT-APPLIED` 仅记录(argmin 格 0.55/0.50 仍不合格)。进 active 前置=特征层修正+人工 gold≥15/类+真实流量回归(见校准文档 §8)。
|
|
78
|
+
|
|
79
|
+
## M7-8 Phase E Host Orchestration Fix(2026-08-24,JS Host 编排修复,未 live)
|
|
80
|
+
|
|
81
|
+
- 根因修正:live 仅 child-session Segment,不能证明 observer 接线缺失;生产 Host 从未调
|
|
82
|
+
buildIndexSyncPlansPre/sendIndexSyncPlanPre 是确定缺口 → Python 收不到全库语料。
|
|
83
|
+
- 新增 lib/m7-index-sync-host-pre.js 编排器 + context-host 时序修正(index-ready 门,
|
|
84
|
+
python sink 才等)+ index.js 接线;live-parity 诊断字段。
|
|
85
|
+
- smoke-test-m78-host-pre.mjs 33 断言全过(P1 live-parity/P2 child 抑制/P3 幂等·epoch·
|
|
86
|
+
miv/P4 失败可重试/P5 同 miv A-B 隔离/P6 dispose/P7 回流+建库)。
|
|
87
|
+
- 全量 27 项回归(m0-m6 20+m70/71/72/73/76/77+m78)串行全绿;卫生全净。
|
|
88
|
+
- 详见 PYTHON-SIDECAR-CONTRACT §19.10。
|
|
89
|
+
|
|
90
|
+
## M7-4..M7-7 完成摘要(2026-08-24)
|
|
91
|
+
|
|
92
|
+
- Clustering Shadow(D8):agglomerative thr=0.3(NMI 0.916/稳定性 0.995)
|
|
93
|
+
参考;HDBSCAN 不适用;shadow-only 零 M6 接线。
|
|
94
|
+
- M7-4(D9):双 reranker 质量(L1 R@5→1.0/supersede 0.625)但 CPU
|
|
95
|
+
p50 26-33s/50 对超预算 50-90 倍→deferred-optional 不接生产。
|
|
96
|
+
- M7-5(D10):6/8 多跳双端点 hybrid 已覆盖→skipped-by-benchmark。
|
|
97
|
+
- M7-6(D11):双阈值+滞回+cooldown+特征分组;shadow 校准默认;active
|
|
98
|
+
帧逐字段过 M6 validateActivationRequestPre(m76 33 断言)。
|
|
99
|
+
- M7-7:judgement shadow 8 类+建议,零权威写入(m77 15 断言)。
|
|
100
|
+
- model-sparse 补测:dense+ms 融合 L2 R@5=0.975 全研究最高;MRR 略低
|
|
101
|
+
→D6 修正案(默认不变,校准期重评)。
|
|
102
|
+
- 用户提醒:本会话网络代理关闭,全部模型经 hf-mirror 下载核验;
|
|
103
|
+
如需直连 huggingface.co/github-raw 请重新打开代理。
|
|
104
|
+
|
|
105
|
+
## M7-3 已完成(全量回归 24 项全绿)
|
|
106
|
+
|
|
107
|
+
- python/m7_embedding_pre_v1.py + python/worker_semantic_pre_v1.py
|
|
108
|
+
(继承 worker_pre_v1 零协议回退;影子候选本地日志;stale/重建)。
|
|
109
|
+
- smoke-test-m73-pre.mjs N1-N8 **55 断言**全绿。
|
|
110
|
+
- hybrid 对照→**D6 冻结 hybrid_fusion_pre_v1=weighted dense0.7+lexical0.3**
|
|
111
|
+
(L2 R@5 0.950/MRR 0.866 胜 dense-only;bm25s 交叉验证一致→零新依赖;
|
|
112
|
+
RRF k 不敏感;supersede γ 无效→移交 M7-6)。
|
|
113
|
+
- artifacts/m7-hybrid-pre/results.{json,csv}。
|
|
114
|
+
|
|
115
|
+
## M7-2 最终结果(全部完成,23 项回归全绿)
|
|
116
|
+
|
|
117
|
+
- **冻结(docs/M7-ALGORITHM-DECISION.md)**:bge-m3 @5617a9f61b02(MIT)+
|
|
118
|
+
m7_chunk_pre_v1=para-512-noov + NumPy float32 exact cosine;
|
|
119
|
+
qwen3-0.6B 备选;e5-large 淘汰。
|
|
120
|
+
- L1:R@5 0.966/MRR 0.889/nDCG 0.920/跨语 1.0/hardneg 0.111/p95 189ms。
|
|
121
|
+
- L2:R@5 0.925/MRR 0.793/nDCG 0.837/hardneg 0.074/p95 241ms(领先 12.5pt)。
|
|
122
|
+
- supersede 裸 cosine 4/8 失败→M7-3 融合必须带 supersede/时效特征。
|
|
123
|
+
- 测试:smoke-test-m72-pre.mjs K1-K7=21 断言;**全量回归 23 项串行全绿**
|
|
124
|
+
(M0-M6 20+m70+m71+m72);node --check/py_compile/git diff --check/
|
|
125
|
+
BOM/_dev 扫描全净。
|
|
126
|
+
- 顺手修复(披露):smoke-test-m70-pre.mjs G7 harness 的 ctx.effect 空桩
|
|
127
|
+
丢失 heartbeatTimer 清理→进程无法自然退出(90 断言本全过;仅测试
|
|
128
|
+
harness,零生产代码改动)。修复后 m70 自然 exit 0。
|
|
129
|
+
- 回写完成:contract §19.6/report §8/system-map(currentScope→M7-3,
|
|
130
|
+
M7 行 evidence+reviewRound+nextBrief)/PREVIEW-NEXT-STEPS/本文件/state.json。
|
|
131
|
+
|
|
132
|
+
## M7-3 输入(docs/M7-ALGORITHM-DECISION.md D4)
|
|
133
|
+
|
|
134
|
+
1. python/worker_semantic_pre_v1.py:复用 worker_pre_v1 协议(canonical/
|
|
135
|
+
digest/拒绝矩阵),commit 后 tokenizer chunking(para-512)+bge-m3
|
|
136
|
+
embedding;derived=semantic-pre/{derived-corpus.json,vectors.f32,
|
|
137
|
+
vectors-meta.json(identity block)};context_push 时 dense top-8 产
|
|
138
|
+
candidate_result(不激活);health 回 embed 能力。
|
|
139
|
+
2. 对照 arms(L1+L2 全跑):lexical 复刻(NFKC+CJK 2-gram+哈工大 507 停用词
|
|
140
|
+
+BM25 k1=1.2 b=0.75)/bm25s(自定义 splitter 同款分词)/weighted/RRF
|
|
141
|
+
k∈{10,20,40,60,100}消融;supersede/时效特征进融合。
|
|
142
|
+
3. vector 绑 provider/model/revision/dim/normalization/configHash/
|
|
143
|
+
sourceEpoch/sourceVersion/recordDigest/chunkId;失配=stale 全量重建。
|
|
144
|
+
4. CI fixture-only;不接生产 activation;默认关闭零进程零 IO 断言不变。
|
|
145
|
+
|
|
146
|
+
## L2 外部真实语料(已完成,artifacts/m7-corpus-pre/)
|
|
147
|
+
|
|
148
|
+
- episodes.jsonl:251 条(94 profile 块 + 128 DSH 锚定记录 + 29 去重后真实会话
|
|
149
|
+
episode);按 sessionRef hash 切分 train190/dev32/test29;脱敏 secret97/
|
|
150
|
+
phone2/abspath85/email0;只读原文件,未回写任何 MEMORY.md。
|
|
151
|
+
- multilingual-queries.jsonl:40 条手写查询(zh/en/mixed/code,含跨语言与
|
|
152
|
+
hard-negative 标注);hard-negatives.jsonl:10 对;activation-scenarios.jsonl:
|
|
153
|
+
8 条(M7-6 校准输入);privacy-report.json + split-manifest.json +
|
|
154
|
+
raw-manifest.json 齐全;查询源码 l2-queries-authored.py 可审。
|
|
155
|
+
- 卫生:重复会话跨文件去重;"Please continue with the conversation" 续接产物
|
|
156
|
+
剔除;正反斜杠用户主目录均已脱敏。
|
|
157
|
+
|
|
158
|
+
## M7-2 已修 bug(全部回归验证中)
|
|
159
|
+
|
|
160
|
+
1. transformers 5.15.1 无 build_inputs_with_special_tokens → 探针法定位
|
|
161
|
+
special 前后缀(bge-m3=[bos,eos];qwen3=[eos];跨样本稳定性断言)。
|
|
162
|
+
2. multilingual-e5-large max_position_embeddings=512 → doc_max_tokens=512
|
|
163
|
+
(内容截断至 510);fixed-512 崩溃根因即 512 内容+2 special=514 越界。
|
|
164
|
+
3. e5 doc 侧 "passage: " 前缀此前未进 chunk 文本流 → 现并入 record 文本
|
|
165
|
+
再 tokenizer 切分(首轮 e5 xlang@5=0.55 的主因,属实现 bug 非模型弱点)。
|
|
166
|
+
4. PeakRss 跨模型串扰 → 每模型 reset_baseline()。
|
|
167
|
+
5. 新增 nDCG@10 与 per-query top10 明细(离线指标可重算)。
|
|
168
|
+
|
|
169
|
+
## completedArtifacts
|
|
170
|
+
|
|
171
|
+
- python/bench/ 独立实验环境:.venv(3.10.11, torch 2.13.0+cpu, transformers
|
|
172
|
+
5.15.1, numpy 2.0.2, huggingface_hub 1.28.0, psutil, sentencepiece, requests)
|
|
173
|
+
- python/bench/m7b_config.py:三模型 pinned revision/license/dimension/
|
|
174
|
+
normalization/pooling/instruction + 5 chunk policies + 预算常量
|
|
175
|
+
- python/bench/download_models.py + m7b_fetch.py:下载与校验(hf 直连 +
|
|
176
|
+
hf-mirror 分段并行两条路径,后者带 LFS sha256 核验)
|
|
177
|
+
- python/bench/m7b_corpus.py:152 records / 88 queries 合成语料(zh→en、en→zh、
|
|
178
|
+
混写、代码/路径/错误码、hard-negative 双子、supersede 新旧、跨 workspace
|
|
179
|
+
镜像、多 chunk 长文、60 distractors)
|
|
180
|
+
- python/bench/m7b_chunker.py:tokenizer-id 空间 chunking(fixed 256/512/1024、
|
|
181
|
+
para-512、para-512-ov64;无 jieba/外部预切)
|
|
182
|
+
- python/bench/m7b_embed.py:三模型 canonical pooling(CLS/mean/last-token)+L2
|
|
183
|
+
归一 + RSS 追踪
|
|
184
|
+
- python/bench/m7b_run.py:编排器(指标、tie-break、scope 门、延迟、内存、
|
|
185
|
+
索引体积、configHash)
|
|
186
|
+
- python/bench/m7b_export_fixture.py + smoke-test-m72-pre.mjs(K1-K7 离线 CI,
|
|
187
|
+
fixture vectors 不联网)
|
|
188
|
+
- bge-m3 快照已下载并本地 sha256 全文件校验(2.29GB)
|
|
189
|
+
|
|
190
|
+
## exactDecisions
|
|
191
|
+
|
|
192
|
+
- 三模型 pinned revision(bge-m3 5617a9f61b028005a4858fdac845db406aefb181 /
|
|
193
|
+
MIT;qwen3 97b0c614be4d77ee51c0cef4e5f07c00f9eb65b3 / Apache-2.0;
|
|
194
|
+
e5-large 3d7cfbdacd47fdda877c5cd8a79fbcc4f2a574f3 / MIT)——下载前经 HF API
|
|
195
|
+
核验,license 标签来自模型卡。
|
|
196
|
+
- Dense 输入一律各模型自带 tokenizer(id 空间切分),qwen3 查询走模型卡
|
|
197
|
+
Instruct/Query 模板,e5 加 query:/passage: 前缀,bge-m3 无前缀。
|
|
198
|
+
- 检索 = NumPy float32 + L2 归一 + 精确点积;无 ANN/FAISS/HNSW/图。
|
|
199
|
+
- tie-break:score 降序 → memoryId 字典序 → chunkOrdinal。
|
|
200
|
+
- 偏差披露:M7-BENCHMARK-PLAN.md 在模型已 pinned/下载之后补写(进入自主模式
|
|
201
|
+
前的既有顺序);计划内容与已执行步骤一致,不构成方法学改变。
|
|
202
|
+
|
|
203
|
+
## modelRevisions 与 licenses
|
|
204
|
+
|
|
205
|
+
见 python/bench/results/model-manifest.json(逐文件 sha256/bytes/本地路径)。
|
|
206
|
+
bge-m3 2.29GB;qwen3 ~1.2GB;e5-large ~2.24GB;缓存 D:\dsh-auto-memory\
|
|
207
|
+
python\bench\(.hf-cache 与 models\),均在未跟踪目录,不进 git。
|
|
208
|
+
|
|
209
|
+
## activeProcesses
|
|
210
|
+
|
|
211
|
+
| PID | 命令 | 用途 | 日志 |
|
|
212
|
+
| --- | --- | --- | --- |
|
|
213
|
+
| (bg) | m7b_fetch.py qwen3,e5 | hf-mirror 分段下载+校验 | sess .../call_44237d7d320d477ca7091eeb-stdout.log |
|
|
214
|
+
|
|
215
|
+
无其他无主进程;所有后台任务由 ZCode exec 登记。
|
|
216
|
+
|
|
217
|
+
## testCommands / exitCodes
|
|
218
|
+
|
|
219
|
+
- node --check(新 JS 测试)待跑;python -m py_compile 全部 bench 模块通过
|
|
220
|
+
(m7b_corpus/m7b_chunker/m7b_embed/m7b_run/m7b_config/m7b_fetch/
|
|
221
|
+
download_models/m7b_export_fixture)。
|
|
222
|
+
- 完整回归(M0-M6 22 项 + m70/m71 + m72)在 M7-2 收尾时统一串行执行。
|
|
223
|
+
|
|
224
|
+
## benchmarkResults
|
|
225
|
+
|
|
226
|
+
(进行中——benchmark 跑完后回填 results.json/csv 摘要与 runIds。)
|
|
227
|
+
|
|
228
|
+
## knownRisks
|
|
229
|
+
|
|
230
|
+
- hf 直连失效:靠 hf-mirror;若镜像也被断,下载类任务 blocked:network,
|
|
231
|
+
已完整下载的 bge-m3 仍可完成单模型 benchmark(降级方案记录于 decision doc)。
|
|
232
|
+
- 系统 RAM 31GB 但空闲仅 ~10GB(其他应用占用);embedding 峰值内存按模型
|
|
233
|
+
顺序逐个加载,一个时刻只载一个模型。
|
|
234
|
+
- transformers 5.15.1 是较新主版本:Qwen3/e5 加载路径需实测(已预留
|
|
235
|
+
pytorch_model.bin/safetensors 双通道)。
|
|
236
|
+
- 3080 宿主正在运行:绝不触碰;所有实验只写 python/bench、artifacts/、
|
|
237
|
+
docs/、tests/。
|
|
238
|
+
|
|
239
|
+
## blockedItems
|
|
240
|
+
|
|
241
|
+
- 无(下载进行中不算 blocked)。
|
|
242
|
+
|
|
243
|
+
## nextExactAction
|
|
244
|
+
|
|
245
|
+
1. M7-3:写 python/worker_semantic_pre_v1.py(纯协议复用+embedding provider
|
|
246
|
+
接口,模型按 manifest 加载)+ smoke-test-m73-pre.mjs(protocol 兼容+
|
|
247
|
+
stale/rebuild+scope 门+候选 provenance 复制)。
|
|
248
|
+
2. M7-3 对照 benchmark(独立脚本,不进生产路径):lexical 复刻/bm25s/
|
|
249
|
+
dense/weighted/RRF 消融→artifacts/m7-hybrid-pre/;冻结融合 policy。
|
|
250
|
+
3. 之后按任务集顺序:Clustering Shadow(§七)→M7-4 rerank→M7-5 graph 门
|
|
251
|
+
→M7-6 双阈值激活→M7-7 judgement shadow→M7-8 人工门暂停。
|
|
252
|
+
4. 每阶段:专项测试+全量回归+五文档回写+state.json 原子更新。
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# M7-2 Benchmark Plan(冻结版)
|
|
2
|
+
|
|
3
|
+
> 冻结:2026-08-24(自主模式接管时补写;模型 pinned/下载发生在本文件落笔前,
|
|
4
|
+
> 方法与已执行步骤一致,顺序偏差已披露于 AUTONOMOUS-STATE exactDecisions)
|
|
5
|
+
> 上位契约:docs/PYTHON-SIDECAR-CONTRACT.md §11.1/§14、§4 外部语料规则
|
|
6
|
+
> 产物:docs/M7-EMBEDDING-BENCHMARK.md、docs/M7-ALGORITHM-DECISION.md、
|
|
7
|
+
> artifacts/m7-benchmark-pre/results.{json,csv}、CI fixture vectors(不联网)
|
|
8
|
+
|
|
9
|
+
## 1. 研究问题
|
|
10
|
+
|
|
11
|
+
RQ1 模型:BAAI/bge-m3、Qwen/Qwen3-Embedding-0.6B、intfloat/multilingual-e5-large
|
|
12
|
+
在中文→英文、英文→中文、中英混写、代码/路径/错误码、同主题 hard negative、
|
|
13
|
+
correction/supersede、跨 workspace 禁止命中七类查询上的质量/延迟/内存差异,
|
|
14
|
+
谁应成为默认 embedding provider?
|
|
15
|
+
|
|
16
|
+
RQ2 chunk 策略:各模型自带 tokenizer 的 id 空间内,fixed-256/512/1024 硬窗口、
|
|
17
|
+
para-512 段落对齐、para-512-ov64(64 token overlap)五种策略对长文 deep-answer
|
|
18
|
+
检索与索引体积的影响?默认 chunk policy 冻结为什么?
|
|
19
|
+
|
|
20
|
+
RQ3 资源:CPU(生产 sidecar 真实形态)下 p50/p95 查询延迟、corpus 编码吞吐、
|
|
21
|
+
模型加载时间、峰值内存、索引体积是否满足 5s deadline×10 余量预算?
|
|
22
|
+
|
|
23
|
+
## 2. 语料(两层)
|
|
24
|
+
|
|
25
|
+
L1 合成可控层(python/bench/m7b_corpus.py):152 records / 88 queries,七类
|
|
26
|
+
覆盖 + 60 distractors + 多 chunk 长文长尾(256-token 下 8 条多 chunk)。所有
|
|
27
|
+
gold/hard-negative/supersede 关系显式标注,可解释每一分差异。
|
|
28
|
+
|
|
29
|
+
L2 真实语料层(artifacts/m7-corpus-pre/,契约 §4 规则):外部记忆/会话 →
|
|
30
|
+
100-300 高质量 episode,heading-block 切分、session+时间合并、脱敏(token/
|
|
31
|
+
secret/手机号/凭据/绝对路径)、hashed sourceRef/sessionRef、按 sessionId 分
|
|
32
|
+
train/dev/test。只读原文件,不导入不回写。L2 用于验证 L1 结论不过拟合合成
|
|
33
|
+
分布;人工待审查清单 >=30 条。
|
|
34
|
+
|
|
35
|
+
## 3. 方法
|
|
36
|
+
|
|
37
|
+
- 每模型 pinned revision 下载前核 license;逐文件 sha256 入
|
|
38
|
+
model-manifest.json;缓存于未跟踪目录 python/bench/(不进 git)。
|
|
39
|
+
- Dense 输入 = 模型自带 tokenizer(add_special_tokens 按模型约定);
|
|
40
|
+
禁止 jieba/JS lexical 预切。chunker(段落/窗口)与 dense tokenizer 分层,
|
|
41
|
+
不混用。
|
|
42
|
+
- 指令遵循模型卡:bge-m3 无前缀;qwen3 查询 Instruct/Query 模板;
|
|
43
|
+
e5 query:/passage: 前缀。pooling=CLS/last-token/mean,全部 L2 归一。
|
|
44
|
+
- 检索:NumPy float32 + L2 normalize + 精确点积。无 ANN/FAISS/HNSW/图。
|
|
45
|
+
- tie-break:score 降序 → memoryId 字典序 → chunkOrdinal(与契约 §11.2 一致)。
|
|
46
|
+
- 每次查询先按 workspaceRef scope 过滤再排序(跨 workspace 泄漏=0 是硬断言);
|
|
47
|
+
另跑无 scope 诊断组,量化"为什么 scope 门必须在宿主侧"。
|
|
48
|
+
|
|
49
|
+
## 4. 指标
|
|
50
|
+
|
|
51
|
+
Recall@1/5/10、MRR、nDCG@10(supersede 高于 old 计高相关)、跨语言 Recall@5
|
|
52
|
+
(zh→en + en→zh 子集)、code Recall@5、hard-negative error(neg 严格高于
|
|
53
|
+
gold 的比例)、supersede correct(new 排在 old 前)、xws mirror 无 scope 干扰
|
|
54
|
+
率(诊断)+ scoped leak(必须 0)、p50/p95 查询延迟(单查询编码+全矩阵点积)、
|
|
55
|
+
corpus 编码吞吐、模型加载时间、峰值 RSS、向量索引体积(bytes 与 per-chunk)。
|
|
56
|
+
每个 (model × policy) 一个 configHash;结果含 runId 可复现。
|
|
57
|
+
|
|
58
|
+
## 5. 决策规则
|
|
59
|
+
|
|
60
|
+
- 质量(Recall@5/MRR/xlang/hardneg)权重最高;同分差内(<=2 点)资源优者胜。
|
|
61
|
+
- 延迟硬门:p95 查询(编码+检索)< 500ms(参考 CPU);corpus 重建 1000
|
|
62
|
+
records < 10 分钟。
|
|
63
|
+
- license 硬门:默认分发路径禁 CC-BY-NC/MIT 之外需复核的许可。
|
|
64
|
+
- 冻结产物:默认 provider、tokenizer 约定、chunk policy(含 policyVersion=
|
|
65
|
+
m7_chunk_pre_v1)、dimension/normalization/configHash 绑定规则 → 全部写入
|
|
66
|
+
docs/M7-ALGORITHM-DECISION.md,M7-3 按此实现,不允许代码里出现计划外模型。
|
|
67
|
+
|
|
68
|
+
## 6. CI
|
|
69
|
+
|
|
70
|
+
fixture vectors 从胜出 (model × policy) 导出(真实向量、float64 JSON);
|
|
71
|
+
smoke-test-m72-pre.mjs 在纯 Node 重算 exact cosine 排序断言一致 + 维度/
|
|
72
|
+
归一化/scope 门/identity 契约断言;不联网、不下载、不调 Python。
|
|
73
|
+
|
|
74
|
+
## 7. 不做(本阶段)
|
|
75
|
+
|
|
76
|
+
不接生产 activation;不改 M7-0/M7-1 协议与 index_sync 语义;不做 ANN/图/
|
|
77
|
+
聚类/reranker(M7-3+ 阶段按各自 benchmark 门推进);不 commit/push/tag/
|
|
78
|
+
publish;不触碰 3080 宿主。
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# M7 闭环接线:唤起决策 → 系统默认提示词投递(2026-08-26)
|
|
2
|
+
|
|
3
|
+
> 结论先行:**M4/M5/M6 早已把投递侧接口全部预留并 live 验证过,本轮唯一缺的一环是
|
|
4
|
+
> Python fv2 决策不发帧**。已补上(`activationEmitMode` 门控的发射桥),闭环现在
|
|
5
|
+
> 只差一次用户重启 + 把开关拨到 canary 档即可端到端运行。
|
|
6
|
+
> **时机裁定:现在就接,不等分层记忆**(理由见 §5)。
|
|
7
|
+
>
|
|
8
|
+
> **同日追加(C2 接线完成)**:`semanticEngineMode` 已有真实消费方——
|
|
9
|
+
> `lib/semantic-js-pre.js`(js_semantic_engine_pre_v1):e5-small q8 懒加载 +
|
|
10
|
+
> miv 键索引缓存 + D6 融合进 envelope.refs(context-host 异步链内);资产下载器
|
|
11
|
+
> (双源 cn=hf-mirror / intl=huggingface,auto 国内优先,流式进度+SHA256 校验+
|
|
12
|
+
> 原子落位);设置页显示「当前生效检索」档位与真实进度条。详见 §7。
|
|
13
|
+
|
|
14
|
+
## 7. C2 内置语义接线(同日追加,2026-08-26 用户指令:JS 原生模式打通后再谈测试)
|
|
15
|
+
|
|
16
|
+
| 件 | 位置 | 说明 |
|
|
17
|
+
| --- | --- | --- |
|
|
18
|
+
| 引擎宿主 | `lib/semantic-js-pre.js` createJsSemanticEnginePre | peer @huggingface/transformers 多候选解析(发行包邻接 → 开发树 js-semantic-trial);miv 键索引缓存(trial 版每次全库重嵌已修复);rank 失败→null 回退词法,lastRankError 入 status |
|
|
19
|
+
| D6 融合 | 同文件 fuseD6Pre | minmax×0.7/0.3,平局 memoryId 升序;候选池=词法 kept ∪ 稠密 top-K(词法零分但语义强命中者可入选) |
|
|
20
|
+
| refs 接线点 | `lib/context-host-pre.js` onSegmentAccepted | C2 排名挂进 readyPromise 同一条延迟链(envelope 构建确定性纯函数,后移安全);钩子缺失/失败=行为与旧版逐字节一致 |
|
|
21
|
+
| 档位解析 | index.js engine.resolveSemanticTier | mode='lexical'→C1 强制;auto/js/python 在资产就绪时启用 C2 臂(python 模式下 C2 只改善 envelope.refs/candidateHit,sink 检索仍归 sidecar) |
|
|
22
|
+
| 下载器 | 同文件 createSemanticDownloaderPre + POST API['semantic-download'] {action:start|cancel,mirror} | 五文件清单 SHA256 冻结(onnx 118,308,185B 等);单飞行;取消;错误含 sha256-mismatch/http-<code>;落位 lib/models(发行包布局) |
|
|
23
|
+
| UI | client.js 设置页 | 「当前生效检索:C1/C2」状态行;引导卡=镜像三选(auto/cn/intl)+开始/取消/重试+真实进度条(1.5s 轮询 semantic-status.download)+体积/校验说明 |
|
|
24
|
+
|
|
25
|
+
验证:smoke-test-m81-c2-wiring-pre.mjs **21/21**(融合纯函数/注入 embedder 的排名与
|
|
26
|
+
miv 缓存/embedder 失败回退/下载器双源回退+SHA256 失败+单飞行+取消);真机 e5 端到端:
|
|
27
|
+
琥珀查询→琥珀文档 0.929、面条查询→面条记录 0.904、缓存后单查询 4ms、3 文档首建 1.7s
|
|
28
|
+
(全库 ~300 条约 5.5s,每 miv 一次)。
|
|
29
|
+
|
|
30
|
+
## 1. 全链路现状(哪段早就通、哪段是新接的)
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
【观测面】assistant/chunk reasoning-delta / 用户消息 / 工具事件 ✅ 已通(round-2)
|
|
34
|
+
→ M2 Segment(kind 含 'reasoning', origin 权重 0.5)
|
|
35
|
+
【组装面】M5 context-host: envelope(trigger+window+memoryRefs+evidence) ✅ 已通(sent=35)
|
|
36
|
+
→ python sink (context-sink-python-pre, 共享 SidecarClient)
|
|
37
|
+
【判定面】worker fv2 两车道(hardGates→lane→echo veto→margin→completeness)✅ 已通(shadow 行 119+)
|
|
38
|
+
→ activation-shadow-v2.jsonl (决策照记,含 emit) ✅ 保持
|
|
39
|
+
→ 🆕 [本轮] emit bridge: decision=emit ∧ lane=explicit
|
|
40
|
+
∧ activationEmitMode≠shadow → activation_request 帧 ← 新接的唯一一环
|
|
41
|
+
【投递面】SidecarClient.handleLine(activation_request 去重) ✅ 预留已久(M7-1)
|
|
42
|
+
→ offerExternalActivation(assoc∧inbox∧source=python 三门+JS 硬校验) ✅ 预留已久(M6-3)
|
|
43
|
+
→ 收件箱 pending → 自然 pre-step claim(cooldown/TTL/cursor/index 四门)✅ live verified
|
|
44
|
+
→ Reference Tail 渲染进下一请求 messages('dsh:m6-reference-tail-pre')
|
|
45
|
+
→ markDelivered → M5 seen evidence ✅ live verified
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
关键事实更正:此前会话记录「JS onActivation→inbox 最后一跳未接」**不准确**——
|
|
49
|
+
`context-host-pre.js getPythonSink()` 早已挂 `onActivation → offerExternalActivation`,
|
|
50
|
+
且该方法真实存在(activation-host-pre.js:177)。真正缺的只有 Python 发射。
|
|
51
|
+
|
|
52
|
+
## 2. 本轮改动清单
|
|
53
|
+
|
|
54
|
+
| 文件 | 改动 |
|
|
55
|
+
| --- | --- |
|
|
56
|
+
| `python/worker_semantic_pre_v1.py` | ①init 读 `activationEmitMode`(∈shadow/canary-explicit/active,非法回退 shadow);②`_fv2_shadow_decide` 尾部 emit bridge:decision='emit' 且(canary-explicit→lane='explicit',或 active)时经 `_build_fv2_activation` 发帧;③新方法 `_build_fv2_activation`:候选/身份块复用 v1 构造器(provenance 同契约),判定块覆写为 fv2(policyVersion=activation_policy_pre_v2,score=intentProb,threshold=tauHi,reason='fv2 lane=… '+reasonCodes),level 固定 'excerpt'(最小内容级);④shadow 行恒写先于发射(观测连续性) |
|
|
57
|
+
| `lib/index.js` | semantic-status 增加 `activationEmitMode` 读数(读 embedding-config.json,与 worker 同源) |
|
|
58
|
+
| `lib/client.js` | 设置页阈值行追加只读「发射模式: xxx」;两个观测开关默认 true + 双语文案(2026-08-26 裁定) |
|
|
59
|
+
| `smoke-test-m710-fv2-emit-pre.mjs` | 新增 13 断言:T0 默认零帧泄漏(shadow 行照记 emit 的双保险断言)/T1 canary-explicit 帧数==explicit emit 行数/echo 不发/字段契约全验 |
|
|
60
|
+
|
|
61
|
+
设计原则:**阈值权威不动**——activation_policy_pre_v2.json(append-only)原封未改,
|
|
62
|
+
configHash 不变;`activationEmitMode` 是 JS/用户运营面开关(同 embedding-config.json
|
|
63
|
+
现有 search/activationPolicy 键的传递通道),Python 缺失即 shadow(fail closed)。
|
|
64
|
+
节流不重复造轮子:M6 收件箱已有硬校验+身份门+重复门+抑制名单+cooldown(2 步)+TTL+
|
|
65
|
+
latest-wins 七层,worker 侧不再限速。
|
|
66
|
+
|
|
67
|
+
## 3. 开关与操作
|
|
68
|
+
|
|
69
|
+
配置文件 `<DSH_HOME>/memory/semantic-pre/embedding-config.json`:
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{ "activationEmitMode": "canary-explicit" }
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
- `'shadow'`(缺省):只记 shadow 行,零注入。当前状态。
|
|
76
|
+
- `'canary-explicit'`:仅 explicit 车道 emit 发帧。**canary 阶段用这档**。
|
|
77
|
+
- `'active'`:预留(fv2 round-1 proactive 车道本就到 prefetch 为止,此档暂无增量行为;
|
|
78
|
+
待 proactive emit 规则获批后启用)。
|
|
79
|
+
- 设置页「自动记忆引擎」分组阈值行可只读核对当前档位;semantic-status API 同样回报。
|
|
80
|
+
|
|
81
|
+
## 4. Token 影响面(用户要求:不计算上下文、只做增量)
|
|
82
|
+
|
|
83
|
+
Reference Tail 是**纯尾部增量**:走 systemPrompt.context 动态面(user-role 快照追加于
|
|
84
|
+
历史尾部),不改写既有前缀、不进 systemPrompt.section(字节级稳定由 F7 断言锁定)、
|
|
85
|
+
单 packet ≤4096B(maxPacketBytes)、单条引用 ≤600B、excerpt ≤480B、TTL 3 步自灭、
|
|
86
|
+
投递后强制 2 步冷却。前缀缓存安全:注入点在官方 pre-step/context 边界,已发出请求
|
|
87
|
+
永不改写;delivered 以「实际渲染进 messages」为准(渲染即投递),seen 证据闭环可审计。
|
|
88
|
+
|
|
89
|
+
## 5. 时机裁定:现在接入,不等分层记忆(working/procedural/lexical…)
|
|
90
|
+
|
|
91
|
+
- **投递侧与供给侧解耦**。分层记忆(M8 governance/M9 procedural/人脑式 working·
|
|
92
|
+
procedure·lexical 分层+晋升渠道)改变的是「有什么记忆可被唤醒」;本闭环是「唤醒了
|
|
93
|
+
怎么送达」。M6 契约(level 六级/checklist/excerpt/预算)对记忆来源无假设,后续层级
|
|
94
|
+
以新 memoryId+provenance 进同一 corpus 即自动获得投递能力,无需再动这条链。
|
|
95
|
+
- **算法侧验收已过**:held-out actPrecision 0.917/predictedEmit 12/S-leak 0,冻结
|
|
96
|
+
策略不再调;受控 shadow round-2 全链路实测通过。继续等待只会让验证过的决策持续
|
|
97
|
+
停留在日志里。
|
|
98
|
+
- **风险已被结构性约束**:canary-explicit 只放行显式车道(用户明确要回忆的场景);
|
|
99
|
+
proactive 在 round-1 结构上不可发射;任一异常 → 关掉 JSON 里那一个键即回到零注入。
|
|
100
|
+
- 因此顺序是:**本轮重启加载代码 → 受控流量下把开关拨 canary-explicit 观察
|
|
101
|
+
delivered/seen 与误报率 → 满意后保持,不满意一键回 shadow**。M8/M9 接入时复用
|
|
102
|
+
同一链路,届时只需扩供给侧,不需要「再接一次」。
|
|
103
|
+
|
|
104
|
+
## 6. 验收证据
|
|
105
|
+
|
|
106
|
+
- smoke-test-m710-fv2-emit-pre.mjs **13/13 PASS**(hash provider 确定性语料):
|
|
107
|
+
T0 无帧泄漏+shadow 行照记 emit;T1 帧数==explicit emit 数、kind/activationId/
|
|
108
|
+
threshold.policyVersion/level=excerpt/ttlSteps/candidates provenance/reason/
|
|
109
|
+
session identity 全部符合 ActivationRequestPre+M6 validator 期望。
|
|
110
|
+
- py_compile + node --check + 全量串行回归见当日会话记录。
|