前言¶
智能体在多轮会话中会积累用户偏好、项目决定、环境差异和用户纠正。如果只把这些信息压缩成摘要,摘要可能失真,后续也说不清某条记忆从何而来。DSH 已有无损会话日志,dsh-memory 在此基础上做带引用记忆:会话结束后把蒸馏出的事实写成人类可审计的 Markdown,并让每条记忆可回追到精确原始日志事件。
下面介绍 dsh-memory 的定位、能力、安装方式和典型用法。
这是什么¶
dsh-memory 是 Jesse-njx 维护的 DeepSeek Harness(DSH)bundle,仓库名为 Jesse-njx/dsh-memory。
它的核心价值是:
- 基于 DSH 无损会话日志;
- 将蒸馏事实写成 Markdown memory 文件;
- 每条 memory 带 citation,可指向精确
sessionId与日志事件范围; - 提供紧凑 recall index、
memory_read、memory_expand、dsh-memoryCLI 和会话内/memory命令。
许可证为 MIT。standalone dsh-memory binary 是纯 Node 实现,要求 Node >=20。
核心功能¶
会话结束后蒸馏事实¶
会话结束后,dsh-memory 会通过后台 distillation 异步抽取持久事实,并写入 Markdown memory 文件。
默认路径为:
~/.dsh/memory/
项目记忆位于:
~/.dsh/memory/<project>/*.md
user 记忆位于:
~/.dsh/memory/_user/*.md
蒸馏 pass 会更新或反驳既有 memory,并记录到:
<project>/_distill.log
该日志文件为 JSONL。
每次 prompt assembly 提供 recall index¶
每次 prompt assembly 时,dsh-memory 会渲染一个紧凑、token 受限的 recall index。
maxIndexTokens 是注入 recall index 的硬 token 上限。
从记忆回追原始日志¶
每条 memory 带 citation,可指向精确 sessionId 与日志事件范围。
它提供两个工具:
memory_read(name)
memory_expand(name, [citation_index])
memory_read(name) 用于读取完整 memory 文件。
memory_expand(name, [citation_index]) 用于返回被引用的原始日志摘录。
maxExpandBytes 是单次 memory_expand 输出的字节上限。
维护、类型与遮蔽¶
dsh-memory 支持三种 memory 类型:
userprojectfeedback
同名 project memory 会遮蔽 user memory。
它还提供:
dsh-memory list
dsh-memory show
dsh-memory edit
dsh-memory delete
dsh-memory distill-log
会话内也提供:
/memory
/memory <name>
安装与启用¶
安装命令如下:
dsh plugin --profile web add @dsh-memory/bundle
配置字段均为可选。下面是一个配置示例:
plugins:
dsh-memory:
enabled: true
home: ~/.dsh/memory
maxIndexTokens: 800
maxExpandBytes: 8192
distill:
provider: deepseek-official
model: deepseek-v4-flash
maxTranscriptTokens: 16000
字段含义:
enabled:是否启用;home:memory root 路径;maxIndexTokens:recall index 的硬 token 上限;maxExpandBytes:单次memory_expand输出的字节上限;distill.provider:蒸馏使用的 provider;distill.model:蒸馏使用的 model;maxTranscriptTokens:限制进入蒸馏的 transcript 长度,超限时最旧事件被丢弃。
distill 默认复用当前会话 provider/model,也可以用 distill.provider 和 distill.model 覆盖。
典型用法¶
会话内查看¶
在会话中使用:
/memory
查看列表。
使用:
/memory <name>
查看指定 memory。
工具调用¶
读取完整 memory:
memory_read(name)
返回被引用的原始日志摘录:
memory_expand(name, [citation_index])
citation_index 用于指定 memory 中某条 citation。
CLI 管理¶
dsh-memory CLI 支持以下命令:
dsh-memory list [--project P] [--json]
dsh-memory show <name> [--project P]
dsh-memory edit <name> [--project P]
dsh-memory delete <name> [--project P]
dsh-memory distill-log [--project P]
也可以使用 --home 覆盖 memory root:
dsh-memory list --home /path/to/memory
覆盖蒸馏路由¶
如果需要指定蒸馏使用的 provider 和 model,可以这样配置:
plugins:
dsh-memory:
distill:
provider: deepseek-official
model: deepseek-v4-flash
适用场景与注意¶
适合以下场景:
- 希望记住用户偏好、项目决定、环境差异和用户纠正;
- 希望 memory 是 Markdown 文件,便于人工查看、编辑和删除;
- 希望每条记忆可回追到原始日志事件;
- 希望避免自动注入完整 memory 正文。
需要注意:
- v0.1 明确不做向量数据库、知识图谱、超出
user类型的跨项目全局记忆、记忆共享/同步、自动注入完整 memory 正文; - 同名 project memory 会遮蔽 user memory;
maxIndexTokens、maxExpandBytes、maxTranscriptTokens会限制 recall index、memory_expand输出和蒸馏 transcript 长度;peerDependencies包含@deepseek-ai/cordis ^4.0.1、@deepseek-ai/schemastery ^3.18.1等版本范围;- 插件以当前
dsh进程权限运行,安装前应检查源码与许可证。
结尾¶
dsh-memory 的价值在于把蒸馏事实写成可审计 Markdown,并保留到原始会话日志的引用。它不是自动注入完整记忆,而是在 recall index、memory_read 和 memory_expand 之间提供一层可回追的记忆索引。
GitHub:https://github.com/Jesse-njx/dsh-memory
目录页:本次资料未提供可确认的目录页 URL,请以实际 DSH 社区目录为准。