Back to home

DDDFXYqiming

dsh-layered-memory

Cross-session long-term memory plugin for DeepSeek Harness

Stars
1
Language
JavaScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

dsh-layered-memory

DeepSeek Harness(DSH)跨会话长期记忆插件 —— 命名空间隔离 + L1 索引注入(存在性编码)+ L2 环境事实 + L3 任务经验 + 自动蒸馏候选 + 溯源/归档/回滚 + 自动维护 + 渐进式工具暴露。

能力

组件说明
memory:index 注入通过 ctx.systemPrompt.context 把 L1 索引注入每轮模型上下文(实时读文件,改动即生效)
memory(运行时 skill)触发语义:何时读、何时写、何时同步索引
memory_activate渐进式暴露兜底:skill 加载后工具未自动出现时调用一次
memory_list列出全部记忆(L2 facts + L3 sops + pending + 索引行数)
memory_read读取指定记忆(index / fact 主题 / sop 文件名),返回溯源 meta
memory_write写入记忆(fact/sop,evidence 必填 = 行动验证公理)
memory_index重建 L1 索引自动段(保留 [RULES] 手动段)
memory_pending查看自动蒸馏候选
memory_accept接受 pending 候选入正式记忆
memory_update更新记忆(supersede 保留历史快照)
memory_archive归档记忆(从 L1 索引与 memory_read 隐藏,文件保留在 archive/,可用 memory_rollback 恢复)
memory_rollback回滚到 .history/ 中最近快照
memory_expand通过 sessionQuery 展开 sourceSession/sourceSeqs 原始事件
memory_stats统计 L2/L3/pending/archived/大小
memory_maintain去重、压缩索引、统计、合并候选

设计

机制说明
L1 索引注入ctx.systemPrompt.context 每轮实时注入 L1(读文件,改动即时生效,无需重载)
写入工具memory_write(模型/用户主动,evidence 强制)
渐进式暴露全局只挂 memory_activate,skill 加载成功后按 Agent 挂载 12 个记忆工具;progressive: false 回退全局注册
自动蒸馏turn/end 把成功工具调用写入 pending/ 候选区,memory_accept 确认后入正式记忆
溯源/审计memory-meta.json 记录 sourceSession / sourceSeqs / createdAt / updatedAt / evidence
冲突/过期memory_update(supersede) / memory_archive / memory_rollback,旧版本保留在 .history/ / archive/
命名空间<memoryDir>/<namespace>/...default 兼容旧根目录;默认取 workspace/git 分支
自动维护maintainEveryTurns(默认 20)触发去重/压缩/统计/合并候选
L1 索引index.txt(≤30 行,<!-- AUTO --> 自动段 + [RULES] 手动段)
L2 事实库facts.md## SECTION upsert)
L3 经验库sops/*.md(slug 文件名)
热度统计file_access_stats.json(轻量) + memory_stats.json(聚合统计)
L0 元规则memory_management_sop.md(行动验证/禁易变/最小指针/不删改)

安装

# 从 GitHub 安装(推荐,自带 cordis.patch.yml,贡献 id: dsh-layered-memory)
dsh plugin --profile web add github:DDDFXYqiming/dsh-layered-memory

# 本地开发时也可直接使用仓库目录
dsh plugin --profile web add <本目录>

配置(可选,覆盖默认)

# profile cordis.patch.yml —— 裸条目覆盖 bundle 行(勿重复 insert!)
- id: dsh-layered-memory
  config:
    memoryDir: ''              # 默认 <home>/.dsh/memory
    maxIndexLines: 30
    progressive: true
    defaultNamespace: ''       # 固定默认命名空间;留空则 autoNamespace 生效
    autoNamespace: true        # 默认取 workspace 目录名 + git 分支名
    autoPending: true          # turn/end 自动生成 pending 候选
    maintainEveryTurns: 20     # 每 N 轮自动维护

存储布局

<home>/.dsh/memory/
├── memory_management_sop.md   L0 元规则
├── index.txt                  L1 索引(≤30 行)
├── facts.md                   L2 环境事实
├── sops/*.md                  L3 任务经验
├── pending/*.md               自动蒸馏候选区
├── archive/                   归档/历史保留
├── .history/                  supersede/rollback 历史快照
├── memory-meta.json           溯源/审计元数据
├── memory_stats.json          聚合统计
├── maintenance-report.json    最近一次维护报告
└── file_access_stats.json     读取热度

核心公理

  1. 行动验证:No Execution, No Memory —— memory_write 的 evidence 必填,只写成功验证过的信息
  2. 神圣不可删改:已验证事实可压缩/迁移/supersede/archive,但严禁物理丢弃
  3. 禁易变状态:时间戳/PID/临时路径不存
  4. 最小充分指针:L1 只写存在性,细节在 L2/L3 按需取

开发与测试

pnpm install
pnpm build        # node --check lib/index.js
pnpm test         # vitest
pnpm test:smoke   # dsh --profile headless --dump-config

相关

  • 底层接缝:ctx.systemPrompt.context / ctx.skills.register / ctx.tools.register / session/event 事件 + ctx.sessionQuery
  • 授权:MIT