前言¶
在 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 爲準。