前言¶
DeepSeek Harness(DSH)桌面端裏,對話輪次一多,模型能直接看到的往往只有最近幾屏上下文。偏好、踩過的坑、上週隨口提到的細節,不會自動留在每輪 prompt 裏。常見做法是手動貼筆記,或把整段歷史堆進窗口——前者費手,後者佔用隨歷史膨脹。
下面介紹社區插件 dsh-memory-nebula(維護者 ZILCHW,分類:記憶)。它在每輪對話前按當前話題從本地記憶庫裏檢索,只把相關條目寫回上下文;記憶由插件側工具自行寫入與維護,不依賴外部模型、API 或聯網。側欄提供可交互的「記憶星雲」視圖。版本 v0.2.6,MIT 許可證,零運行時依賴。
這是什麼¶
dsh-memory-nebula 是面向 DSH 桌面端的長期記憶插件:自己決定記什麼、在每輪之前按話題召回,檢索爲純本地的詞法方案(2-gram、IDF、倒排索引、共現學習),結果可解釋——每條命中會說明匹配了哪些詞、落在哪個字段。全部數據落在單個 graph.json,無獨立服務。
與 embedding 方案相比,作者明確不引入模型、key 與按量計費;在「記憶以百計、查詢是日常問法」的規模上,同樣查詢與庫會得到 deterministic 的相同結果。
核心功能¶
每輪注入¶
聊到後面,模型仍可能「忘事」。插件在對話輪次前用你剛說的話去庫裏檢索,只注入少量相關記憶(README 舉例:一百多條記憶時,每輪約 5 條、約 500 字,上下文佔用與庫大小解耦)。翻不到相關時,只回「這一刻沒有相關的」,不佔多餘思考空間。
檢索流程(memory_search)¶
一次檢索大致走七步:
- 歸一化:全角轉半角、統一大小寫與空白。
- 粗分詞:中文 2-gram,去停用詞與含虛詞的 2-gram;英文與數字按完整詞切。
- IDF 加權:罕見詞權重更高;字段層級爲標題 ×6、標籤 ×4、正文 ×1.5。
- 倒排索引:先收窄候選,避免全表掃描。
- 共現學習:從已有記憶的標題/標籤統計共現,查詢時按 0.45 權重補充(如
b站與bilibili)。 - 沿連線聯想:字面命中後沿記憶邊擴一跳。
- 相對門檻:比第一名低 58% 以上的結果丟棄,不湊數。
綜合打分(README 原文):
score = 字面(歸一化) × 1.0
+ 聯想 × 0.5
+ 可及性 × 0.22
+ 新鮮度 × 0.1
記憶的衰減與釘住¶
每條記憶有 weight、act、strength、hits 等字段;長期未被想起會下沉(不刪,仍可在圖上看到)。45 天半衰期;常被想起的更牢;pinned 釘住的不衰減。
十個工具¶
| 工具 | 作用 |
|---|---|
memory_save |
記一條;自動去重、與相似記憶連線;closes 可收掉一條待辦 |
memory_search |
檢索;返回 belongsTo、links;before 可限定日期 |
memory_get |
按 id 取全文與鄰居 |
memory_link |
手動連兩條 |
memory_forget |
刪除一條及連線 |
memory_pin |
釘住 / 取消釘住 |
memory_stats |
總量、連線、分佈等 |
memory_merge |
合併重複記憶 |
memory_export |
導出 JSON |
memory_import |
導入 JSON |
自動連線僅在標題語義或標籤重合時建立,並按 IDF 加權,避免大衆詞濫連。
側欄星雲界面¶
五種視圖:小銀河、星雲(3D 力導向,層級可遞歸細分)、聚類、時間軸、列表。可點擊類別聚焦、點記憶飛到中心;搜索走完整檢索,列表與畫布上會展示命中理由(命中的詞與字段)。
安裝與啓用¶
需要 DSH 桌面端。官方 README 給出的安裝方式如下:
dsh plugin --profile desktop add link:/path/to/dsh-memory-net
也可將插件放入 ~/.dsh/plugins/ 後用插件管理器安裝。裝完重啓 DSH,協議、面板與工具會自動註冊。
裝好後記憶庫爲空;首次寫入值得記的內容時纔會創建:
~/.dsh/memory-net/graph.json
遷移數據用 memory_export / memory_import;更換存放目錄可設環境變量 DSH_MEMORY_NET_DIR。
典型用法¶
- 在對話中讓模型通過
memory_save記下偏好、決定、教訓等待長期保留的信息。 - 每輪開始前插件會按當前話題調用檢索邏輯;需要主動查庫時可用
memory_search,必要時memory_get看全文。 - 重複條目用
memory_merge;重要條目memory_pin;不再需要的用memory_forget。 - 在側欄切換視圖、用搜索框驗證命中詞與相關簇;導出備份用
memory_export。
數據文件結構(節選,見 README):
{
"version": 1,
"nodes": [{ "id": "m_xxx", "title": "...", "body": "...", "layer": "core", "kind": "rule",
"tags": ["坑"], "weight": 0.8, "pinned": true, "status": "",
"createdAt": 0, "updatedAt": 0, "hits": 0, "act": 0, "strength": 1 }],
"edges": [{ "from": "m_a", "to": "m_b", "kind": "related", "weight": 0.6 }]
}
寫入爲原子操作(tmp → rename)。刪除該文件即清空記憶。
適用場景與注意¶
適合:長期在 DSH 桌面端做同一項目或同一主題對話、希望偏好與教訓自動召回、且希望記憶與檢索完全本地、可解釋、無額外 API 成本的開發者。
注意:
- 插件以當前 DSH 進程權限讀寫
~/.dsh/memory-net/(或DSH_MEMORY_NET_DIR);安裝前請閱讀 GitHub 倉庫 源碼與 MIT 許可證,確認符合你的安全與合規要求。 - DSH 生態是「一切皆插件」;社區目錄 SkillHub 插件頁 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
- README 中安裝路徑示例爲
dsh-memory-net,與倉庫名dsh-memory-nebula並存,本地 clone 或 link 時請與實際目錄一致。
結尾¶
dsh-memory-nebula 把長期記憶收成可檢索的本地圖結構,每輪只送相關幾條回上下文,並用側欄星雲做瀏覽與可解釋搜索——零依賴、不調模型、不聯網。