dsh-memu-memory:給 DSH 一份會淡、會標註來源的長對話記憶

前言

在 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" 並配置向量來源。

典型用法

經過上面的安裝與重啓,可按官方「第一次使用」流程操作:

  1. 從右側欄打開 MemU WebUI(或 設置 → MemU)。
  2. 新會話會詢問是否啓用記憶:僅私有 / 僅全局 / 私有+全局 / 不用;勾選「記住我的選擇」後不再重複詢問。
  3. 在 文件夾 頁可設文件夾級上限(禁止私有或全局);文件夾策略是上限,會約束其中各對話的開關。
  4. 正常對話即可:私有記憶由 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 向量後端。

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

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

小夜