jianf 533f801c24 docs: 影子上下文方案在 dsh 上的可行性核实
结论:路线②(注册独立 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 仓库。
2026-10-30 09:29:37 +08:00

HologramAgent-DSH-Memory-Port

评估 HologramAgent 三层记忆系统移植为 dsh 插件的可行性(调研/评估,不产出实现)

报告

→ 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 中文分词质量、人天估算
Description
评估 HologramAgent 三层记忆系统移植为 dsh 插件的可行性(调研/评估,不产出实现)
Readme 651 KiB
v0.1.0 Latest
2026-11-05 12:39:06 +08:00
Languages
JavaScript 99.8%
Shell 0.2%