dsh-auto-memory:DeepSeek Harness 的 Claude Code 风格自动记忆插件

前言

DeepSeek Harness (DSH) 采用了「一切皆插件」的理念,但其默认配置中缺少记忆子系统。官方建议通过第三方 MCP 配置实现记忆功能,但这通常需要手动注入,且不具备遗忘策略或跨会话持久化能力。你的 Agent 往往在每次新会话中都会重置。

dsh-auto-memory 旨在填补这一空白。它提供类似 Claude Code 的持久化记忆能力,以纯文件形式存储,无需任何外部服务或嵌入模型。

是什么

这是一个类型化记忆文件插件,由 AskTheWay 维护。它通过自动注入类似 MEMORY.md 的索引文件到系统提示词中,让 Agent 能够跨会话保留信息。

核心价值:零服务器、零嵌入、零配置的文件级记忆系统。

统计:106 stars,MIT 许可证。

核心功能

  1. 自动注入:记忆索引自动注入到每次请求的系统提示词中(位置 4000)。当记忆为空时,注入内容为 0 字节。
  2. 类型化记忆:支持 user、feedback、project、reference 四种类型。
  3. 作用域隔离:提供工作区(Workspace)和用户(User)两层作用域,防止跨项目信息泄露。
  4. 数据安全:支持跨进程锁和孤儿锁自愈,防止并发写入崩溃或因 Ctrl+C 导致的数据损坏。
  5. 无外部依赖:仅使用纯 Markdown 文件存储,不依赖数据库或 Embedding 服务。
  6. 更新-替换语义:合并更新事实,而非堆积重复信息。
  7. 固定探针保留:在内存预算受限时,固定探针的保留率 ≥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 接口。

适用场景与注意

适用场景:需要长期维护项目上下文、个人偏好记忆、以及需要跨会话保持连贯性的开发工作流。

注意事项:

  1. 版本要求:必须配合 @deepseek-ai/dsh >= 0.1.5-rc.2 使用,并建议使用官方桌面客户端 0.2.0-rc.2 进行验证。
  2. 截断策略:当前的记忆截断基于索引顺序(位置性),而非相关性排序。在记忆数量很大且接近预算上限时,保留率会下降,但通过固定探针机制可保证关键信息 ≥80% 的保留率。
  3. 文件名冲突:保留名被严格阻止。例如,文件名 memory 会在不区分大小写的文件系统上与 MEMORY.md 冲突,插件会拒绝该写入操作。
  4. 特殊字符处理:记忆内容中的 {{ 会被转义,防止模型解析错误导致崩溃。
  5. 会话限制:不允许自定义会话事件,否则可能导致 DSH 会话拒绝恢复。

总结

dsh-auto-memory 将记忆能力原生集成到 DeepSeek Harness 的提示词管线中,通过文件系统实现了轻量级、类型化且安全的持久化存储。它解决了 Agent “健忘” 的设计缺陷,适合追求工程化、可审计记忆管理的开发者使用。

羽毛球分组比赛记分
小程序二维码

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

小夜