Releases: JunNanLYS/dsh-layered-memory
Releases · JunNanLYS/dsh-layered-memory
Release list
v0.8.0 — 记忆优化包(规格 `docs/spec-2026-08-18-memory-optimization.md`,决策记录 ADR-0001/0002/0003):
记忆优化包(规格 docs/spec-2026-08-18-memory-optimization.md,决策记录 ADR-0001/0002/0003):
召回消息侧注入 + 蒸馏触发改造(渐进阈值 + 全链路会话隔离)+ 分层输出预算 + FTS 写路径修复。
新增
- 召回消息侧注入(ADR-0001):相关记忆以带插件来源的合成消息(
form: 'recall',
宿主 UI 显示为**"上下文注入 · memory"**署名行)排在每条新的用户消息之前注入会话流
——用户能直接看到"记忆生效了"。<relevant-memories>
标签 + "仅供参考"引导语;纯工具步 / reject 决策透传;只在有新用户消息的步骤触发
(轮首 + steering 插话)。工具指南注明受限环境(如仅允许代码执行入口的 code-runtime
档)须经该环境的调用机制间接使用记忆工具。系统提示只保留稳定内容
(画像/导航/门控指南),memory:recall动态槽撤除; - 召回预算:
recall.maxCharsPerMemory(默认 500)/recall.maxTotalRecallChars
(默认 2000)——超限截断并以…(已截断;可用 memory_search 或 conversation_search 查看详情)引导模型用工具查全文(截断是引流:工具路径返回完整记录);总量超限丢
低分尾部;code point 安全截断; - 召回超时:
recall.timeoutMs(默认 5000,0 不限时)总预算,超时跳过本轮注入;
远程嵌入 fetch 内层钳制 3000ms(给 FTS 降级留时间),本地推理不钳; - 蒸馏渐进阈值(ADR-0003):生效阈值 1→2→4→稳态爬坡(
extract.minMessages语义
升级为稳态阈值,默认 1→6)——新用户首轮即出记忆,稳态攒批省调用;爬坡状态随
pending.json 持久化; - 闲置兜底:
extract.idleSeconds(默认 300,0 关闭)——会话静默达标后未蒸馏切片
自动落袋,off 档会话挂起跳过; - 档位切换切片同步:非 off 档间切换 → 该会话切片立即按捕获档位蒸馏;切到 off →
挂起;从 off 切回 → 挂起片按捕获档位落袋(切片永不跨档位混装); - 分层输出预算:抽取 16k / 去重 8k / L2 32k / L3 16k;思考档 high/max 自动 ×4
(reasoning 吃光预算的历史事故防线);llm.maxTokens默认 256k→65536 降为兜底总闸。
修复
- 跨会话污染(现存缺陷):抽取背景消息原为全局内存数组(A 会话内容给 B 会话当
背景且重启即丢),现按会话从 L0 现查(走会话索引)并剔除切片自身;蒸馏触发按会话
切片计数、只抽取达标会话的切片——五条通道(阈值/idle/背景/档位切换/重试残留)
全部会话隔离(ADR-0003); - FTS 写路径 O(N²) 放大:防御性 FTS 删除改主表存在性点查预判(record_id 在 FTS
表 UNINDEXED,按 id DELETE 是全表扫描——重建/重嵌/导入等全新增路径原为每条记录白付
一次全扫)。外部行为逐项不变(ADR-0002;rowid 映射方案因陈旧映射静默错删风险否决)。
变更
- 工具指南改三条件门控(
tools 开启 && 画像 ∥ 导航 ∥ 本轮召回命中):空库用户与
关闭工具的用户不再每步支付这份固定 token; - pending.json 持久化条目增加
sessionId字段(旧格式自动归入 legacy 会话组),
另随桶持久化渐进阈值状态; - 启动补跑改为按会话切片分组入队;
- 中文检索分词从 CJK 二元组升级为 jieba 词级分词(与 MemoryCore 官方实现对齐):
@node-rs/jieba(Rust napi 预编译二进制)产出 jieba 词元 ∪ 拉丁词 ∪ CJK 二元组
有序去重并集——词元给 BM25 高 idf 整词命中,二元组保子词召回底线;加载失败自动回退
纯二元组(进程内模式定死不漂移);FTS 分词器版本戳(fts_tokenizer:jieba-v1/
bigram-v1)戳不符时自动 drop 重建回灌,无戳旧库视同bigram-v1首启自动迁移。
完整变更: CHANGELOG.md
v0.7.1 — 全量审查修复:存储性能 / 运行时供应链加固 / 文档补正
全量审查(2026-08-17)修复批次:文档补正 + 存储性能 + 运行时安装供应链加固。
性能
PRAGMA synchronous=NORMAL(WAL 官方推荐档):批量写从每事务一次 fsync 降为每 checkpoint 一次,重嵌入/导入提速;代价仅是断电时丢最后若干已提交事务(只丢不损)- reindex 向量写事务化:L1/L0 重嵌入的逐行裸写改为按块(16/32 行)单事务批量(整批失败回退逐条,好行不丢),配合上条大幅缩短大库重嵌耗时
安全
- 本地嵌入运行时改
npm ci+ 随包 lockfile:resources/runtime-package-lock.json(构建期拷入 dist/,随 npm 包发布)把@huggingface/transformers的完整传递依赖树冻结在作者侧——原npm install pkg@精确版本只锁直接依赖,传递依赖按 semver 浮动,registry 端后续发布/投毒会随安装时间漂移。ci 失败自动回退 install(可用性优先) - RPC 安全边界经对照宿主源码验证:
authority: loopback通道受dsh-client-connection传输层三重栅栏保护(Host loopback 拦 DNS rebinding、Sec-Fetch-Site: cross-site拒绝、Origin 同源校验),插件侧无需额外调用方校验(结论已归档至开发经验文档)
文档
- CHANGELOG 补
[0.5.3]/[0.5.4]条目(此前缺失,npm 已发版) - README 中英配置表补 5 项:
recall.includePersona/recall.includeSceneNav/embedding.maxInputChars/embedding.timeoutMs/llm.timeoutMs - 修正中文版『间族』→『跨族』错别字;开发经验文档旧存储布局路径;CONTEXT.md persona 分族文件名
完整变更: CHANGELOG.md
v0.7.0 — 本地嵌入模型·活切换 / Light·Dark 双主题 / 全量审查修复
本地嵌入模型与活切换(本版最大特性)、Light/Dark 双主题、全量代码审查修复(#1-#24)。
新增
本地嵌入模型(#20-#24)
- 三态嵌入源(关闭 / 远程 / 本地)运行时可切,状态持久化
embedding-source.json,生效 = 部署上限 AND 运行时选择 - 内置模型目录(白名单,锁定 revision + 每文件 sha256):
模型 维度 上下文 体积 BGE small 中文 512 512 ~25MB EmbeddingGemma 300M 768 2048 ~330MB BGE-M3 1024 8192 ~590MB - 下载支持断点续传 + sha256 校验,默认镜像
hf-mirror.com(embedding.mirror可改官方) - 按需推理运行时:首次切本地档才安装 transformers.js 到数据目录
runtime/,不进插件依赖树 - 活切换链:预热 → 换服务 → 维度变化自动重建向量表 → 后台全量重嵌(进度可见可取消)→ 成功才持久化;失败保持旧源
UI
修复
全量代码审查修复(#2-#14)+ 独立复审(F1-F4)+ 装配缝:
- FTS 写入失败随事务回滚,杜绝静默索引空洞;嵌入补齐死循环修复;停机顺序与引用释放;settings scope 复用与自动重挂;RPC 服务下线自动重挂;off 档工具统一提示等
- stats
/rpc漏传embedManager—— 嵌入管理 UI 恒显示"存储降级"的装配缝 bug
性能
- 检索热路径预编译语句复用 + IN 分块 + L1 批量事务(#14)
文档
- README 新增"语义检索(嵌入源)"章节;Hero/分层记忆/会话档位换用生成图;新增界面预览(深浅双主题截图)
- CHANGELOG 回填 0.6.0 / 0.6.1 条目
完整变更: CHANGELOG.md