dsh-trivium:DeepSeek Harness 的进程内图记忆插件

前言

用 DeepSeek Harness(DSH)开发智能体时,一个常见的麻烦是记忆不跨会话:这个会话里确认过的决策、偏好和实体关系,下个会话就没了。常见的补法是外挂向量库或独立记忆服务,但多一个进程就多一份部署和运维成本。

dsh-trivium 的做法是把图记忆做成 DSH 插件,随 dsh web 进程一起加载,每个工作区一个 .tdb 文件,不引入 sidecar 服务。DSH 的理念是「一切皆插件」,这个插件把记忆能力收敛成四个工具和一套克制的注入策略。下面介绍它的定位、功能、安装与注意事项。

这是什么

dsh-trivium 是 QWQcool 维护的开源插件,属于记忆类,定位是「In-process graph memory for DeepSeek Harness, backed by TriviumDB」:基于 TriviumDB 的进程内图记忆。它只存节点和边,尽量少注入,并允许人工纠错。

版本与依赖信息如下:

  • 插件版本:0.4.16
  • 许可证:MIT
  • 依赖:triviumdb ^0.8.4(向量 + JSON payload + 有向加权图)
  • Node 要求:^22.19.0 || >=24
  • 测试宿主:@deepseek-ai/dsh@0.1.1-rc.2dsh-llm / dsh-tools peers 也接受 0.1.0-rc.8

核心功能

跨会话图记忆

节点分四类:entity / preference / decision / experience;业务边为 about / decided / broke / fixed。会话 A 存下的事实,会话 B 查询时能带着关联一起取回。

默认安静

新会话只注入一张短图(≤400 tokens),模型需要更多时按需调用工具,不会每步倾倒内容。首轮短图每会话只注入一次,若 session-start 与首个模型步骤竞态失败,由 pre-step 补上;不做每步重写,对前缀缓存友好。

只提供四个工具

ctx_find / ctx_read / ctx_remember / ctx_link。开启 Chips 或 Session layer 也不会增加第五个工具。

注入与召回

短图通过 agent.inject() 注入而非系统提示词,因此 persona.complete: true 不会丢掉短图。每条召回携带路径:命中来自哪个节点、沿哪条边。

Chips 记忆白名单与 Session layer

Chips 默认关闭。在 Settings 开启后标题栏显示 Chips 标签,勾选项固定注入下一轮(L0,≤300 tokens),chips 可添加、归档、删除。Session layer 同样默认关闭,开启后可将压缩/分叉绘制为框图。

人工可编辑

Settings 中可搜索、重命名、合并、导入/导出。

严格抽取与写入卫生

闲聊、一次性文件编辑和密钥不会自动从对话记录写入。ctx_remember、chip add、extract、外部导入都会经过写入卫生门,拒绝乱码、口吃循环、JSON 信封、base64 残留与密钥。

可选 embedding

默认关闭。官方 DeepSeek chat API 没有 embeddings 端点;需要向量召回可填 OpenAI 兼容 URL。不开启时,关键词 + 图遍历仍然可用。

Git sidecar

默认关闭,trivium.jsonl 作为业务事实的 git 源,开启后可 Generate / 删除 jsonl。

其他

  • 失败不阻塞代理:存储、embedding、抽取错误只记日志,主循环继续。
  • 界面跟随宿主语言(zh / en)。

安装与启用

前提是已安装 DeepSeek Harness 并至少启动过一次 dsh web。运行:

dsh plugin --profile web add dsh-trivium

重启 dsh web,打开一个工作区。Settings 会显示 Trivium memory,Chips 标签默认关闭。若你用 Dsh_BatStart 启动 DSH,插件已自动安装,可跳过这条命令。

安装后,数据落在以下位置:

<workspace>/.dsh/trivium.tdb           # 本地索引,二进制,需 gitignore
<workspace>/.dsh/trivium.jsonl         # 业务事实,git 源
~/.dsh/trivium.json                    # 设置与 chip pins,可能包含手输的 embedding API key
<workspace>/.dsh/trivium-pending.json  # 抽取失败时的本地队列

本地源码调试则按下面两步走,然后重启 dsh web

npm install
node scripts/link-dsh.mjs

典型用法

跨会话存取

会话 A 中存储 “auth goes in header X”;会话 B 调用 ctx_find("auth"),得到命中及其 about / decided / broke / fixed 关联。

Git 协作

提交 trivium.jsonl,在 .gitignore 中忽略二进制文件:

.dsh/trivium.tdb
.dsh/trivium.tdb*
.dsh/trivium-pending.json

禁用但不卸载

数据保留。在该 profile 的 cordis.patch.yml 添加:

- id: dsh-trivium
  disabled: true

然后重启 dsh web

更新与卸载

更新:再次运行 dsh plugin --profile web add dsh-trivium 并重启 dsh web;源码方式则 git pull 后重新运行 node scripts/link-dsh.mjs。更新不会清空记忆,已提交的 trivium.jsonl 可用 git checkout 恢复。

卸载:先停 dsh web,再运行:

dsh plugin --profile web remove dsh-trivium

卸载会删除 ~/.dsh/trivium.json,以及插件打开过的每个工作区中的 trivium.tdb / trivium.jsonl / trivium-pending.json.dsh/ 下的其他文件保留。

适用场景与注意

适合在 DSH 上做长期项目、需要跨会话记住决策与实体关系、又不想为记忆单独部署服务的开发者。

使用前注意:

1、插件加载在当前 dsh web 进程内,以当前进程的权限运行。安装前应检查源码与许可证(MIT)。

2、不要用两个 Node 进程同时打开同一个 .tdb

3、网络默认关闭:聊天文本不外发,抽取与搜索在本机执行。仅在你开启 embedding 并填入 URL 后才会外发;Settings 的 Check for updates 只取 npm registry 的版本号,不含对话内容。

4、~/.dsh/trivium.json 可能包含你手输的 embedding API key,注意保管。

结尾

dsh-trivium 把跨会话记忆收敛为一个进程内文件、四个工具和一套克制的注入策略:默认安静、可人工纠错、失败不阻塞主循环。如果你在 DSH 上需要记忆能力又不想引入额外服务,可以一试。

  • GitHub:https://github.com/QWQcool/dsh-trivium
  • 目录页:https://www.skillhub.cn/plugins/QWQcool/dsh-trivium

skillhub.cn 为社区维护的插件目录,与 DeepSeek / 幻方无官方从属关系。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜