dsh-long-term-memory:DeepSeek Harness 的確定性分層長期記憶

前言

DeepSeek Harness (DSH) 的核心哲學是「一切皆插件」。在開發基於 DSH 的智能體時,跨會話的持久化記憶是一個常見痛點。傳統的向量檢索方案通常依賴外部數據庫,或者需要額外的模型調用,這增加了系統的複雜度和延遲。

dsh-long-term-memory 插件旨在解決這個問題。它爲 DSH 提供了分層的、確定性的長期記憶能力。它使用 JSONL 文件存儲數據,採用 CJK 感知的 BM25 算法進行確定性召回,並在每次請求組裝前自動注入記憶摘要。該插件不依賴向量庫、不需要額外的模型調用、也不需要自建 SQLite 或外部服務器,完全基於 DSH 已有的接縫進行組合。

核心功能

本插件提供以下核心能力:

  1. 三庫分層存儲:將記憶分爲三個作用域,各佔一個 JSONL 文件。
    • user:用戶畫像(姓名、角色、偏好)。
    • global:跨項目的事實與決策。
    • workspace:項目專屬的記憶。
  2. 確定性召回:使用 BM25 算法檢索。中文按漢字 bigram 匹配,日文韓文同理,英文按單詞匹配。結果可解釋、可重放。
  3. 自動注入與校準:每次組裝請求前,通過 systemPrompt.context() 注入記憶摘要。注入塊被 <long_term_memory> 標籤包裹,明確聲明來源與不確定性,指引模型判斷相關性並忽略無關內容。
  4. 安全機制:
    • 威脅掃描:對寫入內容和注入快照進行輕量模式檢測,命中則拒絕寫入或替換爲佔位符。
    • 寫入護欄:採用寫臨時文件 + rename 的原子方式,配合跨進程文件鎖,防止數據損壞。
  5. 糾正迴路:提供 memory_correct 工具,用於更正舊事實,將舊記錄標記爲 superseded,並在後續召回與注入中自動排除。

安裝與啓用

在插件目錄下執行以下命令:

cd dsh-long-term-memory
dsh plugin --profile web add .

安裝完成後需要重啓 dsh web。

⚠️ 注意:dsh plugin add 命令曾破壞過 link: 的相對路徑(導致相關插件被移出 bundles)。本插件已使用絕對路徑 link:/Users/... 固化。請勿再對新插件依賴相對路徑。

使用方式

插件提供兩類使用入口:模型工具和斜槓命令。

模型工具

模型可以通過註冊的工具讀寫記憶:

  • memory_write(content, scope?, tags?):寫入一條記憶。scope 可選 user/global/workspace,默認 workspace。
  • memory_recall(query, scope?, limit?):BM25 檢索,返回帶分數的命中記錄。
  • memory_list(scope?, limit?):按更新時間列出近期記憶。
  • memory_get(id):查看單條記憶。
  • memory_forget(id, scope?):按 ID 刪除記憶。
  • memory_correct(claim, truth, evidence?):記錄更正事實。

斜槓命令

用戶可以直接在輸入框使用斜槓命令(不經模型):

  • /memory list [user|global|workspace|all]:列出近期記憶。
  • /memory search <query>:BM25 檢索。
  • /memory get <id>:查看單條記憶。
  • /memory forget <id>:刪除單條記憶。
  • /memory export [|markdown]:導出記憶 bundle。

配置說明

通過覆蓋 cordis.patch.yml 或 settings.yaml 來控制行爲。以下是關鍵配置項:

  • 注入策略 (injectContext):
    • recent(默認):每輪注入每庫最近的幾條記憶。
    • full:注入全部記憶(受字符預算限制)。
    • off:關閉自動注入。
  • 標籤過濾 (injectTags):在 recent 模式下,只注入帶有指定標籤(如 decision, constraint)的記憶,過濾瑣碎條目。
  • 寫入審批 (requireApprovalForWrite):可選開啓,在寫入前通過 DSH 的審批接縫進行人工確認。
  • 威脅掃描 (scanThreatsOnWrite):默認開啓,對寫入內容進行輕量威脅模式檢測。
  • 字符預算 (charLimit):每個作用域的字符上限,超限時先自動壓縮再拒絕。

技術細節與注意事項

  1. 同步注入:DSH 的 prompt 組裝器同步調用相關函數。如果注入渲染走異步路徑(返回 Promise),會導致崩潰。插件已將注入渲染全部改爲同步路徑(首個 assembly 前異步預熱 store)。
  2. 零外部依賴:插件內部實現了 BM25 分詞器和 JSONL 讀寫邏輯,不依賴外部向量庫。
  3. 威脅掃描保守:掃描模式刻意收窄(僅檢測指令覆蓋/系統提示泄露/角色劫持/標記注入),避免誤傷正常筆記。注入快照使用佔位符而非直接刪除原文,保留供用戶處理。
  4. 存儲路徑:
    • user: $DSH_HOME/dsh-memory/user.jsonl
    • global: $DSH_HOME/dsh-memory/global.jsonl
    • workspace: <workspaceRoot>/.dsh/memory.jsonl

適用場景

適合需要在 DSH 智能體中實現跨會話記憶、用戶偏好管理、歷史決策追溯以及需要嚴格數據安全控制的場景。

  • 記憶沉澱:模型在對話中通過 memory_write 將關鍵信息沉澱下來。
  • 確定性召回:當模型需要查詢歷史約束或事實時,使用 memory_recall 獲取高相關性結果。
  • 知識庫管理:通過 /memory list 和標籤過濾,整理項目文檔或用戶畫像。

相關鏈接

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

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

小夜