让智能体像人一样遗忘、巩固并回忆长期记忆
30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Soulmate793/dsh-memory该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · chat
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 2 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
发起外部网络请求
查看扫描证据(共 2 处,展示前 2 条)
- 发起网络请求lib/core/embed.mjs:15
const res = await fetch(`${baseUrl(port)}/health`, { signal: controller.signal }); - 发起网络请求lib/core/embed.mjs:36
const res = await fetch(`${baseUrl(port)}/embed`, {
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
给 DeepSeek Harness 用的拟人记忆插件:艾宾浩斯遗忘曲线、睡眠巩固、记忆分区、哈希链审计。纯本地运行,零依赖。
README
由 DeepSeek 最新模型翻译生成dsh-memory · 仿人记忆库(DeepSeek Harness 插件)
让智能体拥有「像人一样」的长期记忆:会遗忘、会巩固、会被线索唤起、会分区隔离——而且所有数据只留在你自己的机器上。
零外部依赖 · 纯本地 · MIT
目录
- 为什么做这个
- 核心特性
- 安装
- 配置
- 工具手册
- 数据存在哪
- 工作原理
- 使用示例
- 隐私与安全
- 常见问题
- 目录结构
- 路线图
- License
为什么做这个
大多数智能体的「记忆」是:
- 一个向量数据库(只能相似检索,不会遗忘、不会巩固)
- 或者一段不断增长的对话历史(上下文一满就全丢)
- 或者一个 key-value 表(没有强弱、没有时间感)
人类记忆不是这样工作的。人脑会:
1. 遗忘:不常用的记忆逐渐变淡
2. 巩固:重复出现的事情从「经历」变成「常识」
3. 提取强化:想起来一次,下次更容易想起来
4. 线索依赖:看到相关的东西才想起,而不是精确查询
5. 分区:有些事是「我是谁」,有些是「关于某个人」,有些是「不能说的」
dsh-memory 把这五件事做成了可运行的代码。
展开完整文档(README 剩余 1 节)
dsh-memory · 仿人记忆库(DeepSeek Harness 插件)
让智能体拥有「像人一样」的长期记忆:会遗忘、会巩固、会被线索唤起、会分区隔离——而且所有数据只留在你自己的机器上。
零外部依赖 · 纯本地 · MIT
目录
- 为什么做这个
- 核心特性
- 安装
- 配置
- 工具手册
- 数据存在哪
- 工作原理
- 使用示例
- 隐私与安全
- 常见问题
- 目录结构
- 路线图
- License
为什么做这个
大多数智能体的「记忆」是:
- 一个向量数据库(只能相似检索,不会遗忘、不会巩固)
- 或者一段不断增长的对话历史(上下文一满就全丢)
- 或者一个 key-value 表(没有强弱、没有时间感)
人类记忆不是这样工作的。人脑会:
1. 遗忘:不常用的记忆逐渐变淡
2. 巩固:重复出现的事情从「经历」变成「常识」
3. 提取强化:想起来一次,下次更容易想起来
4. 线索依赖:看到相关的东西才想起,而不是精确查询
5. 分区:有些事是「我是谁」,有些是「关于某个人」,有些是「不能说的」
dsh-memory 把这五件事做成了可运行的代码。
新增能力(v1.1)
- 记忆分区:自我 / 关系 / 情节 / 语义 / 生活 / 学习 / 隔离,各区独立衰减、检索权重与隐私策略;隔离区默认不召回
- 关系台账:自动为每个聊过的人维护 relationships.json(昵称、画像、重要备注、最近互动),按人注入
- 固定记忆:memory_pin 把关键记忆设为永不遗忘,每次唤醒必注入
- 情绪与性格:8 维情绪状态 + 性格成长;支持 emotion_set 主动设定当下心情;语音可带情绪
- 容量扩到 50 万条:maxItems: 500000,并支持环境变量 MEMORY_MAX_ITEMS 覆盖
- 锁自愈:进程异常退出留下的僵尸锁会被自动清理,不会再把记忆库锁死
核心特性
| 特性 | 说明 |
| 艾宾浩斯遗忘 | 每条记忆有强度,按指数曲线衰减;重要、带情绪的记忆衰减更慢 |
| 提取强化 | 被回忆一次,强度回补一点(用进废退) |
| 睡眠巩固 | 把同类情节记忆合并、去重,升格为长期语义记忆 |
| 线索依赖召回 | IDF 加权特征重叠 + 强度/近因/重要度综合打分,不是精确匹配 |
| 记忆分区 | 自我 / 关系 / 情节 / 语义 / 生活 / 学习 / 隔离,七个区各有衰减与隐私策略 |
| 哈希链审计 | 每次写入/更新/遗忘追加一条 Ed25519 签名事件,可校验记忆是否被篡改 |
| 工作记忆 | 最近消息的环形缓冲,过期自动丢弃,不污染长期记忆 |
| 可选模块 | 情绪状态、性格成长、人物画像、学习库、语义向量、联想图 |
安装
方式一:作为 DSH bundle 安装(推荐)
plugin_manager(action: "install_bundle", target: "<绝对路径>/dsh-memory-plugin")
安装后重启 DSH,智能体会获得 7 个记忆工具。
方式二:手动放进配置档
1. 把仓库目录加入配置档的 bundle 列表
2. 在 cordis.patch.yml 中启用 memory 行(见仓库自带的补丁)
3. 重启 DSH
环境要求
- Node.js >= 20
- 无第三方 npm 依赖
配置
cordis.patch.yml:
- insert:
- id: memory
name: 'dsh-memory'
config:
memory:
dataDir: '' # 留空 = ~/.dsh/qq-memory maxItems: 500000 # 容量上限,超出按强度淘汰 recallLimit: 8 # 默认召回条数 includeVault: false # 默认不读取隔离区
环境变量 MEMORY_DIR 可覆盖 dataDir。
工具手册
memory_remember
写入一条长期记忆。
| 参数 | 类型 | 说明 |
| text | string | 必填,要记住的内容(≤4000 字) |
| kind | episodic / semantic | 具体经历 / 长期事实,默认 episodic |
| importance | 0~1 | 重要度,默认 0.5 |
| emotion | 0~1 | 情绪强度,默认 0 |
| tags | string[] | 标签,如 ["profile","person:alice"] |
| zone | 枚举 | 分区,不填自动推断 |
| chat | string | 来源会话标识(可选) |
memory_recall
按线索回忆。
| 参数 | 类型 | 说明 |
| query | string | 必填,自然语言线索 |
| limit | 1~50 | 返回条数,默认 8 |
| zone | 枚举 | 只在这个分区回忆 |
| include_vault | boolean | 是否允许读隔离区,默认 false |
| include_archived | boolean | 是否包含已归档 |
返回每条记忆的 id / text / score / kind / zone / importance / createdAt。
memory_stats
记忆库统计:总数、活跃/归档、类型分布、平均强度、性格阶段(若启用)。
memory_zones
分区统计:每个区有多少条活跃记忆 + 分区中文名。
memory_forget
软删除一条记忆(state=purged,哈希链留痕,不物理删文件)。
memory_consolidate
睡眠巩固:聚类合并同类情节、去重、把高价值记忆升格为语义记忆。建议空闲时调用。
memory_chain_verify
校验哈希链:seq 连续性、prevHash 衔接、Ed25519 签名,以及与 memory.json 的逐条对账。
数据存在哪
全部在 dataDir(默认 ~/.dsh/qq-memory/):
memory.json 记忆数据 memory-chain.jsonl 哈希链事件(追加写) memory-chain-key.pem Ed25519 私钥(务必备份) memory-chain-pub.pem 公钥 memory-chain-head.json 链头快照 emotion-state.json 情绪状态(可选) personality.json 性格阶段/成长值(可选) profiles.json 人物画像(可选) learning.json 学习库(可选) memory-vectors.bin 向量索引(可选) memory-vectors-ids.jsonl 向量↔记忆映射(可选) memory-graph.jsonl 联想图(可选)
插件只读写这个目录,不访问网络、不写系统其它位置。
工作原理
1. 衰减
strength(t) = baseStrength × exp(-age / τ)
τ = 10天 × (0.9 + importance) × (1 + 0.6 × emotion)
- 普通记忆约 10 天衰减到 1/e
- 重要/情绪记忆的 τ 更长,所以留得更久
- strength < 0.12 归档,< 0.03 彻底遗忘(可配置)
2. 提取强化
每次被召回:
baseStrength += 0.22 × (1 - baseStrength)
lastAccess = now
accessCount += 1
3. 线索依赖召回
相关度 = IDF 加权特征重叠 / sqrt(查询IDF和 × 记忆特征数)
score = 0.55 × 相关度 × 分区权重
+ 0.20 × 当前强度
+ 0.15 × 近因
+ 0.10 × 重要度
线索必须真的命中(没有任何词重合时不会被想起)。
4. 睡眠巩固
- 对活跃情节记忆做 bigram Jaccard 聚类(阈值 0.3)
- 每组 ≥2 条 → 合并成语义记忆(全文合并,上限 3800 字)
- 高重要度 + 被多次提取 → 直接升格
- 合并/去重/归档都追加哈希链事件
5. 哈希链
event = { seq, type, id, contentHash, ts, prevHash, by, hash, sig }
hash = sha256(seq|type|id|contentHash|ts|prevHash|by)
sig = Ed25519(hash)
- 并发写入时在文件锁内读取链尾再追加,避免多进程断链
- verifyChain 校验 seq 连续、prevHash 衔接、hash 重算、签名
- verifyMemory 用当前记忆逐条重算 contentHash,发现「被改过」或「未记录」
6. 分区
| 区 | 用途 | 衰减 | 权重 | 默认注入 |
| self | 人格、身份、价值观、目标 | 不衰减 | 1.15 | 是 |
| relationship | 对人的画像、称呼、亲密度 | 0.5× | 1.10 | 是 |
| episodic | 具体对话、事件 | 1× | 1.00 | 是 |
| semantic | 巩固后的长期知识 | 0.6× | 1.05 | 是 |
| life | 日常碎片、说说、语音 | 1.2× | 1.00 | 是 |
| learning | 学到的知识、梗 | 0.8× | 0.95 | 是 |
| vault | 密码、暗号、隐私 | 不衰减 | 0.60 | 否 |
使用示例
记住一个偏好
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()
隐私与安全
- 纯本地:插件没有任何网络请求,不上传、不遥测
- 隔离区:vault 默认不参与召回;群聊场景应完全排除
- 仓库干净:本仓库不包含任何记忆数据、用户信息或密钥
- 密钥:memory-chain-key.pem 是证明历史的关键,丢失后无法验证旧链,请备份
文档索引
| 文档 | 内容 |
| docs/design.md | 设计目标、数据模型、衰减/召回/巩固/链/分区的算法与决策 |
| docs/tools.md | 7 个工具的完整参数、返回与示例 |
| docs/data-format.md | memory.json、哈希链、向量/图等文件的字段说明 |
| docs/architecture.md | 模块划分与架构速览 |
| docs/faq.md | 安装、数据、召回、链、隐私、性能的常见问题 |
常见问题
Q:记忆会不会无限增长? A:有 maxItems 上限(默认 50 万),超出按当前强度从最弱开始淘汰。
Q:重启 DSH 会丢记忆吗? A:不会,全部持久化在 dataDir。
Q:怎么调遗忘速度? A:改 lib/core/config.mjs 里的 decay.baseTauMs、importanceBias、emotionBias,或在配置里覆盖。
Q:能在多个智能体/会话间共享记忆吗? A:同一台机器、同一个 dataDir 即可共享;多进程同时写有文件锁保护。
Q:哈希链能防谁? A:防「本地记忆被悄悄改动而不留痕」。它不是公链,不能防整机被接管,但能保证任何单条记忆的修改都会断链。
Q:支持中文吗? A:召回特征用中文二元组 + 英文词,中文效果是主要设计目标。
目录结构
dsh-memory/
├─ package.json
├─ cordis.patch.yml
├─ lib/
│ ├─ index.js 插件入口(7 个工具) │ └─ core/ 记忆核心模块 ├─ locale/ 中英文显示名与描述 ├─ docs/ │ ├─ architecture.md 架构与算法细节 │ └─ ... ├─ icon.svg ├─ README.md └─ LICENSE
路线图
- [ ] 隔离区加密存储(目前只是不召回)
- [ ] 可视化的「记忆星图」独立页面
- [ ] 多设备同步(哈希链合并)
- [ ] 可插拔的 embedding / rerank
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Soulmate793/dsh-memory
让智能体像人一样遗忘、巩固并回忆长期记忆
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,487已汉化DSH
73
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,894已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,379已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
DS Bot 是一个基于 DeepSeek Harness简称 dsh的 bot 插件,插件将 dsh 改造为 bot…
★ 5,084已汉化DSH
71.1
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,778已汉化DSH
71.1
这是你的仓库?认领条目