DSH 跨會話記憶插件 dsh-memory:YAML 存儲、語義檢索與兩級注入

前言

在 DeepSeek Harness(dsh)裏,跨會話信息如果只靠上下文窗口承載,新會話開始後容易丟失:項目偏好、歷史教訓、用戶約定等需要反覆說明。已有做法通常是手工維護筆記,或在提示詞裏反覆貼背景;前者依賴人工整理,後者容易佔用較多 token 並干擾緩存。

DSH 的插件生態強調以插件擴展能力。社區目錄是獨立站點,並非 DeepSeek / 幻方官方應用商店。下面介紹 Towzai 提供的 dsh-memory:一個面向 dsh 的跨會話記憶插件。

這是什麼

dsh-memory 是 DeepSeek Harness 插件,MIT 許可證,包名爲 @towzai/dsh-memory,倉庫爲 Towzai/dsh-memory。

它解決的是 dsh 會話之間記憶不連續的問題:把記憶寫入 YAML 文件,在後續會話中按需要檢索和注入,並保留完整細節供查看。

插件默認使用本地 ollama 和 embedding 模型;沒有 ollama 時,會降級爲純關鍵詞檢索。

核心功能

  • 提供六個工具:remember、recall、view、list、forget、pin。
  • 記憶存儲在 YAML 文件中,默認文件爲 memory.yaml。
  • recall 支持關鍵詞 + 本地 ollama embedding 的混合檢索,採用 RRF 融合。
  • 默認 embedding 模型是 qwen3-embedding:0.6b,可用環境變量 DSH_MEMORY_EMBED_MODEL 覆蓋。
  • 注入時標題優先:會話中先看到帶 id 的標題,完整內容通過 view 展開。
  • 支持 session 與 auto 兩級注入:session 級固定記憶在會話第一步注入一次,後續隨歷史攜帶;auto 級記憶按話題檢索,不污染固定記憶注入集。
  • 注入記憶帶來源標註前綴 Retrieved memories from the memory store (not conversation history),避免被誤認爲對話歷史。
  • 檢索匹配包含泛詞降權、關鍵詞至少 2 詞命中、檢索門控跳過測試性話語。
  • 數據安全包含串行寫入隊列、損壞文件隔離備份、原子寫入、mtime 緩存失效。

安裝與啓用

先從 GitHub 安裝:

dsh plugin --profile <name> add github:towzai/dsh-memory

也可以用本地路徑:

dsh plugin --profile <name> add ./dsh-memory

README 還列出 npm 包方式(如已發佈):

dsh plugin --profile <name> add @towzai/dsh-memory

如果首次從 git 安裝時被 pnpm 拒絕運行 prepare,按提示在該 profile 的 pnpm-workspace.yaml 中加入:

allowBuilds:
  '@towzai/dsh-memory': true

插件依賴本地 ollama 實例和 embedding 模型。默認模型爲 qwen3-embedding:0.6b,可用 DSH_MEMORY_EMBED_MODEL 覆蓋。沒有 ollama 時自動降級爲純關鍵詞檢索。

典型用法

下面是插件提供工具的職責:

1、remember:保存記憶,字段包括 content、title、category、tags、importance、forceInject、injectLevel、source。

2、recall:按關鍵詞 + embedding 混合檢索 top-N 結果。

3、view:按 id 展開一條記憶的完整內容。

4、list:查看標題列表,支持分類、標籤、重要性過濾;full 可看全文。

5、forget:軟刪除記憶,標記 retired 並保留歷史。

6、pin:切換 forceInject,用於讓行爲鐵則始終常駐。

一條記憶的大致結構如下:

- id: MEM-20260814-001
  title: "總結標題(缺省自動推導)"
  content: "..."
  category: preference | project | lesson | fact
  tags: [tag1, tag2]
  importance: high | normal | low
  created: 2026-08-14
  updated: 2026-08-14
  source: user | agent | conversation
  retired: false
  forceInject: false
  injectLevel: session | auto
  vector: [...]

這裏 vector 是寫入時自動計算的 embedding,用於語義檢索。

適用場景與注意

適合在 dsh 中需要跨會話保留用戶偏好、項目約定、歷史教訓或固定行爲規則的場景。如果依賴本地 ollama 語義檢索,需要保證本地實例和模型可用;如果只是關鍵詞檢索,也可以無 ollama 降級運行。

使用前建議檢查源碼和依賴,因爲插件代碼會在當前 dsh 進程權限下運行。該插件許可證爲 MIT,安裝和分發前應按團隊規範審閱代碼。

注意:

  • 記憶文件是私有數據,建議加入 .gitignore,不要提交到倉庫。
  • 更換 embedding 模型會使已存向量失效;維度不匹配會被檢測並告警。
  • 插件針對 dsh v0.1.0-rc.5 開發,peerDependencies 版本範圍可能需要隨 dsh 升級調整。
  • npm 安裝方式取決於包是否已發佈;如使用 npm 方式,請以實際發佈狀態爲準。

結尾

dsh-memory 把“記住、檢索、查看、管理”放進 dsh 的工具調用鏈路裏,用 YAML 文件承載記憶,用標題優先和兩級注入控制上下文佔用。

目錄頁:

  • https://www.skillhub.cn/plugins/Towzai/dsh-memory

GitHub:

  • https://github.com/Towzai/dsh-memory
羽毛球分组比赛记分
小程序二维码

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

小夜