DSH-DREAM: Agent-Oriented Local-First Long-Term Memory Layer

前言

在 DSH 里跑陪伴型助手或工具型 Agent 时,常见做法是把整段对话塞进上下文,或只抽几条「事实」写进向量库。前者 prompt 很快变成难以审计的长文本,后者又容易丢掉普通轮次里的细节。DSH-DREAM(Durable RAG-Enhanced Agent Memory)把硬约束、近期窗口、检索到的记忆和审计记录分开维护,默认在本地做检索,只把短证据块交给模型。下面介绍它是什么、能做什么,以及如何在 DSH 客户端或 Python 里启用。

这是什么

DSH-DREAM 由社区维护者 baiqieji-LuLu 发布,当前状态为 v0.2.0 Pre-Alpha,在 DSH 社区目录中归类为记忆。它同时是 DSH 社区插件和可独立使用的 Python 库:核心思路是 holographic memory——完整用户消息与助手回复会无条件写入,而 system_fact 仅作为该轮的高亮标签;在 DSH 中开启 Holographic mode 时,Host 会在 agent/turn-stopping 强制写入,即使 Agent 未调用记忆工具。

项目主页:DSH-DREAM 目录页
源码与文档:GitHub - baiqieji-LuLu/DSH-DREAM

核心功能

资料中明确列出的能力如下,安装前可对照 README 自行核对。

四层上下文分离。 Anchors(硬约束)、recent window、retrieved memories、audit snapshots 互不混写,模型拿到的是结构化上下文而非整库原文。

全息写入与白名单。 存储白名单包含 user_message、assistant_message、system_fact、tool_result;model_hint 始终拒绝。MemoryAgent 对整轮做无条件双写;DSH 全息模式在轮次结束时强制落库。

状态槽冲突检测。 不会对全部记忆做「最新覆盖一切」;仅当同一位置/状态谓词发生直接变更(例如钥匙从鞋柜改到花盆)才折叠。像「买杯子 → 摔碎 → 再买」这类动作序列会保留。

时间线检索。 timeline_mode=True 时跳过冲突折叠,按时间戳升序返回相关原始记忆;MemoryAgent 可依据查询改写 LLM 的 intent: "latest" | "timeline" 自动选择模式。

本地优先检索。 默认本地 Chroma 与 BM25;RAGStore.search_memory() 对每次查询并行向量检索(记录在 flat_max_records 默认 200000 以下时用 NumPy 精确余弦 Flat 扫描)与全库 BM25,再用 RRF(score = sum(1 / (60 + rank)))融合。仅超长集合才回退 Chroma HNSW。

可审计与安全边界。 每次请求记录检索 chunk ID、窗口哈希与 anchor 版本;anchor 载荷上限 2000 tokens;检索文本作为不可信背景证据,用户文本 delimiter 隔离。

默认嵌入模型。 BAAI/bge-small-zh-v1.5 本地运行,无需 API Key;也可在设置中配置 OpenAI 兼容 /embeddings 端点。

README 中还记录了 100k 记忆规模下的 A/B 对比(RAG 与 1M token 裸跑等),具体数字以仓库文档为准,本文不展开复述截断部分。

安装与启用(DSH 客户端)

官方推荐路径是下载 Release 包并用 PowerShell 安装脚本注册到 DSH Profile,不是凭仓库名拼接 dsh plugin add。

1、下载并解压

从项目 GitHub Releases 获取 release_v0.2.0_prealpha 对应 ZIP(或使用维护者提供的包),在解压目录打开 PowerShell:

Expand-Archive .\DSH-DREAM-v0.2.0-prealpha.zip -DestinationPath .\DSH-DREAM
cd .\DSH-DREAM

2、运行安装器

脚本会注册 bundle 并准备本地 bridge 文件;若执行策略拦截,用 -ExecutionPolicy Bypass 单次绕过,不必永久改机器策略:

powershell -ExecutionPolicy Bypass -File .\install-agent-memory-plugin.ps1 -Force

3、按需设置模型 Key

本地嵌入与检索不需要 Key。若要用 DeepSeek 生成回复,在启动 DSH 之前设置:

$env:DEEPSEEK_API_KEY = "sk-your-key-here"

# 可选:对新终端持久化
setx DEEPSEEK_API_KEY "sk-your-key-here"

勿将 Key 提交到仓库或写入被跟踪的配置文件。

4、在 DSH 设置中打开

进入 Settings → DSH-DREAM(部分 DSH 构建中也可能出现在插件/设置区),勾选 Enable long-term memory;若希望每一轮都持久化而非仅在有 fact 提取时写入,再开启 Holographic mode (forced full memory)。保存后发送测试消息;首次检索可能在本地 Chroma 与嵌入模型初始化时多花数秒。

外部嵌入(可选)。 在 Settings → DSH-DREAM → Embedding model (advanced) 可设 openai_compatible provider、model、API key、base URL;切换模型维度不一致时,可保留「On dimension mismatch, try lossless re-embedding of old data」以尝试无损重嵌旧数据(切换前建议备份 .chroma)。

典型用法(Python 库)

开发者可在仓库内用 editable 安装并跑示例:

python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS / Linux: source .venv/bin/activate

python -m pip install -e ".[dev]"

离线演示与带 LLM 的交互聊天:

python examples/chat_demo.py --demo
python examples/chat_demo.py --llm

最小 API 示例(默认本地 BAAI 模型,数据目录 .chroma):

from agent_memory import RAGStore

store = RAGStore()
store.add_memory("今天逛街买了一个星巴克的蓝色马克杯。", "user_message")

latest = store.search_memory("蓝色马克杯", top_k=3)
history = store.search_memory("蓝色马克杯的完整历史", top_k=5, timeline_mode=True)

测试:

python -m pytest -q

适用场景与注意

适合谁。 需要在 DSH 或自研 Agent 中维护长期、可检索、可部分审计的对话记忆;希望默认本地检索、控制进 LLM 的 token;或要在「最新状态」与「完整时间线」之间做区分检索的开发者。

生态说明。 DSH 强调「一切皆插件」;skillhub.cn 上的社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。

安全与权限。 插件以当前 DSH 进程权限运行,安装前应阅读源码与许可证(仓库 README 提供中英文说明)。Pre-Alpha 版本行为与配置项可能变动,生产使用前请锁定 Release 并自行验证。

结尾

DSH-DREAM 把 RAG 增强的长期记忆做成 DSH 可配置的本地优先层,并用全息写入与分层上下文减轻「整段历史进 prompt」的负担。进一步细节见 GitHub README 与 社区目录页。

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

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

Xiaoye