dsh-memory

August 15, 2026 · View on GitHub

为 DeepSeek Harness 打造的自学习长期记忆——historian 压缩上下文、dreamer 打理记忆、sidekick 在你需要时精准召回。

License: MIT

English | 中文

DeepSeek Harness 的长期记忆插件,复刻 magic-context(capture → consolidate → recall)的设计。单个 host 平面插件;存储为本地 SQLite 数据库,带 FTS5 全文检索与本地 ONNX 嵌入。

功能

  • 捕获(capture) — 每 N 轮用便宜模型把对话提炼成持久记忆(节流,不阻塞主线)。
  • 历史学家(historian) — 上下文窗口将满时把旧消息折叠为分层摘要;原始会话日志 append-only 保留,可随时恢复。
  • 回忆(recall) — 每轮开始前自动检索项目相关记忆,注入为 <system-reminder> 块。
  • 梦境(dreamer) — 定时后台维护:分类、合并、归档、晋升重要记忆。
  • 伙伴(sidekick) — 按需检索增强(memory_aug):检索记忆来丰富当前回答。
  • 13 个记忆工具 — 模型可写、搜、列、改、归档、合并、读、删、梦境、巩固、展开、增强记忆,并管理会话笔记。

安装前提

安装

  1. 把本仓库克隆(或软链)到 profile 的插件目录:

    <dsh-home>/profiles/<profile>/plugins/dsh-memory
    
  2. 在插件目录内执行 npm install

  3. 在 profile 组合中引用:

    - id: dsh-memory
      name: dsh-memory
      config: {}
    

首次加载自动建库并完成迁移,无需任何手工初始化。

内置压缩

dsh-memory 的 historian 接管上下文折叠,因此应关闭所用 agent preset 的宿主自带压缩——这与 magic-context 的 setup wizard 在配置层关闭内置压缩是同一思路。scripts/setup.mjs 用定点编辑(保留注释与格式)切换 <dsh-home>/.agent-presets/ 下任意 preset 的 compaction-basic / command-compact 条目:

node scripts/setup.mjs enable  --preset <name>   # 关闭宿主压缩 → historian 负责折叠
node scripts/setup.mjs disable --preset <name>   # 只撤销本脚本新增的改动
node scripts/setup.mjs status                    # 查看各 preset 压缩状态

--home 默认 ~/.dsh--preset all 对所有含压缩条目的 preset 生效。每次 enable 会备份 preset yml(agent.cordis.yml.dsh-memory.bak)并把改动记录到 .dsh-memory-setup.json,因此 disable 绝不会误动用户手工禁用的条目。

工具

全部为模型工具:模型经 harness 调用。

工具一句话说明
memory_write写记忆;幂等去重
memory_search跨记忆 / 分区 / 会话笔记的混合检索
memory_list按 category / scope / status 过滤,带分页
memory_update按 id 编辑记忆;重新嵌入并重新分类
memory_archive软删(可审计)——优先于 delete
memory_merge合并重复记忆;保留最重要的一条
memory_get按 id 读取记忆
memory_delete硬删(兜底手段)
memory_dream手动跑一次巩固:合并 + 分类 + 整理
memory_consolidate合并余弦重复;清理过期行
memory_expand从会话日志恢复被压缩分区的原文
memory_aug伙伴增强合成
ctx_note会话笔记(写 / 读 / 忽略 / 更新)

配置

所有字段均可省略;数值越界自动钳制,非法值加载时抛错。最常用的几项:

config:
  embed:
    mode: local          # local | openai-compatible | none
  capture:
    everyTurns: 5        # 每 N 轮提炼一次对话
  inject:
    topK: 4              # 每轮召回的记忆条数
  historian:
    triggerRatio: 0.70   # 上下文用到约 70% 时开始压缩
  dream:
    enabled: false       # 定时后台维护(默认关)

完整字段、默认值与钳制规则见 lib/config.js

致谢

这是为 deepseek-harness 做的独立复刻实现,灵感来自并部分移植自 magic-context(作者 ualtinok, MIT License)。与 cortexkit 和 DeepSeek 均无隶属关系。

移植/派生文件(以代码注释为准):lib/redaction.jslib/cron.jslib/decay.jslib/dreamer.jslib/budgets.js;其余模块参考 magic-context 的设计。上游许可文本见 NOTICE

License

MIT — 见 LICENSE;上游声明见 NOTICE