dsh-snail-memory:DSH 分层记忆与 Web 面板

前言

在 DeepSeek Harness(DSH)里跑长对话或跨多个工作区时,模型默认不会记住你上一轮整理过的偏好、项目约定或临时结论。常见做法是手动粘贴上下文、靠外部笔记,或在每个 Session 里重复说明。DSH 生态里插件可以扩展宿主能力;下面介绍维护者 snaiheihei 发布的 dsh-snail-memory(npm 包名 dsh-snail-memory),它为单用户提供 global / workspace 两级记忆,并通过 Web 面板查看条目、调整蒸馏与整合策略,且每个对话可手动选择要加载的记忆层。

这是什么

dsh-snail-memory 是 Cordis 插件:单用户、全局与工作区分层的记忆存储;启用后把记忆索引常驻上下文、详情按需加载;在 Web UI 里浏览与控制条目。源码与说明见 GitHub,社区目录页见 SkillHub。协议 MIT;兼容 dsh >=0.2.1-rc.3 <0.3.0-0,Node >=22.19.0(以 README 与 package 声明为准)。

核心功能

两级记忆与显式开关

  • global:跨工作区;workspace:绑定单个工作区。两层相互独立,各自有 revision。
  • 记忆不会自动进入上下文。每个 Session 在输入框左侧记忆按钮里手动启用某一层;可用 refresh 生成新快照,disable 关闭。

注入与会话安全

  • 快照通过 agent.inject() 作为一条 user 消息追加(source.kind = "snail-memory"),插件不改写、不替换、不删除既有会话消息。
  • 每次注入带稳定 injectionId,区分 desired → queued → committed;只有会话里真正落盘的 user/message 才算 committed,重启后按会话日志对账,避免重复注入。

生命周期与模型工具

  • 统计完成的用户轮次,按空闲时间蒸馏记忆;分别调度 workspace 与 global 的 consolidation,并按分类做 retention 清理。
  • 工具:snail_memory_read(按 id 读取,大对象先返回分片清单)、snail_memory_feedback(对已 committed 快照里的记忆打 helpful / unhelpful / incorrect)。
  • 斜杠命令:/memory status、/memory remember workspace <text>、/memory correct workspace <id> <text>、/memory forget workspace <id>。

Web UI 与单写者

  • 侧栏 Memory 面板(全局 / 工作区 / 设置),可查看条目、引用、最近一次已提交快照与 token 估算(用于上下文预算,非 provider 精确 usage)。
  • 同一数据根下可多 Host 启动,但仅一个持有写锁,其余只读;锁有心跳与 stale 回收,写操作带 fencing 校验。

安装与启用

任选一种安装方式,然后重启 Host 并刷新页面。安装前建议查看源码与 MIT 许可证;插件以当前 dsh 进程权限运行,记忆数据落在本地 $DSH_HOME。

# 1) 从 npm 安装
dsh plugin --profile web add dsh-snail-memory

# 2) 从 tarball 安装
dsh plugin --profile web add .\dsh-snail-memory-0.1.0.tgz

# 3) 从解压后的目录安装
dsh plugin --profile web add .\dsh-snail-memory

# 4) 从 Git 安装(需要该 tag/commit 带上构建产物)
dsh plugin --profile web add github:snaiheihei/dsh-snail-memory#v0.1.0

装完确认组合层生效:

dsh --profile web --dump-config   # 应出现 "# == dsh-snail-memory"

卸载:

dsh plugin --profile web remove dsh-snail-memory

典型用法

  1. 打开 Session,点击输入框左侧记忆按钮,选择 global 或 workspace 启用。
  2. 启用后当前记忆索引作为快照注入;对话中可随时 refresh 更新快照。
  3. 侧栏 Memory 浏览条目、查看详情、删除、promote 到 global,并调整全局设置。
  4. 需要写入时用 /memory remember workspace <text>,或由模型在对话中写入;读取与反馈由 snail_memory_read、snail_memory_feedback 完成。

配置

在 profile 的 cordis.patch.yml 中,按行 id snail-memory 覆盖。patch 会整体替换该行的 config,需把要保留的键一并写全:

- id: snail-memory
  config:
    provider: deepseek
    model: deepseek-chat
    reviewEveryUserTurns: 15
    idleDelayMinutes: 60
    consolidationCooldownHours: 20
    globalConsolidationCooldownDays: 7
    retentionSweepHours: 24
键 默认值 说明
dshHome 宿主解析值 数据根;默认跟随 DSH_HOME
provider / model 未设置 辅助模型路由;留空时从当前 agent 列表选可用模型
reviewEveryUserTurns 15 每累计多少完成的用户轮次触发记忆蒸馏
idleDelayMinutes 60 会话空闲多久后触发蒸馏
consolidationCooldownHours 20 workspace consolidation 冷却
globalConsolidationCooldownDays 7 global consolidation 冷却
retentionSweepHours 24 retention 清理间隔

默认数据目录:$DSH_HOME/snail_memory/(config.dshHome 可改)。权威状态在 state.v2.json;审计日志 audit.v1.jsonl 只记 operation / revision / 时间,不记提示词与记忆正文。

适用场景与注意

适合:希望在 DSH Web 里长期沉淀偏好与项目知识、又希望按 Session 控制「哪一层记忆进上下文」的单用户开发者。

注意:

  • 记忆仅本地存储,不采集遥测;蒸馏/合并走宿主 ctx.llm,凭据由你自己的 provider 配置决定。
  • RPC 挂在宿主 webServer 同源路由 /snail-memory/rpc/*。勿将 dsh Web 绑定到不受信任网络(--host 默认本机)。
  • 社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系;安装插件前请自行审阅仓库代码。

结尾

dsh-snail-memory 把 global / workspace 分层记忆、显式注入、Web 管理与蒸馏整合收进一个 DSH 插件;需要细节时直接对照 README 与仓库。

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

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

小夜