前言¶
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