DeepSeek Harness 插件:持久五层记忆系统 (nattocb/dsh-plugin-memory)

在 DeepSeek Harness (DSH) 的开发与使用中,代理往往仅能在单次会话内保留上下文,会话结束后即丢失重要信息。nattocb/dsh-plugin-memory 插件旨在解决这一问题,它为 DSH 提供了一套持久化的五层记忆模型,使代理能够跨会话“记住”用户信息和项目细节。

核心功能

该插件通过两层 Cordis 接口实现功能:在 agent/pre-step 阶段注入相关记忆,并通过 ctx.tools.register 注册 6 个专用工具。

五层记忆模型

记忆被结构化地分为五个层级(L0-L4),每一层都有独立的写入路径、截断预算和注入规则:
- L0 用户身份:位于 ~/.dsh/AGENTS.md,由用户自行管理,插件不干预。
- L1 个人资料:存储于 profile.md,包含工作背景、个人背景、当前关注和近期动态,支持版本轮换。
- L2 项目上下文:包含全局索引 MEMORY.md 和具体的 <topic>.md 主题文件。
- L3 每日日志:以追加模式记录每日内容,文件名为 YYYY-MM-DD.md。
- L4 技能:继承自现有 DSH 技能体系。

索引与主题拆分 (L2)

为了保持文件轻量且易于管理,MEMORY.md 仅包含一行指针(不超过 150 字符),实际内容存储在对应的 <topic>.md 文件中。索引文件有硬性限制(200 行或 40,000 字符),确保冷启动时的上下文成本可控。

6 个代理工具

插件通过 ctx.tools.register 注册以下工具,供代理在运行时调用:
- memory_write:写入或覆盖主题文件,可选添加索引行。
- memory_read:读取主题文件或全局索引。
- memory_search:在全局/项目/双向范围内进行关键词搜索。
- memory_daily:向当前工作目录的每日日志文件追加一行。
- memory_forget:删除主题文件及其索引指针。
- memory_profile:读取或合并更新个人资料。

相关性注入与自动提取

  • 相关性注入:每次步骤执行时,插件会根据最新查询选择相关主题文件,并以 <system-reminder data-role="memory"> 块的形式插入上下文。若无 LLM 路由,则使用关键词评分。
  • LLM 自动提取:当会话进入空闲状态(60 秒防抖)时,插件会扫描最近的事件,利用 LLM 尝试提取新的主题文件和索引行。

安装与启用

安装过程需指定已启用的插件配置文件(如 web)。安装后需重启服务。

dsh plugin --profile web add github:NattoCB/dsh-plugin-memory

重启 dsh web 后,插件会在启动时初始化内存存储根目录:
- 全局存储:~/.dsh/memory/
- 项目存储:<cwd>/.dsh/memory/

配置项

插件支持通过 DSH Bundle 配置,主要控制注入、提取和相关性筛选的行为:

配置项 默认值 说明
enableEntryInjection true 每次会话开始时是否插入记忆引导说明。
enableRelevance true 每个步骤是否追加相关主题文件。
enableExtraction true 是否在空闲时触发 LLM 自动提取。
maxRelevant 5 每次步骤最多展示的相关文件数。
relevanceTopK 8 LLM 排序时的候选文件数量。
llm.provider "" 用于提取/排序的 LLM 提供商,留空则仅使用关键词。
llm.model "" 对应的模型名称。

使用示例

安装并重启 dsh web 后,你可以通过以下方式使用记忆功能:

  1. 告知记忆:直接告诉代理一些值得记住的信息,或让代理在处理完任务后自动提取。
  2. 检查记忆根目录:稍后打开会话时,检查 ~/.dsh/memory/ 或项目目录下的 .dsh/memory/,查看 MEMORY.md 和生成的主题文件。
  3. 使用工具:代理可以利用注册的工具(如 memory_search)主动检索历史记忆。

注意事项

  • 无 LLM 依赖:即使未配置 llm 路由,插件依然可用。此时仅保留条目注入、关键词相关性和个人资料轮换功能,自动提取和 LLM 排序将被禁用。
  • 数据即上下文:记忆文件通过 fs/promises 直接写入,是代理读取的上下文,而非权限授予机制。
  • 纯插件架构:该插件不提供 HTTP API 或 GUI 面板,完全依赖 DSH 的内部接口运行。
  • 路径限制:所有写入操作被限制在存储根目录内,不涉及用户 UID 层级。

生态背景

DeepSeek Harness 采用“一切皆插件”的架构。此插件由社区开发者 NattoCB 维护,旨在丰富 DSH 生态。关于该插件的完整目录与源码,可参考其 GitHub 仓库。

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

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

小夜