结论:路线②(注册独立 agent 模式)可行;路线①(劫持原有信息流)
只是看着可行。
路线②可行 —— agentPresets 是一等机制
- ctx.agentPresets.register({id, plugins}) 可由任意插件调用
(dsh-agent-preset/lib/index.js:18-26)
- preset 子树是独立 scope + 可选 isolate realm
(dsh-agent-preset-registry/lib/types/mount.js:183-198)
- 已有实证:standard.patch.yml:66-82 的 isolate:{compaction:true}
group 已经在替换 compaction 服务
- 因此「压缩时机」「不压缩」「压缩前抓原文」全部可控
路线①为什么看着可行
- agent/pre-step 看着能注入,其实注入即落盘:
loop 随后 session.append("user/message", ...)
(dsh-agent-loop/lib/index.js:1067-1073),注入内容成为真实历史
- llm/stream 看着能改最终请求,其实 loop 请求深冻结
(dsh-llm/lib/types/index.d.ts:37-42),mutation throws
- 「不装 compaction-basic」看着能旁路,其实 auto:false 会连
溢出恢复一起关掉 (dsh-compaction-basic/lib/index.js:827)
关键机制核实
- compaction 自动触发只是两个 ctx.on 监听器
(dsh-compaction-basic/lib/index.js:839/:861),受 config.auto 控制
- 服务名同 realm 撞名抛错 (cordis/lib/index.js:814),换实现必须 isolate
- surface 支持整段 replace,但被遮蔽节点必须全部列进 sourceEventSeqs
(dsh-session/lib/index.js:314-332)
- 日志 seq 严格连续 (dsh-session/lib/index.js:426),影子副本只能活在
dsh 之外
- MessageSourceMap 可 merge 扩展,自定义字段 lossless-JSON 存活但不进
wire(adapter 只投影 role/content)
- setFactory 独占 (dsh-agent/lib/index.js:431 + agent-loop:1590),
自建 runner 需弃用 2023 行的 agent-loop
三处与路线无关的硬阻塞:surface 不能插中间、llm/stream 深冻结、
前缀时序只能靠末尾追加。
人天:路线① 12-18(仅 60% 子集);路线② 18-26;混合 22-30。
附完整证据索引(6 组,全部 lib/*.js 实现级核对)。
原文只读,未修改 HologramAgent 仓库。
HologramAgent-DSH-Memory-Port
评估 HologramAgent 三层记忆系统移植为 dsh 插件的可行性(调研/评估,不产出实现)
报告
结论摘要
只能做子集(四选一中的第三档)。
| 层 | 可移植性 | 瓶颈 |
|---|---|---|
| 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中文分词质量、人天估算
Description
v0.1.0
Latest
Languages
JavaScript
99.8%
Shell
0.2%