前言¶
在 DeepSeek Harness(DSH)裏開新會話,模型往往不知道你上一段對話裏定過的規矩,也不會自動繼承上一次踩坑後的改法。常見做法是各自維護項目裏的 AGENTS.md、靠用戶反覆粘貼背景,或把筆記丟進外部向量庫——可讀性和「所有會話共用一份、能手工改、壞了還能恢復」往往難以兼顧。
下面介紹社區插件 dsh-shared-memory(維護者 1148462398-hub)。它把記憶收斂成一份人類可讀的 MEMORY.md,所有 DSH 會話共用;寫入時雙硬盤分區鏡像備份,檢索用關鍵詞共現與 BM25,並用「質疑度」驅動方法庫擇優。插件還附帶可選的技能庫(~/.dsh/skills/ 下的 SKILL.md)與表情包自動發送能力。當前版本 1.9.4(MIT),SkillHub 分類爲「記憶」。
這是什麼¶
dsh-shared-memory 是 DSH 的 bundle 插件:一份全局共享記憶文件 + 可對話調整的人設 + 雙分區鏡像 + 方法庫(methodbook)+ 文檔導入分區(docs),以及技能與表情包相關能力(見倉庫 README 與 package.json 描述)。
它主要解決:
- 會話之間互不相識,背景與偏好要重複交代。
- 錯誤與教訓無法沉澱到下一次會話。
- 人設散落、難以統一修改與傳遞。
- 單點存儲,磁盤故障即全失。
生態上,DSH 主張「一切皆插件」;SkillHub 是獨立社區目錄,與 DeepSeek / 幻方無官方從屬關係。安裝與啓用前請自行審閱 GitHub 源碼 與許可證;插件以當前 DSH 進程權限讀寫本機文件。
記憶文件結構¶
單個 Markdown 文件,可用編輯器直接改。區塊由 HTML 註釋劃分,請勿刪除 <!-- dsh-shared-memory:xxx:start --> / :end 標記。
| 區塊 | 內容 | 誰來寫 |
|---|---|---|
persona |
當前模型人設提示詞 | 模型(用戶要求時) |
requirements |
長期要求與偏好(精選) | 模型 |
requests |
用戶輸入流水(每輪摘要一行,滾動淘汰) | 插件自動 |
corrections |
用戶指正 | 模型 |
lessons |
自我教訓 | 模型 |
methods |
更好的方法(場景 / 做法 / 原因) | 模型 |
sessions |
會話索引(含壓縮事件) | 插件自動 |
另有 methodbook(質疑度驅動的方法庫索引與 JSON 權威副本)和 docs(外部文檔導入,不進提示詞、僅檢索)。requests 與 requirements 分離,是爲避免每輪自動摘要把長期要求擠掉。
存儲、雙備份與對賬¶
默認路徑(README 以 Windows 爲例):
- 主文件:
%USERPROFILE%\.dsh\dsh-shared-memory\MEMORY.md - 鏡像:
D:\dsh-shared-memory\MEMORY.md(自動選第一塊非系統盤)
規則概要:
- 每次寫入同時寫主文件與鏡像(臨時文件 + rename,寫完回讀校驗)。
- 啓動時對賬:缺一側則回補;兩側內容不同則保留較舊爲
.conflict-<時間>.bak後以較新爲準;兩側都不存在則按模板重建。 - 主文件與鏡像在同一盤符時,插件會在日誌中告警。
換路徑可讓模型調用 memory_file_maintain(action=relocate),或修改 dsh/cordis.patch.yml 中的 primaryPath / mirrorPath 後重啓。徹底清空需 action=reset 且 confirm="DELETE_BOTH",否則拒絕執行。
關鍵詞索引寫在同目錄的 MEMORY.index.json;超出主文件容量上限的條目進入 MEMORY.archive.md(同樣雙寫),仍可通過檢索訪問。
注入、讀盤與項目作用域¶
注入:人設(約佔預算 1/3)+ 記憶使用協議 + 各分區索引摘要(條數受「檔位」限制;放不下的會提示用 memory_file_search 檢索),作爲系統提示詞 section(order 25)。已記錄內容會標註爲參考數據而非指令;正文中的 {{...}} / ${...} 會被打斷,避免被當成模板求值。
讀盤:組裝提示詞時同步 statSync 比對 mtime(1.2s 節流),變更則重讀。上下文壓縮後並非只靠一次性提醒,而是持續從磁盤讀取;檢測到壓縮事件後,該會話約 30 分鐘內會在提示詞開頭提醒「共享記憶已重新讀取」。
作用域:按會話工作目錄自動打上 project:<目錄名>。注入的是全局條目 + 當前項目條目;工具參數 scope 可選 current(默認)、global、all。記錄時默認 scope=auto。
注入檔位(memory_file_maintain({action:"profile", profile:"..."}) 或配置 profile):
| 檔位 | 預算 | 每分區條數 |
|---|---|---|
lean |
標準 × 0.55 | 5 |
standard(默認) |
×1 | 8 |
rich |
×1.7 | 14 |
每類默認上限 200 條(entryCap),超出部分歸檔;寫盤前舊內容可進 .history/(默認保留 50 個 revision),支持 history / rollback。
檢索、分層與關係¶
memory_file_search 默認 mode: "fuzzy":精確、中文 2-gram、ASCII 近鄰、共現聯想詞等多路打分,排序用 BM25;嚴格匹配可用 mode: "strict"。聯想詞典隨記憶入庫自舉(共現圖,每詞最多 16 個鄰居)。
主文件與歸檔之間按命中頻率流動,而非簡單「最舊先刪」:檢索命中、被注入使用會抬高權重;新條目有保護期(默認 3 天)。質疑度越高,主文件命中不足時越傾向翻歸檔(歸檔結果標 [分節·歸檔])。
質疑度 0–10 與方法庫:索引裏已有「最佳方法」時,質疑度大於 0 會要求換多種做法再比較 token 與耗時;更優則替換,否則累計未更優次數,連續達到 decayAfter(默認 3)可降檔至 0。查詢入口示例:
memory_file_method({ action: "query", task: "在 Windows 上用 ninja 構建 C++ 項目" })
條目關係(只改索引、不改正文時間線):supersedes 取代舊條、related 關聯檢索、ttlDays 過期後不再注入但仍可搜到。
重複寫入同一內容會 reinforce 而非 duplicate;正文含「必須 / 務必 / 禁止」等強調詞會提高權重,影響注入排序、檢索與分層保留。
記憶網頁與維護工具¶
宿主 HTTP 服務下提供自包含頁面(路徑示例,端口隨 DSH 而定):
http://127.0.0.1:49870/dsh-shared-memory
接口包括 GET /api/state、POST /api/save、POST /api/reconcile;另有導出與歷史對比相關 API(見 README)。請求需同源校驗與請求頭 x-dsh-memory: 1,並有體積上限。
常用維護動作(由模型通過插件工具調用,具體參數以倉庫文檔爲準):
memory_file_maintain({ action: "rebalance" })
memory_file_maintain({ action: "export" })
memory_file_maintain({ action: "history" })
memory_file_ingest({ path: "C:\\path\\to\\AGENTS.md" })
memory_file_consolidate({ action: "scan" })
memory_file_consolidate 的 scan 只讀歸簇,不會自動合併;合併需模型寫新條目,舊條目靠低命中自然歸檔。
安裝與啓用¶
SkillHub 目錄頁提供「發送給 DeepSeek Harness 安裝」的文案,核心是讓 DSH 安裝插件標識 1148462398-hub/dsh-shared-memory。頁面地址:
https://www.skillhub.cn/plugins/1148462398-hub/dsh-shared-memory
在 DSH 對話中可按目錄頁給出的完整說明發起安裝(目錄頁會要求先讀取插件說明再安裝,具體句式以頁面爲準)。示例開頭:
請安裝 DSH 插件 1148462398-hub/dsh-shared-memory。
README 還提到:修改 host 側邏輯後需重新 apply(例如 plugin_manager set_plugin 關再開,或重啓 DSH)才生效;package.json 須爲無 BOM 的 UTF-8,否則安裝器可能報錯。
典型用法¶
- 裝好後正常對話:插件會把每輪首條用戶消息摘要寫入
requests,並在注入區展示各分區最新摘要;細節用memory_file_search。 - 長期規矩寫進記憶:通過對話讓模型寫入
requirements/corrections/lessons,或手工編輯MEMORY.md(若改文件,雙盤鏡像兩側需保持一致,否則對賬會覆蓋)。 - 接項目規則不進每輪 token:
memory_file_ingest把AGENTS.md等按##標題切塊寫入docs,僅檢索時使用。 - 重複性任務:先
memory_file_method查方法庫與當前質疑度,再按協議嘗試更優做法並回寫methodbook。 - 瀏覽器維護:打開
/dsh-shared-memory查看分區、revision 與雙備份是否一致,必要時對賬回補。
適用場景與注意¶
適合:長期用 DSH 做同一批項目、希望跨會話共享人設與教訓;重視 Markdown 可讀、手工編輯與雙盤容災;希望檢索不依賴外部向量服務。
注意:
- 默認鏡像路徑面向「主盤 + 另一塊盤」;Linux 或單盤環境需通過
relocate或配置改路徑,並理解同盤鏡像無意義時的告警。 - 寫操作帶進程內排隊與跨進程文件鎖;極端併發下可能降級爲僅進程內串行並記警告。
- 技能執行(可選
run.mjs)與表情包發送會擴大插件行爲面,啓用前請閱讀lib/與dsh/cordis.patch.yml。 - 插件版本與 DSH 主版本需自行匹配;社區目錄 Star 數會變動,以 GitHub 爲準。
結尾¶
dsh-shared-memory 把 DSH 的「記憶」做成一份共享、可編輯、可鏡像備份的 Markdown,並用命中分層、BM25 + 共現檢索、質疑度方法庫把「只會記」推進到「會擇優、會迴流歸檔」。目錄與源碼: