前言¶
在 DeepSeek Harness(DSH)裏給 agent 加「記憶」,常見做法是向量庫做相似檢索、把對話歷史堆進上下文,或用一個簡單的 key-value 表。這些方式要麼不會隨時間變弱,要麼上下文一滿就整段丟掉,也沒有「被線索喚起」而不是精確查詢的行爲。
dsh-memory 是社區維護者 Soulmate793 發佈的 DSH 插件(分類:記憶),把遺忘、鞏固、線索召回、分區隔離等機制做成可運行的本地存儲,數據默認只落在本機目錄,無第三方 npm 依賴。下面介紹它解決什麼問題、如何安裝,以及七個記憶工具的典型用法。
這是什麼¶
插件全名在倉庫中爲 dsh-memory(GitHub:Soulmate793/dsh-memory),當前 package 版本 1.1.0,許可證 MIT。簡介概括爲:Human-like memory plugin for DeepSeek Harness——艾賓浩斯式衰減、睡眠鞏固、記憶分區、哈希鏈審計;純本地、零外部依賴。
與「只增不減的向量庫」或「無限增長的對話日誌」相比,它強調:記憶有強度會衰減;被回憶會略作強化;空閒時可合併情節並升格爲語義記憶;召回依賴線索詞重疊而非精確匹配;自我、關係、情節等七個分區各有衰減與隱私策略(隔離區 vault 默認不參與召回)。
核心功能¶
記憶行爲¶
| 機制 | 說明 |
|---|---|
| 艾賓浩斯遺忘 | 強度按指數曲線衰減;重要度、情緒越高,衰減越慢 |
| 提取強化 | 每次被 memory_recall 命中,基礎強度回補,並更新訪問時間 |
| 睡眠鞏固 | memory_consolidate 對情節記憶聚類合併、去重,高價值條目升格爲語義記憶 |
| 線索依賴召回 | IDF 加權特徵重疊,並結合強度、近因、重要度與分區權重打分;無詞重合則不會返回 |
| 工作記憶 | 最近消息的環形緩衝,過期丟棄,不寫入長期庫 |
v1.1 相關能力(README 標註)¶
- 記憶分區:
self/relationship/episodic/semantic/life/learning/vault,各區獨立衰減、檢索權重與隱私策略 - 關係臺賬:爲對話對象維護
relationships.json,可按人注入 - 固定記憶:
memory_pin將關鍵記憶設爲不遺忘(文檔在「新增能力」中列出) - 情緒與性格:8 維情緒與性格成長,支持
emotion_set(可選模塊) - 容量:配置
maxItems: 500000,環境變量MEMORY_MAX_ITEMS可覆蓋 - 鎖自愈:異常退出留下的殭屍鎖會被自動清理
審計與可選模塊¶
每次寫入、更新、遺忘會向 Ed25519 簽名的哈希鏈追加事件;memory_chain_verify 可校驗鏈連續性與和 memory.json 的對賬。可選文件包括情緒、性格、人物畫像、學習庫、語義向量、聯想圖等,均位於同一 dataDir。
安裝與啓用¶
環境要求:Node.js >= 20,倉庫聲明無第三方 npm 依賴。
方式一:作爲 DSH bundle 安裝(README 推薦)¶
將倉庫放到本機絕對路徑後,通過插件管理器安裝 bundle(路徑需替換爲你的實際目錄):
plugin_manager(action: "install_bundle", target: "<絕對路徑>/dsh-memory-plugin")
安裝後重啓 DSH,agent 會獲得 7 個記憶相關工具。
方式二:手動放進 profile¶
- 把倉庫目錄加入 profile 的 bundle 列表
- 在
cordis.patch.yml中啓用memory行(可參考倉庫自帶 patch) - 重啓 DSH
配置片段¶
在 cordis.patch.yml 中插件註冊示例:
- insert:
- id: memory
name: 'dsh-memory'
config:
memory:
dataDir: '' # 留空 = ~/.dsh/qq-memory
maxItems: 500000 # 容量上限,超出按強度淘汰
recallLimit: 8 # 默認召回條數
includeVault: false # 默認不讀取隔離區
環境變量 MEMORY_DIR 可覆蓋 dataDir。
典型用法¶
數據默認在 dataDir(留空時爲 ~/.dsh/qq-memory/),主要文件包括 memory.json、memory-chain.jsonl 及鏈相關密鑰文件;插件僅讀寫該目錄,README 說明無網絡請求。
下面示例來自倉庫 README,展示記住偏好、按線索回憶、分區查詢、鞏固與審計:
# 記住一個偏好
memory_remember({
text: "她喜歡下雨天,討厭香菜",
kind: "semantic",
importance: 0.7,
tags: ["preference"],
zone: "relationship"
})
# 按場景回憶
memory_recall({ query: "她喜歡什麼天氣", limit: 5 })
# 只在自我區回憶
memory_recall({ query: "我是誰", zone: "self" })
# 讀取隔離區(需顯式允許)
memory_recall({ query: "暗號", zone: "vault", include_vault: true })
# 空閒時鞏固
memory_consolidate()
# 審計
memory_chain_verify()
常用工具還包括 memory_stats(庫統計)、memory_zones(分區統計)、memory_forget(軟刪除,鏈上留痕)。參數細節見倉庫 docs/tools.md。
適用場景與注意¶
適合誰:希望在 DSH 裏做長期、可衰減、可分區、可本地審計的 agent 記憶,且不接受默認「全量向量檢索 + 永不忘」模型的開發者。
運行與信任邊界:插件以當前 DSH 進程權限讀寫本地文件;安裝前請自行查看源碼與 MIT 許可證。memory-chain-key.pem 丟失後無法驗證歷史鏈,README 建議備份。隔離區目前策略爲默認不召回,路線圖提及未來可能增加加密存儲,當前並非加密 vault。
共享與上限:同一機器、同一 dataDir 可在多 agent/會話間共享;多進程寫入有文件鎖。超過 maxItems 時按強度淘汰最弱條目。重啓 DSH 不會清空已持久化記憶。
社區目錄頁(與 DeepSeek / 幻方無官方從屬關係):skillhub.cn 插件頁。源碼與完整設計文檔:GitHub 倉庫。