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

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

小夜