前言¶
在 DeepSeek Harness(DSH)里做智能体时,上下文窗口只能覆盖当前会话;关掉页面或换话题后,模型不会自动记住你说过的工作习惯、项目约束或长期偏好。常见做法是手写摘要、外挂向量库,或每次手动粘贴「背景说明」,运维和一致性成本都偏高。
下面介绍社区插件 dsh-mem0(维护者 0Junze0,分类:记忆)。它在 DSH 内嵌 mem0 语义记忆、持久主题图 与 用户画像,并提供全屏记忆页;向量落在本地 Chroma(SQLite),单机运行、不依赖外部数据库,抽取与 embedding 走你配置的 OpenAI 兼容 API(README 默认示例为 DeepSeek + 硅基流动 bge-m3)。
这是什么¶
dsh-mem0 是给 DeepSeek Harness 用的长期记忆插件:自动召回相关事实、会话结束后追加写入、夜间批量去重与矛盾处理,以及主题卡片与用户画像管理。
- 目录页:https://www.skillhub.cn/plugins/0Junze0/dsh-mem0
- 源码:https://github.com/0Junze0/dsh-mem0
- 当前 package 版本:0.2.0(MIT)
- Node 要求:>=20
插件以当前 DSH 进程权限运行;安装前请自行审阅源码与许可证。
核心功能¶
自动召回与写入¶
- 自动召回:每轮通过
systemPrompt.context注入画像与相关事实,不伪造消息、不改写用户输入。 - 白天只追加:会话结束或闲置 N 分钟后,一次模型调用抽取事实直接入库,不做比对,成本较低。
- 夜间批量整理(默认每天 03:30,Asia/Shanghai):精确去重 → LLM 逐对归纳同一事实 → 矛盾处理(保留较新)→ 主题图同步 → 卡片/画像 → git 同步。
主题图、画像与工具¶
- 持久主题图:主题为稳定节点(中心向量与演化历史);新事实按语义归入,相近主题合并,长期不用可归档。
- 用户画像:
PROFILE.md四板块(身份/偏好/观察/待确认),提供profile_get/profile_update工具。 - 按需检索:
memory_search工具。 - 快照与撤销:破坏性操作前自动快照(保留最近 20 份),面板可一键回滚。
界面¶
- 全屏记忆页:左侧边栏入口;状态 pills、记忆列表(搜索/新增/多选合并/删除)、主题卡、主题图(滚轮缩放、拖拽平移)。
- ⌘K 搜索:命令面板快速定位记忆。
- 设置页与
/mem0面板路由由插件托管本地 Python 服务(uvicorn,默认127.0.0.1:18762)提供。
架构概览¶
DSH 插件(index.js / client.js)
├─ 托管本地 Python 服务(uvicorn,默认 127.0.0.1:18762)
├─ 代理 /mem0 面板路由
├─ agent/pre-step → 异步召回,写入缓存
├─ systemPrompt.context → 同步渲染「画像 + 相关记忆」
├─ agent/assistant-stream → 累积助手回复
├─ agent/disposed / 闲置定时器 → 捕获对话(有序 user/assistant)
├─ tools → memory_search / profile_get / profile_update
└─ 每天 03:30(Asia/Shanghai)→ 去重 → 归纳 → 矛盾 → 主题图 → 同步
Python 服务(server/app.py)
└─ mem0 + Chroma + 主题图 + 卡片/画像文件 + 快照 + git 同步
设计取舍(README 原文要点):相似度只做「疑似重复」报告;归纳采用逐对判定而非模型直接聚类;注入走系统提示;合并/删除/整理前先快照。
安装与启用¶
先做 Python 环境与数据目录,再把 server 与配置拷到 MEM0_HOME,最后在 DSH 里添加插件。以下命令来自仓库 README。
export MEM0_HOME="$HOME/.dsh-mem0"
mkdir -p "$MEM0_HOME"
python3 -m venv "$MEM0_HOME/.venv"
"$MEM0_HOME/.venv/bin/pip" install mem0ai chromadb fastapi uvicorn httpx spacy
"$MEM0_HOME/.venv/bin/python" -m spacy download zh_core_web_sm # mem0 抽实体需要
cp -r server export_mem.py sync.sh "$MEM0_HOME"/
cp config.example.json "$MEM0_HOME/config.json" # 填入你的 API Key
dsh plugin --profile web add <本仓库地址或本地路径>
config.json 至少修改两处 api_key:抽取用的 LLM 与 embedding(OpenAI 兼容接口即可)。
插件设置页配置项¶
可在 DSH 设置面板调整下列键(默认值见下表):
| 键 | 默认 | 说明 |
|---|---|---|
enabled |
true | 总开关 |
recallEnabled / recallLimit / recallMinScore / recallTimeoutMs |
true / 5 / 0.45 / 600 | 自动召回 |
captureEnabled / captureMode / captureIdleMinutes / captureMaxChars |
true / session-end / 30 / 6000 | 自动写入 |
consolidateEnabled / consolidateAt / consolidateThreshold |
true / 03:30 / 0.93 | 夜间去重 |
mergeEnabled |
true | 夜间 LLM 归纳同一事实的不同表述 |
supersedeEnabled / supersedeMinOverlap |
true / 3 | 矛盾处理 |
cardsEnabled |
true | 主题图与卡片生成 |
syncEnabled / syncHours |
true / 6 | 定期推送到 git |
panelEnabled |
true | /mem0 面板 |
典型用法¶
日常对话¶
启用插件并保持 recallEnabled、captureEnabled 为 true 后,正常在 DSH 里对话即可:每轮系统提示会带上画像与召回记忆;会话结束或闲置达到 captureIdleMinutes 后会追加抽取入库。
Agent 工具¶
模型可调用:
memory_search:按需检索记忆。profile_get/profile_update:读写在PROFILE.md中的用户画像。
记忆页与整理¶
浏览器打开 DSH 后,从左侧边栏进入全屏记忆页(/mem0),可搜索、新增、多选合并或删除记忆,查看主题卡与主题图。夜间流水线也可通过 Python 服务 POST /nightly/run 手动触发完整整理;具体 HTTP 路径见 README「主要接口」一节。
本地 Python 服务主要接口包括:
GET /status 状态卡数据
GET /list /stats /export
POST /search /add /update /delete
POST /capture_append 白天纯追加(一次模型调用)
POST /consolidate 精确去重
POST /nightly/run 手动触发完整整理
GET /topics/graph 主题图
GET /snapshots/list POST /snapshots/restore
适用场景与注意¶
适合:希望在 DSH Web 侧长期积累个人或项目事实、用主题图组织记忆、并愿意自备 LLM 与 embedding API 的开发者。
注意:
- 插件会启动本地 Python 服务并读写
MEM0_HOME下的 Chroma 与文件;若开启syncEnabled,会按配置定期 git 推送,需自行保管密钥与远程仓库。 - 社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本插件为社区维护(GitHub 星标以目录页为准)。
结尾¶
dsh-mem0 把 mem0、本地向量存储、夜间整理流水线与全屏记忆 UI 收进一个 DSH 插件:白天低成本追加,夜间去重与矛盾处理,召回走系统提示而不污染消息序列。需要细节时直接查阅 GitHub README 与 SkillHub 目录页。