Repository navigation
v0.18.4
新增
- 崩溃恢复(§A):宿主在轮次中途崩溃时,该轮对话此前会随内存缓冲永久丢失(resume 的冷启动地板丢弃全部历史)。现在 resume 时从宿主持久化事件日志对账:以 L0 已落盘的最大 turn 为水位线,补收其后的完整轮次(上限 2 轮;崩溃孤儿轮由宿主补写
turn/end{reason:'interrupted'}闭合,本机实测 98 处)。幂等 = 水位线 + 逐轮存在性检查;宿主读日志服务不可用时逐级降级(sessionQuery.readSession→sessionPersistence.readFrom→ 维持现状 + 一次性提示),全程 fail-open 不阻塞会话启动。 - 载荷脱敏(§C,
capture.redactSecrets,默认开启):捕获写入边界把 8 类密钥(PEM 私钥 / Authorization 头 / Bearer 与 JWT / Cookie / 厂商 API key 形态 / 邮箱 / ≥9 位长号(排除日期)/ 高熵 ID)替换为[REDACTED:<KIND>]类型化占位符——单点覆盖 L0 JSONL、L0 SQLite、蒸馏输入与手动memory_add/memory_import(两条 L1 写入边界同词表)。安全值(example/$VAR/${{…}}等)不脱;占位符保留类别语义、可被检索命中。注意:开启后 L0 原文自此改变(重建不可得原文),false一键回明文。 - 蒸馏提示词防注入(§B):六处蒸馏 prompt(L1 抽取 ×3 / L1 去重 ×3 / L2 场景 ×2 / L3 画像 ×2 / 图谱投影 / 核对器)全部加入"内容边界(防注入)"总声明与数据插槽界定——对话原文、既有记忆池、场景全文等嵌入内容一律是数据不是指令,防止对话携带的指令性文字劫持蒸馏、去重与裁决。判定词表与输出契约零变化。
改进
- 注入确认(§D):召回注入不再在返回瞬间标记去重,改为"pending → 日志回执"两段式——宿主把注入消息真实写入会话日志(
user/message带plugin:memory署名与稳定 id)时才dedupe.mark。被覆盖/取消的注入不再误压制记忆(下轮可重注);5 分钟未回执降级为照常标记(防确认链路故障导致去重失效),未确认即弃。 - 压缩精确再注入(§E):
compaction/end(无 error)后,该会话下一轮做一次定向增强召回——跳过去重压制(压缩已把旧注入逐出上下文)、画像立即重注入、占用账本归零;消费即清。原有 compact/clear 会话级全量重置保留为回退路径,双路径幂等。 - 结构化追踪(§F,
trace.*):召回与蒸馏事件按天 JSONL 落盘(<dataDir>/trace/,保留期默认 14 天,单日 5MB 停写 + marker)。召回事件含 query 指纹(默认 metadata-only:长度 + sha256,trace.captureContent才存原文 ≤200 字符)、命中/注入 id、分数、耗时与四种结局(injected/suppressed/timeout/off);蒸馏事件含 runId、六值决策聚合(与l1_receipts同源可交叉审计)、耗时与成败。新增dsh-memory/trace-tail端点;设置页"日志"Tab 新增 系统日志 / 召回追踪 / 蒸馏追踪 三数据源切换。
Release backfilled on 2026-10-22 from git tag + CHANGELOG history.