前言¶
DeepSeek Harness (DSH) 採用插件化架構,旨在將核心能力開放給社區。在構建智能體工作流時,跨會話的記憶保留是剛需。傳統的方案通常依賴外置的向量數據庫或記憶服務,這會引入延遲,並帶來隱私風險。下面介紹 dsh-memory-layer,一個給 DSH 的「記憶層」插件,它通過本地單文件存儲和觸發式規則,解決了記憶的持久化與召回問題。
它是什麼¶
這是一個純本地的記憶插件,核心是一個單文件 SQLite 數據庫。它不做向量檢索、不做知識圖譜、不做雲端同步,也不做 Web UI。它的職責很單一:在 DSH 進程中維護一份本地記憶,並在特定信號觸發時,把該想起的記憶拿出來。
核心功能¶
插件採用四層結構設計,確保記憶的可靠性與可控性。
存儲層:本地 SQLite¶
數據存儲在本地文件系統中,路徑爲 .dsh/biomemory/biomemory.db(WAL 模式)。主要字段包括 realm(隔離維度,user 或 project)、mtype(類型,workflow/error/decision/fact)、trigger(觸發信號串)以及 text(正文)。所有刪除操作採用「墓碑」機制,僅修改狀態標記,不物理刪除數據。
召回層:觸發式驅動¶
插件不依賴模型進行自動回憶,而是根據當前會話的上下文進行確定性召回。觸發信號來自當前工作目錄和最近 12 次工具調用,形態爲可讀的字符串:
* file:<文件名>
* tool:<工具名>
* err:<錯誤代號>
命中後按優先級排序注入(workflow > error > decision > fact),每次注入有預算限制(最多 8 條、1200 字符)。
清理層:五條可解釋規則¶
通過 /memory compact 命令執行清理,每次淘汰都會寫入 compact.log:
1. 同鍵覆蓋:新記憶覆蓋舊記憶(舊條目標墓碑)。
2. Fact 過期:30 天無使用(≤1 次)→ 墓碑。
3. Workflow/Error/Decision 降權:90 天無使用 → 權重減半。
4. Error 與 Decision 永不自動刪除。
5. 每條淘汰記錄均包含時間、指紋、規則摘要。
適配層:工作流鏈¶
當同一個觸發串出現超過 3 次時,相關記憶會自動升級爲 workflow 類型,並按時間順序拼成一條鏈。例如記錄下「打開文件 -> 運行測試 -> 修改代碼」的順序。
安裝與啓用¶
安裝前請確保已安裝 Node.js >= 22.19.0。使用官方命令安裝:
# 將 --profile web 替換爲你實際的 profile 名
dsh plugin --profile web add github:KLRSL/dsh-memory-layer
安裝完成後,DeepSeek Harness 會自動熱掛載該插件。
典型用法¶
插件提供了 /memory 命令和 memory_recall 工具。
命令行交互¶
/memory list | query <詞> | add <內容> | edit <fp> <新內容> | remove <fp> | undo <fp>
/memory pin <fp> | unpin <fp> | entries [詞]
/memory compact [--dry-run] | dump
工具調用¶
在代碼或 Prompt 中調用 memory_recall 工具進行顯式召回。
寫入審批¶
對於重要的記憶(如用戶偏好、決定、糾正),插件支持 DSH 官方審批機制。審批服務不可用時,默認拒絕寫入(fail-closed,可通過配置放寬)。
適用場景與注意¶
該插件適合需要高隱私、低延遲、可解釋性記憶能力的開發者。它適合單機環境,不適合需要多機協作的場景。
需要注意:
1. 不做向量檢索:相同的輸入必須給出相同的觸發信號,檢索路徑是確定性的。
2. 不做自動反思:不依賴模型進行歸納,工作流鏈完全基於重複觸發記錄。
3. 零服務依賴:數據完全本地化,無網絡請求,無遙測數據。
短結尾¶
經過上面的步驟,你已經爲 DeepSeek Harness 掛載了一個純本地的記憶層。它不提供花哨的平臺功能,只提供可靠的存儲與觸發式召回。數據就在你自己的機器上,拷走文件即可遷移。更多細節請查看 GitHub 倉庫。