前言¶
在 DeepSeek Harness(DSH)里跑智能体时,常见做法是把整段对话历史或一个大文件塞进每次请求的 system prompt。上下文一涨,成本和噪声一起上去;真正该「永远在场」的规则(例如红线、当天安排)又容易被淹没。
下面介绍社区插件 dsh-plugin-memory-four-books(维护者 wodexiaoling,分类:记忆)。它把长期记忆拆成五个有序层级,按预算注入 prompt;细节留在磁盘,需要时用 BM25 检索。数据是本地 Markdown 与 JSONL,零依赖、无网络、无后台服务。
这是什么¶
一句话:为 DSH 提供分层长期记忆——红线 / 当天 / 进行中 / 常识 / 档案,配合 BM25 召回与自动归纳,不依赖外部数据库。
插件仅通过 GitHub 分发(当前 package 版本 0.1.0,MIT 许可证),要求 DSH >= 0.2.0(使用 agent/pre-step 与 systemPrompt.section)。社区目录页:https://www.skillhub.cn/plugins/wodexiaoling/dsh-plugin-memory-four-books;源码与说明:https://github.com/wodexiaoling/dsh-plugin-memory-four-books。
核心机制¶
数据流¶
you type
↓
agent/pre-step ──→ filtered and appended to 支线/对话.jsonl
↓
model runs
↓
every 10 min ──→ consolidate ──→ writes tiers only when something changed
自动采集:每条用户输入经过滤(问候、重复、注入的运行时上下文会丢弃)后追加到只增日志。
自动归纳:默认每 10 分钟把日志归纳为一行一条、去重并写入各层;旧条目下移层级,不删除。
分层注入:每次模型步进前从各层重建 prompt 块;块按文件 mtime 缓存,记忆未变则不重复计算。
| 层级 | 注入策略 | 上限 |
|---|---|---|
| 当天 / today | 始终注入,不截断 | 400 条 |
| 红线 / red lines | 始终注入,不截断、不衰减 | 40 条 |
| 进行中 / in progress | 最新 30 条 | 80 条 |
| 常识 / common sense | 最新 70 条 | 260 条 |
| 档案 / archive | 按需 | 800 条 |
BM25 召回:工具 memory_recall 对各层及原始日志建索引(中文 2-gram,k1=1.5,b=0.75),并对结果施加 120 天半衰期衰减,下限 0.4,使旧条目仍可搜到但不易挤占近期内容。
工具¶
| 工具 | 用途 |
|---|---|
memory_recall |
按关键词检索记忆 |
memory_remember |
按标签写入一条 |
memory_consolidate |
立即执行归纳 |
memory_status |
各层条数、上限、文件大小、自动化状态 |
典型用法:日常依赖自动采集与定时归纳;需要精确事实时让模型调用 memory_recall;显式沉淀用 memory_remember;排查容量与自动化是否开启用 memory_status。
安装与启用¶
安装命令(须替换 <your-profile> 为你的 DSH profile 名):
dsh plugin --profile <your-profile> add github:wodexiaoling/dsh-plugin-memory-four-books
dsh 会把仓库克隆到 profile 下并作为 bundle 链接。插件不在 npm 发布。
更新时先移除再添加:
dsh plugin --profile <your-profile> remove dsh-plugin-memory-four-books
dsh plugin --profile <your-profile> add github:wodexiaoling/dsh-plugin-memory-four-books
可选配置写在插件行的 config 里,字段均可省略:
| 字段 | 默认值 | 含义 |
|---|---|---|
dataDir |
$DSH_HOME/memory-four-books |
记忆文件目录 |
inject |
true |
是否向 prompt 注入层级块 |
injectBudget |
15000 |
注入块字符预算 |
sectionOrder |
45 |
prompt 段落顺序 |
autoRecord |
true |
是否自动采集用户消息 |
autoConsolidate |
true |
是否定时归纳 |
consolidateMinutes |
10 |
定时间隔(分钟) |
dayMaxChars |
8000 |
「当天」层字节上限 |
indexMaxDocs |
20000 |
搜索索引保留的日志行数上限 |
若只希望手动 memory_remember、不记录输入,可设 "autoRecord": false。
数据落盘位置¶
默认在 $DSH_HOME/memory-four-books/:
$DSH_HOME/memory-four-books/
支线/对话.jsonl append-only journal
四册/记忆核心.md the five tiers (this is what gets injected)
四册/MEMORY_INDEX.md one line per topic
四册/档案库.md archive
四册/memory_changelog.md append-only change log
归纳台账.jsonl consolidation ledger
均为 UTF-8 明文,可手动打开、编辑、备份或删除;插件会从日志重建衍生文件。
适用场景与注意¶
适合:同一 DSH profile 下需要跨会话、跨子智能体共享长期偏好与项目事实;希望红线与「当天」始终进 prompt,其余按需检索或按层裁剪的场景。
隐私:插件在本地记录你输入的内容,不做网络请求、不启服务;dataDir 内数据未加密。安装前建议阅读源码与 MIT 许可证,并确认你接受以当前 dsh 进程权限 读写上述目录。
限制(README 原文):
- 记忆按 profile 共享,不按 workspace 隔离。
- 未加密;不属于 session log,fork session 不会 fork 记忆。
- 日/中/英文本支持较好;其他文字系回退为单字 n-gram,召回质量会下降。
DSH 生态是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-plugin-memory-four-books 用五层结构控制 prompt 注入量,用 BM25 与半衰期兼顾「找得到旧事实」和「近期优先」,并用 JSONL 日志 + 定时归纳把运维成本压在本地文件上。需要细节时见 GitHub README 与 SkillHub 目录页。