前言¶
在 DSH 裏做長會話或跨天協作時,模型往往只能依賴當前上下文。把用戶偏好、項目約束寫進系統提示可以緩解,但條目一多就會擠佔 token,舊內容還容易被靜默截斷。把記憶綁死在某個倉庫裏,換工作區又要重來。
下面介紹社區插件 dsh-memory-plugin(維護者 AieXile,分類:記憶)。它以 profile bundle 形式隨 DSH 啓動加載,重啓後仍在;記憶與規則落在各工作區的 .dsh-memory/memory-store.json,與具體項目代碼解耦,任何工作區都能用同一套能力。
這是什麼¶
dsh-memory-plugin 是一個獨立的 DSH 記憶 / 規則持久插件。它由 AnimeTrack 項目裏的動態 Cordis 插件演化而來,v1.4.0 起獨立命名;存儲路徑同批遷移,舊數據自動兼容。
插件做三件事:每輪向系統提示注入記憶索引和啓用中的規則;向模型註冊 memory_* / rule_* 工具;在會話標題欄和設置頁提供可讀可寫的管理界面。
核心功能¶
索引式注入(v1.5.0 起)¶
v1.4 及更早會把最近 25 條記憶全文注入系統提示,條目多時占上下文,超出部分會被 slice(-25) 靜默切掉。v1.5.0 起改爲兩層結構(README 中對標 Claude Code auto memory):
- 索引常駐:每輪只注入一行一條的索引,例如
- [feedback] 回答用中文,不要用敬語 #風格 #語言 (m7); - 正文按需:模型用
memory_get(["m7"])讀全文,用memory_search("關鍵詞")按關鍵詞、標籤或類型找回索引裏未列出的條目; - 預算固定:索引 2400 字符 / 最多 40 條,規則 1200 字符 / 最多 25 條。裝不下時提示裏寫明「還有 N 條未展示,用 memory_search」,不靜默丟棄;
- 去重:
memory_add對忽略大小寫與空白後完全相同的正文直接拒絕,返回已有條目 id。
檢索爲本地打分(拉丁詞 + 中文 bigram + 標籤/類型命中),不引入 embedding 或向量庫。
記憶類型與標籤¶
類型包括 user(關於用戶)、feedback(糾正與偏好)、project(決策、約束、坑)、reference(去哪找東西)。每條可帶 tags 與 createdAt / updatedAt。舊數據載入時缺字段會自動補成 project 與空標籤。
模型工具¶
README 列出的工具:memory_view、memory_search、memory_get、memory_add、memory_remove、memory_rollback、rule_add、rule_remove、memory_debug。
輪末提煉、草稿與版本鏈(v1.6.0)¶
自動提煉默認關閉,在面板「記憶」頁勾選後生效:
- 監聽
session/event的輪次相關事件,在輪末異步蒸餾,不阻塞輪次收尾; - 只處理達到
minChars(默認 800)的輪次;同一工作區默認 5 分鐘冷卻; - 用當前會話的 provider / model 發輔助請求,要求返回 JSON 數組;本地過濾重複與無效
supersedes; - 結果先進入草稿隊列(面板「待審 N」),批准後才寫入 active 記憶;草稿不注入、不參與檢索;
- 新事實推翻舊事實時可帶
supersedes: "m3":新條 active,舊條 archived,面板與memory_rollback支持回滾一步。
默認參數:minChars: 800、cooldownMs: 300000、maxDraftsPerTurn: 3;面板目前主要暴露自動提煉開關,其餘可改 memory-store.json 的 settings。
界面入口¶
- 標題欄圖標:
conversation.session.header.utilities同排 28×28 圓形圖標,點開浮層錨在圖標下方; - 設置頁:
settings.section中的「記憶與規則」。
工作區與數據文件¶
記憶庫按會話工作區分文件:<workspace>/.dsh-memory/memory-store.json。目標根在載入時按順序解析並鎖定:顯式會話、當前 initiator 會話、pinnedRoot、配置根 sandboxPolicy.workspaceRoot。各根各自一份狀態,寫入只落在本次狀態所屬根。
v1.3.x 及更早寫在 .animetrack/memory-store.json,格式一致;新路徑不存在而舊路徑存在時會回退讀取,下一次落盤寫新路徑,舊文件不會被改寫或刪除。
安裝與啓用¶
這是標準 npm 包 + DSH bundle,通過 plugin_manager install_bundle 安裝(不要手工改 profile 的 package.json / cordis.patch.yml,也不要手工跑 pnpm)。操作要求會話爲 danger-full-access,或審批策略爲 ask 並由你批准。
從 GitHub 安裝(發佈形態,當前版本 tag 爲 v1.6.0):
plugin_manager install_bundle
target: github:AieXile/dsh-memory-plugin#v1.6.0
# 也可以寫完整地址:git+https://github.com/AieXile/dsh-memory-plugin.git#v1.6.0
從 npm 安裝(發佈後):
plugin_manager install_bundle
target: dsh-memory-plugin@1.6.0
從本地目錄安裝(開發用):
plugin_manager install_bundle
target: F:\Projects\dsh-memory-plugin
本地路徑會寫成 link:<絕對路徑>,改源碼後重啓 DSH 才載入 Host 半部新代碼;Client 半部刷新頁面即可。
從 @animetrack/memory-plugin 升級時需 remove_bundle 後重裝 dsh-memory-plugin,並重啓 DSH;若 cordis.patch.yml 仍留 id: animetrack-memory-rules,應刪掉(新版條目爲 dsh-memory-rules)。工具名與數據格式無需搬運。
典型用法¶
驗證是否加載¶
- Host:
cordis_inspect_query→ host / Config / listConfigs,entry 爲include:dsh-memory-rules; - 工具:新會話工具表應出現
memory_view、memory_search、memory_get等;memory_debug可查看已知根、條目數、注入統計等; - 注入:系統提示裏應出現
Memory index (N of M; …),正文不應整段出現;memory_get(["m1"])可取回全文; - 路由:
GET /dsh-memory/memory-store?sessionId=<會話id>返回 store 與preview預算統計; - 界面:標題欄圓形圖標與設置頁「記憶與規則」。
模型側讀寫記憶¶
需要全文時調用 memory_get,按關鍵詞或標籤找回索引外條目時用 memory_search,增刪用 memory_add / memory_remove,規則用 rule_add / rule_remove。
自動提煉(可選)¶
在面板「記憶」頁勾選「輪末自動提煉爲草稿」,完成一輪不少於 800 字符的對話後,在「待審」中批准再入庫。默認關閉,因會產生額外模型調用。
不改 DSH 的自測¶
node test/host-harness.mjs
用真實文件系統與假 ctx 驅動 lib/host.js,覆蓋工具、注入、路由、舊路徑遷移等邏輯。
適用場景與注意¶
適合誰:需要在多個工作區複用同一 profile、又希望記憶跟項目目錄走、且希望控制每輪提示詞體積的 DSH 用戶;需要規則常駐、記憶可檢索、可選輪末提煉與人工審批的場景。
結構與依賴:dual-face 包,Host 爲 ESM(lib/host.js),Client 爲經典腳本(lib/client.js);零依賴、零 peer,不參與 DSH 版本門禁。README 記載已在 DSH 0.1.7-rc.2 + pnpm 11.7(Windows)實測。
權限與安全:插件在當前 DSH 進程權限下讀寫工作區文件並註冊 HTTP 路由與工具。安裝前應閱讀倉庫源碼與 MIT 許可證,確認是否符合你的環境策略;自動提煉會向當前會話的模型發起輔助請求,注意成本與數據出境策略。
改代碼後務必重啓 DSH:Host 半部的 webServer / tools 註冊在進程內不會隨 disable→enable 或重裝 bundle 完全釋放,僅重啓才能保證單實例乾淨加載。
結尾¶
dsh-memory-plugin 把「記憶 + 規則」做成與工作區綁定的持久 bundle:索引注入控預算,工具與本地檢索補全文,面板與設置頁可管可審,v1.6.0 還可選輪末提煉與 supersedes 版本鏈。
- 社區目錄:https://www.skillhub.cn/plugins/AieXile/dsh-memory-plugin
- 源碼與 README:https://github.com/AieXile/dsh-memory-plugin
DSH 生態強調「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。星標與版本以倉庫爲準(當前 package 版本 1.6.0)。