前言¶
DeepSeek Harness (DSH) 采用了「一切皆插件」的理念,但其默认配置中缺少记忆子系统。官方建议通过第三方 MCP 配置实现记忆功能,但这通常需要手动注入,且不具备遗忘策略或跨会话持久化能力。你的 Agent 往往在每次新会话中都会重置。
dsh-auto-memory 旨在填补这一空白。它提供类似 Claude Code 的持久化记忆能力,以纯文件形式存储,无需任何外部服务或嵌入模型。
是什么¶
这是一个类型化记忆文件插件,由 AskTheWay 维护。它通过自动注入类似 MEMORY.md 的索引文件到系统提示词中,让 Agent 能够跨会话保留信息。
核心价值:零服务器、零嵌入、零配置的文件级记忆系统。
统计:106 stars,MIT 许可证。
核心功能¶
- 自动注入:记忆索引自动注入到每次请求的系统提示词中(位置 4000)。当记忆为空时,注入内容为 0 字节。
- 类型化记忆:支持
user、feedback、project、reference四种类型。 - 作用域隔离:提供工作区(Workspace)和用户(User)两层作用域,防止跨项目信息泄露。
- 数据安全:支持跨进程锁和孤儿锁自愈,防止并发写入崩溃或因 Ctrl+C 导致的数据损坏。
- 无外部依赖:仅使用纯 Markdown 文件存储,不依赖数据库或 Embedding 服务。
- 更新-替换语义:合并更新事实,而非堆积重复信息。
- 固定探针保留:在内存预算受限时,固定探针的保留率 ≥80%。
安装与启用¶
安装前请确保环境满足要求:@deepseek-ai/dsh >= 0.1.5-rc.2,Node.js 版本为 ^22.19 || >=24。
使用官方安装命令添加插件:
dsh plugin --profile demo add dsh-auto-memory
添加后,在配置文件中启用并调整参数。重启对应 Profile 的 DSH 进程即可生效。
典型用法¶
在对话中记忆信息¶
在对话中直接告知 Agent 需要记住的信息。Agent 会调用工具写入记忆,并在后续对话中引用。
示例指令:
“记住:我是一个正在准备面试的 Python 后端工程师。”
随后询问:
“你知道我什么?”
Agent 将会调用 memory_read 工具,并基于记忆索引回答。
使用演示脚本¶
项目内置了演示脚本,无需 API Key 即可观察记忆写入、索引构建、注入和回忆的全过程:
node scripts/demo.mjs
配置¶
插件支持通过 cordis.patch.yml 覆盖默认配置。以下为部分关键配置项:
- id: auto-memory
config:
maxBytes: 4096 # 索引注入的字节预算(默认 4096)
memoryDir: D:/memories # 记忆文件存储目录(默认 $DSH_HOME/memory)
enableUserScope: true # 是否启用用户层作用域
staleAfterDays: 0 # 超过 N 天未读的记忆是否软隐藏(0 为不隐藏)
autoSummarize: false # 是否在会话结束时自动合并记忆
autoSummarizeMaxMemories: 5 # 自动合并时的最大条目数
autoSummarizeMaxTokens: 2048 # 合并输出的 Token 上限
工作原理¶
- 写入:Agent 调用
memory_write工具。名称规范化为[a-z0-9-],保留名会被拒绝。写入过程使用原子文件锁,并在锁内重建全量索引。 - 注入:系统提示词组装时,动态插入记忆索引(位置 4000)。每次请求都会重新评估注入内容,并根据字节预算进行截断。若记忆为空,则不注入。
- 审计:不使用自定义会话事件,所有流经标准
tool/call/tool/result接口。
适用场景与注意¶
适用场景:需要长期维护项目上下文、个人偏好记忆、以及需要跨会话保持连贯性的开发工作流。
注意事项:
- 版本要求:必须配合
@deepseek-ai/dsh >= 0.1.5-rc.2使用,并建议使用官方桌面客户端 0.2.0-rc.2 进行验证。 - 截断策略:当前的记忆截断基于索引顺序(位置性),而非相关性排序。在记忆数量很大且接近预算上限时,保留率会下降,但通过固定探针机制可保证关键信息 ≥80% 的保留率。
- 文件名冲突:保留名被严格阻止。例如,文件名
memory会在不区分大小写的文件系统上与MEMORY.md冲突,插件会拒绝该写入操作。 - 特殊字符处理:记忆内容中的
{{会被转义,防止模型解析错误导致崩溃。 - 会话限制:不允许自定义会话事件,否则可能导致 DSH 会话拒绝恢复。
总结¶
dsh-auto-memory 将记忆能力原生集成到 DeepSeek Harness 的提示词管线中,通过文件系统实现了轻量级、类型化且安全的持久化存储。它解决了 Agent “健忘” 的设计缺陷,适合追求工程化、可审计记忆管理的开发者使用。