docs: 三层记忆移植 dsh 插件可行性评估

结论:只能做子集。

逐层结论
- L1 (context 热上下文) ≈20%:dsh 的上下文压缩是「摘要替换区间」
  (dsh-compaction-basic 的 compactSurfaceRegion),不是「按 query 相关性
  淘汰 + 迁出到冷层 + 按原时间戳迁回」。CompactionTrigger 接口拿不到
  query;MessageBase 无 timestamp 字段,surface 是 append-only + replace,
  无法语义插入。
- L2 (coldcontext 冷文档) ≈80%:存储/召回/注入可落,缺
  「Peek → 回灌 → Remove」的回收站语义。
- L3 (stablemem 图记忆) ≈85%:memory_blocks/memory_block_edges 结构
  完全可映射,node:sqlite 实测可用(含 FTS5);受限于无 embedding 服务。

关键发现
- dsh 无任何 embedding/vector service,需自建(推荐复用 HA 的 http
  provider HTTP 协议转发,2 人天)。
- systemPrompt.context() 的 AssembleContext 拿不到本步消息正文,
  「按本次输入召回后注入」必须走 agent/pre-step waterfall
  (参考 dsh-time-context 的用法)。
- dsh attachment 是 CAS,与 HA「媒体字节内联在块里、不做引用账本」
  的设计冲突 → 媒体块必须裁掉。

工作量(含判据与实测)
- L2+L3 子集:36-53 人天
- MVP(L3 + 工具 + 注入面):19-25 人天
- 完全等价(含迁出-迁回):不可行,不报价

报告含 7 章 + 两份附录(HA/dsh 双侧证据索引、环境实测结果)。
原文全程只读,未修改 HologramAgent 仓库。
This commit is contained in:
2026-10-30 00:39:44 +08:00
parent 16fa18a186
commit 28d9d5e929
3 changed files with 1170 additions and 1 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.pi-sessions/

View File

@ -1,3 +1,33 @@
# HologramAgent-DSH-Memory-Port
评估 HologramAgent 三层记忆系统移植为 dsh 插件的可行性(调研/评估,不产出实现)
评估 HologramAgent 三层记忆系统移植为 dsh 插件的可行性(调研/评估,不产出实现)
## 报告
→ [`docs/feasibility.md`](docs/feasibility.md)
## 结论摘要
**只能做子集**(四选一中的第三档)。
| 层 | 可移植性 | 瓶颈 |
|---|---|---|
| L1 context 热上下文 | ≈20% | dsh 的上下文压缩是「摘要替换区间」,不是「按 query 相关性淘汰 + 迁移到冷层 + 按原时间戳迁回」;`CompactionTrigger` 接口拿不到 query,`MessageBase` 无时间戳 |
| L2 coldcontext 冷文档 | ≈80% | 存储/召回/注入都能落,缺「回收站式 `Peek→回灌→Remove`」 |
| L3 stablemem 图记忆 | ≈85% | 结构完全可映射(`node:sqlite` 实测可用),受限于无 embedding 服务 |
**可整体搬运的资产**:`MemoryBlock` 值对象、确定性 ID 派生、仲裁/拒答/符号检索算法——这三块与宿主无关。
**推荐落地范围**:L2 + L3 子集,L1 交给 dsh 自己的 compaction。
工作量(含判据与实测)**36–53 人天**;压到 MVP(L3 + 工具 + 注入面)**19–25 人天**。
**最小第一步切片**(1–2 人天):插件骨架 + `Service` 注册 + `node:sqlite` 建 `memory_blocks`
+ FTS5 召回 + `agent/pre-step` 注入 + 一个最小工具,**全程不引入 embedding 依赖**。
详见报告 §7。
## 取证方式
- HologramAgent 源码与 `docs/zh/` 设计文档:**全程只读,未做任何修改**
- dsh 接口:只读 `lib/types/*.d.ts`(权威接口),不从 `lib/*.js` 实现倒推
- 关键环境结论均有实测(`node:sqlite` + FTS5、`onnxruntime-node` 缺失、`libonnxruntime.so` 位置)
- 每条断言标注文件路径与符号名;仅三处标注「推断」:`turn`≈`FrameTS` 映射、`Intl.Segmenter` 中文分词质量、人天估算

1138
docs/feasibility.md Normal file

File diff suppressed because it is too large Load Diff