前言¶
在 DeepSeek Harness(DSH)裏做智能體或長期協作,常見問題是:偏好、決定、踩過的坑只活在當前會話裏,換一個新線程要從頭交代。社區裏也有「記憶平臺」類方案,往往要額外跑服務、接嵌入或同步鏈路。若你只想在本機持久化少量可解釋的記憶,並在合適的時機自動帶進上下文,dsh-memory-layer 走的就是這條更輕的路。
下面按安裝、存儲與召回、日常操作說明這個插件能做什麼、不能做什麼。
這是什麼¶
維護者 K-W7,分類爲記憶;當前 README 標註版本 v0.11.3,MIT 許可證,要求 DSH >=0.2.0-rc.2 <0.3.0-0、Node >=22.19.0。
一句話定位:只做記憶,不做記憶平臺。
它不依賴外置服務、向量檢索、嵌入模型、知識圖譜、雲端同步或 Web UI;核心是 SQLite 單文件 加一套 確定性 的「什麼時候該想起什麼」規則。數據落在本機,庫文件路徑爲 <DSH_BIOMEMORY_DIR || ~/.dsh/biomemory>/biomemory.db;拷走該文件即可遷移。
四層結構概覽¶
存儲層¶
記憶落在 SQLite 中,主要字段包括:
| 字段 | 含義 |
|---|---|
realm |
隔離維度:user 或 project:<工作目錄> |
mtype |
類型:workflow / error / decision / fact |
trigger |
觸發信號串 |
mkey |
同鍵覆蓋用的主題鍵 |
text |
正文 |
另有 chains(工作流鏈)、trigger_counts(觸發計數,用於工作流升級)等輔助結構。v0.11 起區分 被注入(last_accessed)與 真實使用(last_used、hits),避免清理規則被「每次看到就刷新」誤觸發。
召回層¶
不等模型自發聯想,而是根據當前會話信號注入記憶:
- 信號來源:會話工作目錄(
session.cwd)與最近 12 次工具調用的名字、參數(路徑、命令、錯誤代號等)。 - 觸發串形態:
file:<文件名>、tool:<工具名>、err:<錯誤代號>。 - 命中後按 workflow > error > decision > fact 排序注入;工作流鏈整鏈帶入。
- 注入預算:每次最多 8 條、最多 1200 字符;無命中則不注入。
- 偏好/決定通道(v0.11):對缺少 trigger 的偏好類記憶單獨給小預算(默認 ≤3 條 / ≤400 字符)。
- 冷啓動兜底:庫較小時可在零命中時回落注入最近幾條;庫變大後讓位給觸發召回。
真實使用僅計:memory action=query 關鍵詞命中,或顯式 memory action=used fp=<指紋>。
清理層¶
/memory compact 按五條可解釋規則處理(支持 dryRun 預覽),淘汰寫入 compact.log。fact 長期未真實使用可進墓碑;error 與 decision 不自動刪除;pin 條目豁免。remove 爲墓碑可 restore,purge 爲物理刪除且不可逆。
適配層¶
同一觸發串出現超過 3 次,相關記憶可升級爲 workflow 並按時間順序成鏈——記錄的是「上次你怎麼做的」,不做因果推斷。
安裝與啓用¶
推薦在 DSH 桌面版安裝:
- 打開 DSH 桌面版 → 左側 插件 → 加插件;
- 包名填
dsh-memory-layer,點 安裝(安裝後自動啓用)。
命令行等價(把 desktop 換成你的 profile 名):
dsh plugin --profile desktop add dsh-memory-layer
本地開發可 link:
dsh plugin --profile desktop add link:./dsh-memory-layer
安裝完成後重啓 DSH 生效;開啓 HMR 的 profile 可熱掛載。
典型用法¶
工具 memory¶
| action | 說明 |
|---|---|
add |
寫入記憶(text 必填) |
query |
關鍵詞查詢;命中記一次真實使用 |
used |
標記本條剛被用上 |
list / update |
瀏覽 / 修改 |
remove |
墓碑(可 restore) |
purge |
物理刪除(不可逆) |
restore / pin / unpin |
回滾 / 鎖定 / 解鎖 |
compact |
按規則清理 |
dump |
導出人類可讀 Markdown |
另有 memory_recall,用於「你還記得…嗎」式顯式召回。
用戶偏好、決定、糾正類重要記憶可走 DSH 官方審批;審批服務不可用時默認拒絕(approvalFallback=deny,可配置爲 auto)。
命令 /memory¶
常用子命令包括:
/memory list | query <詞> | add <內容> | edit <fp> <新內容> | entries [詞]
/memory remove <fp> | purge <fp> | undo <fp> | unarchive <fp> | used <fp>
/memory pin <fp> | unpin <fp>
/memory stats | why <fp> | preview
/memory compact [--dry-run] | dump | help
stats:活躍條數、類型與 realm 分佈、trigger 覆蓋率 等。why <fp>:解釋某條記憶(不)會被注入的原因。preview:預覽當前輪次若組裝提示詞會注入什麼。
寫入時若正文含「今天 / 昨天」等相對時間但無絕對日期錨點,成功返回會附帶提醒,寫入仍會成功。
配置¶
配置文件:<DSH_MEMORY_ROOT || ~/.dsh/memory>/biomemory.config.json(v0.11 起配置與導出在 memory/ 目錄,庫在 biomemory/)。
部分可覆蓋項示例:
| 鍵 | 默認 | 說明 |
|---|---|---|
decisionChannelMax |
3 | 偏好/決定通道每輪最多條數 |
decisionChannelChars |
400 | 偏好/決定通道字符預算 |
coldStartFallbackMax |
3 | 冷啓動兜底條數 |
injectSnapshot / injectRecall / injectSummary |
true | 宿主注入開關;全置 false 則只存只查、不進 prompt |
approvalFallback |
deny | 審批不可用時的策略 |
三個 inject* 在插件 apply 時讀取,修改後需重啓宿主或重載插件。
環境變量:DSH_BIOMEMORY_DIR(數據目錄)、DSH_MEMORY_ROOT(Markdown 備份/日誌目錄)。宿主開啓 webServer 時可能註冊本機 HTTP 端點 /biomemory/api,默認僅本機來源。
適用場景與注意¶
適合誰: 希望在 DSH 會話間保留偏好、決定、錯誤處理習慣和工作流重複模式,且要求檢索可解釋、數據不出本機的開發者。
刻意不做的事: 向量/嵌入檢索、自動「反思」、跨機同步、刪除即銷燬(常規刪除爲墓碑)。
安全與權限: 插件以當前 DSH 進程權限運行,可讀寫本機 SQLite 與配置目錄。安裝前建議查看 GitHub 倉庫 源碼與 MIT 許可證;誤存敏感信息時可用 purge,但需知悉其不可逆且寫庫路徑不產生備份副本,事前可用 dump 或自行拷貝數據庫。
結尾¶
dsh-memory-layer 把記憶收成單文件 SQLite 加觸發式召回,沒有額外要跑的服務;換會話時由規則決定何時注入,而不是把整庫塞進 prompt。
- 社區目錄:skillhub.cn 插件頁
- 源碼與文檔:github.com/K-W7/dsh-memory-layer
DSH 生態奉行「一切皆插件」;SkillHub 爲社區目錄站點,與 DeepSeek / 幻方無官方從屬關係。