Skip to content

Releases

v9.0.0 — 文件化记忆 + 写入护栏

Choose a tag to compare

@miseryrua miseryrua released this 26 Sep 05:07

纯 Markdown 的跨会话长期记忆,零运行时依赖。

记忆机制

  • 分层注入:L0 全局画像 USER.md / N3 PINNED.md 置顶 / L1 摘要 + L2 相关条目 top-5 / L3 今日日志 / N1 近 N 日回顾
  • auto-digest(每轮对话后,零 LLM)→ 当日日志;auto-distill(每小时,LLM)→ MEMORY.md;auto-compact(超阈值,LLM)先备份到 archive/ 再压缩
  • 会话小结(空闲后生成,四道闸限流不放任烧 token)、画像候选机制(Agent 不直接改 USER.md)
  • memory_search 原生工具:长期记忆 + 近期日志双源关键词检索,比读全文省 token
  • 治理:TTL 归档过期日志、近重复检测(只报告不合并)、回收站与归档超期清理(删除走 rename 进 .trash/,可回滚)

v9.0 新增:写入护栏

MEMORY.md 有三个写者(会话追加 / 每小时 distill / 超阈值 compact 整体重写)而没有任何握手。compact 从读原文到写盘之间夹着完整的 LLM 调用(最坏约 6 分钟),期间 Agent 按纪律追加的条目会被静默抹掉。

  • guardedWrite(p, content, expectedRaw):写盘前重读文件,与「送进 LLM 的那份原文」按内容逐字节比对(不比 size/mtime,同长度不同内容也拦得住),不一致即放弃本次写入
  • 接在 compact 与 USER.md 画像候选两个真竞态出口;冲突不写 __compact__ 日锁,下一轮巡检自动重试,不打扰用户
  • 刻意不改 HTTP 写入路径:那是面板里人工确认过的显式覆盖

自 v8 起从未入库的机制(本 tag 首次发布)

memory_search 工具、PINNED 置顶、逻辑日分界(凌晨 3 点算昨天)、会话小结、近 N 日回顾、compact 同轮反馈重试、BOM 容错。

验证

node test/smoke.mjs → 108 passed, 0 failed(覆盖注入装配、召回、治理、BOM 容错、compact 自适应目标、以及写入护栏的端到端并发冲突)。