DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

pomelotea-yuzu /

pomelotea-yuzu/dsh-memory-layered

Verified

Layered (global + per-project) bounded file-backed memory for DeepSeek Harness — model-curated with user intervention, versioned writes, TTL expiry, session search, and an in-chat memory panel

★ 1 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@d11c74d7

@deepseek-ai/dsh-memory-layered

DeepSeek Harness 的会自己写日记的长期记忆插件:每轮自动记原文,每 N 轮用会话自身模型蒸馏成 「两本日记 + 四类记忆」,新会话与每条新消息自动想起相关旧内容。

设计见 DESIGN.md。

一句话

以前是她「想起来才写」的记忆;现在是插件每轮自动记、定时自动整理、需要时自动想起—— 你只管聊天,她隔天醒来还接得上。

记忆目录

默认跟着工作区走:<workspace>/memory/(可用 notesDir 改成绝对路径)。

memory/
├── index.md                 # 索引(插件维护,先读它)
├── facts.md                 # 稳定事实:身份/环境/服务/路径/依赖
├── prefs.md                 # 用户偏好与禁忌
├── events.md                # 做过的事、发生的事(新的在上)
├── lessons.md               # 踩过的坑,写成「别再……」
├── diary/YYYY-MM-DD.md      # ① 她自己的日记(给自己回忆;用户也能看)
├── letters/YYYY-MM-DD.md    # ② 给主人的信(用户看的)
├── archive/                 # 超限条目、旧索引的归档
├── .raw/YYYY-MM-DD.jsonl    # 每轮原文(检索用,建议 gitignore)
└── .pending/pending.jsonl   # 整理失败暂存,下一轮重试

四类文件沿用「一行一条:- YYYY-MM-DD 一句话」的格式;两本日记按 ## HH:MM 分节。

它怎么工作

  1. 每轮记录(0 模型调用) agent/turn-stopping 时把「用户最后一句 + 助手最终回复」截断写进 .raw/YYYY-MM-DD.jsonl。
  2. 定时蒸馏(默认每 8 轮 1 次调用) 把新增轮次交给会话自身模型,一次产出 JSON:日记、信件、facts/prefs/events/lessons 新条目、索引关键词。 插件负责去重、限额、归档、写盘;失败进 .pending/,下次重试。
  3. 自动想起(0 模型调用)
    • 新会话 / 上下文压缩后:注入索引 + 四类记忆 + 最近日记/信件(默认 4000 字符预算)。
    • 每条新用户消息:中文按 2 字滑窗做关键词匹配,命中旧内容就补一段相关回忆(默认 1500 字符)。
  4. 需要细节 memory 工具 search,或 /memory search,同时搜四类记忆、两本日记、.raw 原文。

安装

需要 DSH 0.2.2-rc.3(插件依赖与运行时版本必须一致,否则 DSH 的版本门禁会拒绝加载)。

pnpm build && pnpm pack
dsh plugin --profile qqbot add ./deepseek-ai-dsh-memory-layered-0.2.1.tgz

开发期也可以直接指向源码:dsh plugin --profile qqbot add link:/path/to/dsh-memory-layered。

装完重启 dsh --profile qqbot 的进程(systemd 下:systemctl restart dsh-qqbot)。 云端部署的完整步骤(上传、AGENTS.md 替换、验证、回滚)见 docs/DEPLOY.md。

memory/.gitignore 会自动创建并排除 .raw/、.pending/——聊天原文可能含隐私,不要提交。

配置

按 id 覆盖(profile 的 cordis.patch.yml):

- id: memory-layered
  config:
    notesDir: memory
    timeZone: Asia/Shanghai
    distillEveryTurns: 8
    injectChars: 4000
    recallChars: 1500
    recallLimit: 3
字段 默认 含义
notesEnabled true 总开关
notesDir memory 相对工作区根,或绝对路径
timeZone Asia/Shanghai 日记/事件按哪个时区分日期
injectChars 4000 新会话快照字符预算
recallChars 1500 单次召回片段预算
recallLimit 3 单次召回最多几条旧内容
distillEveryTurns 8 每多少轮蒸馏一次;0 关闭自动整理
rawEnabled true 是否记录每轮原文
rawKeepDays 30 原文保留天数
maxFileLines 250 四类单文件条目上限(超出归档)

命令

/memory list [facts|prefs|events|lessons]   # 看四类记忆
/memory diary [YYYY-MM-DD]                  # 看某天日记
/memory letter [YYYY-MM-DD]                 # 看某天信件
/memory search <query>                      # 搜记忆/日记/原文
/memory distill                             # 立即整理当前对话

面板:对话输入行 🧠 → 事实 / 偏好 / 事件 / 纠错 / 日记 / 信件 / 索引;「整理」按钮立即蒸馏。

模型工具

memory:

action 作用
add / replace / remove 在 kind(facts/prefs/events/lessons)里增删改一条
diary / letter 追加当天日记/信件
search 搜四类记忆、日记、信件、.raw 原文

日常自动维护由插件完成,工具只在「用户明确要求记住/改掉」时使用。

AGENTS.md 怎么改

插件接管写入后,原来「什么时候必须记 / 分类 / 写入格式 / 拆分瘦身」这些手工规则可以删掉, 换成 docs/AGENTS.example.md 里的写法:告诉模型「插件会写,别重复写; 要立刻记住用 memory 工具;回答前先查 memory」。

安全与限制

  • 不写密钥/token/密码/手机号;模型提示词里明确禁止,插件也不会把 .raw 之外的内容上传。
  • 所有写入都是「跨进程文件锁 + 原子写」,用户手改与自动整理不会互相截断。
  • 整理失败不丢内容:原轮次进 .pending/,下一次整理时一并重试。
  • 单次整理是一次模型调用;distillEveryTurns: 0 可完全关闭自动整理(仍可手动 /memory distill)。
  • 会话未产生模型路由(还没发过模型请求)时无法整理,会暂存到有路由后重试。

开发

corepack pnpm install
corepack pnpm typecheck
corepack pnpm test
corepack pnpm build
  • 测试覆盖:notes 存储、distill 解析/落盘/失败重试、recall 快照/召回、automation 抽取。
  • Node ^22.19 || >=24;DSH 0.2.2-rc.2 及以上。

License

MIT(大脑图标路径取自 Lucide,ISC,见 THIRD_PARTY_NOTICES.md)

—/ 5

No ratings yet

Verified DSH bundle

Commit d11c74d7934d

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout