前言¶
在 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 與 社區目錄頁。