
dsh-trivium 0.4.6 —— 装上就有跨会话记忆 + 会话图,不另起服务
DSH 把「一切皆插件」做得干净,但原装运行时没有跨会话的图记忆,也没有把一次长会话的压缩与分叉画出来。
dsh-trivium 就是为了补这两块而存在的进程内内核:不是侧栏、不是工作台、不拷源码。它随 DSH 进程加载 TriviumDB,每个工作区一个文件 <workspace>/.dsh/trivium.tdb,不另起服务,安装即用。从 0.3.0 到 0.4.6,它从「四个工具 + 一张短地图」长成了「记忆内核 + 会话图」两层结构——记忆负责跨会话,会话图负责把当前这次对话的脉络看清楚。
很多方案默认「再跑一个服务 + 向量库」,带来端口、进程、运维三件套。dsh-trivium 在 DSH 进程里直接持有内存图,退出时落盘到 .dsh/trivium.tdb。一个工作区一个文件,git 也能跟着走。

设计选择 | dsh-trivium | 常见默认 |
|---|---|---|
运行形态 | 进程内内核,单文件 .tdb | 独立服务 + 向量库 |
接口 | 4 个工具 + 会话图 UI | 往往更多 / 变动 |
默认注入 | 少(≤400 token 地图 + 可选芯片) | 每步自动灌 |
记忆结构 | 图(边一等公民) | 扁平片段 / 向量 |
会话情节 | 第三标签「会话图」:压缩方框 + 分叉 + 记忆芯片 | 无 / 另装工作台 |
人能改错 | JSON 真回写 + 可视化 + 芯片条 | 视实现 |
会话 A:用户说「记住,鉴权走 header X」,抽取或 ctx_remember 写入 preference,用 ctx_link 挂到实体 AuthGateway。会话 B:模型 ctx_find("鉴权") 命中,返回 L0 摘要 + 实体 path;ctx_read(id) 取全文和入边;find("AuthGateway") 还能打到正文里根本不出现该名的邻居。记忆在进程内的图里常驻,不在 prompt 里接力。
会话图那一侧:会话 A 聊得长、被 DSH 自动压过一次,标题栏「会话图」里就出现「历史方框 → 当前方框」;你点历史方框可以从那个检查点 fork 出一个子会话,画布上长出一条分叉。记忆在两层里各管各的,互不污染。

节点分实体 / 偏好 / 决策 / 经验四类(外加每个工作区恰好一个的 workspace 根);边是内置语义:about、decided、broke / fixed、same_as、in_workspace。图检索按实体摸到邻居,关系本身承载线索。
从 0.4.4 起底层换了 triviumdb@0.7.5,入边、按 label 扩邻、按 label 删边都走引擎 API,不再全表扫边——所以 ctx_find 的命中现在会带上入边路径(<-decided-12(先别动…)),ctx_read 也能看到谁 about / decided / fixed 过来,跨会话召回更准。

四工具从 0.3.0 到现在一行没加。会话图也不引入第五个工具——它只是在 UI 上多了一个标签和可选的记忆芯片,内核接口保持稳定。
三者互斥或并存都受控,默认全关(芯片也不全勾)。动态记忆走 agent.inject(),不写 system prompt,避免 persona.complete: true 把注入静默丢掉)。

入口:当前会话标题栏 对话 / 轨迹 / 会话图 的第三标签。这是情节图,不是记忆编辑器;改名、合并、全局开关仍走设置页。
方框
/compact。分叉
点方框上的分叉图标,走宿主的 session.fork:子会话出现在侧边栏,前缀(含当时已压的摘要)由 DSH 拷过去。有检查点时从那个检查点切开;只有「后续」时就从你点的方框连出去。在对话页用 DSH 自带 fork,切回会话图也能看到对应分支;侧边栏归档子会话后,图上分叉方框跟着消失。画布支持空白处拖动平移、滚轮缩放。
记忆芯片
会话图顶部可展开勾选,列出未归档的 preference / decision / entity(experience 不进芯片,避免太吵)。
操作 | 生效时机 |
|---|---|
勾上某条 | 当前这段里你再发的下一条带上它(L0,≤300 token) |
取消勾选 | 再下一轮不再带 |
新增 | 点一次写入一条;整段粘贴也是一条 |
选择 → 归档 | 软删除:find / 短地图 / 芯片不再出现,节点还在 .tdb |
选择 → 删除 | 从 .tdb 去掉,不可恢复 |
已经发出去的轮次 | 不回写 |
芯片按会话隔离;fork 出的子会话默认不继承钉选(分叉对话框可开「分叉时继承钉选」)。短地图仍 session-start 自动带,不占芯片位。建议标记只是提示,不会自动勾上。

Settings「Trivium 记忆」可搜、看邻居、改名改正文、合并同类型节点、归档删除。JSON 导入导出是真回写;Markdown 导出是只读投影(行如 - 鉴权走 header X —about→ AuthGateway),别拿它当回写格式。
会话图里也能在芯片条上直接新增、归档、删除条目——这是「即插即用」的热操作;更重的改名 / 合并 / 全局开关仍走设置页,避免把情节图画成记忆工作台。
如果你同时用 WorkBuddy,两边记忆可以一次性互通——但不是持续双向同步,只是单向迁移,之后各自演进。
方向一:WorkBuddy → dsh-trivium(严导入)
~/.workbuddy/MEMORY.md(用户级)或项目 .workbuddy/memory/MEMORY.md。.dsh/trivium.tdb。方向二:dsh-trivium → WorkBuddy(投影)
提醒:抽取与导入都偏严会漏,导入后建议扫一遍邻居、手动补
about边把偏好挂到正确实体上。
官方 DeepSeek chat API 没有 embeddings,也没有本地模型。你可填 OpenAI 兼容 URL 开远程向量化,但不开也能用:关键词 + 图遍历(BM25 退化路径)。调用失败只记日志,Agent 继续。这也是为什么默认不依赖向量——零向量时扩散 / 余弦本就没意义,退化成 payload 过滤 + 图遍历足够覆盖大多数命中场景。
不是工作台:无图谱画布编辑、无跨 Agent 共享、无 PDF/Zotero RAG。默认不自动召回——模型不调 ctx_find、也不勾芯片时,窗口里主要是开场短地图。抽取偏严会漏。同一 .tdb 别被两个 Node 进程同时打开。
会话图边界:它默认只投影 compaction 与 fork,不会按消息条数自己切方框;窗口没到 DSH 压缩线时,「更新检查点」也补不出历史方框,要分段请点「生成检查点」。改插件设置后需要重启 dsh web。
宿主升级注意:宿主升到 rc.8 之后,DSH 自己的旧会话库可能打不开(官方 SQLite 格式不兼容)。工作区里的 .tdb 图记忆还在;对不上号的旧会话图方框可以当情节残留,不影响 ctx_find。
重启 dsh web,打开工作区。别把本仓库拷进 DeepSeek_Harness——它是插件,不是补丁。用 Dsh_BatStart 的,双击启动就会装上。
dsh-trivium(0.4.6),MIT@deepseek-ai/dsh@0.1.1-rc.2(兼 0.1.0-rc.8)给已经在用 DSH 的人:无额外服务、默认少注入、图带边(含入边路径)、人能改错、会话图把压缩与分叉看得清清楚楚、装上就有跨会话记忆。dsh-trivium 0.3.0 —— 装上就有跨会话记忆,不另起服务
DSH 把「一切皆插件」做得干净,但原装运行时没有跨会话的图记忆.
dsh-trivium 就是为了补这一块的进程内内核:不是侧栏、不是工作台、不拷源码。它随 DSH 进程加载 TriviumDB,每个工作区一个文件 <workspace>/.dsh/trivium.tdb,不另起服务,安装即用
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。