yansera/dsh-living-memoir 插件介绍

DeepSeek Harness (DSH) 的生态以插件形式扩展功能。在构建长期运行的智能体时,跨会话记忆是一个核心痛点。传统的记忆方案通常采用追加文本的方式,容易导致文档膨胀、语义冗余且难以维护。yansera/dsh-living-memoir 解决了这个问题,它将记忆存储为一组 Markdown 文件,并在每轮对话结束后对记忆进行整体重写,而非简单的追加。

核心定位

这是一个跨会话记忆插件,由开发者 Yansera 维护,遵循 MIT 许可证。它不依赖数据库或私有格式,而是将记忆存储在本地 Markdown 文件中,利用宿主 LLM 的能力进行整理和改写。

安装

使用 DSH 自带的 CLI 安装插件。请将 --profile desktop 替换为你实际使用的 profile 名称(如 web)。

dsh plugin --profile desktop add @yansera/dsh-living-memoir

安装后必须完全退出客户端并重新打开,DSH 才会加载新安装的插件代码。

基本用法

安装完成后,侧边栏会出现「记忆册」入口,点击后可占满主区域。

1. 记忆管理

左侧为分类,右侧为条目。左上角「← 返回对话」回到会话。

  • 自动记录:模型在对话中判断值得记录的内容时,会自动调用工具写入。
  • 手动录入:点击「记一条」,或直接编辑 $DSH_HOME/memoir/ 目录下的 Markdown 文件。
  • 即时生效:编辑文件后刷新页面即可看到更改。
  • 停止写入:在页面右上角设置中关闭「记忆写入」,插件将不再读或写。

2. 数据存储

所有数据存储在本地目录 $DSH_HOME/memoir。插件不主动发起任何网络请求,数据完全本地化。

工作机制

三层结构

记忆库采用三层结构,便于分类管理:

  1. 分类层:一个分类对应一个 .md 文件。分类按主题划分,不按信息类型(如决策或进展)。
  2. 小节层:通常一个项目对应一个小节。
  3. 条目层:一条记忆对应一行 - 内容。

自动改写

这是插件的核心功能。每轮对话结束(或静默 20 秒)后,后台会将「记忆册的全部内容」加上「本轮对话」作为输入,要求模型输出「改写后的完整记忆册」。

  • 防呆机制:
    • 按会话保存游标,只消费上次之后的新内容,防止重复改写。
    • 改写失败会自动重试。
    • 新内容少于 400 字符时跳过改写,但游标照常推进。
    • 多会话并发收尾时请求排队。
    • 若解析不出分类或条目总数骤减一半以上,拒绝改写。
  • 长度限制:分类超过 12 条或整本超过 40 条会触发强制整理。

元数据标注

每条记忆条目末尾可以添加 HTML 注释形式的元数据:

- 用户要求所有下载前先问,并说清多少 GB
  <!-- memoir id=8daa8849 | imp=5 | conf=high | at=2026-10-09 | src=用户明确说 | pin -->
  • conf (置信度):high(用户亲口说)、med(对话提炼)、low(模型推断)。改写时会优先丢弃低置信度条目。
  • pin (钉住):标有 pin 的条目在改写时必须原样保留,最多保留三五条。

配置

页面设置

在右上角齿轮设置中:
* 改写模型:从宿主已注册的 LLM 列表中选择,无需手动填写 Provider 和模型 ID。
* 思考程度:默认关闭。改写是整理而非解题,开启思考型模型会浪费输出预算。
* 语言:界面语言和记忆内容语言可分别设置。

部署级配置

在项目根目录下的 cordis.patch.yml 中配置:

- id: memoir
  name: '@yansera/dsh-living-memoir'
  config:
    memoryDir: ''              # 留空 = $DSH_HOME/memoir
    injectIndex: true          # 是否将记忆注入系统提示词
    maxInjectEntries: 12       # 最多注入几条
    autoDistill: true          # 启用自动改写
    distillDebounceMs: 20000   # 改写前的等待时间(毫秒)
    distillMinChars: 400       # 跳过改写的最小字符数
    distillMaxItems: 60        # 整本条目上限
    distillMaxTokens: 8000     # 输出预算下限
    distillReasoningEffort: off # 关闭推理
    memoryLanguage: ''         # 记忆内容语言限制
    pageEntryLimit: 12         # 单类触发整理的条目数
    bookEntryLimit: 40         # 整本触发整理的条目数

适用场景与注意

  • 兼容性:需要 DSH >= 0.2.0-rc.2 且 < 0.3.0,以及 Node.js >= 20.18。
  • 工具调用:插件提供三个工具函数供模型使用:memoir_note(记)、memoir_recall(查)、memoir_forget(忘)。
  • 纯文本格式:记忆库是纯文本,可用任何编辑器打开,支持版本控制。

插件代码仓库:https://github.com/Yansera/dsh-living-memoir

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

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

Xiaoye