前言¶
DeepSeek Harness(DSH)把能力拆成可插拔的插件;智能體要跨會話記住偏好、項目約定和既往決定,通常需要單獨的記憶層。常見做法是用 Python 把 mem0 包成 HTTP 服務,agent 再遠程調用——多一個進程、多一份運維,配置也落在服務端。維護者 rokyaria 的 dsh-mem0-plugin 走另一條路:在 dsh 插件裏直接跑 mem0 官方的 TypeScript SDK(mem0ai/oss),不另起 Python sidecar,向量庫側參考部署用 Elasticsearch 8,embedding 可換 provider。本文按倉庫 README 與安裝說明介紹定位、工具、安裝與配置;社區目錄見 skillhub.cn,源碼在 GitHub(MIT,當前 package 版本 0.3.0)。
這是什麼¶
一句話:基於 mem0 的記憶層,作爲 dsh 插件運行。
插件解決的是「agent 跨會話還記得你說過什麼」——偏好、約定、決定不必每次重講。與獨立 mem0 服務相比,README 裏歸納的差異大致如下:無額外 Python 容器;agent 通過原生工具調用而非 HTTP;配置寫在 dsh profile 的 cordis.patch.yml;插件隨 dsh 啓動,後端暫時不通時仍可用 mem0_status 自查。
核心功能¶
插件暴露八個工具,覆蓋記憶的寫入、檢索、更新、刪除與運維:
| 工具 | 用途 |
|---|---|
mem0_add |
存入記憶(用戶要求「記住」或陳述值得長期保留的內容) |
mem0_search |
語義檢索,回答涉及過往決策、偏好、歷史工作前使用 |
mem0_get |
按 id 讀取完整內容 |
mem0_update / mem0_delete |
改寫或刪除;刪除支持按 id 或按 user_id / agent_id / run_id 清範圍 |
mem0_get_all |
列出記憶,支持時間範圍掃描(created_after 等)與分頁 |
mem0_history |
某條記憶的變更軌跡 |
mem0_status |
安裝與健康自檢;README 寫明即使記憶後端連不上也可調用 |
記憶的語義(事實抽取、去重合並、向量檢索、provider 生態、metadata 作用域與 expiration_date 等)沿用 mem0;插件自行實現的部分包括 mem0_get_all 的時間範圍掃描、按範圍刪除、mem0_history 持久化、給模型的使用引導,以及 mem0_status。
配置了 llm 時,mem0_add 可由 mem0 用 LLM 從對話提煉事實;未配 llm 則按原文存儲。倉庫文檔記錄:Elasticsearch 8.14.3、LM Studio + text-embedding-bge-m3(1024 維)等路徑已做端到端驗證;併發寫入、ES9 尚未 e2e 驗證。
工具不會自動執行,由模型在需要時調用。插件默認向系統提示詞注入約 860 字符的使用引導(可通過 guidance 替換、追加或關閉)。
安裝與啓用¶
需要 Elasticsearch 8 和 embedding 模型(可選 LLM 用於事實抽取)。Node 引擎要求見 package.json:^22.19.0 || >=24.0.0。
README 推薦把倉庫交給 agent,讓其閱讀倉庫內 install.md 探測本機 ES、LM Studio 並驗收;手動路徑示例如下。
1、啓動 Elasticsearch 8(8.14.3 爲文檔實測版本):
docker run -d --name dsh-es8 -p 9200:9200 --cpus 1.0 -m 2g \
-e discovery.type=single-node \
-e xpack.security.enabled=true -e xpack.security.http.ssl.enabled=false \
-e xpack.security.transport.ssl.enabled=false -e xpack.security.enrollment.enabled=false \
-e ELASTIC_PASSWORD=elastic -e "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" \
docker.elastic.co/elasticsearch/elasticsearch:8.14.3
2、embedding:文檔推薦在 LM Studio 加載 bge-m3(GUI 步驟見 install.md §3),也可用 mem0 支持的其它 provider。
3、構建並安裝插件(安裝命令以 README 爲準,路徑改爲你本機克隆或解壓後的絕對路徑):
node node_modules/typescript/bin/tsc -p tsconfig.build.json
dsh plugin --profile <profile> add /絕對路徑/dsh-mem0-plugin
桌面版 dsh:公開 CLI 不能管理 Desktop profile,應通過 設置 → 插件 安裝;README 註明此前文檔裝法有誤,細節見 install.md §6。
裝完後調用 mem0_status,第一行爲 OK 即表示基本正常。
典型配置與用法¶
在 profile 的 cordis.patch.yml 中插入插件配置。最小可用示例(本地明文 ES 須顯式 useSsl: false,否則默認 HTTPS 連不上):
- insert:
- id: mem0
name: dsh-mem0-plugin
config:
embedder:
provider: lmstudio
config:
baseURL: http://localhost:1234/v1
model: text-embedding-bge-m3
vectorStore:
provider: elasticsearch
config:
collectionName: mem0_vector_store
host: localhost
port: 9200
username: elastic
password: elastic
useSsl: false
三項核心項:embedder、vectorStore 必需;llm 可選,僅影響 mem0_add 是否做事實抽取。任意 OpenAI 兼容端點均可作爲 llm。
若在本機 LM Studio 上開啓事實抽取(infer: true),README 記錄 mem0ai 與 LM Studio 的若干兼容問題;倉庫提供 tools/lmstudio-shim/ 轉發層,配置裏可將 llm.config.baseURL 指向 shim(如 http://127.0.0.1:1235/v1)而非直連 1234。
自定義模型行爲示例:
guidance:
enabled: true
append: |
約定:不要存客戶姓名。
換 embedding 模型須重建索引,並用 mem0_status 覈對向量維度;LM Studio 對未知 model id 可能靜默替換爲當前加載模型,寫錯模型名不會報錯但會損害檢索質量。
適用場景與注意¶
適合誰:已在用 DSH、希望 agent 跨會話保留偏好與項目約定,且願意自備 ES8 與 embedding(及可選 LLM)的開發者。
權限與安全:插件與當前 dsh 進程同權運行;安裝前應閱讀源碼與 MIT 許可證,自行評估依賴與數據落盤位置(如默認 history.dbPath 在工作區 mem0/history.db)。引導文案默認要求不要存密鑰、憑據等;記憶內容進入你配置的向量庫與本地 history 存儲。
生態說明:DSH 主張「一切皆插件」;skillhub.cn 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-mem0-plugin 把 mem0 長期記憶收進 dsh 插件進程:八個工具、profile 內配置、無 Python sidecar。若要跟進維護者與驗證狀態,以倉庫 README、install.md、development.md 爲準。
- 目錄頁:https://www.skillhub.cn/plugins/rokyaria/dsh-mem0-plugin
- GitHub:https://github.com/rokyaria/dsh-mem0-plugin