Skip to content

Releases

v0.4.0 — 公开能力收敛:只做 auto-memory 没有的两件事

Choose a tag to compare

@ShukebtAb ShukebtAb released this 01 Oct 12:49

@a9i5k4/dsh-auto-memory 的增量插件(add-on):只做本体没有的两件事 —— 跨实例硬约束注入、锚点结构修复。

本版是「公开能力收敛」

本插件的定位是增量:只公开本体没有的能力。本版据此重新划定了公开边界,并把此前围绕一条未采用实现路径的整章内容整体移除。

公开能力 为什么它是互补的
跨实例硬约束注入 auto-memory 的用户级记忆按实例隔离(userMemoryDir 指向各自 DSH_HOME)⇒「所有实例都必须遵守的约束」在它那里没有统一来源
锚点结构修复 cross_memory_fix_bare_entries auto-memory 没有任何锚点结构修复通路
cross_memory_status 报告 cross/RULES.md 的状态(路径 / SHA256 / 字节 / 条目数 / 本实例注入状态);memory_status 报的是记忆库自身,不含该文件

重点:锚点结构修复(本体完全没有的一块)

锚点行(<!-- memory:mem_<32hex> -->)是 auto-memory 的唯一条目分隔符。结构坏掉的后果不是"少一条记忆",而是该文件整篇 fail-closed 拒写,或者新内容静默不进注入面。

它修三类:

  • A 无锚点裸条 ⇒ 在 ## 行之前插入锚点行
  • B 空锚点 orphan(锚点之后到下一锚点之间没有任何非空行 ⇒ parseAnchors 判 orphan-anchor ⇒ 该文件整篇永久拒写)⇒ 在锚点行之后补一行中性占位
  • C 重复锚点 ⇒ 只报不改(删哪个 id 属语义判断,交人)

为什么它不是过渡方案:B 类与 C 类的成因与任何配置开关无关 —— 手工编辑记忆文件、跨会话并发写入、复制粘贴段落、历史遗留,任何一种都会产生它们,而后果(整篇拒写)与开关状态无关。只要 auto-memory 仍用锚点行做条目分隔符,这两类病灶就会存在;而本体没有修复通路(UI 的「语料健康 / 修复 stale」修的是 sidecar 索引与正文的 digest 失配,不是结构病灶)。

两条硬保证:

  1. 只插入新行,绝不改动既有行。 判据是机械的 —— 把锚点行过滤掉之后,逐行比对差异必须为 0。它不会改措辞、不会重排内容。
  2. apply=true 时:先留基线 → 写后自检 → 不干净即整份回滚。 落盘前生成 .pre-write-<stamp>;写后重跑诊断,若 A/B 类仍存在则从基线回滚并如实回报 rolledBack: true。

安装

dsh plugin --profile web add github:ShukebtAb/Dsh-Cross-Memory#v0.4.0

装完按内容哈希核对(本插件 spec 走 commit/tag,version 字段不足以判定落地):

检查项 期望值
node_modules\dsh-cross-memory\index.js 14694 B / sha256 F8AC163229D69042…
entry-format.js 18573 B
tools\shadow-verify.mjs 是否入包 False(开发/验证工具不入包)

说明

  • 代码零改动:本版是文档与定位的收敛,index.js / entry-format.js 逐字节未变,不改变任何运行时行为。
  • 版本号不做连续性声明:0.2.0 与 0.3.0 两个版本围绕一条未采用的实现路径,其 GitHub Release 与 tag 已下架,CHANGELOG 亦不再收录其条目。需要回溯代码时请用 commit(64d78be / 89c34b2)—— git 历史完整保留。
  • 既有行为未变:注入通道 systemPrompt.context()、order: 10001、mtime 缓存、失败姿态一律照旧;inject 开关仍由各实例的 cordis.patch.yml 显式声明。

完整变更见 CHANGELOG.md · commit 1bd985f