dsh-memory-snapshot:用本地 Markdown 做 DSH 的长期记忆

前言

DeepSeek Harness(dsh)把系统提示词的装配交给 Cordis 插件链,但默认并没有「全局记忆」这一层:全局 AGENTS 只认 ~/.dsh/AGENTS.md,工作区级也只跟项目目录走;你在 Codex、Claude Code 等工具里维护的 CLAUDE.md、AGENTS.md 或知识库仓库里的 markdown,dsh 不会自动去读。

社区里也有偏「记忆引擎」的插件——自动吸收、检索、蒸馏,往往还要配服务和数据库。若你已经有写好的规则、长期记忆或精选知识库,只是希望每次开 dsh 会话时这些内容默认出现在系统提示词里,更重的那条路未必合适。

下面介绍 dsh-memory-snapshot(维护者 yzx4036,GitHub:yzx4036/dsh-memory-snapshot):零依赖的轻量快照注入插件,把指定 md 文件或目录在每次会话装配时全文带进 system prompt,文档留在原路径,不迁文件、不复制副本。

这是什么

一句话:你在配置里列出的本地 markdown(或目录下的 *.md),会在 dsh 每次会话装配系统提示词时注入,跨工作区可生效(需绝对路径或 ~)。

插件本体约 150 行,无数据库、无写入通道、不做检索蒸馏;改文件后下次会话即生效。要求 dsh 0.2.x(README 写明实测 0.2.0-rc.2;更早版本对 section 做不可关闭的 {{变量}} 插值,记忆文件含 {{名字}} 可能导致会话失败)。

能做什么,不能做什么

能做的

  1. 多路径注入:files 支持单个 md、多个路径,或目录(目录按 dirDepth 收集 *.md,支持 ~)。
  2. 体积控制:单文件上限 maxBytes(默认 3000 字节,UTF-8 截断并回退到换行边界);合计上限 totalMaxBytes(默认 0 表示不设总上限)。
  3. 可读性与可观测:可选剥离 YAML front-matter(stripFrontMatter);快照头与文件头可带时间信息(freshness);读不到的项可标注原因或 skipMissing 静默跳过;注入内容会进 Trajectory 日志。
  4. 只读注入:dsh 不会写回这些文件;模型也没有插件提供的写入工具。

不能做的

  • 不会自动记录对话,文件需自行维护。
  • 全文注入,内容过多会消耗 token,适合 KB 级精选内容,不适合当通用记忆引擎。

安装与启用

安装前请自行查看仓库源码与 MIT 许可证;插件随 dsh 进程权限读盘,路径应只指向你信任的内容。

两条路径二选一,不要同时装两层(同 id 会报 duplicate loader entry id)。

A. dsh plugin add(profile 级)

dsh plugin --profile <你的profile> add dsh-memory-snapshot

镜像未同步或离线时,README 给出的 GitHub 直装方式为:

dsh plugin --profile <你的profile> add github:yzx4036/dsh-memory-snapshot

卸载:

dsh plugin --profile <你的profile> remove dsh-memory-snapshot

B. node install.mjs(home 级,免注册表)

在插件仓库目录执行:

node install.mjs

可选:--profile headless、--files A.md,B.md、--verify、--update、--uninstall;跨层已有同名条目时可用 --force 跳过预检(见 README)。

装完后无需额外「启动」步骤,后续每个 dsh 会话都会按配置注入。

配置与典型用法

记忆源写在 dsh 的 Cordis 补丁配置里。换路径时改 memory-snapshot 条目下的 files,重启 dsh 后生效。README 说明 profile 级可改 ~/.dsh/cordis.patch.yml;install.mjs 默认写入 home 级配置,配合绝对路径可实现跨工作区。

验收会话是否带上快照,可用:

dsh --profile headless "你的记忆快照里有什么?"

常用配置项(均以 README 为准):

配置项 含义
files 路径清单,默认 ['./MEMORY.md'];跨工作区请用绝对路径或 ~
maxBytes 单文件注入上限,默认 3000
totalMaxBytes 全部文件合计上限,默认 0(无总上限)
dirDepth 目录递归深度,默认 1
skipMissing 默认 false(缺失项在注脚列出);true 静默跳过
freshness 默认 true,快照与文件带时间信息
stripFrontMatter 默认 true,剥离 YAML front-matter
order section 顺序,默认 50
marker 标记前缀,默认 MEMORY-SNAPSHOT

相对路径按 dsh 启动目录解析,会变成「每个工作区各找各的」;若要任意目录启动 dsh 都带同一份记忆,需 home 级安装且 files 用绝对路径或 ~。

原理简述

函数式 Cordis 插件:通过 inject = ['systemPrompt'] 声明注入点;配置校验不依赖 zod;text 由 provider 在每次装配时重读文件。更多结构说明见仓库内 docs/architecture.md。

适用场景与注意

更适合:已有稳定 markdown 记忆/规则/小型知识库;headless、批量或无人值守场景,希望记忆默认在场,而不是每次手动 @ 读文件。

用处有限:只偶尔手动用 dsh,且每次都口头让模型读文件——插件的自动注入优势不明显。

版本与生态:dsh 仍为开发者预览版,升级前请查阅 breaking changes。社区插件目录(如 skillhub.cn)为独立站点,与 DeepSeek / 幻方无官方从属关系。

链接

  • 目录页:https://www.skillhub.cn/plugins/yzx4036/dsh-memory-snapshot
  • 源码与文档:https://github.com/yzx4036/dsh-memory-snapshot
羽毛球分组比赛记分
小程序二维码

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

小夜