dsh-memory-ga:DeepSeek Harness 的有门控层叠记忆插件

前言

Coding agents often forget what they just did, or vector-based “auto-memory” products remember too much—drafts, wrong turns, and guesses. dsh-memory-ga takes a different path. It follows the discipline “No Execution, No Memory”: it only stores long-term facts after tools (or the user) have confirmed reality. It provides a small, trustworthy index of facts and rules, a session notepad, and a “settlement ritual” to turn lessons into Skills without silently poisoning memory.

核心功能

根据已核实的事实,该插件具备以下能力:

  • Verified only:只有在工具(或用户)确认现实后,才会进行长期写入。
  • Hard-injected L1:每轮对话都会硬注入一个 ≤~30 行的索引 + RULES,而非一个可能永远不会被打开的指针。
  • Working notepad:当会话记事本 key_info 非空时,会重新注入到上下文中。
  • Gated settlement:start_long_term_update 会开启一个协议,但不会自动编辑你的文件。
  • Skills stay Skills:可复用的流程 → DSH Skills。记忆不是第二个 SOP 仓库。
  • Local & auditable:所有数据均为 $DSH_HOME/memory 下的纯 UTF-8 文本,可 diff、备份、手动编辑。

目录结构

插件在 $DSH_HOME/memory 下维护以下结构:

$DSH_HOME/memory/
  L0_memory_management.md   # 宪章(如何记忆)
  global_mem_insight.txt    # L1:导航 + RULES → 硬注入
  global_mem.txt            # L2:已验证的事实 → 按需读取(≤9 行的章节 + 指针)
  l3/<topic>.md             # L3:长篇事实档案(L2 章节指向此处)
  .working/<session>.txt    # 可选的会话记事本转储

插件不包含笔记式的杂物抽屉,也没有记忆树 L4。l3/ 仅存放事实档案,流程属于 Skills(Skill = 怎么做,L3 = 是什么)。

提供的工具

工具名 功能
update_working_checkpoint 替换会话记事本 (key_info)
start_long_term_update 返回 L0 + 结算协议(不自动写入)
memory_status 显示路径、L1/L2 大小、L3 档案数、记事本是否为空、nudge 计数器

插件提供可选的软提醒(默认开启):在经过足够步骤后,温和地提醒进行 checkpoint 或 settlement。绝不强制工具调用,绝不自动写入 L1/L2。

安装与启用

在 DSH 的 profile 目录下(例如 $DSH_HOME/profiles/web),使用 pnpm 安装:

pnpm add dsh-memory-ga@github:DiligenceLai/dsh-memory-ga

确保 profile 加载了该包(通常在 dsh.profile.bundles 中列出,或依赖包内的 cordis.patch.yml 自动插入)。

配置

在 Cordis 配置中添加 memory-ga 插件 ID:

- id: memory-ga
  config:
    # root: null            # 默认:$DSH_HOME/memory
    bootstrap: true
    injectL1: true
    injectWorking: true
    l1MaxChars: 1200
    workingMaxChars: 1200
    persistWorkingFile: true
    nudge:
      enabled: true
      workingEvery: 12
      settleAfterSteps: 15
      maxWorkingNudges: 3
      maxSettleNudges: 2

硬依赖:插件声明了 inject: ["tools", "systemPrompt", "llm"]。运行内存记事本和 nudge 注入需要 @deepseek-ai/dsh-llm(需具备 createUserMessage 能力)存在于宿主组合中。如果缺失,插件仍会加载,但 memory_status 会警告记事本/nudge 未注入。

注意:workingMaxChars 是存储和注入会话记事本的单一上限,因此 memory_status.workingChars 始终反映模型实际看到的内容。

典型用法

  1. 检查状态:重启 DSH 或重新加载 profile 后,在会话中运行 memory_status,应能看到 $DSH_HOME/memory 路径及相关计数。
  2. 更新记事本:运行 update_working_checkpoint 并附带简短备注,下一轮模型步骤应包含 ### [WORKING MEMORY]。
  3. 长期更新:运行 start_long_term_update 查看协议及完整的 L0 内容。此时磁盘文件不会改变,直到你手动编辑。
    • 首次启动会根据模板创建缺失的 L0/L1/L2,且不会覆盖现有文件。

适用场景与注意

  • 适用场景:你需要可控的结晶化过程和 Git 友好的真相存储,而不是自动的向量检索或自动保留。
  • 注意 1:这不是一个向量数据库、TEMPR 或自动 git 保留产品。
  • 注意 2:这不是 DSH Skills 的替代品。
  • 注意 3:这不是自动生成 Skills 的工具。
  • 隐私:仓库仅包含通用模板。你真实的 L1/L2 文件位于你机器上的 $DSH_HOME/memory 中,永远不会包含在此包中。不要将个人记忆文件或绝对路径提交到 fork 中。

总结

dsh-memory-ga 为 DeepSeek Harness 提供了一种基于文件系统的、有门控的层叠记忆方案。它通过硬注入索引、会话记事板和有门控的结算协议,帮助 Agent 在保留必要事实的同时,避免记忆污染。

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

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

小夜