前言¶
在 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。
典型用法¶
- 新会话开始时,按插件写入
AGENTS.md的说明先读MEMORY.md与memory/archive/hot/INDEX.md。 - 当日记录用
memory_add追加;小节标题建议带时间,例如## 【14:30 干了什么】(便于memory_lint与检索)。 - 查近期内容用
memory_search;需要旧日用scope=all或memory_read指定日期。 - 想预览归纳结果而不改文件:
memory_tend且dryRun: true。 - 凭据与密钥不要写入记忆文件(插件在 AGENTS.md 提示中明确禁止)。
适用场景与注意¶
适合需要按天记日记、又要控制上下文体积的 DSH 桌面工作流:热档索引常驻、冷档按需检索,长期要点集中在 MEMORY.md。
DSH 生态是「一切皆插件」;skillhub.cn 上的插件目录为社区站点,与 DeepSeek / 幻方无官方从属关系。安装前请自行查看 仓库源码 与 MIT 许可证;插件以当前 DSH 进程权限读写工作空间与 $DSH_HOME 下的集成状态,只应安装你信任的来源。
结尾¶
dsh-memory-tide 用热档、冷档与每日归纳,把「最近常看」和「偶尔要翻的旧账」分开管理,并通过短索引控制默认进上下文的信息量。详情与更新以 GitHub README 为准:XHszDHM/dsh-memory-tide;安装与分类说明见 SkillHub 目录页。