Repository navigation
Releases
Releases · ShukebtAb/Dsh-Cross-Memory
v0.4.0 — 公开能力收敛:只做 auto-memory 没有的两件事
@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 失配,不是结构病灶)。
两条硬保证:
- 只插入新行,绝不改动既有行。 判据是机械的 —— 把锚点行过滤掉之后,逐行比对差异必须为 0。它不会改措辞、不会重排内容。
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