v0.5.23:记忆压缩、查询与多路召回性能优化
本补丁版本发布 PR #330 中的算法优化,减少数据量增长时的重复扫描和分配:
- **运行时记忆压缩:**一次索引原内容,按三个优先级稳定分组,并增量计算 UTF-8 字节数;从平均文本长度 L 下的 O(N²L) 降为 O(N+B),B 为总文本字节数。
- **项目档案查询:**只为最终返回的档案生成摘要,保留实时正文读取、评分、结果顺序和最近访问时间更新。
- **记忆空间发现与多路召回:**使用请求内 Map/Set 合并空间目录、解析固定空间和汇总质量计数器;保留完整候选排序、权限检查、失败处理与 Provider 调用顺序。
- **批量写入准备:**按目标复用同步解析,使用可追加的分组数组和 Set,消除反复复制与扫描;Provider 持久化行为不变。
- **Holographic 查询:**精确计算 token 集合交集,并以稳定的有界堆选择前 k 项,将有限分数的排名成本从 O(M log M) 降为 O(M log k+k log k)。小集合与非有限分数沿用原排序路径。
性能证据
同一机器、同一依赖下测试 N=1、10、100,并补充 N=1000。以下是 N=1000 时的每次操作中位数:
| 本地操作 | 优化前 | 优化后 |
|---|---|---|
| Runtime 压缩 | 41.347 ms | 4.047 ms |
| Document 搜索 | 40.484 ms | 22.165 ms |
| 多路召回编排 | 254.008 ms | 9.834 ms |
| 固定空间召回编排 | 2154.052 ms | 9.400 ms |
这些是合成数据、预热文件缓存下的本地延迟;召回使用本地 adapter 夹具,不代表远程 Provider 或 LLM 的端到端延迟。复杂度结论同时来自代码分析与确定性工作量测试,不能单凭耗时证明。完整规模矩阵、参数、保留同阶的路径与测量限制见算法审计报告及其原始指标。
升级与兼容性
从 v0.5.22 可使用记忆系统 → 状态 → 检查版本 → 更新,完成后重启 DSH。命令行安装或更新到精确版本:
dsh plugin --profile web add dsh-mnemon@0.5.23安装后重启正在运行的 DSH;新安装可在插件页选择立即启用。明确指定版本可避免包管理器的发布等待窗口影响版本选择。较早的桌面安装升级方式见兼容性与升级。
沿用 v0.5.22 的 DSH 兼容范围,完整开发 Profile 使用 Node ^22.19.0 || >=24.0.0。存储格式、配置、权限与 UI 流程不变,无需迁移已有记忆;不新增 Starter SDK 导出,插件 peer 下限不变。
变更的包
| 包 | 原版本 | 新版本 |
|---|---|---|
dsh-mnemon |
0.5.22 | 0.5.23 |
dsh-mnemon-source-runtime |
0.5.11 | 0.5.12 |
dsh-mnemon-source-documents |
0.5.8 | 0.5.9 |
dsh-mnemon-source-memory-spaces |
0.5.14 | 0.5.15 |
dsh-mnemon-provider-holographic |
0.5.5 | 0.5.6 |
Starter 精确锁定这四个插件的新版本,其余 13 个组件版本不变。外部依赖的锁定版本与 peer 解析图保持不变。
验证
算法变更在合并前通过 2063 项本地测试(9 项可选集成测试跳过),以及独立插件、打包安装、真实 Headless、Node 20/22/24 与 Windows 的对应 CI 检查。等价性回归覆盖稳定排序、UTF-8 容量边界、实时文件读取、质量计数器、权限和有序批量回执。
版本 PR 重新验证版本化组合。发布流水线在创建 GitHub Release 前检查冻结制品、Registry 完整性、全部 17 个插件的安装组合,以及从 v0.5.16 的真实 Registry 升级。实际执行结果见仓库的 Publish to npm 工作流。
上一版本:v0.5.22。