前言¶
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