Skip to content

v0.12.0 — 记忆的生命周期:准入 / 在场 / 退场

Choose a tag to compare

@Max-Null Max-Null released this 22 Sep 19:32
· 26 commits to main since this release

0.12.0 — 记忆的生命周期

准入 / 在场 / 退场,外加只读体检与时间维度。

行为变更(升级前值得知道)

  • 取消自动升常驻:命中次数达标不再自动把记忆钉成常驻,只进候选提示。原判据「被反复检索命中」度量的是它被想起来了,而常驻的语义是它不能被忘——能被检索命中的恰恰是检索已经够用的那些。实测:本机 56 条常驻里 49 条(87.5%)来自自动升,多数是事实与案例记录,而显式钉的那几条全部是规则、委托与判据。
  • 注入排序不再看 lastUsedAt:改为 updatedAt 降序(一行)。lastUsedAt 由检索路径上的记账刷新,拿它决定「谁每轮在场」,会让一次 memory_search 就改变下一轮的注入内容。
  • memory_update 新增 supersedes / retract:作废时只标状态、保留内容,检索侧仍可检回并带原因。此前改内容会让旧结论直接消失,不留「被谁取代」的痕迹。
  • 注入行带日期:- [memory:xxxxxxxx:ns@2026-09-14@..] …(取 updatedAt,本地时区),每条 +11 字符。

新增

  • path-exists 锚点:把记忆绑到一条路径上,文件不存在即自动失效。相对路径以会话工作区为基准;拿不到 cwd 时判「未校验」而不是「不存在」。
  • memory_sweep 工具:只读体检——失效记录(带原因)、久未命中的非常驻记录、被反复检索却未常驻的候选、常驻与预算占用。不修改任何状态。
  • memory_list 时间过滤:after / before,接受 YYYY-MM-DD 或 7d / 30d 相对形式。

内部

  • 注入诊断行新增两行(都不占预算):本次校验发现的新失效、候选提示。
  • 测试 138 → 161;scripts/mutate-check.mjs 三条变异守卫全过(取消自动升 → 7 红、排序 → 1 红、注入中和 → 1 红)。
  • 文案同步:self.ts / GUIDANCE / injected 参数描述三处行为控制器。

完整说明:CHANGELOG.md 与 docs/设计/2026-09-23-记忆生命周期-迭代方案.md


已知缺口(留给下一版):锚点写入后无法修改——memory_update 没有 anchor 参数,写错只能删除重建(会换 id)。实测触发:一条设计原则误绑 self-version: 0.11.1,升级后当场被判失效。