dsh-mem0-plugin:在 DSH 進程內接入 mem0 長期記憶

前言

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
羽毛球分组比赛记分
小程序二维码

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

小夜