@a9i5k4/dsh-auto-memory 2.2.2 → 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/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 +5 -0
- package/package.json +2 -1
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
# M6 JS Activation Inbox / Reference Tail 指导性契约
|
|
2
|
+
|
|
3
|
+
> 状态:M6-0 指导契约冻结;尚未实现 M6 运行时代码
|
|
4
|
+
>
|
|
5
|
+
> 前置:M5 Context/Evidence Bridge tested/live
|
|
6
|
+
>
|
|
7
|
+
> 后续:M7 Python Semantic Engine 实现真实 ContextSink 与 activation_request
|
|
8
|
+
|
|
9
|
+
## 1. 定位
|
|
10
|
+
|
|
11
|
+
M6 是 JS 工程的第二阶段。它先用 deterministic fake activation 实现完整投递轨道,使未来 Python 只需发送 activation_request,不需要理解或修改 DSH prompt 生命周期。
|
|
12
|
+
|
|
13
|
+
~~~text
|
|
14
|
+
Fake/Python ActivationRequestPre
|
|
15
|
+
-> JS hard validator
|
|
16
|
+
-> per-runtime Activation Inbox
|
|
17
|
+
-> ReferenceTailPacketPre (TTL + provenance)
|
|
18
|
+
-> agent/pre-step / user-message-pre-step packet surface
|
|
19
|
+
-> next model request tail
|
|
20
|
+
-> delivery acknowledgement -> M5 seen evidence
|
|
21
|
+
~~~
|
|
22
|
+
|
|
23
|
+
## 2. 不交付
|
|
24
|
+
|
|
25
|
+
- 不实现 embedding、向量/矩阵、reranker 或图算法。
|
|
26
|
+
- 不让 Python 直接写 systemPrompt、Inbox、Session 或 request。
|
|
27
|
+
- 不修改已发出的请求。
|
|
28
|
+
- 不把 reference tail 写成 system/developer 高优先级指令。
|
|
29
|
+
- 不在 provider 无安全 packet surface 时强制注入。
|
|
30
|
+
|
|
31
|
+
## 3. ActivationRequestPre
|
|
32
|
+
|
|
33
|
+
M6 输入对象先由 fake fixtures 生成;M7 后由 Python 发出:
|
|
34
|
+
|
|
35
|
+
~~~ts
|
|
36
|
+
interface ActivationRequestPre {
|
|
37
|
+
schemaVersion: 1
|
|
38
|
+
namespace: 'dsh-auto-memory-pre'
|
|
39
|
+
kind: 'activation_request'
|
|
40
|
+
activationId: string
|
|
41
|
+
observationId: string
|
|
42
|
+
workerEpoch: string
|
|
43
|
+
|
|
44
|
+
sessionId: string
|
|
45
|
+
agentId: string
|
|
46
|
+
workspaceKey: string
|
|
47
|
+
scope: 'Session' | 'Workspace' | 'User'
|
|
48
|
+
contextVersion: number
|
|
49
|
+
memoryIndexVersion: string
|
|
50
|
+
|
|
51
|
+
threshold: {
|
|
52
|
+
policyVersion: string
|
|
53
|
+
score: number
|
|
54
|
+
threshold: number
|
|
55
|
+
reason: string
|
|
56
|
+
}
|
|
57
|
+
level: 'index' | 'hint' | 'excerpt' | 'checklist' | 'resource' | 'full'
|
|
58
|
+
candidates: ActivationCandidatePre[]
|
|
59
|
+
ttlSteps: number
|
|
60
|
+
createdAt: number
|
|
61
|
+
expiresAt: number
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
interface ActivationCandidatePre {
|
|
65
|
+
candidateId: string
|
|
66
|
+
memoryId: string
|
|
67
|
+
anchorId: string
|
|
68
|
+
scope: 'Workspace' | 'User'
|
|
69
|
+
sourceRef: string
|
|
70
|
+
sourceEpoch: string
|
|
71
|
+
sourceVersion: number
|
|
72
|
+
fileDigest: string
|
|
73
|
+
recordDigest: string
|
|
74
|
+
score: number
|
|
75
|
+
excerpt?: string
|
|
76
|
+
checklist?: string[]
|
|
77
|
+
}
|
|
78
|
+
~~~
|
|
79
|
+
|
|
80
|
+
## 4. JS hard validation
|
|
81
|
+
|
|
82
|
+
JS 不重新计算 Python 的语义 score,但必须拒绝:
|
|
83
|
+
|
|
84
|
+
- 未知/重复 activationId 或 observationId。
|
|
85
|
+
- workerEpoch、sessionId、agentId、workspaceKey 或 scope 不匹配。
|
|
86
|
+
- contextVersion、memoryIndexVersion、source epoch/version/digest 过期。
|
|
87
|
+
- item/UTF-8 byte/TTL/level 超预算。
|
|
88
|
+
- revoked、conflict、cross-workspace 或高风险未确认内容。
|
|
89
|
+
- Python 已超时、断路或请求被取消。
|
|
90
|
+
|
|
91
|
+
硬拒绝不是语义投票,而是身份、权限、时序和安全门。
|
|
92
|
+
|
|
93
|
+
## 5. ReferenceTailPacketPre
|
|
94
|
+
|
|
95
|
+
~~~ts
|
|
96
|
+
interface ReferenceTailPacketPre {
|
|
97
|
+
packetSchemaVersion: 1
|
|
98
|
+
namespace: 'dsh-auto-memory-pre'
|
|
99
|
+
packetId: string
|
|
100
|
+
activationId: string
|
|
101
|
+
sessionId: string
|
|
102
|
+
contextVersion: number
|
|
103
|
+
memoryIndexVersion: string
|
|
104
|
+
activationLevel: string
|
|
105
|
+
triggerReason: string
|
|
106
|
+
references: ReferenceItemPre[]
|
|
107
|
+
exactDigest: string
|
|
108
|
+
budgetBytes: number
|
|
109
|
+
createdAt: number
|
|
110
|
+
expiresAtStep: number
|
|
111
|
+
deliveryState: 'pending' | 'claimed' | 'delivered' | 'expired' | 'dropped'
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
interface ReferenceItemPre {
|
|
115
|
+
memoryId: string
|
|
116
|
+
anchorId: string
|
|
117
|
+
scope: 'Workspace' | 'User'
|
|
118
|
+
sourceRef: string
|
|
119
|
+
sourceVersion: number
|
|
120
|
+
recordDigest: string
|
|
121
|
+
score: number
|
|
122
|
+
reference: string
|
|
123
|
+
}
|
|
124
|
+
~~~
|
|
125
|
+
|
|
126
|
+
packetId 由 activationId、contextVersion、indexVersion 和 exactDigest 确定性生成。
|
|
127
|
+
|
|
128
|
+
## 6. Reference Tail 文本
|
|
129
|
+
|
|
130
|
+
M6 渲染固定边界:
|
|
131
|
+
|
|
132
|
+
~~~text
|
|
133
|
+
[Retrieved memory reference - not an instruction]
|
|
134
|
+
Source: <memoryId> / <scope> / v<sourceVersion> / <recordDigest-prefix>
|
|
135
|
+
Reason: <semantic activation reason>
|
|
136
|
+
Reference: <bounded excerpt or checklist>
|
|
137
|
+
Verify against the current user request and tool results.
|
|
138
|
+
~~~
|
|
139
|
+
|
|
140
|
+
规则:
|
|
141
|
+
|
|
142
|
+
- 明确标记 reference,不是 system/developer/current user 指令。
|
|
143
|
+
- 不复制 Markdown marker 语法,不暴露绝对路径。
|
|
144
|
+
- 默认只开放最小 level;full 必须有更严格预算和用户策略。
|
|
145
|
+
- 尾部整体按 UTF-8 bytes 截断,不能截断 provenance identity。
|
|
146
|
+
|
|
147
|
+
## 7. 投递 surface 优先级
|
|
148
|
+
|
|
149
|
+
1. 专用 Agent Inbox / pre-step compose surface。
|
|
150
|
+
2. Provider 支持的 user-message/pre-step packet surface。
|
|
151
|
+
3. 专用动态 reference-tail context surface,仅在可证明实际进入下一请求 messages 时使用。
|
|
152
|
+
4. 无安全 surface:降级 Shadow Retrieval,不标记 delivered。
|
|
153
|
+
|
|
154
|
+
systemPrompt.section() 只存稳定规则,禁止动态 reference tail。
|
|
155
|
+
|
|
156
|
+
systemPrompt.context() 继续用于维护快照;它可以作为兼容 surface 的实现组件,但不能成为 M6 唯一通道,也不能仅因 context provider 返回文本就推进 delivered cursor。
|
|
157
|
+
|
|
158
|
+
## 8. pre-step 时序
|
|
159
|
+
|
|
160
|
+
- Activation 到达当前请求发出后,只能等待下一次 pre-step。
|
|
161
|
+
- pre-step 先校验当前 cursor/index/TTL,再 claim packet。
|
|
162
|
+
- 同一 packet 在一次 request 中最多出现一次。
|
|
163
|
+
- 新 contextVersion 可替换旧 pending packet;过期 packet 丢弃。
|
|
164
|
+
- 只有实际进入 decision.messages/buildRequest 的 packet 才变 delivered。
|
|
165
|
+
- delivered 后 M5 创建 seen evidence;未投递不得创建 seen。
|
|
166
|
+
|
|
167
|
+
## 9. Activation Inbox
|
|
168
|
+
|
|
169
|
+
每个 SessionRuntime 独立:
|
|
170
|
+
|
|
171
|
+
~~~ts
|
|
172
|
+
interface ActivationInboxPre {
|
|
173
|
+
pending?: ReferenceTailPacketPre
|
|
174
|
+
claimedPacketId?: string
|
|
175
|
+
deliveredPacketIds: BoundedSet<string>
|
|
176
|
+
cooldownUntilStep: number
|
|
177
|
+
lastActivationAt: number
|
|
178
|
+
}
|
|
179
|
+
~~~
|
|
180
|
+
|
|
181
|
+
禁止全局 pending packet、_lastAgent fallback 或跨 workspace 复用。
|
|
182
|
+
|
|
183
|
+
## 10. Safety 与风险
|
|
184
|
+
|
|
185
|
+
- reference 内容仍可能包含过期事实或提示注入文本。
|
|
186
|
+
- 渲染前沿用 JS sensitive-content 与 instruction-like-content guard。
|
|
187
|
+
- 高风险 Procedure 只能输出“建议检查/请求确认”,不得自动执行工具。
|
|
188
|
+
- Python 的 threshold 不能替代用户授权。
|
|
189
|
+
- correction/revoked/conflict evidence 优先抑制。
|
|
190
|
+
|
|
191
|
+
## 11. Provider capability
|
|
192
|
+
|
|
193
|
+
~~~ts
|
|
194
|
+
interface PacketCapabilityPre {
|
|
195
|
+
packetPatch: 'pre-step' | 'user-message' | 'dynamic-context' | 'none'
|
|
196
|
+
includeRuntimeContext: boolean
|
|
197
|
+
maxPacketBytes: number
|
|
198
|
+
supportsDeliveryAck: boolean
|
|
199
|
+
}
|
|
200
|
+
~~~
|
|
201
|
+
|
|
202
|
+
不得按模型名称硬编码;按 provider/model/version capability snapshot 决定。
|
|
203
|
+
|
|
204
|
+
## 12. 审计
|
|
205
|
+
|
|
206
|
+
每次 activation 必须记录:
|
|
207
|
+
|
|
208
|
+
- accepted/dropped reason。
|
|
209
|
+
- activationId/packetId/sessionRef/contextVersion/indexVersion。
|
|
210
|
+
- memoryId/sourceRef/version/digest/score。
|
|
211
|
+
- packet bytes/level/expiry/surface。
|
|
212
|
+
- claimed/delivered/expired 状态。
|
|
213
|
+
|
|
214
|
+
审计无原文、无绝对路径、无凭据。M6 audit 与 M4 Shadow audit 分开。
|
|
215
|
+
|
|
216
|
+
## 13. 实施分段
|
|
217
|
+
|
|
218
|
+
### M6-0 Contract Freeze
|
|
219
|
+
|
|
220
|
+
本文与 system-map 回写。
|
|
221
|
+
|
|
222
|
+
### M6-1 Pure Core
|
|
223
|
+
|
|
224
|
+
ActivationRequest validator、ReferenceTail renderer、packet identity、TTL/budget/dedupe;fake activation fixtures。
|
|
225
|
+
|
|
226
|
+
### M6-2 Per-runtime Inbox
|
|
227
|
+
|
|
228
|
+
pending/replace/expire/cooldown/dispose;仍不接真实 prompt surface。
|
|
229
|
+
|
|
230
|
+
### M6-3 Surface Adapter
|
|
231
|
+
|
|
232
|
+
接 agent/pre-step/user-message/dynamic-context capability;delivery ack;M5 seen evidence。
|
|
233
|
+
|
|
234
|
+
### M6-4 Live Verification
|
|
235
|
+
|
|
236
|
+
关闭基线、fake activation、下一请求 tail、provenance、零高优先级覆盖、无 surface 降级、关闭恢复。
|
|
237
|
+
|
|
238
|
+
## 14. 验收矩阵
|
|
239
|
+
|
|
240
|
+
1. 默认关闭 prompt/model-visible 零变化。
|
|
241
|
+
2. Activation schema/identity/version/scope 校验。
|
|
242
|
+
3. stale/duplicate/late/cancelled fail closed。
|
|
243
|
+
4. Reference Tail 固定边界与 UTF-8 budget。
|
|
244
|
+
5. packet TTL/replace/dedupe/cooldown。
|
|
245
|
+
6. A/B runtime 零串线。
|
|
246
|
+
7. pre-step 后才生效,当前请求不变。
|
|
247
|
+
8. delivered ack 才创建 M5 seen。
|
|
248
|
+
9. systemPrompt.section 永不承载动态 tail。
|
|
249
|
+
10. provider none 时 Shadow fallback。
|
|
250
|
+
11. high-risk confirmation gate。
|
|
251
|
+
12. audit privacy/no BOM/replay determinism。
|
|
252
|
+
|
|
253
|
+
## 15. M6 完成门
|
|
254
|
+
|
|
255
|
+
M6 live 后,JS 已能在没有 Python 的情况下用 fake activation 完整演示“上下文对象 → activation → 下一请求 Reference Tail → delivery evidence”。此时再由更强 Agent 冻结完整 M7 Python 契约并实现真实 sidecar。
|
|
256
|
+
|
|
257
|
+
## 16. 实施状态(M6-1 完成,2026-08-23)
|
|
258
|
+
|
|
259
|
+
状态:**M6-1 Pure Core 已完成并通过 D1-D9 测试**;纯模块 `lib/activation-inbox-pre.js`(零 IO、零依赖 node:crypto;无 spawn/net/http 引用静态锁定);未接 Host、不碰 prompt/request。
|
|
260
|
+
|
|
261
|
+
| 交付 | 说明(契约 §) |
|
|
262
|
+
| --- | --- |
|
|
263
|
+
| REFERENCE_TAIL_BUDGET_PRE_V1 | 冻结预算(maxCandidates 8/maxPacketBytes 4096/maxReferenceItemBytes 600/excerpt 480B/checklist ≤8×120/ttlStepsMax 10/reason 160/deliveredIds 256;activationPolicyVersion=activation_pre_v1) |
|
|
264
|
+
| ActivationRequestPre validator | §4 JS 硬校验矩阵:schema/namespace/kind/activationId、observationId 必须 obs_pre_*、workerEpoch 必填(Python 身份门)、scope 枚举、contextVersion≥0、memoryIndexVersion 必须 idx_pre_+32hex、threshold 形状+reason≤160、level 六级枚举、candidates 1..8 全过候选校验、ttlSteps 1..10、expiresAt≥createdAt——不重算语义分,仅身份/版本/时序/预算门 |
|
|
265
|
+
| ActivationCandidatePre validator | memoryId 严格/anchorId/scope Workspace\|User/sourceRef 相对引用白名单/sourceVersion/fileDigest/recordDigest hex64/score∈[0,1]/excerpt≤480B/checklist 形状 |
|
|
266
|
+
| dedupeCandidates | 跨 memoryId 同 recordDigest 折叠保最高分(平局 memoryId 字典序);score 降序输出 |
|
|
267
|
+
| Reference Tail 渲染器 | 固定边界逐字一致(TAIL_MARKER_LINE_PRE_V1/Source: id / scope / vN / digest 前 16 / Reason / Reference)+全局 Verify 收尾行恰好一次;sanitizeTailText guard v1(控制符剔除/注释语法剥离/多空格折叠/换行折叠 '; ');超预算整条丢弃最低分项(tail-budget 计账),provenance 三行身份永不截断;全放不下 fail closed packet-oversize |
|
|
268
|
+
| packet identity | packetId=pkt_pre_+first32(sha256(activationId+contextVersion+indexVersion+exactDigest));exactDigest=渲染文本逐字节 sha256;两者确定性且对输入敏感 |
|
|
269
|
+
| ReferenceTailPacketPre validator | 全 schema 校验(packetSchemaVersion/packetId 前缀/references 形状与单项 ≤600B/budgetBytes>0/expiresAtStep 整数/deliveryState 五态枚举) |
|
|
270
|
+
| TTL 纯函数 | isExpired(packet,nowStep)=nowStep≥expiresAtStep(§8 过期丢弃判定) |
|
|
271
|
+
| fake fixtures | makeFakeActivationRequestPre:同 seed 确定性 act_pre_*/cand_pre_* id,产物通过自身 validator——M7 前唯一激活来源 |
|
|
272
|
+
|
|
273
|
+
测试 smoke-test-m61-pre.mjs D1-D9 共 **53 断言 exit 0**(常量冻结/硬校验正反例 13 项/去重语义/固定边界逐字符/卫生剥离/byte 预算整条弃用/exactDigest+packetId 确定性与敏感性/TTL 边界/fixtures 确定性/replay 逐字段一致/静态卫生)。全量回归 **17 项**(M0-M5 十六项+M6-1)18.4s 全部 exit 0;syntax/diff-check/BOM/_dev 扫描全净。
|
|
274
|
+
|
|
275
|
+
**实现注记**:
|
|
276
|
+
1. excerpt 超 480B 在 REQUEST 层即被 validator 拒绝(schema 门);渲染层预算丢弃只处理合法尺寸候选——两层预算职责分离,request 层是硬拒绝,packet 层是整条弃用。
|
|
277
|
+
2. checklist 渲染为 '; ' 连接的单行列表(注入注释剥离后空格折叠),不做多行——保证固定边界块结构恒为四行/条。
|
|
278
|
+
3. 下一步 **M6-2 Per-runtime Inbox**:pending/replace/expire/cooldown/claim/dispose,per-runtime WeakMap state,禁止全局 pendingPacket 与 _lastAgent fallback。
|
|
279
|
+
|
|
280
|
+
## 17. 实施状态(M6-2 完成,2026-08-23)
|
|
281
|
+
|
|
282
|
+
状态:**M6-2 Per-runtime Inbox 已完成并通过 E1-E9 测试**;纯模块 `lib/activation-inbox-state-pre.js`(纯内存状态机;无 spawn/net/http;静态扫描确认无 `_lastAgent` fallback、无全局 pendingPacket——状态仅存在于实例内)。
|
|
283
|
+
|
|
284
|
+
| 交付 | 说明(契约 §) |
|
|
285
|
+
| --- | --- |
|
|
286
|
+
| createActivationInboxPre | 单 runtime 收件箱状态机:offerActivation(JS 硬校验→身份门 sessionId/agentId/workspaceKey 完全一致→重复门 activationId/observationId 已见即拒→抑制名单(correction/revoked 记忆整单拒)→cursor 门(落后 contextVersion=stale-context)→index 门(miv 不匹配=stale-index)→构建 packet)→latest-wins 替换语义(同 packetId 幂等拒绝重放;更高 cv 替换旧 pending 并记录 replacedContextVersion) |
|
|
287
|
+
| claim 四重门 | cooldown(nowStep<cooldownUntilStep 拒绝并报剩余步数)→TTL(isExpired→expired 丢弃)→currentContextVersion 不一致→stale-context 丢弃→memoryIndexVersion 不一致→stale-index 丢弃;全过则 pending→claimed |
|
|
288
|
+
| markDelivered | claimed→delivered 唯一路径;启动 REFERENCE_TAIL_COOLDOWN_STEPS_PRE_V1=2 步冷却;deliveredIds 有界集(256,先进先出);只有此时上游才允许建 seen(M6-3 接线点) |
|
|
289
|
+
| setCursor/suppressMemories | 游标前进使落后 pending 失效;抑制名单 API 供 M5 correction 聚合喂入 |
|
|
290
|
+
| ActivationInboxRegistry | 严格身份键 'session:<id>\|ws:<ws>' 分桶;无可靠身份 keyOf=null(禁止 default 兜底桶);disposeSession/disposeAll |
|
|
291
|
+
| dispose | 清空 pending/claimed/delivered/seen/抑制全部状态,disposed 后拒单 |
|
|
292
|
+
|
|
293
|
+
测试 smoke-test-m62-pre.mjs E1-E9 共 **36 断言 exit 0**:空箱/offer-claim-deliver 全链路(cooldown=now+2)/duplicate 双 id 门/身份门+registry 分桶隔离+keyOf 空身份拒绝/cursor+index 双 stale 门/latest-wins 替换与同 activationId 重放硬拒绝/TTL 过期/dispose/抑制门/A-B 零串线/静态卫生(含无 _lastAgent)。全量回归 **18 项**(M0-M6-1 十七项+M6-2)18.5s 全部 exit 0;syntax/diff-check/BOM/_dev 扫描全净。
|
|
294
|
+
|
|
295
|
+
**实现注记**:
|
|
296
|
+
1. 门序:身份→重复→抑制→时序(cursor/index)→构建。同 activationId 重放的幂等语义=§4 硬拒绝(duplicate-activation),而非重复接受;模块内 duplicate-packet 分支仅为不同 activationId 渲染出同一 packet 的理论路径保留。
|
|
297
|
+
2. cooldown 步数固化为策略常量(=2),不与 softInjection 旧参数 injectionCooldownSteps 混用;变更须升级 activationPolicyVersion。
|
|
298
|
+
3. 下一步 **M6-3 Surface Adapter**:capability 快照(pre-step/user-message/dynamic-context/none)、专用 systemPrompt.context 组件渲染 pending packet、claim→render→delivered 同步链、delivery ack 后调 M5 seen 创建、systemPrompt.section 保持零动态。
|
|
299
|
+
|
|
300
|
+
## 18. 实施状态(M6-3 完成,2026-08-23)
|
|
301
|
+
|
|
302
|
+
状态:**M6-3 Surface Adapter 已完成并通过 F1-F9 测试**;`lib/activation-host-pre.js` 接入 lib/index.js(八处最小接线);仍默认双门关闭;live 验证待 M6-4。
|
|
303
|
+
|
|
304
|
+
| 交付 | 说明(契约 §) |
|
|
305
|
+
| --- | --- |
|
|
306
|
+
| lib/activation-host-pre.js | createActivationHost({engine}):严格身份键 ActivationInboxRegistry 分桶;per-runtime step 计数;claimed packet 缓存于 runtime 态(无全局 pendingPacket) |
|
|
307
|
+
| capability 快照 | detectPacketCapabilityPre(ctxLike)(§11):按宿主 surface 形状判定——本 DSH 有 systemPrompt.context(user-role 快照追加历史尾部,可证明进入 messages)→'dynamic-context'+supportsDeliveryAck=true;无 context→'none'(降级 Shadow 不标 delivered);不按模型名硬编码;capabilityVersion=capability_pre_v1 |
|
|
308
|
+
| pre-step 时序 | §8:engine agent/pre-step 钩子内 bumpStep→setCursor(runtime cv+corpus miv)→claim 四重门(cooldown/TTL/cursor/index);claimed 缓存等渲染面消费 |
|
|
309
|
+
| 渲染即投递 | 专用 systemPrompt.context 组件 'dsh:m6-reference-tail-pre'(order=10001):重渲染 claimed packet 并校验 exactDigest 一致 → 返回尾注文本(=实际进入 messages)→ markDelivered + 异步创建 seen evidence;digest 不一致/未声明 → 空串零注入。section 组件保持字节级稳定,永不承载动态 tail(F7 实测) |
|
|
310
|
+
| delivery ack → seen | renderTailFor 成功后按 references 逐条经 contextHost.findProvenance(memoryId+recordDigest)补全 sourceEpoch/fileDigest → createAccessEvidencePre(kind='seen') → contextHost.appendEvidence 落盘 evidence-pre events(隐私投影同 M5);查不到 provenance 则跳过(fail closed) |
|
|
311
|
+
| 注入路由 | POST /api/dsh-auto-memory-pre/activation-inbox-pre {action:'inject'|'status'}:loopback-only;inject 为 fake 来源唯一入口('python' 拒绝),status 返回 debugView+memoryIndexVersion |
|
|
312
|
+
| index.js 八处接线 | import/initCapability/host 创建/refreshAll capturePaths/pre-step claim 钩子/debug activationInbox 字段/disposers/DEFAULT_CONFIG 新增 activationInboxEnabled=false、activationSource='fake' |
|
|
313
|
+
|
|
314
|
+
测试 smoke-test-m63-pre.mjs F1-F9 共 **23 断言 exit 0**(默认关闭/开关矩阵/capability 形状/注入接受+重放拒/pre-step claim/固定边界渲染含 provenance 身份/渲染即投递且二次为空/**delivery ack 后 seen 落盘 n=2**/冷却门 live/TTL 过期 live/section 字节稳定+任何组件零尾注/关闭恢复)。既有基线同步:路由 25→26(context-observer/m3b3/main)、prompt 组件 2→3(m53 C8)。全量回归 **19 项** 20.7s 全部 exit 0;syntax/diff-check/BOM/_dev 扫描全净。
|
|
315
|
+
|
|
316
|
+
**实现注记**:
|
|
317
|
+
1. 冷却语义收紧为「nowStep≤cooldownUntilStep 当步仍拒」(state-pre 同步修改,E2 断言不变)——投递后至少空 2 个完整步,消除边界歧义。
|
|
318
|
+
2. miv 来源=activation host 自有 CorpusRegistry(fingerprint 缓存),与 context host 各自独立但同源 sidecar 目录。
|
|
319
|
+
3. seen 创建在 contextBridge 关闭时依然可用(evidence store 与 bridge 解耦);provenance 缺失跳过并计 seenSkippedNoProv。
|
|
320
|
+
4. M6-4 已完成并 live verified;当前进入 M7 Python Semantic Engine 外部 Agent 交接。Python 必须走自然 pre-step claim,不改变 M6 validator、delivery 或 seen 语义。
|
|
321
|
+
|
|
322
|
+
## 19. 实施状态(M6-4 Live Verification 通过,2026-08-23 —— M6 整体完成)
|
|
323
|
+
|
|
324
|
+
状态:**M6-4 live 验证通过,M6 整体完成并已恢复默认关闭**(assoc=false/activationInboxEnabled=false;anchor=true 保持)。用户重启现有 3080 后实测:
|
|
325
|
+
|
|
326
|
+
| 步骤 | 结果 |
|
|
327
|
+
| --- | --- |
|
|
328
|
+
| 新构建加载 | debug 出现 activationInbox 字段;capability=capability_pre_v1/dynamic-context/supportsDeliveryAck=true ✓ |
|
|
329
|
+
| 关闭基线 | {enabled:false} 严格投影;evidence events 字节基线记录;真实记忆 SHA 基线记录 ✓ |
|
|
330
|
+
| 开启+预热 | assoc∧inbox 双开后,一次 pre-step 即完成 miv 懒加载(idx_pre_1de0…)与 inbox 注册 ✓ |
|
|
331
|
+
| fake 注入 | POST activation-inbox-pre → offer ok/pending,pkt_pre_a602f2aa…;同 activationId 重放拒(duplicate) ✓ |
|
|
332
|
+
| **注入即泵** | finishInject 立刻以请求自声明版本过四重门 claim,claimed 挂到目标 runtime 态(pump event 实证 runtimeKey=session:cc245cf1);**下一步自然 compose 时尾注字面渲染进本 agent 的 model-visible messages(本次对话直接可见两条引用块:mem_af41…/mem_6667… 各四行+Verify 收尾)** ✓ |
|
|
333
|
+
| delivery ack | rendered=1/delivered=1;markDelivered 启动冷却;同一 packet 二次渲染为空 ✓ |
|
|
334
|
+
| **seen 落盘** | seenCreated=2 → evidence-pre/events 增 2 条 kind=seen(ev_pre_168c…/ev_pre_522b…),provenance 由 findProvenance 从 corpus 补全,sesr_/wsr_ 隐私投影 ✓ |
|
|
335
|
+
| 隐私扫描 | 全部事件无裸 sessionId/workspaceKey/绝对路径/tail 文本泄漏 ✓ |
|
|
336
|
+
| prompt 零变化 | section 字节级稳定(F7 单元+live 组件输出核对);尾注只经专用 context 面 ✓ |
|
|
337
|
+
| 关闭恢复 | POST 恢复默认 → {enabled:false} 严格投影;events bytes 2491→2491 零新增写入 ✓ |
|
|
338
|
+
| 真实记忆完整性 | 三文件 anchor 链 conflicts=0/sidecar FRESH(SHA 漂移=窗口期自动沉淀合法写入,日志 23→24 条) ✓ |
|
|
339
|
+
|
|
340
|
+
**时序偏差说明(fake 来源限定)**:live 会话 cv 每步自增(assistant segment),跨步注入的 packet 必被 cursor 门判 stale——这是 §8 时序门的正确行为。fake 来源因此采用「**注入即泵**」:finishInject 在 offer 后立刻以请求自声明版本过四重门 claim,claimed 挂到目标 runtime 态,下一次自然 compose 渲染并 markDelivered(+seen);新增 rollbackClaim 兜底。**真实 Python 推送仍走 pre-step 自然 claim 路径(代码同路径保留)**;泵仅为确定性演示路径。
|
|
341
|
+
|
|
342
|
+
**M6 完成门对照(§15)**:JS 已能在没有 Python 的情况下用 fake activation 完整演示「上下文对象→activation→下一请求 Reference Tail→delivery evidence」✓。M7 完整契约、实施报告和 Agent handoff 已于 M5/M6 live 后冻结;Python 尚未启动。
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# M7 Activation 算法扩展参考:中文方向与跨中英文
|
|
2
|
+
|
|
3
|
+
> 定位:补充 `docs/M7-ACTIVATION-FEATURE-DESIGN.md` §5 公开算法建议中未覆盖的**中文方向 / 跨中英文**内容;由校准 Agent 整理并附本地实证。
|
|
4
|
+
> 数据基座:58 条 human gold(A22/P19/S17,`label-review-cal20260824-1954/`);全部实验按 pairId/session 分组交叉验证,脚本与结果同目录可复现(`intent_probe.py`、`extend_probe.py`、`intent-probe-results.json`、`extend-probe-results.json`)。
|
|
5
|
+
> 效力:参考性;落地形式仍以 `activation_features_pre_v2` policyVersion + 重标定门槛为准。
|
|
6
|
+
|
|
7
|
+
## 1. 主 Agent 原六项裁定速览(2026-08-24 评审)
|
|
8
|
+
|
|
9
|
+
| 方法 | 裁定 | 一句话依据 |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| CalibratedClassifierCV | **立即采纳(P0)** | 小样本下 sigmoid 校准显著改善阈值决策概率 |
|
|
12
|
+
| MAPIE conformal | 二期采纳 | 预测集合=天然 abstain/prefetch 机制 |
|
|
13
|
+
| NLI cross-encoder | 仅离线研究 | CPU 成对推理进不了 500ms 同步链 |
|
|
14
|
+
| MMR | 低优先可选 | 只做已召回集合内去冗余,不判断唤起必要性 |
|
|
15
|
+
| SetFit | 缓,作对照 | 卖点是少样本;我们有 58 条真 gold,n-gram+LR 基线先行 |
|
|
16
|
+
| Snorkel | 暂不采纳 | 弱标签是扩规模工具;当前瓶颈是策略可分性不是标注量 |
|
|
17
|
+
|
|
18
|
+
## 2. 本地实证摘要(详见结果文件)
|
|
19
|
+
|
|
20
|
+
| 实验 | 设置 | 结果 | 含义 |
|
|
21
|
+
| --- | --- | --- | --- |
|
|
22
|
+
| T2 recallIntent 二分类(A vs S) | char_wb 2-4gram TF-IDF + LR,分组 CV 5 折 | **AUC 0.901**;校准后 acc 0.744→**0.872**、Brier 0.227→**0.131** | 意图可从查询文本学习;校准带来决定性增益 |
|
|
23
|
+
| T1 三分类(A/P/S 纯文本) | 同上 | macroF1 仅 **0.494**;P 类 8/19 误判为 A | 必要性判断不能只靠查询文本——任务语境特征(P4/fusedMargin/lane)必需,两 lane 设计获得实证 |
|
|
24
|
+
| T3 containment 单信号 | bigram(query)∩bigram(top1)/\|query\| | echo 组中位 **0.273 < activate 组 0.462** | 词面覆盖率单独不判回声(activate 天然共享目标术语)——"BM25 覆盖硬封顶"被证伪 |
|
|
25
|
+
| X1 zh→en/mixed 零样本迁移 | 仅 zh gold 训练(32 条,AUC 0.886)→ 7 条 en/mixed gold 测试 | **recall@0.5 = 0.857**(meanP 0.528) | 字符 n-gram 有一定跨语鲁棒性但不完美;生产训练集必须中英混合 + 双语词表 |
|
|
26
|
+
| X2 组合回声规则 | containment≥θ 且 无疑问/回忆标记 | 最优 θ=0.3:precision **0.70** / recall 0.467 | 组合规则可用但召回有限——作为 echoRisk 的输入之一,非单独裁决 |
|
|
27
|
+
| X3 词表意图基线 | 中英疑问+回忆标记词表 | P=R=F1=**0.864** | 冷启动即接近学习型基线;FP 剖析见 §3.3 |
|
|
28
|
+
|
|
29
|
+
## 3. 新增:中文方向与跨中英文(本轮网络核验 + 实证)
|
|
30
|
+
|
|
31
|
+
### 3.1 多语言 NLI(离线研究轨,替代英文专用建议)
|
|
32
|
+
|
|
33
|
+
主 Agent 引用的 `cross-encoder/nli-roberta-base` 为**英文专用**(模型卡证实:roberta-base、~124M 参数/499MB safetensors、成对单次前向、logits 未校准、SNLI+MNLI 训练)。本项目语料中英混写,应改用多语言变体:
|
|
34
|
+
|
|
35
|
+
- **推荐**:`MoritzLaurer/mDeBERTa-v3-base-xnli-multilingual-nli-2mil7` —— mDeBERTa-v3-base(~0.3B),27 语微调**含中文**,XNLI 中文准确率 **0.803**(en 0.871),训练集含 ~10% 中英混合对;MIT 许可。
|
|
36
|
+
- 硬约束:mDeBERTa **不支持 FP16**(须 FP32 推理);作者仅提供 A100 吞吐(670-1900 texts/s),CPU 未基准——按参数量估算单对 CPU 推理仍在百 ms 级 ⇒ 维持"仅离线研究轨"裁定;GPU 立项后可重评上异步链。
|
|
37
|
+
- 用途:离线判定 query↔candidate 是 entailment(该唤起的知识关系)/neutral/contradiction(矛盾=stale 信号),与 supersede 边互补。
|
|
38
|
+
|
|
39
|
+
### 3.2 PAWS-X:回声陷阱的学术对应物
|
|
40
|
+
|
|
41
|
+
PAWS-X 是 PAWS 的跨语言扩展(含中文),专门构造**高词面重叠但语义不同**的对抗式复述对(每语种 49,401 训练/2,000 dev/2,000 test)。这与我们的 echo trap 结构同构——"词面像 ≠ 同一言语行为"。用途:①echo/intent 分类器的外部预训练或评测资源(中文子集可直接用);②防止分类器退化为词面匹配器的对抗验证集。
|
|
42
|
+
|
|
43
|
+
### 3.3 fastText LID 与中文混合查询
|
|
44
|
+
|
|
45
|
+
`lid.176.bin`(126MB)/`.ftz`(917KB)支持 176 语识别,可给混合查询打语言标签以路由词表/分类器。注意:官方页面未声称短码切换(code-switching)输入的性能,须用我们 `mixed` 类 gold 自测。零成本起步方案:CJK 字符占比启发式(≥1 个汉字即视为 zh 参与词表匹配)已在 X3 生效。
|
|
46
|
+
|
|
47
|
+
### 3.4 LCQMC(哈尔滨工业大学)
|
|
48
|
+
|
|
49
|
+
大规模中文问对语义匹配语料(C-MTEB 托管,100K-1M 档,aclanthology 2021.emnlp-main.357)。用途:为中文意图/相似度分类器提供领域增强预训练。域差警示:LCQMC 是问-问对,我们是查询-记忆对,只做中间预训练不做直接替换。
|
|
50
|
+
|
|
51
|
+
### 3.5 中文疑问/回忆标记词表(工程起点已内置)
|
|
52
|
+
|
|
53
|
+
`extend_probe.py` 内置 INTERROG(什么/如何/怎么/哪些/为什么/吗/呢/what/how…)与 RECALL_CTX(之前/上次/当时/找出来/调出来/previous/earlier…)双表。X3 实测 P=R=F1=0.864;假阳性剖析:cal-0015/0014 属"有回忆意图但被 correction/harm 硬门压制"(特征目标是意图而非最终动作,属预期行为),cf-104「在吗?」的孤立"吗"字误报提示词表需要**最小长度/搭配约束**(如"吗"须与动词短语共现)。
|
|
54
|
+
|
|
55
|
+
## 4. 综合采纳矩阵
|
|
56
|
+
|
|
57
|
+
| 方法 | 判定对象 | 落点 | 优先级 | 验收门槛 |
|
|
58
|
+
| --- | --- | --- | --- | --- |
|
|
59
|
+
| 字符 n-gram LR + CalibratedClassifierCV(sigmoid) | recallIntentProbability(唤起必要程度·意图侧) | Python `activation_features_pre_v2` | **P0** | 分组 CV AUC≥0.85 且校准后 acc≥0.85(当前实测已达:0.901/0.872) |
|
|
60
|
+
| 双语词表启发式 | 同上冷启动 + 兜底 | 同上 | **P0** | 与 LR 门集成;"吗/呢"加搭配约束 |
|
|
61
|
+
| containment×句式 组合回声规则 | echoRisk(唤起必要程度·反侧) | 同上 | **P0** | 作为 echoRisk 输入之一;echo-gold 全 suppress 且 activate-gold 误伤≤1 |
|
|
62
|
+
| fusedMargin + 候选唯一性 | 任务语境必要性 | 同上(Proactive lane 门) | P0 | gold 网格选择 δ,搜索范围 [0.03,0.05] |
|
|
63
|
+
| repetition/persistence(带衰减) | 重复痛点升级 | 同上 per-session state | P1 | 2 次失败/3 次提及起步实验;生活陈述不升级 |
|
|
64
|
+
| MAPIE conformal | 不确定→prefetch/abstain | Python policy | P1 | coverage-risk 曲线;中英分组覆盖分别报告 |
|
|
65
|
+
| 多语言 NLI(mDeBERTa-xnli 系) | echo/contradiction 离线特征 | bench 离线实验 | P2 | 与人工 echo 标注一致率报告;GPU 轨解锁后再议上链 |
|
|
66
|
+
| fastText LID / CJK 占比 | 混合查询语言路由 | JS gate 或 worker | P1(③a/③b 前置) | mixed 类 gold LID 正确率自测报告 |
|
|
67
|
+
| PAWS-X zh 子集 | echo 分类器对抗评测/预训练 | bench 离线 | P2 | 加入即报告 |
|
|
68
|
+
| LCQMC | 中文意图分类器中间预训练 | bench 离线 | P2 | 域差消融报告 |
|
|
69
|
+
| MMR | 候选去冗余 | worker 候选阶段 | P2 | 语料密度触发后再启 |
|
|
70
|
+
| SetFit / Snorkel / GPU-rerank | 对照 / 规模工具 / 延迟解 | offline/runtime | P2-P3 | 主 Agent 原裁定不变 |
|
|
71
|
+
|
|
72
|
+
## 5. 对接清单与纪律
|
|
73
|
+
|
|
74
|
+
1. 全部新特征进 `activation_features_pre_v2`;58 gold + 新增真实 shadow 流量重放;门槛不变:actPrecision ≥ 0.7、harmfulEmit=0、correction/wrong-scope/stale 泄漏=0、中英分别报告。
|
|
75
|
+
2. 分类器训练/评测一律按 pairId/session 分组(counterfactual-pairs 自带 split 字段:train92/dev10/test7),禁止同对照对跨 split。
|
|
76
|
+
3. 数据修复披露:batch1 gold 文件缺 `language` 字段,本轮探针已从源 `labels.jsonl` 回填;实现 Agent 建特征集时须携带语言字段。
|
|
77
|
+
4. GPU 轨(若立项):device 进入 identity block/configHash 并全量重建是硬前置。
|
|
78
|
+
5. 本文档为参考性扩展;设计权威仍是 `docs/M7-ACTIVATION-FEATURE-DESIGN.md`。
|
|
79
|
+
|
|
80
|
+
## 6. 路径拟合结果(fit_path.py → fit-path-results.json)
|
|
81
|
+
|
|
82
|
+
> **HISTORICAL/SUPERSEDED 提示**:本节 τ=0.65/0.70 与 δ_exp=0.03 为修订前实验扫描值,仅作研究记录;当前 effective 候选策略以 python/policies/activation_policy_pre_v2.json 为准(tauLane=tauHi=0.45、tauLo=0.35、deltaExp=0.03[简报冻结 0.02 在生产化 completeness 下 fail 一例,待追认]、deltaPro=0.05,echo veto 仅 proactive lane)。
|
|
83
|
+
|
|
84
|
+
**架构结论(回应"关联性与唤起是否分开")**:两者是不同的预测目标,最优路径为**同步计算、分层裁决**——关联性(检索层)决定"什么材料相关",唤起性(策略层)决定"现在是否打断"。两条 lane 先后顺序相反且都已被数据支持:explicit lane 意图先行、关联验证(意图分类 AUC 0.901);proactive lane 关联先行、语境批准(纯文本三分类仅 0.494 证明语境不可省)。
|
|
85
|
+
|
|
86
|
+
四条路径在 54 条可评估 gold 上的对比(emit 正确 = emit ∧ 目标命中 ∧ 无 forbidden):
|
|
87
|
+
|
|
88
|
+
| 路径 | precision | recall | sViolations | 说明 |
|
|
89
|
+
| --- | --- | --- | --- | --- |
|
|
90
|
+
| v1 当前默认(denseTop 单阈值) | 0 | 0 | 4 | 回声家族占据 emit |
|
|
91
|
+
| v2 规则级联(手写两 lane) | **1.000** | 0.500 | 0 | 可解释但规则枚举有限 |
|
|
92
|
+
| **v3a 学习型·可部署特征** | **0.833 @ τ=0.65** | **0.682** | 1 | 特征全部线上可得 |
|
|
93
|
+
| v3b 学习型 + oracle hit | 0.826 | **0.864** | 1 | 上限;与 v3a 差距≈18pt=在线验证债务 |
|
|
94
|
+
|
|
95
|
+
- τ 扫描显示完整 PR 面:τ=0.70 → precision 1.0 / recall 0.409;τ=0.50 → 0.68/0.773。**推荐工作点 τ=0.65**(precision-first 纪律下 recall 最优),τ=0.70 作为保守档。
|
|
96
|
+
- 可部署系数(LR):mark(疑问/回忆标记) +2.05 ≫ containment +1.58 > margin +0.26 > intentProb +0.32 > denseTop +0.06——**"是否在问"比"有多像"重要一个数量级**,与 echo trap 诊断互证。
|
|
97
|
+
- 残余错误归因:18 emits 中 17 正确;唯一 WRONG 是 cal-0066 双目标对比题被单条 emit——需要 P3 的候选完整性/唯一性门处理(多目标问句降级 prefetch),非意图误判。
|
|
98
|
+
- 债务清单:①v3a→v3b 的 18pt 召回差需在线自验证信号弥补;②sViolations=1 为 S 类 prefetch 级越界(无 harmful);③P4 任务信号未入模。
|
|
99
|
+
|
|
100
|
+
## 7. 冻结前剩余条件
|
|
101
|
+
|
|
102
|
+
1. 实现 Agent 将两 lane + 学习头移植进 worker(新 policyVersion),校验在线推理与离线 OOF 一致性。
|
|
103
|
+
2. 新真实 shadow 流量做 held-out 验证(本拟合的工作点在 58 gold 内选出,存在选择偏差)。
|
|
104
|
+
3. 达标后由用户批准 policy diff,再议 active canary。
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# M7-8 Shadow Semantic Calibration(Phase F 校准报告)
|
|
2
|
+
|
|
3
|
+
> 阶段:M7-8 Phase F · 运行日:2026-08-24 · runId:`calibration-cal20260824-1855`
|
|
4
|
+
> 结论先行:**`insufficient_gold_for_active` —— 维持 shadow,生产默认 tOn/tOff 不变。**
|
|
5
|
+
> 双重理由:①全部标签为 strong-agent 标注,isGold=0(无人工确认 gold);
|
|
6
|
+
> ②即使按 silver 标签评估,**契约网格内不存在可进 active 的阈值组合**——
|
|
7
|
+
> 分数分布正负类重叠,最高分样本恰为 suppress 类"生活记录回声"(0.6507,
|
|
8
|
+
> 高于全部 activate 正例)。当前默认 (0.62/0.52) 在 65 条可评估样本上的唯一
|
|
9
|
+
> emit 正是这条错误激活。建议先做特征层修正再重新校准(§8、§9)。
|
|
10
|
+
|
|
11
|
+
## 1. 输入与证据链
|
|
12
|
+
|
|
13
|
+
| 输入 | 路径 | 用途 |
|
|
14
|
+
| --- | --- | --- |
|
|
15
|
+
| 必读文档 ×14 | system-map / PYTHON-SIDECAR-CONTRACT(§19.8–19.10)/ ALGORITHM-DECISION(D1-D11)/ RESEARCH-PAPER / IMPLEMENTATION-REPORT / AUTONOMOUS-STATE / BENCHMARK-PLAN / EMBEDDING-BENCHMARK / INTERFACE-DIGEST / TASKSET-DISPATCH / worker_semantic_pre_v1.py / m7_embedding_pre_v1.py / smoke-test-m76-pre.mjs / smoke-test-m77-pre.mjs | 全部按序读完;方法与禁令的唯一依据 |
|
|
16
|
+
| Phase E/F live 快照 | `artifacts/m7-live-pre/live20260824-1530/`(run-state.json、debug-after-D3.json、activation/candidates-shadow-calibration.jsonl)+ `live20260824-1430/`(real-memory-baseline.json、debug-baseline/config-post-restart/debug-post-restart/run-state) | live 分布、Phase F 计数(suppress=38/prefetch=1/emit=0)、开关恢复态核验 |
|
|
17
|
+
| live 影子日志(运行副本) | `C:/Users/JH Z/.dsh/memory/semantic-pre/*.jsonl`(39+39+130 行,只读) | 与 1530 目录校准副本逐字节同源;derived-corpus.json(11 records,miv=idx_pre_d6b79bb4…)作 live 评测面 |
|
|
18
|
+
| 语料 | `artifacts/m7-corpus-pre/`(episodes 251 / multilingual-queries 40 / hard-negatives 10 对 / activation-scenarios 8 / review-queue 42 / split-manifest / privacy-report) | episodes 评测面 + 查询标注继承 |
|
|
19
|
+
| 外部记忆源(只读抽查) | `.workbuddy/MEMORY.md`、`.codebuddy/memery/*` 存在性+头部抽查;`.dsh/memory/MEMORY.md`(8086B)与 workspace MEMORY.md(49KB,76 headings)标题级抽查 | provenance 抽查;未修改任何原文件 |
|
|
20
|
+
|
|
21
|
+
任务书所列文件名与实际快照名的映射/缺失记录:
|
|
22
|
+
|
|
23
|
+
- `debug-before-disable.json`/`debug-after-disable.json` → 实际为 `debug-after-D3.json`(1530)与 `debug-baseline*.json`+`debug-post-restart.json`(1430);**config snapshots**=`config-post-restart.json`(1430);`real-memory-baseline.json` 在 1430。均已读取。
|
|
24
|
+
- `activation-shadow.jsonl`/`candidates-shadow.jsonl`(1530 内)→ 实际名为 `*-calibration.jsonl`,内容与 `~/.dsh/.../semantic-pre/` 下运行副本一致(行数相同),已交叉核对。
|
|
25
|
+
- **skipped**:①Phase F 39 条观测的原始 query 文本(candidates-shadow 仅含 queryChars,无文本;会话事件日志不在本任务授权路径内)→ 该批数据仅用于分布与阈值敏感性重放,不参与标签;②外部原始会话目录(`.workbuddy/projects`、`.claude/projects`、`.codex/sessions`)未做新一轮解析——按任务规则三.2 优先复用已生成的 `episodes.jsonl`,原始目录仅作 provenance 抽查;③`judgement-shadow.jsonl`(130 行)与本阶段无关,未使用。
|
|
26
|
+
|
|
27
|
+
## 2. 样本构成(共 73 条,`labels.jsonl`)
|
|
28
|
+
|
|
29
|
+
| 类别 | 条数 | surface | 来源性质 |
|
|
30
|
+
| --- | --- | --- | --- |
|
|
31
|
+
| activate 正例 | 31(live 6 + lq 继承 15 + 跨语言 5 + 代码锚点 4 + 相反结论双子补充 1) | live+episodes | **real**(用户自埋 fixture、真实工作 episode、M7-2 已有人工撰写查询的 gold/neg 映射) |
|
|
32
|
+
| prefetch 正例 | 16(live 2 + lq 宽泛型 4 + 强 agent 任务语境构造 10) | live+episodes | real episode 目标 + derived 查询 |
|
|
33
|
+
| suppress 正例 | 16(live 5 + 构造 11) | live+episodes | derived 查询(闲聊/低信息/泛化词/wrong-workspace/显式拒绝记忆) |
|
|
34
|
+
| harmful/stale 负例 | 10(evaluable 5 + scope-check 5) | live+episodes | derived(jieba 勘误复活、生活记录当记忆、未验证 procedure、Agent 指令当记忆、凭据/PII/路径 tail、跨 workspace 注入、会话偏好全局化) |
|
|
35
|
+
| 其中跨语言正例 | 10(en→zh 5、代码锚点 4、意译变体 1) | — | 独立统计见 §6 |
|
|
36
|
+
|
|
37
|
+
- **isGold=true 共 0 条**。全部 `labelSource=strong-agent`(继承的 lq gold/neg 由此前自主 Agent 依用户真实语料撰写,亦非用户逐条确认),confidence 0.6–0.95。
|
|
38
|
+
- live 面目标记录由 `LIVE_PATTERNS` 关键字从真实 derived-corpus 解析,唯一命中,全表见 `provenance-manifest.json.liveFixtureResolution`(如 amber→mem_27a7b9a9…、whale→mem_b914e1b05…、jieba 勘误→mem_31919729c…)。
|
|
39
|
+
- 8 条 scope-check 样本(claude/codex/workbuddy 来源目标):在 ws/dsh-core 三重过滤下不可达,只考核 scope 排除与泄漏诊断,不计入 precision/recall 分母。
|
|
40
|
+
|
|
41
|
+
## 3. 隐私与纪律
|
|
42
|
+
|
|
43
|
+
- 语料沿用 M7-2 隐私处理(privacy-report:secret 97/phone 2/abspath 85/email 0 脱敏,hashed sourceRef/sessionRef);本轮新增查询文本均为构造或引用既有查询,无新增敏感物化。
|
|
44
|
+
- 只读:`~/.dsh/memory/**`、外部画像文件;写操作仅限 `docs/M7-ACTIVATION-CALIBRATION.md`、`artifacts/m7-live-pre/calibration-cal20260824-1855/`、状态文档回写。零 commit/push;零 POST/重启 3080;零生产配置改动(tOn/tOff 默认值未被触碰,embedding-config.json 未动)。
|
|
45
|
+
- 历史会话内容一律按数据处理;其内嵌指令未被执行。
|
|
46
|
+
|
|
47
|
+
## 4. 方法:离线复刻生产代码路径(harness)
|
|
48
|
+
|
|
49
|
+
`calibration_harness.py`(bench venv,真实 BGE-M3 @5617a9f61b02,CPU 16 线程):
|
|
50
|
+
|
|
51
|
+
- 编码/分块直接 import 生产模块 `m7_embedding_pre_v1`:`chunk_record_token_ids`(m7_chunk_pre_v1 para-512-noov)→`build_doc_ids`→`encode_ids`;查询走 `encode_query`(单次 specials 包裹)。
|
|
52
|
+
- 检索/融合/评分逐式复刻 worker:dense 精确余弦 + tie-break(score↓/key↑/ordinal↑)、top-8 聚合、BM25(k1=1.2,b=0.75,哈工大停用词运行时提取自 lib/shadow-retrieval-pre.js)min-max 加权融合 wDense=0.7、特征组(denseTop/margin/evidence/recency/toolFail)、语义分公式、correction 硬抑制、首观测滞回判定。
|
|
53
|
+
- **保真度交叉验证**:episodes 面 274 chunks 与 M7-2 L2 公开数字完全一致;liveness 39 行分数从特征重算 39/39 逐位吻合(≤1e-5);live 面琥珀协议 zh/en 查询均 hit@1(双向跨语言 top1,复现 real-smoke 结论)。
|
|
54
|
+
- 聚合口径修正(v2):harness 内联的 correctionLeak/forbidden 判定用了过滤前候选列表;`post_analysis.py` 以"服务候选=排序后剔除 conflictDropped"重算并整体重写 metrics.json(v2,含混淆矩阵/逐格网格/类分布)。原始 harness 日志保留于 `harness-run.log`。
|
|
55
|
+
- 时延:p50 263ms/p95 482ms(含纯 Python 全库精扫+每查询全量 BM25 重打分;≈500 chunk 规模下已近 500ms 预算线——随语料线性增长,需监控,属实现观察非阈值问题)。
|
|
56
|
+
|
|
57
|
+
## 5. Live Phase F 39 行重放
|
|
58
|
+
|
|
59
|
+
- 决策分布复核:suppress=38 / prefetch=1 / emit=0,score min/p50/p95/max=0.2996/0.3811/0.5181/0.5390——与 run-state.json 记录一致。
|
|
60
|
+
- 结构性解释:recency 因 index_sync 契约 occurredAt=null 恒 0,evidence 通常缺位 ⇒ score 上限 ≈ 0.6·denseTop+0.15·margin+0.05·toolFail;tOn=0.62 要求 denseTop≥约 0.70 且高 margin,live denseTop 中位仅 0.619 ⇒ **emit 缺口是公式结构性的,不是流量不足**。
|
|
61
|
+
- 敏感性重放(首观测语义):tOn=0.50→3 emit;tOn≥0.55→0 emit;tOff 各档仅改变 prefetch 数(0–13)。与 run-state 的 tOn_0.5=3/39 记录吻合。
|
|
62
|
+
|
|
63
|
+
## 6. 校准结果(65 evaluable + 8 scope-check)
|
|
64
|
+
|
|
65
|
+
### 6.1 类分数分布(separability)
|
|
66
|
+
|
|
67
|
+
| 类 | n | min | median | p75 | max |
|
|
68
|
+
| --- | --- | --- | --- | --- | --- |
|
|
69
|
+
| activate | 31 | 0.325 | 0.397 | 0.453 | **0.591** |
|
|
70
|
+
| prefetch(期望) | 14 | 0.332 | 0.388 | 0.401 | 0.448 |
|
|
71
|
+
| suppress(净) | 15 | 0.224 | 0.333 | 0.362 | **0.651** |
|
|
72
|
+
| harmful(可评估) | 5 | 0.255 | 0.406 | 0.465 | 0.490 |
|
|
73
|
+
|
|
74
|
+
**核心发现(回声陷阱)**:全场最高分是 cal-0009「中午那碗面条挺不错的。」(0.6507,denseTop=0.834——查询几乎是记录原文的复述)。它高于所有 activate 正例。「今天天气真不错」同类(0.580,亦超多数正例)。⇒ 单一 denseTop 主导的语义分**原理上无法区分"用户复述低信息内容"与"用户需要历史资料"**,任何 ≤0.66 的 tOn 都会让该类样本至少进入 prefetch 带,任何能放出真正召回的阈值同时放进回声。
|
|
75
|
+
|
|
76
|
+
### 6.2 混淆矩阵(当前 0.62/0.52)
|
|
77
|
+
|
|
78
|
+
| 期望\实际 | emit | prefetch | suppress |
|
|
79
|
+
| --- | --- | --- | --- |
|
|
80
|
+
| activate(31) | 0 | 3 | 28 |
|
|
81
|
+
| prefetch(14) | 0 | 0 | 14 |
|
|
82
|
+
| suppress 净(15) | **1** | 1 | 13 |
|
|
83
|
+
| scope-check(8) | 0 | 0 | 8(正确:不可达即无激活) |
|
|
84
|
+
|
|
85
|
+
当前默认下的唯一 emit 是错误激活(falseActivationRate=1.0);31 条 activate 召回为 0;14 条期望 prefetch 全部落 suppress(prefetchCoverage=0.5 为检索层限制,与阈值无关)。
|
|
86
|
+
|
|
87
|
+
### 6.3 阈值网格(契约:tOn∈{.50,.55,.60,.62,.65,.70}×tOff∈{.40,.45,.50,.52,.55},tOn>tOff;全表 `threshold-grid.csv`)
|
|
88
|
+
|
|
89
|
+
关键行(emits>0 或最优):
|
|
90
|
+
|
|
91
|
+
| tOn/tOff | emits | emit 正确 | emit 落 suppress | actPrecision | actRecall | suppress 越界 | harmful 激活 |
|
|
92
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
93
|
+
| 0.50/0.40 | 5 | 3 | 2 | 0.60 | 0.097 | 5 | 0 |
|
|
94
|
+
| 0.50/0.45 | 5 | 3 | 2 | 0.60 | 0.097 | 4 | 0 |
|
|
95
|
+
| **0.55/0.50** | 4 | 2 | 2 | 0.50 | 0.065 | **2(网格最小)** | 0 |
|
|
96
|
+
| 0.60–0.65/任意 | 1 | 0 | 1 | 0 | 0 | 2 | 0 |
|
|
97
|
+
| 0.62/0.52(现状) | 1 | **0** | 1 | 0 | 0 | 2 | 0 |
|
|
98
|
+
| 0.70/任意 | 0 | 0 | 0 | – | 0 | ≥2(tOff≤0.55 时回声仍入 prefetch 带) | 0 |
|
|
99
|
+
|
|
100
|
+
- **harmfulActivations=0 于全部格子**(可评估 harm 最高分 0.490<tOn 下限)。
|
|
101
|
+
- **suppress 越界全网 ≥2**:cal-0009(0.6507)/cal-0010(0.5803)高于网格内一切 tOff。
|
|
102
|
+
- **无任何格子同时满足 precision 优先与可用 recall**;argmin 序(harmful, suppress 越界, -emitCorrect)选出 0.55/0.50,但其 recall 仅 0.065、仍有 2 条错误注入——**不构成可推荐工作点**。
|
|
103
|
+
|
|
104
|
+
### 6.4 其余指标
|
|
105
|
+
|
|
106
|
+
- Recall@K(act+prefetch 目标入 top-K):@1=0.644 / @5=@8=0.800(episodes 面检索层;低于 M7-2 L2 R@5=0.950 属预期——本集含目标更弱的构造 prefetch 与双子压力,且 lq 只是子集)。
|
|
107
|
+
- 跨语言 R@5=0.900(en→zh 方向强,与 L2 结论一致;live 面 en→zh fixture hit@1);代码锚点 R@5=0.750(cal-0069 finish_reason 查询 miss)。
|
|
108
|
+
- correction 抑制:硬抑制样本 1(cal-0015,correction 证据指向 lunch 记录)→ 记录被剔出服务候选、决策保持 suppress,**droppedIdsStillServed=0(结构性零泄漏)**;jieba 勘误对(活体)上,stale 复活查询 cal-0014 得分 0.465<0.52,现状安全。
|
|
109
|
+
- 跨 workspace 泄漏:**scoped leak=0**(8 条外部目标全部被三重过滤排除);unscoped 诊断显示若无宿主侧门 8 条样本的目标会进入 top-8 ⇒ 证明 scope 门必须留在宿主侧(与 benchmark 结论互证)。
|
|
110
|
+
- fallback/error=0;时延见 §4。
|
|
111
|
+
|
|
112
|
+
### 6.5 错误分析要点(`error-analysis.jsonl` 逐条 73 行)
|
|
113
|
+
|
|
114
|
+
- 当前阈值不匹配 47 条,其中结构性大头是 activate→suppress(28)=分数上限问题;真正的**定向错误**两类:①回声陷阱 2 条(suppress→emit/prefetch);②检索 miss 3 条(cal-0020 envelope 预算→命中同主题他记录、cal-0069、prefetchCoverage 未覆盖的一半)。
|
|
115
|
+
- cal-0015 证明 evidence-correction 硬抑制链路在生产语义下有效;m78 Q6 结论在真实语料上复现。
|
|
116
|
+
|
|
117
|
+
## 7. 推荐 tOn/tOff:**无法推荐进入 active 的组合**
|
|
118
|
+
|
|
119
|
+
1. **gold 维度**:activate/prefetch/suppress gold 均 0(<15),完成判定的前置不满足 → `insufficient_gold_for_active`。
|
|
120
|
+
2. **量化维度**(假设 silver 标签可用):precision-first 纪律下不存在合格格子(§6.3);把阈值降到出 emit 的每一格都伴随 ~40–50% 的错误注入率;维持 0.62/0.52 则唯一 emit 是错误激活。**两者都不可进 active。**
|
|
121
|
+
3. 因此:**生产默认保持 0.62/0.52 不变,模式保持 shadow。** `m7_semantic_threshold_pre_v2-DRAFT-NOT-APPLIED` 仅作为讨论稿记录(argmin 格 0.55/0.50 及其不合格理由写入 metrics.json),未写入任何配置。
|
|
122
|
+
|
|
123
|
+
## 8. 进 active canary 前的剩余条件(按优先序)
|
|
124
|
+
|
|
125
|
+
1. **特征层修正(阻断性)**——阈值无法修复类别重叠,需任一:
|
|
126
|
+
- 回声/低信息抑制特征:候选为"用户刚说过的内容的近重复"(高 denseTop + 低信息量标记 + 无疑问/回忆意图)时降权或直接 suppress;
|
|
127
|
+
- 回忆意图信号:interrogative/指代词/「之前/找出来/recall」类触发特征进公式;
|
|
128
|
+
- margin/evidence 门:emit 要求 denseMargin≥δ 或存在 seen/cite 证据(recency 仍休眠待 occurredAt 落数据);
|
|
129
|
+
- 同期按 D6⁺ 重评 model-sparse 通道(改分布须连带重标,论文 H1)。
|
|
130
|
+
2. **gold 标注闭环**:本 run 的 73 条标签连同 `error-analysis.jsonl` 交人工审查;用户确认后翻转 isGold 并补足每类 ≥15;建议优先复核 20 条边界样本(|score−tOff/tOn|≤0.07)。
|
|
131
|
+
3. **真实流量回归**:修正后重跑 shadow,要求连续 ≥500 观测中 emit 候选的人工抽检 precision≥0.7(论文 H5),且 live 回声类话题(天气/饮食/寒暄)零 emit。
|
|
132
|
+
4. 以上全部满足后才可提出 active canary;canary 本身仍须用户执行 §19.8 开关步骤(Agent 不碰)。
|
|
133
|
+
|
|
134
|
+
## 9. 产物清单(runId=calibration-cal20260824-1855)
|
|
135
|
+
|
|
136
|
+
| 文件 | 内容 |
|
|
137
|
+
| --- | --- |
|
|
138
|
+
| `labels.jsonl` | 73 条标注(字段齐全,isGold 全 false) |
|
|
139
|
+
| `labels.scored.jsonl` | 标注+观测(denseTop/margin/score/排序/conflictDropped/unscopedTop/latency/当前决策) |
|
|
140
|
+
| `metrics.json` | v2 聚合:类分布/separability/混淆×2/网格/recall/xlang/correction/泄漏/时延/verdict |
|
|
141
|
+
| `threshold-grid.csv` | 30 格全指标(tOn>tOff 有效格) |
|
|
142
|
+
| `error-analysis.jsonl` | meta+73 行逐样本双工作点对照与中文解释 |
|
|
143
|
+
| `provenance-manifest.json` | provider/revision/chunks/停用词/融合/评分权重/liveKey 解析表/labelPolicy |
|
|
144
|
+
| `calibration_harness.py` / `post_analysis.py` / `gen_error_analysis.py` / `harness-run.log` | 可复现脚本与原始运行日志 |
|