前言¶
DeepSeek Harness(DSH)的會話有天然邊界:換會話、或上下文被 compact 之後,上一輪已經對齊的結論往往帶不過來,開發者不得不反覆說明架構約定、踩坑記錄和項目背景。社區裏也有把規則寫進全局 AGENTS.md、靠長上下文硬扛的做法,但那是「當輪可見」,不等於可檢索、可跨工作區複用的長期記憶。
下面介紹維護者 eighteentang 在 DSH 插件目錄「記憶」分類下的 dsh-plugin-memory-lite:數據落在本地 SQLite,不聯網、不上傳、不依賴外部記憶服務;後臺做日誌沉澱、按需注入,以及可選的「整理成條目」(會消耗模型額度)。
這是什麼¶
dsh-plugin-memory-lite 的定位是:給 DSH 的本地優先跨會話記憶——每輪自動沉澱、空閒時可自動整理、需要時按需注入。許可證爲 MIT;倉庫見 GitHub,目錄頁見 SkillHub 插件頁。
它針對的是「會話斷檔後信息丟失」:插件在後臺分三層工作(見下表),且刻意讓日誌層永不進入提示詞,只有蒸餾後的長期條目纔會被注入,避免拖垮上下文預算與前綴緩存。
| 層 | 做什麼 | 什麼時候 | 成本 |
|---|---|---|---|
| 日誌層 | 每輪結束把對話追加到本地 | 自動,每輪 | 零模型調用 |
| 長期條目層 | 把日誌裏的結論蒸餾成記憶條目 | 點「立即整理」或開啓空閒自動整理 | 每次一次模型調用 |
| 注入層 | 把與當前用戶句相關的記憶作爲獨立消息追加到對話尾部 | 自動,每輪 | 零成本 |
日誌落盤前會剔除宿主注入的系統樣板(如 <system-reminder> 裏的用戶全局 AGENTS.md),並去掉與前文重複的部分;沒有內容的輪次不記。
核心功能¶
自動沉澱與按需注入¶
默認開啓的 autoCapture 會在每輪結束寫日誌(不花模型額度);autoRecall 會在用戶消息到達時按關鍵詞找相關記憶並注入。注入是「只追加」:作爲獨立消息追加在本輪已領取消息之後,不改寫已有歷史。同一會話裏已注入過的條目不會重複注入;上下文壓縮後會重置該記錄並補回常駐記憶。
整理成條目(可選、有額度)¶
長期條目默認需要你在設置頁點「立即整理」,避免未告知就消耗額度。若把 autoDistill 設爲 true,空閒 30 分鐘後可自動整理(每天最多 4 次,受配置約束)。整理時模型輸入會先剔系統樣板,再按頭 40% + 尾 60% 取樣。
人設與工作規範(每輪常駐)¶
設置頁「記憶控制」上方兩個文本框可寫人設設定、工作規範與行爲準則,無格式要求,存於:
$DSH_HOME/memory-lite/persona/persona.md
$DSH_HOME/memory-lite/persona/rules.md
它們作爲 system prompt 的一段、每輪生效;保存後下一輪即生效。插件停用或卸載後不再生效。
用戶級記憶(跨工作區)¶
與具體項目無關的事實可寫入用戶級庫:
$DSH_HOME/memory-lite/global/memory.db ← 用戶級(跨工作區)
<工作區>/.dsh-memory/memory.db ← 該工作區(默認)
對話中說「記住(跨工作區):……」會通過 memory_note 且 scope="user" 寫入。召回時當前工作區與用戶級合併排序,同分時工作區優先;仍受 injectMaxItems 等注入上限約束。
模型可見工具¶
在對話中可直接讓助手調用(名稱以插件爲準):
- 「記住:……」→
memory_note - 「搜一下我之前說過關於……」→
memory_search - 「把那條標記成已完成」→
memory_update - 「忘了那條吧」→
memory_forget(刪除需審批)
記憶條目有三種狀態:在用(可召回)、已完成(仍可搜到與召回)、已停用(不再注入,可恢復)。
檢索與限制¶
檢索是關鍵詞級,不是語義向量;中文按連續串與子串匹配,換說法可能搜不到。每個工作區默認一個庫;日誌層約有每會話 200 條上限,超出會先歸檔 jsonl 再刪庫內行。
安裝與啓用¶
命令行安裝(資料原文,<你的profile名> 換成實際 profile):
dsh plugin --profile <你的profile名> add github:eighteentang/dsh-plugin-memory-lite#v1.3.0
也可在客戶端側邊欄 「插件」→「添加插件」 粘貼地址。推薦帶版本釘子,例如:
https://github.com/eighteentang/dsh-plugin-memory-lite#v1.3.0
不要粘貼 Releases 頁或 …/tree/main 這類非倉庫根地址;版本用 #v1.3.0 拼在倉庫根 URL 後。全部版本見倉庫 CHANGELOG;DSH 插件目前需先卸載再裝新版升級。
裝完後重啓客戶端,設置頁會出現 「記憶控制」。
在 profile 的 cordis.patch.yml 中可配置插件(節選):
- id: memory-lite
name: dsh-plugin-memory-lite
config:
autoCapture: true
autoRecall: true
autoDistill: false
distillIdleMinutes: 30
distillMinIntervalMinutes: 30
distillMaxPerDay: 4
injectMaxItems: 3
injectMaxChars: 2000
crossWorkspaceSearch: true
distillProvider: ''
distillModel: ''
默認 autoDistill: false 時,只有你點「立即整理」纔會調用模型整理。
典型用法¶
- 安裝並重啓後,平時無需操作:每輪自動記日誌、每句用戶消息自動嘗試注入相關記憶。
- 需要長期可召回的結論時,在對話裏說「記住:……」,或在設置頁列表裏搜索、改狀態,需要時點「立即整理」。
- 跨項目通用約定用「記住(跨工作區):……」寫入用戶級庫;必須每輪遵守的規則寫進人設/工作規範兩個文本框。
- 刪記憶:優先把條目改爲「已停用」;徹底刪除單條用
memory_forget(需確認);直接刪<工作區>/.dsh-memory/會丟失該工作區全部記憶且不可恢復。
數據路徑彙總:
<工作區>/.dsh-memory/memory.db
<工作區>/.dsh-memory/archive/
$DSH_HOME/memory-lite/global/
$DSH_HOME/memory-lite/persona/
$DSH_HOME/memory-lite/workspaces.json
適用場景與注意¶
適合希望在 DSH 裏本地自持對話沉澱、又不想把整段聊天日誌塞進提示詞的開發者:日常零額度記日誌與注入,把「花額度」集中在可選的蒸餾步驟。
安裝前建議自行查看倉庫源碼與 MIT 許可證。插件在當前 DSH 進程權限下讀寫 SQLite 與 $DSH_HOME 下文件;敏感內容在寫入時標記 sensitive,注入路徑 fail-closed。SkillHub 等社區目錄與 DeepSeek / 幻方無官方從屬關係,DSH 生態本身是「一切皆插件」的擴展方式。
空閒自動整理依賴宿主進程保持運行;客戶端關閉時不會整理。
結尾¶
dsh-plugin-memory-lite 用本地 SQLite 把「記日誌、蒸餾條目、按需注入」拆開,默認不悄悄消耗整理額度,並強調注入紀律與刪除審批。若要進一步瞭解或安裝,可看目錄頁 eighteentang/dsh-plugin-memory-lite 與 GitHub 倉庫。