前言¶
在 DSH 裏做多輪對話或帶工具的智能體時,上下文窗口會不斷被歷史佔滿;把整段聊天記錄塞進 system prompt 既費 token,也難讓模型穩定「記住」用戶偏好和項目事實。常見做法是自己在 Host 裏做 RAG 或手寫記憶層,還要處理注入格式、失敗不阻塞請求、以及低價值回合要不要寫入等問題。
下面介紹社區插件 DSH-Mem0(倉庫 light-cheng/DSH-Mem0):在 DSH 上封裝 Mem0,提供自動召回與保存、可編輯記憶摘要、token 預算與定期巡檢,並帶可視化設置頁。維護者爲 light-cheng,在插件目錄中歸類爲記憶;GitHub 星標爲 1(截至資料抓取時)。當前 npm 包版本爲 0.2.3,要求 Node.js ≥ 22,DSH ≥ 0.2.1-rc.5 且 < 0.3.0,許可證 MIT。
這是什麼¶
DSH-Mem0 是給 DeepSeek Harness 用的通用 Mem0 長期記憶插件:同一套自動記憶邏輯與 mem0_* 工具,可在三種後端之間切換——Mem0 Platform(託管 API,一般只需 API Key)、自建 Mem0 REST 服務,或 本地 OSS Python sidecar(複用本地 Mem0 SDK、Qdrant、embedding 等,例如 bge-m3 自託管環境)。
核心功能¶
自動召回與保存¶
每個回合會用最近一條真實用戶消息做語義搜索,把命中內容以 <mem0-relevant-memories> 數據塊注入模型上下文;搜索失敗或超時不會阻塞本輪模型請求。回合正常結束後,用戶與助手文本會交給 Mem0 做事實抽取並寫入;中斷、失敗或被拒絕的回合不會保存。默認啓發式過濾會跳過問候、簡短確認和純命令回合,減輕無價值記憶。
記憶摘要與預算¶
除相關記憶外,插件還會從已存記憶中按重要度與新鮮度生成結構化記憶摘要,在相關記憶之前以 <mem0-user-profile> 注入;默認摘要預算 1375 tokens,召回塊默認 2200 tokens。摘要可在設置頁編輯,也可由 Agent 調用 mem0_profile_get、mem0_profile_update、mem0_profile_reset;手動編輯在周巡檢後仍保留,「從記憶重建」可恢復自動生成版本。
巡檢與顯式工具¶
默認每 7 天(可設爲 1–90 天)做一次記憶衛生:去重並按價值清理超預算項;存儲上限默認爲 500 條記憶、估算 20000 tokens。畫像與巡檢歷史保存在當前 DSH profile 的 dsh-mem0/maintenance.json,不寫回 Mem0。
顯式工具包括:mem0_search、mem0_add、mem0_get、mem0_update、mem0_delete、mem0_status,以及上述 profile 相關三個工具。設置頁可查看最近自動保存/召回狀態、最近寫入的記憶,並打開記憶庫搜索當前用戶的全部記憶;對話輸入框下方還有點陣地球儀指示前臺記憶活動狀態。
安全與界面¶
OSS sidecar 僅監聽 127.0.0.1 隨機端口並使用隨機 token;寫入與召回前會對常見密鑰脫敏;mem0_status 不返回 API Key。界面文案跟隨 DSH 語言設置;已存記憶文本可按頁面語言翻譯並緩存,無可用模型時回退原文。
安裝與啓用¶
插件以 DSH 進程權限運行,安裝前請自行審閱 GitHub 源碼 與 MIT 許可證。
從 npm 安裝(包已發佈時):
dsh plugin --profile desktop add dsh-mem0
本地開發目錄安裝(在插件倉庫根目錄執行):
dsh plugin --profile desktop add link:"$(pwd)"
亦可通過 DSH Plugin Manager 安裝本地 bundle:
plugin_manager action: install_bundle
target: <本目錄的絕對路徑>
若安裝後提示 restart-required,需重啓 DSH 再驗證。社區目錄頁:SkillHub - DSH-Mem0(獨立站點,與 DeepSeek / 幻方無官方從屬關係)。
典型用法¶
在設置頁配置(推薦)¶
安裝後打開 DSH 側欄 插件,在 已安裝插件 中打開 Mem0 長期記憶(英文界面爲 Mem0 Memory)。選擇後端、填寫連接字段,用 測試連接 做與 mem0_status 同源的健康檢查,保存即可。Platform 模式也可在 profile 的 cordis.patch.yml 中手寫,例如:
- id: dsh-mem0
name: dsh-mem0
config:
backend: platform
apiKey: "your-platform-api-key"
userId: "your-user-id"
agentId: "dsh"
API Key 也可改用環境變量名 apiKeyEnv: MEM0_API_KEY,對應默認環境變量 MEM0_API_KEY。
OSS 本地後端概要¶
先準備 Mem0 OSS 配置文件(示例見倉庫 examples/oss-config.example.json),並自行創建 Python 虛擬環境與依賴;當前版本不會在插件加載時靜默安裝 Python 或 Qdrant:
python3 -m venv ~/.dsh/mem0/venv
~/.dsh/mem0/venv/bin/pip install "mem0ai>=2.0.10,<3" qdrant-client openai
config:
backend: oss
pythonPath: "~/.dsh/mem0/venv/bin/python"
mem0ConfigPath: "~/.dsh/mem0/oss.json"
collectionName: "dsh_mem0"
userId: "your-user-id"
Agent 側工具¶
需要主動查記憶時調用 mem0_search;要原樣寫入一條事實用 mem0_add(文檔說明爲 infer:false)。修改配置後需重新加載插件或重啓 DSH。若不希望自動保存,將 autoCapture 設爲 false;若希望完全手動控制刪除行爲,可將 hygieneEnabled 設爲 false(文檔說明此時仍可能在畫像缺失時構建畫像,但不會自動刪除記憶)。
適用場景與注意¶
- 適合:希望在 DSH 裏統一 Mem0 長期記憶、且可能在 Platform、自建 server、本地 Qdrant 之間切換的團隊或個人。
- Platform / server:記憶保存在對應服務側,需自行了解其隱私與保留策略。
- OSS:記憶落在你配置的 Qdrant 與 embedding/LLM 服務中;sidecar 僅 loopback,但仍依賴本機 Python 環境與外部向量庫。
- 權限:插件與 DSH Host 同進程權限;
autoCapture默認開啓,寫入前雖有脫敏,不能替代完整的密鑰管理。 - 生態:DSH 理念是「一切皆插件」;市場收錄由 awesome-dsh-plugin 等社區流程驅動,與本插件的可視化配置頁無強制綁定關係。
結尾¶
經過上面的步驟,DSH-Mem0 把 Mem0 的召回、保存、摘要、預算與巡檢收進一個 DSH 插件,並給出可驗證的設置頁與工具面。進一步細節見倉庫 README(含簡體中文) 與目錄頁 https://www.skillhub.cn/plugins/light-cheng/DSH-Mem0。