目录

v0.2.16:原子化运行时记忆容量维护

在 GitHub 上查看源文件

v0.2.16 让运行时记忆容量恢复变得完整且原子化。由 add、replace 或 remove 引起的超限,现在可以在归档或本地压缩已审查条目的同时应用原始操作,不会暴露部分完成的结果,也不会接受未经验证的归档。

修复

  • 容量维护现在覆盖已有的三种运行时变更操作。MEMORY.md 使用 32,768 token 预算的归档 worker;USER.md 始终走严格的本地压缩路径,绝不会发送到记忆空间。
  • Host 从精确文件 revision 生成维护计划,再在同一文件锁内一次性提交压缩结果和原始变更。并发写入、非法结果或最终仍超限时,运行时 JSON、MEMORY.md 与 USER.md 都会与操作前保持逐字节一致。
  • replace 或 remove 会在归档和压缩前排除匹配到的废弃条目。待添加或待替换的新内容不参与压缩,因此旧内容不会被归档或重新引入,新内容也不会被重复写入。
  • MEMORY.md 迁移必须把每个从 1 开始编号的已提交源条目恰好映射一次,且目标集合必须与返回的记忆空间 id 集合完全一致。每个目标都必须处于激活状态、使用已启用且支持 remember 的 Provider,并有成功的 mnemon_remember 回执或真实 mnemon_recall 证据。
  • 失败、等待、排队或其他暂态 Provider 回执会被拒绝。Code Mode 内部产生的结果,只有在外层运行成功后才计为有效。

兼容性与数据安全

  • 持久化格式、RPC 权限、凭据处理、公开工具 schema 与外部变更 action 均无变化。planMaintenance 和 compactAndMutate 只是 Host 内部协调方法;公开的运行时操作仍是 add、replace 与 remove。
  • 现有 schema version 1 运行时文件与记忆空间无需迁移。更新 dsh-mnemon 后重启受影响的 DSH profile 即可;降级 package 不需要回滚数据。
  • 本版本关闭了“预先压缩已落盘、随后旧变更重试失败”的数据丢失窗口,其中包括压缩后 oldText 已消失而导致替换失败的实际情形。

验证

  • 完整 pnpm run verify 链共 393 项测试通过;Windows 专用 smoke test 只在本地非 Windows 环境跳过。同一发布树在 Node.js 22.19、24 与 25 上全部通过。
  • 回归测试覆盖真实 controller 的 add、replace、remove 超限恢复,旧版已超限文件的 remove,废弃条目排除,USER.md 隐私,迁移源精确覆盖,非法、未激活、已禁用和不可写目标,虚假或暂态回执,重复或重新引入内容的压缩结果,跨 controller revision 冲突,最终仍超限,以及每种被拒绝事务后的文件逐字节一致性。
  • 双构建的 65 个生成文件完全一致;隔离 Headless 激活暴露 35 个总工具,其中 5 个代表性 Mnemon 工具全部存在。发布包校验共 72 个文件;publint strict 与 attw 通过。
  • GitHub CI 在 Ubuntu Node.js 22.19 与 24、Windows Node.js 24 上全部通过,其中包括 Mnemon 发行包下载与默认发现 smoke test。

最初的容量修复由 Zn-Dk 在 PR #67 中贡献;合并时追加了维护者的原子性与证据校验加固,并保留了双方各自的提交。

上一个补丁版本见 v0.2.15 发布说明。