把对话存到本地并分层整理,聊久了也不丢上下文、不涨开销
31.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 1129742588/dsh-memory-tiers该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · chat
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 1 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
让 dsh 记住你说过的话,忘掉无关的,聊再久也不多花钱。
README
由 DeepSeek 最新模型翻译生成dsh-memory-tiers
聊久了它不会失忆,账单也不会越滚越大。
装好之后你不用刻意「记一下」——它自己记、自己整理、需要时自己找回来。
它解决两个问题
① 聊着聊着就忘了前面
dsh 聊久了会遇到两种结局:要么历史太长塞不下,要么被自动压缩掉、事后想不起来。
这个插件把对话存在本地,被压掉的内容也还在,随时能搜回来。
② 聊得越久,每一句越贵
每次说话,前面的历史都要重新发一遍。聊 100 轮和聊 10 轮,花销差十倍。
装上它,历史会被替换成一页摘要:聊到第 100 轮,和聊到第 10 轮的开销差不多。
整理是有触发条件的(攒够了才做),不是每轮都调模型——省下来的比它花的多。
它怎么做到(一句话版)
记忆分六层:L1/L2/L3 是活跃层,每轮拼进上下文;DL1/DL2/DL3 是深层,只在检索时用。
你说的话 → L1(刚发生的)→ 满了取一半 → 重要的进 L2/L3,不重要的沉 DL1 → DL1 里的按时间忘掉
原理、实测数据、边界条件都在 ARCHITECTURE.md,本文只讲怎么用。
安装
方式一:一条命令(推荐)
dsh plugin --profile web add dsh-memory-tiers
装完重启 dsh。
展开完整文档(README 剩余 1 节)
dsh-memory-tiers
聊久了它不会失忆,账单也不会越滚越大。
装好之后你不用刻意「记一下」——它自己记、自己整理、需要时自己找回来。
它解决两个问题
① 聊着聊着就忘了前面
dsh 聊久了会遇到两种结局:要么历史太长塞不下,要么被自动压缩掉、事后想不起来。
这个插件把对话存在本地,被压掉的内容也还在,随时能搜回来。
② 聊得越久,每一句越贵
每次说话,前面的历史都要重新发一遍。聊 100 轮和聊 10 轮,花销差十倍。
装上它,历史会被替换成一页摘要:聊到第 100 轮,和聊到第 10 轮的开销差不多。
整理是有触发条件的(攒够了才做),不是每轮都调模型——省下来的比它花的多。
它怎么做到(一句话版)
记忆分六层:L1/L2/L3 是活跃层,每轮拼进上下文;DL1/DL2/DL3 是深层,只在检索时用。
你说的话 → L1(刚发生的)→ 满了取一半 → 重要的进 L2/L3,不重要的沉 DL1 → DL1 里的按时间忘掉
原理、实测数据、边界条件都在 ARCHITECTURE.md,本文只讲怎么用。
安装
方式一:一条命令(推荐)
dsh plugin --profile web add dsh-memory-tiers
装完重启 dsh。
方式二:dsh 插件中心
在 dsh 里打开「插件中心」,搜 dsh-memory-tiers,点安装,然后重启。
方式三:本地链接(改代码时用)
cd ~/.dsh/profiles/desktop
pnpm add "link:/path/to/dsh-memory-tiers"
第一次配置(三步)
重启 dsh 后,数据目录里会自动生成 config.json。改配置有两个入口:
- 设置页:dsh → 设置 → 记忆(推荐,改完重启生效)
- 手改 <数据目录>/config.json
第一步:填模型 Key
记忆的「语义检索」和「摘要」需要模型。不填也能用,但只能按关键词搜,且不会自动整理。
去 <https://cloud.siliconflow.cn> 注册,拿一个 sk- 开头的 Key,填到:
- 设置页 → 记忆 → 嵌入与重排 → API 密钥
- 或 config.json 里的 apiKey
默认用硅基流动的两个免费模型:
| 用途 | 默认模型 | 费用 |
| 嵌入(向量化) | BAAI/bge-m3 | 免费 |
| 重排(精排) | BAAI/bge-reranker-v2-m3 | 免费 |
摘要和判关系默认跟着你当前会话的模型走,不额外花钱。
第二步:给这个程序起个名字
writer 是这个程序在数据目录里的身份,每个程序必须不一样:
{ "writer": "dsh" }
- 只有 dsh 用:填什么都行(默认 default)
- 和 astrbot 共用一份记忆:一个填 dsh,一个填 astrbot
填成一样的两个程序会往同一份临时文件里写,不会丢,但分不清是谁说的。
第三步:确认数据目录
默认 ~/.dsh/storages/memory-v5。想放别处(比如 D 盘、同步盘):
export MEMORY_TIERS_DIR="D:/memory" # 支持 ~ 和绝对路径
或者在插件配置里传 dir。不要试图改 config.json 里的路径——那个文件本身就在目录里。
配置详解
记忆容量(最常调)
三层各自有容量,容量就是每轮注入多少字(没有单独的上限开关):
| 参数 | 默认 | 含义 | 调大会怎样 |
| memoryCfg.hotMaxChars | 3000 | L1 容量:刚说的话 | 记得更多细节,token 更多 |
| memoryCfg.consolidateMaxChars | 2500 | L2 容量:最近沉淀的原话 | 同上 |
| memoryCfg.longMaxChars | 4000 | L3 容量:长期摘要 | L3 段更长,检索信息更全 |
三层合计约 9500 字(约 7000 token)。觉得占上下文多就调小,觉得记不住就调大。
L1 上限也是整理触发线:写满 3000 字才取一半整理。调太小会整理得很频繁。
历史压缩
| 参数 | 默认 | 说明 |
| autoCompact | true | 每轮结束把 dsh 历史压成一条占位(零 LLM 调用) |
| compactKeepTurns | 0 | 保留最近几轮原文。0 = 一条不留(L1 里已经有) |
想保留一点原文就把它改成 2~3,代价是 token 会随轮数涨一点。
模型
| 参数 | 默认 | 说明 |
| apiKey / apiBase | 空 / 硅基流动 | 嵌入与重排用 |
| preset | siliconflow | siliconflow 用上面两个免费模型;custom 走 models 里自己填的 |
| models.chat | { source: "session" } | 判关系用哪个模型。session = 跟当前会话 |
| models.summary | { source: "session" } | 摘要用哪个模型 |
| noThink.chat | true | 判关系关思考(只要一个词,思考是浪费) |
| noThink.summary | true | 摘要关思考。打开思考会更慢(实测慢 3 倍),但摘要可能更细 |
想换成别的服务商(DeepSeek 官方、OpenAI 兼容接口都行):
{
"preset": "custom",
"models": {
"embed": { "base": "https://api.siliconflow.cn/v1", "apiKey": "sk-xxx", "model": "BAAI/bge-m3" },
"summary": { "base": "https://api.deepseek.com/v1", "apiKey": "sk-xxx", "model": "deepseek-chat" }
}
}
嵌入模型一旦换了,旧向量不可比较,插件会自动隔离旧向量并重建。两个程序共用记忆时,嵌入模型必须一致。
整理节奏
| 参数 | 默认 | 说明 |
| quietMs | 600000(10 分钟) | 一段对话安静这么久才允许整理,避免聊到一半被腰斩 |
| organizeEveryMs | 300000(5 分钟) | 定时补一轮整理(拿不到钥匙会自己跳过) |
| refreshMinMs | 1800000(30 分钟) | L3 摘要段的重算间隔。它在上下文最前面,变一次后面缓存全失效 |
两端共享一份记忆
两个程序指向同一个目录就是共享:
// dsh 的 config.json { "layout": "split", "writer": "dsh" }
// astrbot 侧 { "layout": "split", "writer": "astrbot" }
规则:
- 各自只写自己的 L1.tmp/<writer>.jsonl,注入时合并
- 谁先结束谁拿「钥匙」整理,同一时刻只有一个在整理
- 深层(L2/L3/DL1~3)只有一个写者,不会互相覆盖
要求:两端都用本插件、writer 不同、嵌入模型一致。旧数据不迁移,layout: "legacy" 可回退到老的单文件布局。
怎么确认它在工作
1. dsh 启动日志里出现:[memory-tiers] 布局 split · writer=dsh · 嵌入 api:BAAI/bge-m3
2. 数据目录里出现 L1.json、L1.tmp/、L2/L3.json、DL1/DL2/DL3.json
3. 聊两轮后 L1.tmp/dsh.jsonl 里有内容,organize.state.json 有统计
4. 设置 → 记忆,能看到每层的条数和字数
常见问题
Q:token 没降下来?
先确认三件事:autoCompact 是 true;compactKeepTurns 是 0;插件真的在跑(看启动日志)。
另外缓存是否命中也要看——上下文块追加在末尾,前缀不变才省得下来。
Q:它好像没记住我说的话?
- L1 只注入最新的若干条(按配额),更早的在 L2/DL 里
- 想让它"永远记得",说的时候带上明确的意愿("以后都…"),这类内容更容易被判为重要
- 检索是按需的:模型得先想到去搜,才会搜
Q:搜索搜不到?
search 有 depth 参数:summary(只搜摘要)/ detail(摘要 + 原文)/ full(+ 流水)。
默认走 summary,找不到时换 full 再试一次。
Q:整理很慢,几十秒?
正常。一次整理要调模型生成摘要,2000 条原文要约 40~140 秒(取决于输出多少)。
整理在后台跑,不阻塞对话;另一端的整理会等它放钥匙。
Q:能删掉记忆吗?
mem.forget(id) 会写台账并删除;也可以直接改/删数据目录里的 JSON。删之前先备份。
Q:换机器怎么办?
把整个数据目录拷过去,设好 MEMORY_TIERS_DIR 指过去即可(配置、记忆、向量都在里面)。
数据与备份
<数据目录>/ L1.json L2.json L3.json DL1.json DL2.json DL3.json ← 六层 L1.tmp/<writer>.jsonl ← 各端待合并的当前轮 signals/<writer>.jsonl ← attend/pin/forget 请求 vectors/deep-part-0000.json ← 向量 graveyard/forgotten.jsonl ← 遗忘台账 config.json ← 配置 organize.lock ← 整理时的锁(正常情况下不存在)
备份就拷整个目录。想彻底重来,删掉目录、重启,会重新生成。
开发者
下面这些脚本只在仓库里,npm 包里不含(files 字段只带运行时文件)。
node test-memory6.mjs # 六文件布局,66 项
node test-m5.mjs # legacy 回归,41 项
node test-batch.mjs # 批量写入,20 项
node test-share.mjs # 多写者分片,25 项
node sim-real.mjs # 真实模型仿真(九组机制,--dry 假模型不花钱)
node bench-scale.mjs sum # 摘要规模基准(会花真钱)
设计、实测数据、已知问题、待办:全部在 ARCHITECTURE.md。
改代码前先读那一份,本文为了好读省略了大量约束。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
1129742588/dsh-memory-tiers
把对话存到本地并分层整理,聊久了也不丢上下文、不涨开销
相关插件 · 对话 / 记忆
上下文中枢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
这是你的仓库?认领条目