前言¶
用 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 / 幻方無官方從屬關係。