DeepSeek Harness 记忆插件:持久化、可检索的项目上下文

前言

在使用 DeepSeek Harness (DSH) 开发智能体时,如何让 Agent 在长对话中记住决策、保持规则一致性,以及如何在多轮请求中维护项目上下文,是常见的技术痛点。手动维护记忆文件或依赖不稳定的对话历史往往难以满足生产环境的需求。

dsh-memory 插件为 DSH 提供了持久化、可检索的项目级记忆解决方案。它将决策、架构笔记、冲刺目标和会话摘要存储在本地 DuckDB 数据库文件中,并通过 Web Client 提供完整的管理界面,确保规则和上下文在每个模型请求中通过系统提示注入,始终生效。

插件简介

该插件由 navid-kianfar 维护,采用 MIT 开源协议。它为每个 DSH 项目创建一个独立的 DuckDB 文件(位于 <project>/.dsh/memory.db),用于存储各类记忆数据。Web Client 提供了专门的 Memory 标签页,允许开发者对记忆进行搜索、筛选、编辑和导入导出。

核心功能

1. 记忆管理与检索

Web Client 的 Memory 标签页集成了记忆管理的核心功能:
* 多维度搜索:支持语义搜索(配合 Embeddings)和关键词搜索(BM25F)。
* 状态筛选:支持按 Active(活跃)、Archived(归档)、Expired(过期)等状态筛选记忆。
* 操作面板:提供新建记忆、新建规则、导入指令文件、导出 JSON 以及重建向量索引等操作。
* 会话历史:展示最近 50 条记忆会话的摘要及读写统计。

2. 规则强制注入

规则通过系统提示注入,而非普通消息。这意味着对规则的修改会在模型处理下一个请求时立即生效。
* 冲突优先级:当 Agent 录入的规则与用户规则冲突时,用户规则优先。
* 实时编辑:在界面上直接编辑规则,无需重启服务或修改配置文件。
* 文本预览:提供开关查看模型实际接收到的规则块文本,确保注入格式正确。

3. 会话上下文

插件为顶级智能体(Top-level agents)维护独立的会话上下文:
* 在会话开始时,模型会接收最后的会话摘要、冲刺目标和最近 7 天的决策。
* 这些内容以系统提示块的形式发送,帮助模型快速进入项目状态。

4. 数据导入导出与生命周期

  • 导入指令:支持从 .md、.markdown 或 .txt 文件(如 AGENTS.md 或 CLAUDE.md)导入。文件标题决定分类,列表项决定规则。
  • 数据导出:支持将项目内所有记忆导出为 JSON 文件。
  • 保留策略:支持按分类设置过期时间(如 session 30 天,decision 365 天),并支持优先级策略(Priority 1 可延长生命周期)。

安装与启用

安装该插件需要通过 Web 客户端配置。

dsh plugin --profile web add @achasoft/dsh-memory
dsh web

安装完成后,在 Web Client 的会话界面左侧即可看到新增的 Memory 标签页。

典型用法

  1. 导入项目规则:在项目根目录创建 AGENTS.md,定义分类和规则列表。通过插件界面的 Import 功能导入,规则将立即生效。
  2. 获取会话摘要:顶级智能体在启动时会自动收到上一次会话的摘要和冲刺目标,无需手动粘贴。
  3. 子智能体限制:子智能体(origin: 'subagent')虽然遵守规则,但不会收到会话上下文或记忆会话。

注意事项

  • 环境要求:插件需要 Node.js 版本 ^22.19 || >=24。
  • 子智能体差异:origin: 'subagent' 的会话没有记忆会话,也不会接收会话上下文。
  • 注入文本限制:为控制每次请求的 Token 成本,系统提示中的规则块有长度限制:单条规则 2,000 字符,整体规则块 24,000 字符,会话上下文 12,000 字符。超限部分会被截断。
  • 向量搜索配置:语义搜索需要配置 Embeddings 接口(如 OpenAI 兼容端点),否则仅支持关键词搜索。

结尾

dsh-memory 通过将记忆数据化、规则系统化,解决了 DSH 开发中上下文管理混乱的问题。配合 DuckDB 的查询能力和 Web UI 的便捷操作,它能显著提升 Agent 项目的可维护性和一致性。更多细节可参考 GitHub 仓库 或 插件目录。

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

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

小夜