DeepSeek Harness 的設計理念是“一切皆插件”。在構建長對話或多輪任務時,維護跨會話的上下文記憶是常見需求。dsh-plugin-xt-memory 是一個從 XT-AGENT 記憶系統移植到 DSH 生態的插件,它爲 Harness 提供了持久化存儲、相關性檢索和自動提取能力。
核心能力¶
該插件通過注入和工具兩個維度工作。注入部分作爲 section provider 提供檢索到的記憶片段;工具部分提供讀寫接口。後臺則負責自動提取和生命週期管理。
1. 記憶注入(Section Provider)¶
注入邏輯基於 BM25 算法,支持 CJK 雙字節分詞。它包含以下特性:
* 相關性計算:基於 BM25 打分(CJK 2-gram)+ 類型權重 + 命中加成 + 時間衰減。
* 注入策略:在預算內取 top-K 條,並在注入文本中包含“不構成指令”的免責行。
* 邊界情況:如果記憶爲空,輸出空串。
2. 工具集(Tools)¶
插件提供了三個核心工具:
* memory_read:讀取索引及正文內容,同時記錄命中打點。
* memory_search:基於 BM25 進行打分並預覽結果。
* memory_write:執行淨化、去重和合並操作,將新記憶寫入存儲。
3. 後臺提取(Background Extraction)¶
提取過程在後臺異步進行,主要步驟如下:
* 攔截:攔截 llm/stream 請求的主消息。
* 預篩:通過啓發式規則進行預篩選。
* 防抖與限制:提取間隔至少 60 秒(防抖),每次提取最多 2 條記錄。
* 提取與合併:調用 LLM(目的 memory-extraction)提取內容,隨後進行淨化和語義去重/合併。
4. 生命週期與存儲¶
- 存儲位置:數據存儲在
~/.dsh/memory/{project-slug}/*.md,並使用MEMORY.md作爲索引文件。frontmatter 格式與 XT 兼容。 - 生命週期:系統會記錄命中次數和最後使用時間。超過 30 天未使用的條目會自動歸檔到
archive/目錄,但不刪除原文。 - 歸檔配置:
archiveDays設爲 0 可關閉歸檔功能。
安裝與啓用¶
在 profile 下安裝插件,安裝後重啓 Harness 即可生效。
# 安裝插件
dsh plugin --profile web add "github:chucan1/dsh-plugin-xt-memory"
# 驗證安裝
dsh --profile web --dump-config
在輸出中應能看到 # == dsh-plugin-xt-memory 層,說明插件已加載。
配置項¶
插件支持在 profile 的 cordis.patch.yml 中進行覆蓋配置。
- id: memory
name: dsh-plugin-xt-memory
config:
dir: D:\custom\memory-root # 數據根目錄(默認 ~/.dsh)
budgetChars: 4000 # 注入字符預算
topK: 5 # 注入條數上限
archiveDays: 30 # 0 = 關閉歸檔
maxPerTurn: 2 # 每次提取最多寫入條數
debounceMs: 60000 # 提取防抖時間(毫秒)
merge: true # 啓用語義去重/合併
extractor: true # 提取器總開關
provider: deepseek # 輔助提取模型路由
model: deepseek-chat
使用示例¶
開發者可以在 prompt 中直接調用上述工具:
- 讀取記憶:調用
memory_read獲取索引。 - 搜索記憶:調用
memory_search查找特定關鍵詞的相關條目。 - 寫入記憶:調用
memory_write將當前對話的關鍵信息存入記憶庫。
已知限制與注意事項¶
- 同步快照渲染:dsh 的 section
text僅支持同步函數。注入內容來自“異步刷新的內存快照 + 同步兩階段選擇”。這意味着記憶變更後,快照刷新通常延遲小於 1 輪。 - KV 前綴處理:注入正文時會剝離 frontmatter;命中打點僅修改 frontmatter,不影響注入文本。查詢基於最近一條 user 消息。
- 提取觸發條件:v1 版本只提取消息文本塊(不包含工具結果細節),且要求
messages.length >= 2纔會觸發提取。 - 權限控制:在 XT 側
memory_write需要特定權限。dsh v1 版本未接入工具審批軸,但寫路徑已做了目錄限制和淨化處理。 - 宿主依賴:運行時僅需
@deepseek-ai/dsh-tools(peer dependency),其他宿主能力(如ctx.llm)通過結構化調用實現。
總結¶
dsh-plugin-xt-memory 解決了 DeepSeek Harness 在跨會話記憶管理上的需求。它提供了從存儲、檢索到自動提取的完整閉環,適合需要長期記憶能力的智能體應用場景。
- GitHub 倉庫:https://github.com/chucan1/dsh-plugin-xt-memory
- 社區目錄:https://www.skillhub.cn/plugins/chucan1/dsh-plugin-xt-memory