dsh-memory-tide:热档常驻、冷档下沉的 DSH 长期记忆

前言

在 DeepSeek Harness(DSH)里跑智能体,上下文是硬约束。若把每天的笔记、待办和零碎结论都堆进同一份「全量记忆」,会话越长,模型每次能用的有效窗口越窄;若只保留最近几条,旧项目背景和踩过的坑又容易丢。

常见做法是单文件日记或扁平目录,要么全读要么全不读,很难在「最近几天必看」和「偶尔要翻的旧事」之间自动取舍。dsh-memory-tide(潮汐记忆)把记忆拆成热档与冷档两层,按日期与访问频率每天归纳一次:近的在热档索引里常驻上下文,远的沉到冷档,被查得多的再浮回热档并钉住。下面介绍它的目录结构、升降规则、安装方式与七个工具。

这是什么

dsh-memory-tide 是维护者 XHszDHM 发布的 DSH 记忆类插件(GitHub:XHszDHM/dsh-memory-tide,社区目录:skillhub 插件页)。简介原文为:Tide memory for DeepSeek Harness — a lightweight long-term memory: a hot tier always in context, a cold tier that sinks, rebalanced automatically every day.

插件不依赖 @deepseek-ai/* 包,只通过宿主公开的 ctx.tools.register() 注册工具;记忆数据落在工作空间下的 memory/,不跟插件安装目录走。

目录与两层索引

第一次在某个工作空间调用任意记忆工具时,会在 <工作空间>/memory/ 自动创建目录骨架(已有文件不会被覆盖):

memory/
├── MEMORY.md             长期要点(不沉档)
├── TODO.md               待办
├── archive/
│   ├── hot/
│   │   ├── INDEX.md      热档索引,短,每次必读
│   │   └── YYYY-MM-DD.md
│   └── cold/
│       ├── INDEX.md      冷档索引,翻旧事才读
│       └── YYYY-MM-DD.md
├── .tide.json            配置
└── .usage.json           各日记忆被查询次数(按天计)

MEMORY.md 只写长期规矩与要点;冷档不在此列日期,仅提示冷档在 archive/cold/。热档、冷档各有独立索引,热档索引必须保持短小,以便常驻上下文。

若工作空间里仍是旧结构(memory/ 下直接放 YYYY-MM-DD.md),第一次执行 memory_tend 会把这些文件搬进 archive/hot/,无需手改。

升降规则(概要)

归纳逻辑由 memory_tend 与每日定时任务执行;搬档是移动文件,不删改正文。

情况 结果
距今 ≤ hotKeepDays(默认 7)天 留在热档
更早,但被查 ≥ promoteHits(默认 3)次 留在热档并钉住
更早且无人查 沉到冷档
冷档被查 ≥ coldPromoteHits(默认 5)次 升回热档并钉住
钉住后 pinMaxDays(默认 90)天未再被查 解钉,重新参与流转
冷档文件数 > coldMaxFiles(默认 120) 按日期从早到晚删除
热档文件数 > hotMaxFiles(默认 0 表示不限) 最老的沉到冷档(钉住的不动)

「被查」按自然日累计:同一天内多次命中只记一次。

七个工具

工具 作用
memory_search 检索;默认仅热档,scope=all 含冷档
memory_read 读取某一天的整份日记(默认今天)
memory_add 向某一天追加内容
memory_index 重建热/冷索引
memory_lint 检查标题时间、重复小节、空小节、死链、索引过期等
memory_tend 冷热档归纳;dryRun=true 只出报告
memory_stats 查看天数与各日访问统计

各工具支持 root 参数,可把记忆根目录指到工作空间以外的路径;默认使用当前会话工作目录。

安装与启用

安装后需重启 DSH。Node 要求 ≥ 20(见 package.json engines)。

# 从 npm(上架后)
dsh plugin --profile desktop add dsh-memory-tide

# 从 GitHub
dsh plugin --profile desktop add github:XHszDHM/dsh-memory-tide

# 本地开发
dsh plugin --profile desktop add link:D:/path/to/dsh-memory-tide

桌面版若无 dsh CLI,可手改 profiles/<档名>/package.json 的 dependencies,并将插件目录放入 profiles/<档名>/node_modules/。

插件还会注册 tide-memory 技能(src/skill.js),说明模型何时读记忆、如何写带时间的小节等;并在工作空间 AGENTS.md 中同步一段由 HTML 注释标记的提示(可通过设置或 .tide.json 的 agentsHint: false 关闭)。设置页入口为「设置 → 潮汐记忆」,需重启 DSH 后才会出现在浏览器 bundle 中。

配置与自动归纳

默认配置写在 memory/.tide.json,首次使用会自动生成:

{
  "hotKeepDays": 7,
  "promoteHits": 3,
  "coldPromoteHits": 5,
  "pinMaxDays": 90,
  "coldMaxFiles": 120,
  "hotMaxFiles": 0,
  "sectionWarn": 30,
  "searchLimit": 8,
  "searchContext": 3,
  "autoTend": true,
  "agentsHint": true
}

定时器约每半小时检查一次:对每个已有 memory/ 的工作空间,每天自动归纳一次。状态保存在 $DSH_HOME/integrations/dsh-memory-tide/tend-state.json,避免同一天重复执行或漏跑。关闭自动归纳可将该工作空间 .tide.json 里 autoTend 设为 false,改用手动调用 memory_tend。

典型用法

  1. 新会话开始时,按插件写入 AGENTS.md 的说明先读 MEMORY.md 与 memory/archive/hot/INDEX.md。
  2. 当日记录用 memory_add 追加;小节标题建议带时间,例如 ## 【14:30 干了什么】(便于 memory_lint 与检索)。
  3. 查近期内容用 memory_search;需要旧日用 scope=all 或 memory_read 指定日期。
  4. 想预览归纳结果而不改文件:memory_tend 且 dryRun: true。
  5. 凭据与密钥不要写入记忆文件(插件在 AGENTS.md 提示中明确禁止)。

适用场景与注意

适合需要按天记日记、又要控制上下文体积的 DSH 桌面工作流:热档索引常驻、冷档按需检索,长期要点集中在 MEMORY.md。

DSH 生态是「一切皆插件」;skillhub.cn 上的插件目录为社区站点,与 DeepSeek / 幻方无官方从属关系。安装前请自行查看 仓库源码 与 MIT 许可证;插件以当前 DSH 进程权限读写工作空间与 $DSH_HOME 下的集成状态,只应安装你信任的来源。

结尾

dsh-memory-tide 用热档、冷档与每日归纳,把「最近常看」和「偶尔要翻的旧账」分开管理,并通过短索引控制默认进上下文的信息量。详情与更新以 GitHub README 为准:XHszDHM/dsh-memory-tide;安装与分类说明见 SkillHub 目录页。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye