前言¶
DeepSeek Harness(DSH)社区里常见的记忆插件,多半解决的是语义记忆:你是谁、偏好什么、项目里定了哪些约定。对话会被提炼成一条条事实,按人、项目或主题分层,在下次对话前注入。
但开发者和日常使用者还有另一类需求:不必背下某次聊天的每个论点,却要能想起「上周三下午我们在改记忆插件,卡在摘要丢信息,最后决定用子代理」。这类记忆以天为粒度、先粗后细、有时还要靠图片唤起细节。现有方案如 meow-memory、dsh-memory-beta、Aurabot 等,分层轴都是语义或主题,一般不保留当天原始对话与图片副本。dsh-day-memory(维护者 Tarolcraze,分类:记忆)补的是时间轴上的情节记忆,与事实类记忆可以并存。
这是什么¶
一句话:dsh-day-memory 是给 DSH 的三级「日情节」长期记忆——一天一条索引,第二天由子代理蒸馏前一天内容,需要时再层层下钻;不是「记住你是谁」,而是「上周三下午到底发生了什么」。
数据在磁盘上大致分为四层(README 中的布局):
一级 l1/<日期>.json 日期 + 标题 + 关键事件 + 关键词 ← 关键词检索
二级 l2/<日期>.md 当天完整概括 ← 命中后读
三级 l3/<日期>.jsonl 当天原始对话 + 图片副本 + 注释 ← 需要细节时读
常驻 pinned.json 「时刻记住」的极重要事实 ← 每轮注入
桌面 desk.md 人约 + 最近的事 + 记忆怎么转(≤4KB) ← 每轮注入
版本 0.2.0,MIT 许可证。社区目录页:https://www.skillhub.cn/plugins/Tarolcraze/dsh-day-memory;源码:https://github.com/Tarolcraze/dsh-day-memory。
核心功能¶
从会话日志回填,而不是另录一份¶
插件监听 session/event 做实时捕获与兜底,但三级原文主要来自 DSH 自带的 append-only 会话日志:整理时用 sessionQuery.readSession() 回填当天会话,与 inbox 按 (sessionId, seq) 去重。晚装几天也可通过 backfillDays 补整理历史日期。
次日离线整理与子代理蒸馏¶
每天第一次打开 DSH 时扫描水位线,对「今天以前、尚未整理」的每个日期启动 one-shot 子代理(默认 subagentProvider: spawn),读三级原文,产出严格 JSON(标题、200–500 字概括、3–8 条事件、关键词、实体、常驻提议等)。长文分块 map-reduce;失败保留原文可重试,同一天重复整理幂等。
两段式检索¶
一级索引体量小(一年约 365 条),不依赖向量库:先用中文二元切词 + BM25 + 时间衰减做关键词检索;命中多条由模型看标题与事件判断;一条未命中时返回最近 60 天标题,交给模型判断——README 称为「脚本检索转为 AI 检索」。
常驻记忆需用户确认¶
AI 只能通过 memory_propose 提议写入 pinned.json,须在管理面板确认,避免聊天里的随口一句变成持久指令。
暴露的工具¶
| 工具 | 用途 |
|---|---|
memory_search |
关键词/日期检索一级;没命中返回近期标题 |
memory_read |
按天读一级/二级/三级,三级可返回图片块 |
memory_days |
列出有记录的日期 |
memory_propose |
提议常驻记忆(需用户确认) |
memory_annotate_image |
给某天图片补注释 |
memory_vote |
给某天投命中票,影响后续被想起的概率 |
memory_note |
把未发生在对话里的事记进某天 |
memory_stats |
各层条数、桌面页字节、上次整理时间等 |
问「上次那个…」时,典型路径是 memory_search → memory_read 下钻二级或三级。
安装与启用¶
桌面版使用 desktop profile,命令行 dsh plugin 按设计不能操作它。README 给出的方式是:
- 将整个
dsh-day-memory目录放到本机,例如D:\dsh-plugins\dsh-day-memory; - 在 DSH 桌面客户端任意会话中说:把
D:\dsh-plugins\dsh-day-memory作为 bundle 安装到当前 profile; - 安装成功后重启 DSH(宿主插件需新进程加载);
- 打开「设置 → 日记忆」。
Web 版(dsh web)示例:
dsh plugin --profile web add link:D:\dsh-plugins\dsh-day-memory
路径按你的实际目录替换。插件以当前 DSH 进程权限读写 dataDir,安装前应自行查看源码与 MIT 许可证。
配置¶
写入 profile 的 cordis.patch.yml(或由 agent 改插件配置),README 示例:
- id: day-memory
name: 'dsh-day-memory'
config:
timeZone: Asia/Shanghai
dataDir: 'D:\dsh-data\day-memory'
backfillDays: 14
retentionDays: 90
deskBytes: 4096
deskItems: 8
includeToolResults: false
maxPinned: 30
recentDaysInPrompt: 3
maintenanceIntervalMinutes: 30
subagentProvider: spawn
常用字段含义:timeZone 切分「一天」;dataDir 记忆库根目录(默认 <DSH_HOME>/day-memory);retentionDays 控制三级保留天数,超出归档;deskBytes / deskItems 限制每轮注入的桌面页;includeToolResults 是否在三级记录工具返回(默认 false)。
完整数据目录结构见 README 的「数据布局」(state.json、inbox/、archive/、logs/ 等),写入采用临时文件 + rename。
适用场景与注意¶
适合:需要按日期回忆「那天做了什么」、希望保留对话原文与图片副本、愿意次日让子代理做摘要而不是即时向量检索的场景。
README 列出的限制 worth 知晓:
- 整理需要至少一个活着的会话;刚启动无会话时会延后,三级仍可从会话日志重建。
- 插件未运行期间的超长会话,回填只扫「当天创建」的会话,可能漏采。
- 关键词检索对同义词、代词(如「上次那个」「他」)有限,需模型结合近期标题或换关键词。
- 归档后读不到三级原文,只保留一二级;面板在 Windows 真机上的渲染与 HTTP 鉴权尚待验证(路线图项)。
- 记忆内容在注入时会标注为历史数据,不等于可执行指令。
DSH 生态是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-day-memory 用时间轴分层记「经历」,与记「结论」的语义记忆插件互补:结论用来懂你,经历用来回忆。进一步了解可打开 SkillHub 目录页 与 GitHub 仓库。