前言¶
在 DeepSeek Harness(DSH)裏做長篇角色扮演或陪伴對話時,常見做法是把整段聊天記錄塞進上下文,或靠模型自己「記住」——前者很快撞 token 上限,後者又容易把推斷當成原話、把矛盾的兩條說法同時當真。社區插件生態裏,記憶類擴展各自取捨:有的偏檢索庫,有的偏會話摘要。
下面介紹維護者 Tkingxiao 發佈的 dsh-memu-memory(npm 包名同插件名,當前版本 1.2.4,MIT 許可證)。它面向長篇 RP 與陪伴場景,默認本地優先:記憶由 agent 寫入、後臺整理,注入時有預算與來源約束,並對「不確定的事」在數據模型裏寫清楚,而不是堆成一本無差別的日誌。
這是什麼¶
dsh-memu-memory 是 DSH 的記憶類插件,在 SkillHub 社區目錄 歸類爲「記憶」。SkillHub 是社區維護的插件索引,與 DeepSeek / 幻方無官方從屬關係;DSH 本身遵循「一切皆插件」的擴展方式。
一句話定位:按文件夾共享記憶庫、按對話綁定策略,完整正文落在本機 JSON 索引裏;默認 agent 後端用詞法召回,不依賴 Python、embedding 或 API key。可選 api 後端才接入鎖定版本的 MemU 向量引擎——MemU 是「想要再用」的後端,不是啓動前提。
環境要求(來自官方 README):
| 項 | 要求 |
|---|---|
| DSH | >=0.2.0-rc.1(web profile) |
| Node.js | >=20.9 |
| 可選向量引擎 | 僅在選擇向量後端時需要 Python 3.11+ |
官方標註本插件仍爲早期軟件,升級前建議備份 ~/.dsh/dsh-memu-memory,並閱讀倉庫內兼容性與邊界說明。
核心功能¶
以下能力均可在 GitHub README(含中文版) 與 docs/ 中核對。
三層留存與有預算的召回¶
- short_term:草稿層,默認約 72 小時過期。
- long_term:日常記憶主體。
- must_remember:需理由與來源,按 365 天衰減並有強度下限,可邊緣化,但不會爲騰位置被自動刪掉。
新會話或上下文壓縮後的第一個用戶回合會注入錨點塊(pin / core / global 分段預算);之後每個用戶回合最多一次召回。去重與 token 預算由插件代碼執行。注入側多爲「標題卡」(標題、id、語義標籤),正文留在 WebUI 抽屜裏,或通過 memu_private_recall / memu_global_recall 按需讀取,避免把模型沒問到的長文整段貼進提示詞。
來源、矛盾與邊界¶
每條記憶攜帶 source(如 user_said、inferred、imagined、told)、置信度與說出口徑;模糊的推斷不能冒充引語。與已有條目衝突的改寫進入 pending_review,不注入、不自動召回,等人或整理作業裁決。
context 作用域(channelId / characterId / worldId / branchId)劃分同一文件夾內的知情邊界;secret 可見性阻止自動注入,但同文件夾內主動檢索仍可讀到——擋的是「自己冒出來」,不是加密保險箱。磁盤上的正文與附件默認不加密,敏感內容需自行評估風險。
關係圖、詞表與後臺整理¶
整理在種子 fork 子會話中運行,不在你的待發區多出一輪。關係邊帶證據;圖譜使用本地打包的 D3,佈局不推斷新關係。私有詞表在整理中提取穩定術語;近乎相同的記憶會合並召回席位。
可選 MemU 引擎安裝後,memoryBackend="api" 才走向量檢索;僅安裝引擎不會自動開啓向量,還需配置 vectorSource 等項(詳見 設置 → MemU → 引擎與連接)。
MemU WebUI¶
安裝並在 web 宿主重啓後,設置 → MemU 與右側欄 MemU WebUI 提供記憶牆、文件夾策略、注入預算、統計、關係圖、複覈池與導入導出等。深鏈示例:#/settings/memories、#/settings/folders。
Agent 工具(節選)¶
主對話 agent 通過工具讀寫私有記憶;全局記憶由獨立 curator 生產,主 agent 沒有全局寫入工具。
| 工具 | 作用 |
|---|---|
memu_private_remember |
寫私有記憶(來源、留存層、標籤、附件引用等) |
memu_private_recall |
自然語言或精確 id 召回 |
memu_private_list / memu_private_update / memu_private_archive |
列表、編輯、歸檔 |
memu_global_recall / memu_global_list |
按 domain 讀全局記憶 |
memu_status |
存儲健康、同步與召回狀態 |
數據默認目錄爲 ~/.dsh/dsh-memu-memory/(可用 $DSH_MEMU_MEMORY_HOME 覆蓋),私有正文在 index/<libraryId>.json,可選向量層在 libraries/*.sqlite3(加速用,不是唯一真相源)。
安裝與啓用¶
插件以當前 DSH 進程權限運行,安裝前請自行審閱 源碼與 LICENSE,確認可接受的數據落盤與可選網絡行爲(默認記憶操作無外部請求;可選引擎安裝、embedding、遠程總結或視覺端點纔可能出站)。
方式一 — npm(推薦)¶
在終端執行:
dsh plugin --profile web add dsh-memu-memory
dsh web
若 profile 不是 web,將命令中的 web 換成你的 profile 名。較舊 CLI 也支持:
dsh plugin add dsh-memu-memory
安裝或更新後重啓宿主。插件出現在 設置 → MemU,右側欄出現 MemU WebUI。
方式二 — npx(不全局安裝 DSH CLI)¶
npx @deepseek-ai/dsh plugin --profile web add dsh-memu-memory
npx @deepseek-ai/dsh web
可選 — MemU 向量引擎¶
默認 agent 後端無需此步。需要時在 WebUI 引擎與連接 安裝,或運行:
npx --package dsh-memu-memory dsh-memu-memory-setup
安裝器將鎖定版本 memu-cli==0.11.0b3 放入 ~/.dsh/dsh-memu-memory/engine/ 下的私有 venv,不修改系統 Python。隨後在設置裏把 memoryBackend 設爲 "api" 並配置向量來源。
典型用法¶
經過上面的安裝與重啓,可按官方「第一次使用」流程操作:
- 從右側欄打開 MemU WebUI(或 設置 → MemU)。
- 新會話會詢問是否啓用記憶:僅私有 / 僅全局 / 私有+全局 / 不用;勾選「記住我的選擇」後不再重複詢問。
- 在 文件夾 頁可設文件夾級上限(禁止私有或全局);文件夾策略是上限,會約束其中各對話的開關。
- 正常對話即可:私有記憶由 agent 通過
memu_private_remember等工具寫入;你在 MemU 記憶 牆審閱、編輯、歸檔或導出。
長回合中若第三方工具通過 ToolResult.meta.memoryInbound 上報外部用戶消息,插件可在同一 turn 內做有預算的增量召回;也可在進程內調用 dsh-memu-memory/integration 的 ingestInboundBatch。協議字段與配額見 README「長工具回合中的外部消息」一節。
適用場景與注意¶
適合誰: 需要在 DSH web 宿主里長期跑 RP、陪伴或混合對話,並希望記憶可本地審計、可分層衰減、可區分「對方說過」與「模型推斷」,且願意用 WebUI 做複覈與關係維護的開發者或重度用戶。
需要注意:
- 主動記憶整理會 fork 子會話並消耗模型 token(官方文檔給出與長會話總用量對比的估算表,實際取決於回合數與工具步數)。
- 升級前備份
~/.dsh/dsh-memu-memory;早期版本可能存在 breaking change。 - 默認後端無遙測;可選組件纔可能訪問 PyPI 鏡像、embedding 端點或你配置的視覺/總結端點。
- 社區目錄頁星標等信息會變動;以 GitHub 倉庫與 npm 頁面爲準。
結尾¶
dsh-memu-memory 把「像記憶一樣工作」拆成留存層、召回預算、來源標註、矛盾掛起與 context 邊界,並在默認路徑下保持本地、無 embedding 依賴。若你要在 DSH 裏做可持續的長對話角色或陪伴體驗,可以從 npm 安裝、打開 MemU WebUI 選記憶策略開始,再按需啓用 MemU 向量後端。