前言¶
在 DeepSeek Harness(DSH)裏做長任務,常見問題是:會話一壓縮,前面的決定和待辦就難找;換機器或新開工作區,偏好和項目狀態又要重講一遍。社區裏已有多種記憶類插件,有的偏重本地沉澱與召回,有的做分層蒸餾,有的在 compaction 時留結構化摘要,還有 Hindsight 這類外部 bank 的橋接。dsh-memnexus(維護者 SMPcosy,當前版本 v0.0.5,MIT 許可)把這幾類能力收進一個包:本地 JSONL 持久化、L0~L3 分層蒸餾、壓縮事件摘要、可選 Hindsight 推拉,以及可視化記憶面板。下面介紹它做什麼、怎麼裝、怎麼配,以及使用時需要留意的邊界。
這是什麼¶
dsh-memnexus 是 DSH 的「記憶中樞」插件:在本地持久保存記憶,按層從對話原話逐步蒸餾到場景摘要與用戶畫像(層數可配),每步開始前按當前輸入檢索並注入相關條目,並在上下文發生 compaction 時把壓縮摘要額外存成 L0。模型還可通過 13 個 memory_* 工具讀寫記憶;需要與 Hindsight 對齊時,可配置 REST bank 的拉取與推送。
插件在 SkillHub 社區目錄分類爲「記憶」,GitHub 倉庫爲 SMPcosy/dsh-memnexus,目錄頁見 skillhub.cn/plugins/SMPcosy/dsh-memnexus。DSH 生態是「一切皆插件」;社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
核心功能¶
自動沉澱、蒸餾與召回¶
- 自動沉澱(L0):每輪對話結束,把該輪壓成結構化 L0 摘要(主題、用戶訴求、結論、決定、待辦、動作),不額外消耗對話 token。
- 自動蒸餾:積累若干條 L0 後調用默認模型(或配置的蒸餾模型)生成 L1 原子記憶,再合成 L2 場景摘要;
distillDepth=3時纔會重建 L3 用戶畫像。默認distillDepth=2,在 L2 收手,減少過度抽象帶來的失真。 - 自動召回:每一步開始前用 BM25 與字符二元組模糊匹配的混合打分檢索記憶,將最相關條目注入
systemPrompt.context(有字符預算、按層配額、工作區隔離、來源標記);每步重算,不寫進會話歷史。 - 壓縮感知:會話觸發上下文壓縮(compaction)時,把壓縮摘要額外留存爲 L0 場景記憶,便於長任務不斷線。
可視化面板與模型工具¶
面板提供側邊欄「記憶」圖標、1180px 整頁與設置頁嵌入三處入口:瀏覽、搜索、篩選、增刪改、歸檔、導入導出、一鍵蒸餾,以及 Hindsight 拉取/推送。窄窗下可「放大查看」全列表彈窗。
模型側工具包括:memory_remember、memory_search、memory_recall、memory_get、memory_update、memory_forget、memory_list、memory_stats、memory_distill、memory_lineage、memory_audit、memory_export、memory_import。其中 memory_lineage 用於追溯某條 L1/L2/L3 結論對應的原始 L0 記錄(依賴 sourceIds)。
Hindsight 橋接(可選)¶
讀取 ~/.hindsight/coding-agent.json(或環境變量 HINDSIGHT_CONFIG)中的 apiUrl、apiToken、bankId;也可在面板填寫。bank 留空時可按 bankId → bankIdTemplate → Hindsight 使用日誌裏最近的 bank 自動識別。未啓用時本地記憶功能照常;雲端後端需配置 apiToken,否則請求可能 401。
設計上的幾個取捨(摘自 README)¶
- 記憶存 JSONL,不引入 SQLite,便於備份與手改。
- 蒸餾失敗只記日誌,不阻塞已沉澱的 L0。
- 注入內容帶
source.kind: plugin:dsh-memnexus,捕獲時跳過,避免自我污染。 - L2 摺疊後若字數超過源文本 1.05 倍會拒收,避免「摘要比原文還長」。
安裝與啓用¶
安裝方式以倉庫 README 爲準,不要用憑名稱拼出的 dsh plugin add 命令。
-
推薦:插件管理器安裝本地包
在 DSH 中讓模型執行plugin_manager的install_bundle,target指向插件包根目錄的絕對路徑;或在 設置 → 插件管理 → 安裝本地包 選擇該目錄。 -
安裝 tgz 包
解壓dsh-memnexus-0.0.5.tgz,將解壓出的package目錄按方式 1 安裝。
裝完後重啓 DSH。設置頁出現「記憶」分區即表示加載成功。不要手工改 profile 的 package.json / cordis.patch.yml。修改宿主側 hooks、工具、路由後需重啓 DSH;客戶端半刷新頁面即可。
運行環境要求 Node.js >= 22(見 package.json 的 engines)。
數據與配置¶
存儲路徑¶
默認在 DSH 用戶目錄下(設置 DSH_HOME 時前綴隨之改變):
- 記憶:
~/.dsh/storages/dsh-memnexus/memories.jsonl - 配置:
~/.dsh/storages/dsh-memnexus/config.json - 導出:
~/.dsh/storages/dsh-memnexus/exports/
常用配置項¶
可在面板「設置」或直接編輯 config.json:
| 鍵 | 默認 | 說明 |
|---|---|---|
autoCapture |
true | 每輪結束寫 L0 |
autoRecall |
true | 每步前注入記憶 |
autoDistill |
true | 自動 L0→L3 蒸餾 |
captureMinChars |
60 | 內容過短不沉澱 |
captureMaxChars |
1200 | 單輪沉澱字符上限(200–6000) |
distillEvery |
8 | 攢夠多少條 L0 觸發蒸餾 |
distillDepth |
2 | 1/2/3 層,默認只到 L2 |
recallLimit / recallMaxChars |
8 / 1400 | 召回條數與字符預算 |
modelProvider / modelId |
空 | 蒸餾模型,空則跟隨默認模型 |
hindsight.enabled |
false | 啓用 Hindsight |
hindsight.pullOnStart |
false | 啓動時自動拉取 |
重要度 importance 爲 1~5,數字越大越重要(默認 2);召回主要按相關性排序,重要度在分數接近時起加分作用。蒸餾到 L3 時,importance>=3 會作爲強事實參與畫像重建。
從 0.0.x 升級:剪短歷史長 L0¶
舊版可能把長達 6000 字的整段轉寫存進 L0,單條即可佔滿默認召回預算。新版默認 captureMaxChars=1200,但歷史行不會自動變短。動手前建議先 GET /export?format=jsonl 備份,再使用包內腳本:
# 只讀統計,不修改
node scripts/trim-long-l0.mjs
# 截斷超長 L0 的 text(--max 默認 1200)
node scripts/trim-long-l0.mjs --apply
# 複驗
node scripts/trim-long-l0.mjs
截斷不可逆;腳本會把原始長度記在 rawChars 字段。
典型用法¶
在對話裏依賴自動鏈路¶
保持 autoCapture、autoRecall、autoDistill 爲 true(默認即可)時,正常多輪對話會自動寫 L0、按需蒸餾、每步注入相關記憶。長任務若發生 compaction,插件會把壓縮摘要額外寫入 L0。
用工具顯式操作¶
模型在合適時機可調用 memory_search / memory_remember 等工具;需要解釋「這條結論從哪來」時用 memory_lineage。導出備份可走 memory_export 或 HTTP GET /export?format=json|jsonl|md。
HTTP API(面板與外部腳本共用)¶
前綴 /api/dsh-memnexus,例如:GET /memories?q=&layer=&limit=&offset=、POST /op(create / update / delete / distill / import 等)、POST /hindsight/import 與 POST /hindsight/push。
維護者自測命令(離線)¶
在插件包目錄下,README 提供 smoke 與集成測試,不依賴 DSH 進程即可跑存儲與檢索等邏輯:
npm run test:all
發佈前維護者記錄:npm run test:all 全綠(2026-11-01 實測)。
適用場景與注意¶
適合誰:需要在 DSH 里長期保留項目決定、偏好與待辦,並希望少依賴「整段聊天記錄重貼」;願意接受默認 BM25+模糊檢索(非向量語義)的召回方式;可選與 Hindsight bank 同步的團隊或個人。
務必知曉:
- 插件以當前 DSH 進程權限運行,安裝前應自行查看 GitHub 源碼 與 MIT 許可證及
docs/引用與參考.md中的上游說明。 - 檢索無向量語義,跨語言同義改寫可能搜不到;與 compaction 類插件同場時,召回每步重算可能帶來 system prompt 前綴緩存抖動(README 路線圖 v0.1.0 提及召回穩定化)。
- 萬級記憶檢索約 10~60ms;十萬級會明顯變慢。
- 面板「刪除」爲物理刪除;日常清理建議用「歸檔」。
- Hindsight 推送可能寫入本地全部有效記憶,體量大時注意 bank 體積;雲端無 token 時推拉失敗,本地庫不受影響。
結尾¶
dsh-memnexus 把本地持久記憶、可配深度的 L0~L3 蒸餾、compaction 摘要留存、pre-step 召回、13 個 memory 工具與可選 Hindsight 橋接、以及三入口可視化面板放在同一插件裏,適合作爲 DSH 的長期記憶中樞來評估與試用。
- 社區目錄:https://www.skillhub.cn/plugins/SMPcosy/dsh-memnexus
- 源碼與完整配置、路線圖、遷移說明:https://github.com/SMPcosy/dsh-memnexus