dsh-memory-v2:面向 DSH 的本地長期記憶插件

前言

在 DeepSeek Harness(DSH)裏做多輪對話或智能體開發時,上下文窗口會截斷較早內容,重啓後也難以延續「用戶偏好」「已達成結論」之類信息。常見做法是每次把整段歷史塞進 prompt,成本高,也難區分該記什麼、該忘什麼。社區插件 dsh-memory-v2 把結構化記憶、對話原文情景、溯源索引和鞏固狀態放在用戶本機的 DSH 數據目錄,由調用方通過工具接口讀寫,並支持可選語義召回與按會話分庫。

這是什麼

dsh-memory-v2 是 Yanlrx 維護的 DSH 本地長期記憶插件(當前 package 版本 0.3.1,MIT 許可證)。數據默認落在 ~/.dsh/storages/dsh-memory/,不會在插件內綁定賬號、人名或聊天平臺。倉庫說明:本插件會在本地明文保存對話原文和提取後的記憶,使用前請閱讀倉庫中的 PRIVACY.md。

目錄頁:https://www.skillhub.cn/plugins/Yanlrx/dsh-memory-v2
源碼:https://github.com/Yanlrx/dsh-memory-v2

核心能力

記憶模型與召回

插件維護四類記憶集合:語義、結論、畫像、臨時。無關查詢默認不召回;若存在衝突記憶,僅在直接命中相關項時成對返回。memory_recall 默認最多返回 2 條,複雜問題最多 4 條。

可選語義召回依賴 @xenova/transformers,且需在插件目錄 models/bge-small-zh/ 自備本地模型,代碼不會自動從遠程下載。

情景原文與溯源

情景按日保存對話原文。每個情景段使用唯一 segmentId,減輕 Markdown 標題或同分鍾多輪帶來的溯源歧義。memory_trace 可按字面從情景庫溯源。

超長內容按 8000 字無損分塊,支持跨日、進程重啓後繼續處理,並支持重複 ACK。

兩階段鞏固

讀取原文後不會立刻清理候選;調用方應在把需要長期保留的內容寫入後,通過 memory_consolidate 回傳 ackToken 完成鞏固,也可顯式放棄本次租約。插件校驗令牌,但是否已完成所需寫入由調用方負責。ACK 與放棄終態相關日誌最多保留最近 1000 項。

候選工作集保留最新 50 條,同時按日追加完整審計日誌。

可靠性與分庫

實現跨進程寫鎖、陳舊鎖恢復和多文件事務恢復。存儲根目錄會出現 .memory-v2.lock、.memory-v2-transaction.json、.memory-v2-tx/ 等文件;插件運行或故障恢復期間不要手動刪除。

可選按會話分庫:無分庫配置時,具備有效會話 ID 的會話讀寫主庫;缺少會話 ID 時失敗關閉。可在 ~/.dsh/dsh-memory-v2-config.json 中用 會話歸屬 把會話 ID 映射到隔離分庫;未映射會話的行爲受 未映射會話寫入待認領 等字段控制。分庫目錄名由規範化短標識與 SHA-256 摘要共同生成。配置損壞時首次加載會失敗關閉;運行中配置暫時不可用時會保留最近一次有效配置,不會悄悄回落主庫。

從 0.3.0 升級到 0.3.1 時,舊版分庫目錄命名規則不同,檢測到舊分庫會失敗關閉且不自動改名,需先備份並人工覈對歸屬後再遷移(README 有說明)。

安裝與啓用

需要 Node.js 20 或更高版本。安裝步驟以倉庫 README 爲準:

1、安裝依賴:

npm install --omit=optional

2、將本目錄放入 DSH profile 的 node_modules/dsh-memory-v2,或使用 DSH 支持的本地插件安裝方式。

3、把 cordis.patch.yml 加入對應 profile 的 bundle 配置。

4、重啓 DSH。

DSH 生態習慣「一切皆插件」;SkillHub 等爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。插件以當前 DSH 進程權限運行,安裝前請自行審閱源碼與許可證。

插件配置

cordis.patch.yml 默認隱私優先:

語義召回: false
診斷日誌: false
啓用敏感調試路由: false
啓用全局主庫工具: false
  • 診斷日誌:開啓後也不記錄消息正文、會話 ID 或 RPC 標識。
  • 啓用敏感調試路由:開啓後 /memory-v2/candidates 會返回候選記憶正文,僅適合受信本地環境。
  • 啓用全局主庫工具:只有明確的單用戶部署才應開啓;多用戶分庫應使用會話專屬工具。

會話與分庫示例(完整字段見倉庫 config.example.json):

{
  "會話白名單": [],
  "排除會話": [],
  "會話歸屬": {
    "session-example-a": "alice",
    "session-example-b": "bob"
  },
  "排除歸屬": [],
  "未映射會話寫入待認領": true
}

請勿將真實會話 ID 提交到版本庫。

典型用法:暴露的工具

DSH 側通過插件註冊的工具與記憶交互,README 列出四類:

工具 作用
memory_write 寫入、替代或標記衝突記憶
memory_recall 按查詢召回記憶(條數上限見上文)
memory_trace 從情景庫按字面溯源
memory_consolidate 兩階段讀取、ACK 鞏固與顯式放棄租約

典型流程可以是:對話結束後由上層邏輯調用 memory_write 沉澱結論或畫像;新會話開始時用 memory_recall 拉取相關條目;需要覈對出處時用 memory_trace;處理完鞏固流程後向 memory_consolidate 提交 ackToken 或放棄租約。

本地數據佈局

默認存儲位於 ~/.dsh/storages/dsh-memory/:

當前/     結構化 JSON
情景/     按日保存的對話原文
舊版/     壓縮快照
鏡像/     人類可讀備份
日誌/     索引、鞏固租約、寫入日誌和候選審計

這些目錄可能含敏感信息,不應進入 Git。開發或驗收時可運行:

npm test
npm run privacy:check
npm run privacy:check:artifact

適用場景與注意

適合需要在單機、自管數據前提下爲 DSH 智能體增加可審計長期記憶的場景;多用戶或共享主機應優先配置會話分庫,並謹慎開啓全局主庫工具與敏感調試路由。

若需要語義相似度召回,需額外安裝可選依賴並在本地準備 BGE 中文小模型;默認關閉語義召回時僅依賴結構化召回與字面溯源邏輯。

維護者提供的安全與貢獻說明見倉庫 CONTRIBUTING.md、SECURITY.md。

結尾

dsh-memory-v2 把長期記憶的存儲、召回、溯源和鞏固拆成本地可配置流水線,並強調隱私默認與分庫隔離。進一步瞭解可先打開 SkillHub 目錄頁,實現細節與升級說明以 GitHub 倉庫 README 爲準。

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

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

小夜