前言¶
在 DeepSeek Harness(DSH)里跑 100 到 1000+ 轮对话时,早期定下的决策、用户纠正过的数字、以及未收尾的任务线,常常在 compaction、摘要或进程重启之后从上下文里消失。单靠模型窗口或宿主自带的压缩,很难保证「可核对、带条件与来源」的信息一直可用。下面介绍社区插件 dsh-long-memory:它在本地用 SQLite 记录已提交会话事件,用确定性规则抽取记忆项,并在每一步模型调用前按 token 预算注入带来源标注的上下文块;全程不调用额外模型,也不改写宿主会话日志。
这是什么¶
dsh-long-memory 由 dogbotowo-oss 维护,归类为 DSH 生态中的「记忆」类插件。仓库:dogbotowo-oss/dsh-long-memory;社区目录页:skillhub.cn 插件页。当前 package 版本为 0.1.0,许可证 MIT。README 写明已在 DSH 0.2.1-rc.3(@deepseek-ai/cordis 4.x)上验证,数据与逻辑均在本地机器运行。
一句话定位:为 DSH 会话提供可审计、跨 compaction 与重启的 durable memory,并重新应用已启用 skill 的规则索引。
核心功能¶
资料中的能力可按流水线理解:在 DSH 的 step 边界,agent/pre-step 触发检索、组装并注入一条 user 角色的证据消息;与此同时,已提交的 session/event 进入 capture → extract →(可选)validate,并写入 assembly log。
-
Capture(捕获)
将已提交的宿主事件(用户/助手消息、工具调用与结果、compaction 事件、命令等)追加写入本地 SQLite 证据表。按事件序号幂等写入,重试、重启与回放不会重复落库。大体积工具结果与 compaction 摘要会在宿主可能无法回放时额外归档。 -
Extract(抽取)
对用户消息用确定性规则增量抽取记忆项,不调用模型。事实、决策、约束、偏好与开放问题分存;数字与单位、限定条件一并保存;助手侧内容仅作为 proposals 记录。支持显式纠正检测,以及Goal:、Progress:、TODO:等任务状态行合并。 -
Skills 索引
将 skill 内容快照为版本化行,规则文件解析为四类:stable rule、data convention、current state、operational lesson;其中 current state 随上下文变化,不作为硬编码校验规则。 -
Retrieve(检索)
在当前 session 范围内,用 SQLite FTS5(trigram)与 LIKE 回退,对活跃记忆项、规则与证据排序;README 说明排序考虑 exact-match、scope 与 recency 等加权。 -
Assemble(组装)
在 token 预算内确定性顺序组装注入消息:稳定头、常驻规则核、任务状态、相关规则/记忆项与证据片段。默认 soft budget 约 3000 estimated tokens;预算只限制注入量,不限制存储。memory explain可查看各段 included / truncated / omitted 及原因。 -
Validate(校验,可选)
对已提交助手输出做确定性检查,可选 dispatch 前 precondition;默认关闭,不做猜测式修复。 -
与 compaction 协作
宿主压缩表面上下文后,下一步从本地证据重新组装 memory;插件不重写宿主 session log。
设计优先级在 README 中写得很明确:准确性优先于省 token——可验证记忆优于短摘要,保留原始证据优于不可审计的推导,冲突时保留双方并记录 supersession,而非静默选边。
环境要求¶
- DSH 0.2.1-rc.3(
@deepseek-ai/cordis4.x)。 - Node.js
^22.15.0 || >=24.0.0(使用node:sqlite;FTS5 trigram 分词对 CJK 友好,需 Node >= 22.5)。 - Windows、macOS 或 Linux;插件本身无 native 编译步骤,SQLite 来自 Node 运行时。
安装与启用¶
安装前请自行阅读仓库源码与 LICENSE;插件以当前 DSH 进程权限运行,数据库默认落在 <DSH_HOME>/long-memory/(可通过配置 dataDir 修改)。
从 GitHub 安装(README 原文):
dsh plugin --profile <profile> add github:dogbotowo-oss/dsh-long-memory
若已有本仓库 checkout,也可把路径作为插件目录:
dsh plugin --profile <profile> add <path-to-plugin>
包内带 cordis.patch.yml 与 package.json 中的 bundle patch 条目,添加后无需单独 build。
安装后打开 session,执行:
memory status
用于确认插件已加载、数据库已打开且 schema 版本匹配。
配置要点¶
各配置项均可选,缺省见 src/config.js;完整样例见 examples/config.json。主开关与库文件:
| 分组 | 作用 |
|---|---|
enabled, dataDir, dbFile |
总开关与库路径;dataDir 为空时使用 <DSH_HOME>/long-memory/ |
assembly |
注入消息预算(如 softBudgetTokens 默认 3000)、各段上限、compaction 后是否再注入等 |
extraction |
确定性抽取开关 |
retrieval |
候选数量与排序加权、minScore 过滤 |
compatibility |
与宿主 compaction 策略协作 |
validation |
确定性 checks / preconditions(README 配置表中有说明,正文截断处亦提及) |
assembly.evidenceTypes 默认 ["user/message"]:工具输出可检索,但默认不直接粘贴进请求,以降低不可信/注入内容进入上下文的风险。
示例片段(与 README 一致,可按需裁剪):
{
"enabled": true,
"dataDir": "",
"dbFile": "memory.sqlite",
"assembly": {
"enabled": true,
"softBudgetTokens": 3000,
"includeTaskState": true
},
"extraction": {
"enabled": true,
"immediateCorrections": true,
"scanUserMessages": true
},
"compatibility": {
"compactionPolicy": "auto",
"reinjectAfterCompaction": true
}
}
典型用法¶
- 安装插件并在 session 中运行
memory status做健康检查。 - 正常长会话对话;插件在后台 capture / extract,并在每步 pre-step 注入预算内的证据块。
- 需要理解「这一步注入了哪些段、为何截断」时,使用 README 提到的
memory explain。 - 诊断 schema、计数、checkpoint 滞后与兼容性时,README 指向
src/diagnostics.js及相关诊断能力(具体 slash 命令名以仓库commands配置为准,默认命令前缀为memory)。
仓库提供离线长会话评测脚本(npm run eval / eval:quick),README 中有 Evaluation results 章节供对照 baseline;本文不展开具体分数,以仓库文档为准。
适用场景与注意¶
适合:需要在同一 DSH profile 下连续多轮开发或运维对话,且必须保留「已定决策、纠正过的精确数值(含条件与来源)、任务状态与 skill 规则」的会话;希望 memory 完全本地、无额外模型 API 成本。
注意:
- 记忆质量依赖确定性规则与本地证据,不是 LLM 摘要;未检索到的内容应表现为 unknown / not retrieved,而非臆造回忆。
- 默认不把 tool 结果 inline 进注入块,若业务需要须在
evidenceTypes等处显式调整并理解安全风险。 - 社区目录(如 skillhub.cn)与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,选型时以仓库 README、许可证与自身安全策略为准。
结尾¶
dsh-long-memory 把长会话里容易丢的「证据 + 决策 + skill 规则 + 任务状态」落在本地 SQLite,并在 compaction 与重启后仍能按预算注入模型步骤。若你要试用或贡献,可从目录页与 GitHub 进入:
- 目录页:https://www.skillhub.cn/plugins/dogbotowo-oss/dsh-long-memory
- GitHub:https://github.com/dogbotowo-oss/dsh-long-memory