前言¶
DeepSeek Harness 的智能体在会话结束后通常会丢失上下文,导致“忘了你是谁”或“忘了之前的约定”。dsh-memory 在任何配置文件中提供了一个跨会话的语义记忆层,无需引入新的基础设施即可解决这一问题。它符合 DSH “一切皆插件”的理念,通过 SQLite 和 Zhipu Embedding-3 实现本地化的向量存储与检索。
插件定位¶
- 名称:
dsh-memory - 描述:DeepSeek Harness 的跨会话语义记忆插件,支持在任意配置文件中安装。
- 维护者:
mnbvcxzaqwertyuioplm - 许可证:MIT
核心能力¶
该插件在 Web/Headless 配置文件中注册了三个核心工具:
memory_add:持久化值得长期保存的事实,数据进入时会自动进行向量化。memory_search:通过语义(余弦相似度)检索相关事实,支持关键字回退。如果语义检索不可用,会自动降级为纯关键字匹配。memory_update:对现有记忆进行纠正、撤回、恢复、验证、编辑、设置或链接。被替换的条目会保留历史记录(标记为superseded),而不是直接删除。
底层技术栈采用智谱 embedding-3(2048 维)+ SQLite (node:sqlite) + 余弦相似度计算。插件具备零配置特性,在缺失 Zhipu Key、数据库或服务时,会优雅降级而不导致 DSH 进程崩溃。
安装与启用¶
使用官方插件安装命令将插件添加到目标配置文件(示例为 web):
dsh plugin --profile web add dsh-memory
安装后必须重启 DSH Web 进程,因为插件依赖的 Bundle 层仅在启动时生效:
systemctl restart dsh
典型用法¶
- 语义检索命令:在编辑器中输入
/mem <question>。智能体会优先调用memory_search检索记忆(结果以折叠工具卡片形式呈现),然后再基于记忆回答问题。 - 强制记忆信号词:通过配置
forceMemoryWords,设置特定的触发词(如“记住”、“重要”)。当用户消息中包含这些词时,智能体会强制先调用memory_add存入事实,再进行回答。
注意事项与限制¶
- 零新基础设施:插件不依赖独立的向量数据库或 Sidecar 容器,所有数据存储在 SQLite 中。
- 进程重启:修改配置后务必重启 DSH Web 以使 Bundle 层生效。
- 长度限制:默认情况下,超过 800 字符的条目会被截断,但会显示完整长度;设置
full: true可返回全文。 - 超时设置:Embedding 调用设置了 8 秒超时。在网络不佳时,插件会快速失败并回退到关键字搜索,避免会话卡顿。
结语¶
dsh-memory 通过数百字节的 SQLite 和一次 HTTP 请求的写入开销,解决了智能体跨会话记忆的难题。它提供了一种低成本的语义回忆方案,适合需要长期记忆特定用户偏好或项目约定的场景。