dsh-tide-memory:带闸门、归属与过期的 DSH 长期记忆

前言

在 DeepSeek Harness(DSH)里给智能体加「跨会话记忆」,常见结果是:话能写进库,召回时却缺主语、旧事实和新状态并存、项目删了记忆还在、还把一句任务指令当成用户偏好。维护者 jiulanyanyue-boop 在 README 里归纳了四类问题,并据此做了 dsh-tide-memory(中文名「潮汐记忆」)。它是 DSH 宿主插件,走 agent/pre-step 与 session/event 钩子,不依赖 MCP,npm 与 pip 第三方依赖均为零;记忆落在 SQLite 双时间模型里,面板用人话展示。下面介绍它解决什么、怎么装、日常怎么用。

这是什么

dsh-tide-memory 面向 DSH 0.2.1+,给 Harness 提供长期记忆:写入前有筛选、每条记忆有归属范围、会过期与覆盖更新、设置里可读。分类属于社区目录中的「记忆」;源码与文档在 GitHub,目录页见 SkillHub。许可证 MIT,当前 package 版本 2.2.0。

核心设计

写入闸门(五问 + 硬检查)

任何记忆入库前要通过五问,答不上来则不记:主语是否清楚、脱离上下文能否读懂、是事实还是指令、是否可复用、有无时间锚(无锚且非长期习惯则拦)。另有谓词格式、值长度、空话、临时路径等硬检查。带「曾导致 / 根因 / 必须 / 已修复」等结论回指的句子会放行,避免误杀经验性结论。

归属与召回隔离

用户画像进 global,本机 DSH 环境进 workspace,具体项目进 project(绑 git remote 或路径)。召回时按当前工作区过滤:在项目 A 只召回 A 与全局,无关目录只召回全局,README 描述为 fail-closed 隔离。

生命周期

依赖路径消失时,检索前检查可将记忆标为 expired(如 expired_by=scope-gone)。状态类事实用稳定键覆盖:旧条 superseded,新条 active。TTL 方面:episode 90 天、fact 180 天;preference / reflection 不过期。冲突与过期不物理删库,走 superseded / expired / rejected 与 audit_log。

可读性与注入方式

存储为 (kind, predicate, object) 三元组,界面用 summary 展示。注入走 agent/pre-step 插入 user 消息(含 <system-reminder>),而非改 system prompt——README 说明部分 persona preset 会吞掉其它 prompt 段,pre-step 不会被静默丢弃。子 agent 委派内容默认不采集、不注入。

安装与启用

官方推荐用 GitHub 地址安装,避免裸包名被 npm 同名包误解析:

dsh plugin --profile web add github:jiulanyanyue-boop/dsh-tide-memory

指定发布 tag(README 示例为 v2.2.0):

dsh plugin --profile web add github:jiulanyanyue-boop/dsh-tide-memory#v2.2.0

装完后重启一次 dsh web。

前置条件:Node.js >=22.19.0(与 DSH 一致);Python 3.10+ 用于自动整理(标准库即可,无需 pip)。无 Python 时采集与注入仍可用,但不会自动整理,首次启动可弹窗一键安装 Python。换机后若用 LLM 抽取,需在设置页重新填写 API Key(密钥用 Windows DPAPI 绑定当前用户)。

数据目录在 $DSH_HOME/dsh-tide-memory/(如 memory.db、inbox.jsonl、memories.json 等),路径均由 DSH_HOME 推导。

可选配置写在 $DSH_HOME/dsh-tide-memory.json,例如 autoConsolidate(默认 true)、autoConsolidateDelayMs、autoConsolidateIntervalMs 等;面板也可开「每日定时整理(LLM 巩固)dailyConsolidate / dailyConsolidateTime)。

离线或 link 安装时,将插件目录放到任意位置,在 profile 的 package.json 里 dependencies 写 link:<绝对路径>,并在 dsh.profile.bundles 末尾加入 dsh-tide-memory,于 profile 目录执行 pnpm install 后重启 DSH。

典型用法

日常无需额外操作:新会话会自动把用户发言写入收件箱、相关话题召回记忆、开场带上用户画像;收件箱满足条件时默认 autoConsolidate 会跑 Python 整理并刷新检索快照。

需要固定时刻做巩固与维护时,可运行插件目录下:

<插件目录>\lib\mem.cmd flush-inbox --llm
<插件目录>\lib\mem.cmd maintain

不配 LLM 时去掉 flush-inbox 的 --llm(规则抽取,离线可用)。README 提醒不要手工改 memory.db。

设置 → 记忆 可查看面板与整理开关;插件以当前 DSH 进程权限运行,安装前宜自行审阅源码与 MIT 许可证。

适用场景与注意

适合希望在 DSH Web profile 下长期协作、又需要项目级隔离与可过期记忆的用户。不适合指望「所有对话原文都永久入库」——闸门会拒掉过程性、无上下文的碎片。

社区目录 SkillHub 与 GitHub 无 DeepSeek / 幻方官方从属关系;生态仍是「一切皆插件」的 DSH 社区扩展。

结尾

dsh-tide-memory 用五问闸门、scoped 召回、双时间 SQLite 与 pre-step 注入,针对「记得住、看得懂、会过期、能更新」做了成套实现。进一步了解请阅 GitHub README 与上述目录页。

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

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

Xiaoye