前言¶
用 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.2(dsh-llm/dsh-toolspeers 也接受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 / 幻方无官方从属关系。