dsh-memory-organizer: Move-Only Archiving for Fixed Memory Limit Exceeded

前言

在 DeepSeek Harness(DSH)里,记忆类插件常把整本 markdown 记忆塞进提示词。以 dsh-whale-loli 为例,注入上限约 16000 字符;超限后会从文件前面硬切,而新记忆通常追加在末尾,结果是刚写进去的内容可能立刻不可见且没有报错。要在不另起一套记忆系统的前提下保住「固定记忆区整块进提示词」,需要有人盯着体积并在超阈值前把旧内容挪走。下面介绍社区插件 dsh-memory-organizer(维护者 JiessieM,分类:记忆),它只做这件事:给已经存在的记忆本瘦身。

这是什么

dsh-memory-organizer 是 DSH 记忆本自动整理插件。它不注册工具、不改写正文,固定记忆区超过配置阈值时,把最旧的可归档内容整块搬进 <DSH_HOME>/memoryORZ/<记忆文件名>/,原位留占位或索引行。与具体记忆插件无绑定:只要 markdown 里有一级标题带「记忆」相关字样,并按文档约定的节标题格式书写,即可被管理。

社区目录页:skillhub.cn/plugins/JiessieM/dsh-memory-organizer
源码与说明:github.com/JiessieM/dsh-memory-organizer(MIT,package 版本 0.1.0)

它要解决的核心问题

dsh-whale-loli 在超限时先丢滚动摘要,再清空归档索引,最后截断固定记忆并追加「…(固定记忆太长,已截断)」——从前往后切。阈值默认设为 15000 字符,是为滚动摘要、详细区、归档索引等留出约 1000 字符余量,避免固定区顶满 16000 后被截断。

本插件通过归档把固定记忆区压在阈值以内,保证整块固定记忆能完整注入。

核心功能

发现记忆本

不写死文件名。扫描 <DSH_HOME>/*.md 与 <DSH_HOME>/<一级子目录>/*.md(只下一层),跳过 memoryORZ/、node_modules/、plugins/ 等目录,以及 【YY-MM-DD】… 归档名和 .bak-* 备份。

判定条件:文件大小在 10 字节~8 MB;前 12 行内有一级标题含记忆相关词(如 # 固定记忆、# Memory、# 我的记忆)。正文里随口提到「记忆」不算;带 .md 的文件头标题不算记忆区。

第一个「标题带记忆词」的一级标题即记忆区起点。若没有区,插件会在第一个一级标题之后补 # 固定记忆 及格式壳,原有正文不动。多本记忆本并行管理,归档目录按文件名分开。

显式指定路径时不再自动扫描:

config:
  files:
    - whale-loli-v2-live.md
    - D:/notes/my-memory.md

结构与写入约定

固定记忆区内建议包含格式块与三个分区:## 印象(插件永不搬)、## 技能(索引区)、## 近期记忆(干活区,从这里搬最旧内容)。新建本可只写一行 # 固定记忆,插件在巡检周期内(默认 60 秒)自动补壳,补完不再重复插入。

节标题示例:

### 主题(可归档)【技能】【26-10-31】
- 一条小小节(10-31 14时)

状态词仅 (进行中) / (可归档);分类标记为 【印象】 【技能】 【事件】 之一,未标记的节不会被搬。日期格式 YY-MM-DD,用横杠。

搬运规则

  1. 印象区:一条都不动。
  2. 标了(可归档)的整节:直接搬走。
  3. 【技能】节:小小节超过 6 条则搬到剩 6 条,原位留 - 已归档 N 条小小节;仍超则继续压,每节至少留 2 条;再不行则整节迁走并在 ## 技能 记索引。
  4. 进行中的事件:未标(可归档)不动。

归档文件落在 memoryORZ/<记忆文件名>/,文件名形如 【26-10-23】【技能】英语学习.md;内容原样保留,文首注明来源与超限原因。同主题续写进同一文件,不每次新建 -2.md。

安全与隔离

只搬不改;写盘前 copyFileSync 备份为 <记忆本>.bak-<时间戳>;先写 .tmp 再 renameSync。不碰 whale-loli 的注入通道,体积变小后 composeMemory() 自然变短。

安装与启用

官方安装(资料原文):

dsh plugin --profile desktop add dsh-memory-organizer

装完后重启 DSH 才会加载。

约 3 秒后检查心跳文件是否生成:

<DSH_HOME>/memoryORZ/.organizer-heartbeat

示例内容:

2026-11-02T18:23:19.280Z pid=22100 threshold=15000 tick whale-loli-v2-live.md:12804

tick 后为当前固定记忆区字符数;之后每 60 秒刷新。

在 cordis.patch.yml 中可调整:

- insert:
    - id: memory-organizer
      name: dsh-memory-organizer
      config:
        threshold: 15000
        intervalMs: 60000
键 默认 说明
threshold 15000 固定记忆区字符阈值,不宜接近 16000
intervalMs 60000 巡检间隔;每轮仅 stat,超阈值才解析
dryRun false 只报告不落盘
files 自动发现 指定后不再扫描

典型用法

  1. 在 <DSH_HOME> 放置或沿用已有 whale-loli 等插件生成的记忆本,保证有「记忆」相关一级标题。
  2. 新记忆写在 ## 近期记忆 下,需要长期保留的放 ## 印象;可淘汰的节标 (可归档) 与 【技能】 / 【事件】 等。
  3. 安装插件并重启,观察 heartbeat 中 tick 是否低于 threshold。
  4. 需要演练时用 dryRun: true 看报告再正式落盘。

若与 dsh-whale-loli 同用,需注意 README 中的两点:格式规则块须放在 # 固定记忆 内部(区外内容会在 renderMemory() 写盘时被丢弃);规则块行用 - 开头,勿用 > 引用行(会被 parseMemory() 滤掉)。

适用场景与注意

适合:长期用 markdown 记忆本、且固定区容易顶满注入上限的 DSH 桌面配置;尤其与 dsh-whale-loli 等同屏使用时,用归档代替静默截断。

注意:插件以当前 DSH 进程权限读写 <DSH_HOME> 下文件;安装前应在 GitHub 阅读源码与 MIT 许可证,确认归档路径与备份策略可接受。DSH 生态是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-memory-organizer 的定位是「记忆本守门员」:超阈值前把可归档内容挪到 memoryORZ/,保证固定记忆整块留在提示词预算里,且不改写你写过的每一个字。

  • 目录页:https://www.skillhub.cn/plugins/JiessieM/dsh-memory-organizer
  • GitHub:https://github.com/JiessieM/dsh-memory-organizer
羽毛球分组比赛记分
小程序二维码

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

Xiaoye