dsh-memory:爲 DeepSeek Harness 提供本地 SQLite 跨會話記憶

前言

DeepSeek Harness(DSH)的插件機制允許爲智能體補充工具與提示段,但記憶並不是默認就具備的能力。對於需要在多個會話之間保留用戶偏好、長期事實或項目上下文的開發者來說,缺少持久記憶意味着每次會話都可能重新提供背景。

ben7am1n/dsh-memory 是一個 DSH 記憶插件:它使用單個本地 SQLite 文件和 FTS5 索引提供跨會話記憶,不需要嵌入服務、API key 或 sidecar 進程。

下面介紹它的定位、功能、安裝命令、配置項和適用邊界。

這是什麼

dsh-memory 由 ben7am1n 維護,許可證爲 MIT。它面向 DeepSeek Harness 的跨會話記憶場景,通過三個模型可見工具和一段 memory:recall 提示段工作。

它把記憶保存在本地 SQLite 文件中,並使用 FTS5 做關鍵詞檢索。記憶可以跨進程重啓保留;卸載插件時,插件會移除對應工具和提示段,並關閉數據庫。

運行環境要求 Node.js:

^22.19.0 || >=24.0.0

在 Node 22/24 下,由於使用 node:sqlite,運行 harness 時可能會打印一條 ExperimentalWarning。

核心功能

這個插件給模型提供三個工具:

1、memory_write:存儲一條自包含的持久事實,可添加標籤並置頂。

2、memory_search:對記憶文本和標籤進行關鍵詞搜索。

3、memory_forget:刪除已經錯誤或過期的記憶。

插件還提供 memory:recall 提示段。該提示段在字符預算內渲染記憶,排序規則是置頂優先,然後按最近更新順序排列。這樣模型不必每次都先調用搜索才能看到近期重要記憶;搜索更適合查找預算之外的更舊內容。

檢索是詞法檢索,不是語義檢索。搜索會對每個 token 加引號,使 FTS5 操作符按字面匹配,而不是改變查詢語義。

memory_write 的提示會引導模型避免存儲臨時任務狀態、密鑰以及倉庫已經記錄的事實。

安裝與啓用

先執行安裝命令:

dsh plugin --profile web add dsh-memory

默認 bundle 行會把記憶存儲到:

$DSH_HOME/memory/memory.db

在同一臺機器上,所有 profile 會共享這個默認存儲位置。

path 是必填配置,沒有代碼側默認值。它可以指向一個 SQLite 文件,也可以使用 :memory: 做臨時存儲。

插件沒有爲 path 設置代碼側默認值,是爲了避免把持久用戶事實分散到 harness 啓動時所在的目錄。部署值放在 patch row 中。

配置

默認配置示例如下:

- id: memory
  name: dsh-memory
  config:
    path: !!js dshHomePath('memory/memory.db')
    promptRecentCount: 10
    promptMaxChars: 2000
    maxTextChars: 2000
    searchLimitDefault: 10
    searchLimitMax: 50
    promptOrder: 50

各字段含義如下:

字段 默認值 說明
path 必填 SQLite 文件路徑,或 :memory: 臨時存儲
promptRecentCount 10 memory:recall 中提供的近期記憶數量
promptMaxChars 2000 memory:recall 渲染段落的字符預算
maxTextChars 2000 單條記憶允許的最大字符數
searchLimitDefault 10 memory_search 未指定 limit 時的默認值
searchLimitMax 50 memory_search 的硬上限
promptOrder 50 提示段順序

加載期配置錯誤會直接報錯。例如:path 爲空、邊界值非正、searchLimitDefault 大於 searchLimitMax。

典型用法與開發

安裝完成後,模型可以通過 memory_write 寫入持久事實,通過 memory_search 檢索記憶,通過 memory_forget 刪除失效記憶。memory:recall 會按置頂優先、最近更新的順序,在字符預算內把記憶渲染到提示中。

如果你要本地開發這個插件,可以按下面流程執行:

pnpm install --ignore-workspace
pnpm run typecheck
pnpm test
pnpm run build

這些命令分別完成依賴安裝、類型檢查、測試和構建。

適用場景與注意

dsh-memory 適合這些場景:

  • 希望 DSH 跨會話保留少量長期事實,而不是每次重新提供上下文。
  • 希望記憶檢索不依賴外部嵌入服務、API key 或 sidecar 進程。
  • 能接受關鍵詞檢索,而不是語義相似檢索。
  • 希望通過標籤、置頂和近期記憶控制模型看到的上下文。

它不適合強語義相似檢索、大規模向量召回,或必須依賴語義匹配的場景。

使用前請注意:

1、插件會在當前 dsh 進程權限下運行,安裝前應檢查源碼、許可證和配置來源。

2、默認共享存儲會寫到 $DSH_HOME/memory/memory.db。同一臺機器上使用多個 profile 時,要確認這些 profile 是否應該共享同一份記憶。

3、memory_write 的提示會引導模型避免寫入臨時任務狀態、密鑰和倉庫已記錄的事實,但實際使用仍應遵守項目的安全策略。

4、:memory: 適合臨時存儲,不適合作爲跨重啓保留的長期記憶方案。

結尾

dsh-memory 的價值在於把 DSH 的記憶擴展做成一個低依賴的本地 SQLite + FTS5 方案:它提供寫入、搜索、遺忘工具,也用提示段召回近期和置頂記憶。對於只需要跨會話記住少量持久事實的開發者,它比引入嵌入服務更輕。

  • GitHub:https://github.com/ben7am1n/dsh-memory
  • 目錄頁(來自插件線索,訪問前請自行覈對):https://www.skillhub.cn/plugins/ben7am1n/dsh-memory
羽毛球分组比赛记分
小程序二维码

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

小夜