dsh-memnexus:DSH 統一長期記憶中樞

前言

在 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 / 幻方無官方從屬關係。

核心功能

自動沉澱、蒸餾與召回

  1. 自動沉澱(L0):每輪對話結束,把該輪壓成結構化 L0 摘要(主題、用戶訴求、結論、決定、待辦、動作),不額外消耗對話 token。
  2. 自動蒸餾:積累若干條 L0 後調用默認模型(或配置的蒸餾模型)生成 L1 原子記憶,再合成 L2 場景摘要;distillDepth=3 時纔會重建 L3 用戶畫像。默認 distillDepth=2,在 L2 收手,減少過度抽象帶來的失真。
  3. 自動召回:每一步開始前用 BM25 與字符二元組模糊匹配的混合打分檢索記憶,將最相關條目注入 systemPrompt.context(有字符預算、按層配額、工作區隔離、來源標記);每步重算,不寫進會話歷史。
  4. 壓縮感知:會話觸發上下文壓縮(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 命令。

  1. 推薦:插件管理器安裝本地包
    在 DSH 中讓模型執行 plugin_manager 的 install_bundle,target 指向插件包根目錄的絕對路徑;或在 設置 → 插件管理 → 安裝本地包 選擇該目錄。

  2. 安裝 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 的長期記憶中樞來評估與試用。

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

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

小夜