首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >用 dsh-trivium 给 DeepSeek Harness 补上跨会话图记忆

用 dsh-trivium 给 DeepSeek Harness 补上跨会话图记忆

原创
作者头像
晨星成焰
修改2026-08-23 17:04:54
修改2026-08-23 17:04:54
1780
举报
文章被收录于专栏:AI开发相关AI开发相关

dsh-trivium 0.4.6 —— 装上就有跨会话记忆 + 会话图,不另起服务

DSH 把「一切皆插件」做得干净,但原装运行时没有跨会话的图记忆,也没有把一次长会话的压缩与分叉画出来

dsh-trivium 就是为了补这两块而存在的进程内内核:不是侧栏、不是工作台、不拷源码。它随 DSH 进程加载 TriviumDB,每个工作区一个文件 <workspace>/.dsh/trivium.tdb不另起服务,安装即用。从 0.3.0 到 0.4.6,它从「四个工具 + 一张短地图」长成了「记忆内核 + 会话图」两层结构——记忆负责跨会话,会话图负责把当前这次对话的脉络看清楚。


1. 为什么不另起服务

很多方案默认「再跑一个服务 + 向量库」,带来端口、进程、运维三件套。dsh-trivium 在 DSH 进程里直接持有内存图,退出时落盘到 .dsh/trivium.tdb。一个工作区一个文件,git 也能跟着走。

请在此添加图片描述
请在此添加图片描述

设计选择

dsh-trivium

常见默认

运行形态

进程内内核,单文件 .tdb

独立服务 + 向量库

接口

4 个工具 + 会话图 UI

往往更多 / 变动

默认注入

少(≤400 token 地图 + 可选芯片)

每步自动灌

记忆结构

图(边一等公民)

扁平片段 / 向量

会话情节

第三标签「会话图」:压缩方框 + 分叉 + 记忆芯片

无 / 另装工作台

人能改错

JSON 真回写 + 可视化 + 芯片条

视实现


2. 一次完整回路

会话 A:用户说「记住,鉴权走 header X」,抽取或 ctx_remember 写入 preference,用 ctx_link 挂到实体 AuthGateway。会话 B:模型 ctx_find("鉴权") 命中,返回 L0 摘要 + 实体 path;ctx_read(id) 取全文和入边;find("AuthGateway") 还能打到正文里根本不出现该名的邻居。记忆在进程内的图里常驻,不在 prompt 里接力。

会话图那一侧:会话 A 聊得长、被 DSH 自动压过一次,标题栏「会话图」里就出现「历史方框 → 当前方框」;你点历史方框可以从那个检查点 fork 出一个子会话,画布上长出一条分叉。记忆在两层里各管各的,互不污染。

请在此添加图片描述
请在此添加图片描述

3. 图模型

节点分实体 / 偏好 / 决策 / 经验四类(外加每个工作区恰好一个的 workspace 根);边是内置语义:aboutdecidedbroke / fixedsame_asin_workspace。图检索按实体摸到邻居,关系本身承载线索。

从 0.4.4 起底层换了 triviumdb@0.7.5,入边、按 label 扩邻、按 label 删边都走引擎 API,不再全表扫边——所以 ctx_find 的命中现在会带上入边路径<-decided-12(先别动…)),ctx_read 也能看到谁 about / decided / fixed 过来,跨会话召回更准。

请在此添加图片描述
请在此添加图片描述

4. 四个工具,没有第五个,最简化操作

四工具从 0.3.0 到现在一行没加。会话图也不引入第五个工具——它只是在 UI 上多了一个标签和可选的记忆芯片,内核接口保持稳定。


5. 默认少注入:窗口更静

  • session-start 地图(默认开):开头只灌 ≤400 token 的短地图(实体数、偏好数、决策数 + 几个名字),逼模型用工具下钻。
  • autoRecall / 实体名折中(默认关):含直接用户文本时最多灌 3 条 L0,或话里出现实体名才灌 1 跳邻居。
  • 记忆芯片(可选):在会话图顶部勾选,从你发的下一条起钉进当前会话,单会话预算 ≤300 token,与上面三者并存、优先占预算。

三者互斥或并存都受控,默认全关(芯片也不全勾)。动态记忆走 agent.inject(),不写 system prompt,避免 persona.complete: true 把注入静默丢掉)。

请在此添加图片描述
请在此添加图片描述

6. 会话图:把压缩与分叉画出来

入口:当前会话标题栏 对话 / 轨迹 / 会话图 的第三标签。这是情节图,不是记忆编辑器;改名、合并、全局开关仍走设置页。

方框

  • 没压过上下文:只有一个「后续」方框。
  • 一次成功的 compaction 之后:左边历史检查点(摘要来自 DSH),右边仍是「后续」。
  • 点「生成检查点」:把当前「后续」收成左边一格,只切情节图、不触发 DSH 压缩;同一轮次再点不会双写。
  • 装插件之前已经压过 / 分过叉的旧会话:点「更新检查点」,从对话里的压缩标记和侧边栏分叉补方框(可重复点、幂等)。会话长、工具多不等于 DSH 已经压缩(默认约窗口 80% 才自动压);要分段请点「生成检查点」或对话里输入 /compact
  • 方框自己不压缩,质量来自 DSH 已经做的摘要替换;fork 时不会再总结一遍。
  • 「改名」只改方框标题,不动 DSH 摘要。点方框可跳回对话里对应的检查点,或打开轨迹。

分叉

点方框上的分叉图标,走宿主的 session.fork:子会话出现在侧边栏,前缀(含当时已压的摘要)由 DSH 拷过去。有检查点时从那个检查点切开;只有「后续」时就从你点的方框连出去。在对话页用 DSH 自带 fork,切回会话图也能看到对应分支;侧边栏归档子会话后,图上分叉方框跟着消失。画布支持空白处拖动平移、滚轮缩放。

记忆芯片

会话图顶部可展开勾选,列出未归档的 preference / decision / entity(experience 不进芯片,避免太吵)。

操作

生效时机

勾上某条

当前这段里你再发的下一条带上它(L0,≤300 token)

取消勾选

再下一轮不再带

新增

点一次写入一条;整段粘贴也是一条

选择 → 归档

软删除:find / 短地图 / 芯片不再出现,节点还在 .tdb

选择 → 删除

从 .tdb 去掉,不可恢复

已经发出去的轮次

不回写

芯片按会话隔离;fork 出的子会话默认不继承钉选(分叉对话框可开「分叉时继承钉选」)。短地图仍 session-start 自动带,不占芯片位。建议标记只是提示,不会自动勾上。

会话图 — 对话 / 轨迹旁的第三标签
会话图 — 对话 / 轨迹旁的第三标签

7. 人能自我纠正改错

Settings「Trivium 记忆」可搜、看邻居、改名改正文、合并同类型节点、归档删除。JSON 导入导出是真回写;Markdown 导出是只读投影(行如 - 鉴权走 header X —about→ AuthGateway),别拿它当回写格式。

会话图里也能在芯片条上直接新增、归档、删除条目——这是「即插即用」的热操作;更重的改名 / 合并 / 全局开关仍走设置页,避免把情节图画成记忆工作台。


8. 能和 WorkBuddy MEMORY.md 互导

如果你同时用 WorkBuddy,两边记忆可以一次性互通——但不是持续双向同步,只是单向迁移,之后各自演进。

方向一:WorkBuddy → dsh-trivium(严导入)

  1. 在 Settings 选「从 MEMORY.md 导入」,指向 ~/.workbuddy/MEMORY.md(用户级)或项目 .workbuddy/memory/MEMORY.md
  2. 导入器跳过闲聊、一次性改文件记录、密钥、无线索段落;只留可作实体 / 偏好 / 决策的条目。
  3. 限写保护:每批正文 ≤3000 字、最多 24 条。
  4. 导入后导出 JSON 校验,节点与边确实落进 .dsh/trivium.tdb

方向二:dsh-trivium → WorkBuddy(投影)

  1. 用 Settings「Markdown 导出」拿到只读投影。
  2. 把需要的条目整理进 WorkBuddy 的 MEMORY.md——这是人读格式,不是回写格式,别直接当反向导入。要真回写请走 JSON 导出再合并。

提醒:抽取与导入都偏严会漏,导入后建议扫一遍邻居、手动补 about 边把偏好挂到正确实体上。


9. 可选远程 embedding(默认关)

官方 DeepSeek chat API 没有 embeddings,也没有本地模型。你可填 OpenAI 兼容 URL 开远程向量化,但不开也能用:关键词 + 图遍历(BM25 退化路径)。调用失败只记日志,Agent 继续。这也是为什么默认不依赖向量——零向量时扩散 / 余弦本就没意义,退化成 payload 过滤 + 图遍历足够覆盖大多数命中场景。


10. 限制

不是工作台:无图谱画布编辑、无跨 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 的,双击启动就会装上。

  • 仓库:github.com/QWQcool/dsh-trivium
  • npm: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 删除。

目录
  • 1. 为什么不另起服务
  • 2. 一次完整回路
  • 3. 图模型
  • 4. 四个工具,没有第五个,最简化操作
  • 5. 默认少注入:窗口更静
  • 6. 会话图:把压缩与分叉画出来
  • 7. 人能自我纠正改错
  • 8. 能和 WorkBuddy MEMORY.md 互导
  • 9. 可选远程 embedding(默认关)
  • 10. 限制
  • 装上试试
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档