前言¶
在 DeepSeek Harness(DSH)里给 agent 加「记忆」,常见做法是向量库做相似检索、把对话历史堆进上下文,或用一个简单的 key-value 表。这些方式要么不会随时间变弱,要么上下文一满就整段丢掉,也没有「被线索唤起」而不是精确查询的行为。
dsh-memory 是社区维护者 Soulmate793 发布的 DSH 插件(分类:记忆),把遗忘、巩固、线索召回、分区隔离等机制做成可运行的本地存储,数据默认只落在本机目录,无第三方 npm 依赖。下面介绍它解决什么问题、如何安装,以及七个记忆工具的典型用法。
这是什么¶
插件全名在仓库中为 dsh-memory(GitHub:Soulmate793/dsh-memory),当前 package 版本 1.1.0,许可证 MIT。简介概括为:Human-like memory plugin for DeepSeek Harness——艾宾浩斯式衰减、睡眠巩固、记忆分区、哈希链审计;纯本地、零外部依赖。
与「只增不减的向量库」或「无限增长的对话日志」相比,它强调:记忆有强度会衰减;被回忆会略作强化;空闲时可合并情节并升格为语义记忆;召回依赖线索词重叠而非精确匹配;自我、关系、情节等七个分区各有衰减与隐私策略(隔离区 vault 默认不参与召回)。
核心功能¶
记忆行为¶
| 机制 | 说明 |
|---|---|
| 艾宾浩斯遗忘 | 强度按指数曲线衰减;重要度、情绪越高,衰减越慢 |
| 提取强化 | 每次被 memory_recall 命中,基础强度回补,并更新访问时间 |
| 睡眠巩固 | memory_consolidate 对情节记忆聚类合并、去重,高价值条目升格为语义记忆 |
| 线索依赖召回 | IDF 加权特征重叠,并结合强度、近因、重要度与分区权重打分;无词重合则不会返回 |
| 工作记忆 | 最近消息的环形缓冲,过期丢弃,不写入长期库 |
v1.1 相关能力(README 标注)¶
- 记忆分区:
self/relationship/episodic/semantic/life/learning/vault,各区独立衰减、检索权重与隐私策略 - 关系台账:为对话对象维护
relationships.json,可按人注入 - 固定记忆:
memory_pin将关键记忆设为不遗忘(文档在「新增能力」中列出) - 情绪与性格:8 维情绪与性格成长,支持
emotion_set(可选模块) - 容量:配置
maxItems: 500000,环境变量MEMORY_MAX_ITEMS可覆盖 - 锁自愈:异常退出留下的僵尸锁会被自动清理
审计与可选模块¶
每次写入、更新、遗忘会向 Ed25519 签名的哈希链追加事件;memory_chain_verify 可校验链连续性与和 memory.json 的对账。可选文件包括情绪、性格、人物画像、学习库、语义向量、联想图等,均位于同一 dataDir。
安装与启用¶
环境要求:Node.js >= 20,仓库声明无第三方 npm 依赖。
方式一:作为 DSH bundle 安装(README 推荐)¶
将仓库放到本机绝对路径后,通过插件管理器安装 bundle(路径需替换为你的实际目录):
plugin_manager(action: "install_bundle", target: "<绝对路径>/dsh-memory-plugin")
安装后重启 DSH,agent 会获得 7 个记忆相关工具。
方式二:手动放进 profile¶
- 把仓库目录加入 profile 的 bundle 列表
- 在
cordis.patch.yml中启用memory行(可参考仓库自带 patch) - 重启 DSH
配置片段¶
在 cordis.patch.yml 中插件注册示例:
- insert:
- id: memory
name: 'dsh-memory'
config:
memory:
dataDir: '' # 留空 = ~/.dsh/qq-memory
maxItems: 500000 # 容量上限,超出按强度淘汰
recallLimit: 8 # 默认召回条数
includeVault: false # 默认不读取隔离区
环境变量 MEMORY_DIR 可覆盖 dataDir。
典型用法¶
数据默认在 dataDir(留空时为 ~/.dsh/qq-memory/),主要文件包括 memory.json、memory-chain.jsonl 及链相关密钥文件;插件仅读写该目录,README 说明无网络请求。
下面示例来自仓库 README,展示记住偏好、按线索回忆、分区查询、巩固与审计:
# 记住一个偏好
memory_remember({
text: "她喜欢下雨天,讨厌香菜",
kind: "semantic",
importance: 0.7,
tags: ["preference"],
zone: "relationship"
})
# 按场景回忆
memory_recall({ query: "她喜欢什么天气", limit: 5 })
# 只在自我区回忆
memory_recall({ query: "我是谁", zone: "self" })
# 读取隔离区(需显式允许)
memory_recall({ query: "暗号", zone: "vault", include_vault: true })
# 空闲时巩固
memory_consolidate()
# 审计
memory_chain_verify()
常用工具还包括 memory_stats(库统计)、memory_zones(分区统计)、memory_forget(软删除,链上留痕)。参数细节见仓库 docs/tools.md。
适用场景与注意¶
适合谁:希望在 DSH 里做长期、可衰减、可分区、可本地审计的 agent 记忆,且不接受默认「全量向量检索 + 永不忘」模型的开发者。
运行与信任边界:插件以当前 DSH 进程权限读写本地文件;安装前请自行查看源码与 MIT 许可证。memory-chain-key.pem 丢失后无法验证历史链,README 建议备份。隔离区目前策略为默认不召回,路线图提及未来可能增加加密存储,当前并非加密 vault。
共享与上限:同一机器、同一 dataDir 可在多 agent/会话间共享;多进程写入有文件锁。超过 maxItems 时按强度淘汰最弱条目。重启 DSH 不会清空已持久化记忆。
社区目录页(与 DeepSeek / 幻方无官方从属关系):skillhub.cn 插件页。源码与完整设计文档:GitHub 仓库。