前言¶
DeepSeek Harness (DSH) 的 agent 默認僅依賴當前對話的上下文,一旦關閉對話窗口或切換會話,之前的交互記錄就會丟失。dsh-persist 通過文件系統將記憶分層存儲,支持按需注入,解決了 agent “換對話就失憶” 的問題。
核心功能¶
該插件提供以下核心能力:
* 對話獨有記憶:每個對話擁有獨立的記憶文件,其他對話無法訪問,互不干擾。
* 選擇性注入:默認新對話零注入,在記憶 tab 勾選需要的內容後,纔會將對應記憶加入上下文。
* 項目記憶互通:同一工作目錄下的對話可共享項目記憶,不同命名項目之間隔離。
* Vault 語義檢索:基於 bge-m3 模型的向量搜索,支持按語義召回記憶;未配置 key 時自動降級爲關鍵詞搜索。
* 自動召回(三態模式):記憶 tab 中的自動檢索功能提供三種模式:關閉(默認)、智能(本地規則過濾)、LLM 判斷(調用模型判斷是否需要檢索,失敗自動降級爲智能)。
* 記憶 tab:對話頂部的可視化 tab,支持編輯記憶、勾選注入配置以及實時預覽。
* 全部純文本:所有記憶以 Markdown 格式存儲在 ~/.dsh-memory/ 目錄下,人類可讀、可手動編輯、易於備份。
* 組合包:標準 DSH bundle,通過 dsh plugin 命令安裝。
安裝與啓用¶
安裝過程包含兩步:安裝插件並重啓 DSH。
- 在終端執行安裝命令:
dsh plugin --profile web add dsh-persist
- 重啓 DSH 以加載插件:
dsh --profile web
插件安裝後即可使用。如需開啓語義檢索功能,需申請 SiliconFlow 的免費 API Key 並設置環境變量 SILICONFLOW_API_KEY。
使用方法¶
基本操作¶
安裝並重啓後,打開任意對話,頂部會出現“記憶”tab。默認情況下不注入任何內容,需手動勾選要注入的塊。
Agent 也可以通過 memory 工具主動讀寫記憶。工具的 scope 參數決定讀寫範圍:
* scope="conversation":寫入/讀取當前對話記憶(默認)。
* scope="project":寫入/讀取當前工作目錄的項目記憶。
* scope="global":寫入/讀取全局 keyed 記憶。
語義 Vault 操作¶
Vault 用於存儲需要語義檢索的內容,支持 add、delete、import、export 等操作:
memory(vaultOp="add", content="...")
memory(vaultOp="delete", query="...")
memory(vaultOp="import")
代碼示例¶
讓 Agent 記住內容或查詢記憶:
// 寫入對話記憶
memory(action="add", scope="conversation", content="用戶偏好使用空格縮進")
// 寫入項目記憶(同目錄其他對話可共享)
memory(action="add", scope="project", content="構建腳本位於 build.ps1")
// 寫入全局鍵值對
memory(action="add", scope="global", key="user-name", content="小明")
// 查詢對話記憶
memory(action="list")
適用場景與注意¶
- 適用場景:需要長期保持上下文、跨會話複用經驗的 agent 開發,以及需要整理個人知識庫的用戶。
- 環境要求:宿主環境 Node.js 版本需 >= 22.6(推薦 24+)。
- 隱私與安全:
- 啓用語義搜索(
SILICONFLOW_API_KEY)後,消息內容會發送給 SiliconFlow 進行向量化。 - 啓用 LLM 判斷模式會將消息發送給指定的模型提供商。
- API 路由
/dsh-memory/api/*默認僅允許 loopback 訪問,如需遠程訪問請設置DSH_MEMORY_ALLOW_REMOTE=1。
- 啓用語義搜索(
- 數據遷移:插件曾用名爲
dsh-memory,存儲路徑和路由未變,舊數據無需遷移。
結尾¶
dsh-persist 通過分層存儲和純文本格式,爲 DSH agent 提供了可控的長期記憶能力。插件位於 GitHub 與 SkillHub。