編集者注

yan5236/dsh-memory

Two-phase long-term memory plugin for DeepSeek Harness (DSH): per-session extraction + global consolidation, always-injected summary, and memory_list/read/search/add tools.

これは DeepSeek Harness(DSH)プラグインです。当サイトは GitHub README、インストール情報、メンテナンス状況、公開セキュリティシグナルをまとめています。

English · 简体中文

dsh-memory · DeepSeek Harness 长期记忆插件

把会话历史自动提炼为长期记忆:两阶段管道(逐会话提取 → 全局整合),摘要常驻注入新会话,四个工具按需检索。

为什么需要长期记忆

每次新会话都从零开始,用户要反复重申偏好与约定,助手要重新踩一遍已经踩过的坑。 dsh-memory 在会话结束后自动把值得沉淀的内容提取出来,定期整合成一份高密度导航摘要 (常驻注入每次会话)和一份可 grep 的检索手册,让未来的会话: 少听重复的偏好说明、少走弯路、复用被验证过的工作流、避开已知的坑

设计参考了 Codex 记忆系统(两阶段提取/整合、三级制品结构、任务租约、冷却、脱敏), 并针对 DSH 重新组合:不需要 SQLite、不需要 git 基线、不需要常驻整合子代理。

功能特性

  • 🧠 Phase 1 逐会话提取:会话结束后(防抖,默认 3 分钟)读取会话日志,过滤渲染 → 脱敏 → 交给模型提取结构化记忆(raw_memory + rollout_summary + slug); 无价值的会话输出空结果自动跳过(no-op 门槛)。
  • 🧩 Phase 2 全局整合:按冷却周期(默认 6 小时)把新记忆合并进 MEMORY.md (检索手册)与 memory_summary.md(首行 v1 协议的高密度导航摘要); 原始记忆归档轮转,永不重复整合。
  • 📥 摘要常驻注入memory_summary.md 内容(有硬上限保护)随 system prompt 注入 每次会话,模型无需任何操作就能看到导航索引。
  • 🔍 四个记忆工具memory_list / memory_read / memory_search / memory_add(仅在用户明确要求时写入),模型按需检索细节。
  • 🔒 安全纪律:会话内容一律按数据分析(prompt 注入免疫);密钥/令牌/私钥在 输入与输出两侧脱敏;记忆路径越界一律拒绝。
  • 🔁 可靠调度:每个会话一个租约(KV 持久化),重启不重复处理、不重复整合; 失败带退避重试;孤儿租约自动回收。
  • ⚙️ 设置页:设置 → 长期记忆 中查看统计、手动触发提取/整合、调整冷却与模型路由。

工作原理

会话结束 ──► Phase 1(逐会话)──► rollout_summaries/<slug>.md  +  raw_memories.md
                                          │
                              (冷却到期 / 有新记忆)
                                          ▼
                                   Phase 2(全局)
                                          │
              ┌───────────────────────────┴───────────────────────────┐
              ▼                                                       ▼
   memory_summary.md(常驻注入每次会话)            MEMORY.md(memory_search / memory_read 检索)

安装

注意

使用前请确保已安装 DeepSeek Harness

包名说明:@nanmicoder/dsh-memory 是包标识(@nanmicoder 是 npm 作用域形式, dsh-memory 是包名)。本插件通过 GitHub 分发(不发布 npm),安装方式如下:

dsh plugin --profile web add 'git+https://github.com/yan5236/dsh-memory.git#main'

检查组合配置并启动:

dsh --profile web --dump-config
dsh web

打开 设置 → 长期记忆 查看状态;记忆文件默认写入 $DSH_HOME/memories/

提示

dump-config 的组合树里没有 - id: dsh-memory 这一行,说明 profile 的 dsh.profile.bundles 数组里没有注册这个包(bundle 补丁层未应用),手动把 "@nanmicoder/dsh-memory" 加进该数组即可。

📋 一键提示词:让 DSH 自己装

不想手动敲命令?把下面这段整段复制,直接粘贴给 DSH,让它完成安装、注册与验证:

请帮我把 DSH 长期记忆插件 dsh-memory 安装到 web profile,GitHub 仓库:
https://github.com/yan5236/dsh-memory

要求:
1. 运行 dsh plugin --profile web add 'git+https://github.com/yan5236/dsh-memory.git#main'
2. 检查 $DSH_HOME/profiles/web/package.json:dependencies 里应含
   "@nanmicoder/dsh-memory",且 dsh.profile.bundles 数组应包含
   "@nanmicoder/dsh-memory"(缺少就补上;bundles 缺失会导致插件补丁层不生效)。
3. 运行 dsh --profile web --dump-config,确认输出中出现 "- id: dsh-memory"
   且没有报错。
4. 重启 DSH:先停掉当前 dsh web 进程,再重新运行 dsh web。
5. 验证:设置页出现「长期记忆」;会话工具列表包含 memory_list / memory_read /
   memory_search / memory_add。
6. 若任一步骤写入 DSH 配置目录($DSH_HOME/profiles)时被权限策略拦截,
   提示用户切换到 Full access 或批准对应操作,不要绕过或静默失败。

配置

组合 config 提供基础层(cordis.patch.yml 中的 config: {} 使用全部默认值), 设置页可覆写常用项并持久化到 DSH 存储:

- id: dsh-memory
  config:
    memoryRoot: C:/path/to/memories   # 默认 $DSH_HOME/memories
    provider: deepseek-official       # 可选:为记忆管道固定模型路由
    model: deepseek-v4-flash          # 与 provider 成对配置
    consolidationCooldownMs: 21600000 # 整合冷却(默认 6 小时)
    idleDebounceMs: 180000            # 轮末防抖(默认 3 分钟)
    maxRolloutsPerRun: 3              # 每轮提取的会话数
    maxSummaryChars: 8000             # 注入摘要的字符上限
配置项默认说明
enabledtrue总开关
memoryRoot$DSH_HOME/memories记忆根目录
provider / model空则使用部署默认模型
idleDebounceMs180000会话轮末后的静默窗口
maxRolloutsPerRun3每次运行提取的会话数
extractionConcurrency1提取并发(默认串行,对模型提供方更温和)
minSessionEvents4事件过少的会话直接跳过
maxRolloutAgeDays30超龄会话标记跳过
maxTranscriptChars60000送入提取模型的会话文本上限
phase1MaxTokens4096单次提取输出上限
consolidationCooldownMs21600000整合冷却(失败后约 15 分钟自动重试,不受冷却限制)
maxRawChars120000单次整合的原始记忆输入上限
phase2MaxTokens12000单次整合输出上限
maxSummaryChars8000注入摘要的字符上限
retryLimit3提取失败重试次数

记忆目录结构

<memoryRoot>/
├── memory_summary.md          # 常驻注入的导航摘要(首行 v1)
├── MEMORY.md                  # 检索手册:偏好/流程/失败护盾
├── raw_memories.md            # Phase 1 产出,等待整合
├── raw_memories.archive.md    # 已整合原始记忆的历史归档
├── rollout_summaries/         # 每次会话的回顾(证据层)
├── skills/                    # 整合沉淀出的可复用流程
└── extensions/ad_hoc/notes/   # memory_add 写入的用户要求笔记

开发

pnpm install
pnpm verify
git diff --check

设计文档与威胁模型见 DESIGN.md

许可证

MIT

REPOSITORY SIGNALS

セキュリティとインストールエビデンス

このスコアは公開リポジトリメタデータと当サイトに登録されたインストールエビデンスのみに基づくもので、コードセキュリティ監査とは異なります。

出所の追跡可能性

公開プラグインカタログから取得し、公開 GitHub リポジトリにリンクしています。

ライセンス

リポジトリは MIT ライセンスを宣言しています。

メンテナンス活動

過去180日以内にコードの更新があります。

インストールエビデンス

再現可能な正確なインストールメタデータはまだ登録されていません。リポジトリの説明に従って手動で確認してください。

インストールライフサイクルスクリプト

確認したパッケージメタデータにインストールライフサイクルスクリプトは宣言されていません。