dsh-snail-memory:DSH 分層記憶與 Web 面板

前言

在 DeepSeek Harness(DSH)裏跑長對話或跨多個工作區時,模型默認不會記住你上一輪整理過的偏好、項目約定或臨時結論。常見做法是手動粘貼上下文、靠外部筆記,或在每個 Session 裏重複說明。DSH 生態裏插件可以擴展宿主能力;下面介紹維護者 snaiheihei 發佈的 dsh-snail-memory(npm 包名 dsh-snail-memory),它爲單用戶提供 global / workspace 兩級記憶,並通過 Web 面板查看條目、調整蒸餾與整合策略,且每個對話可手動選擇要加載的記憶層。

這是什麼

dsh-snail-memory 是 Cordis 插件:單用戶、全局與工作區分層的記憶存儲;啓用後把記憶索引常駐上下文、詳情按需加載;在 Web UI 裏瀏覽與控制條目。源碼與說明見 GitHub,社區目錄頁見 SkillHub。協議 MIT;兼容 dsh >=0.2.1-rc.3 <0.3.0-0,Node >=22.19.0(以 README 與 package 聲明爲準)。

核心功能

兩級記憶與顯式開關

  • global:跨工作區;workspace:綁定單個工作區。兩層相互獨立,各自有 revision。
  • 記憶不會自動進入上下文。每個 Session 在輸入框左側記憶按鈕裏手動啓用某一層;可用 refresh 生成新快照,disable 關閉。

注入與會話安全

  • 快照通過 agent.inject() 作爲一條 user 消息追加(source.kind = "snail-memory"),插件不改寫、不替換、不刪除既有會話消息。
  • 每次注入帶穩定 injectionId,區分 desired → queued → committed;只有會話裏真正落盤的 user/message 纔算 committed,重啓後按會話日誌對賬,避免重複注入。

生命週期與模型工具

  • 統計完成的用戶輪次,按空閒時間蒸餾記憶;分別調度 workspace 與 global 的 consolidation,並按分類做 retention 清理。
  • 工具:snail_memory_read(按 id 讀取,大對象先返回分片清單)、snail_memory_feedback(對已 committed 快照裏的記憶打 helpful / unhelpful / incorrect)。
  • 斜槓命令:/memory status、/memory remember workspace <text>、/memory correct workspace <id> <text>、/memory forget workspace <id>。

Web UI 與單寫者

  • 側欄 Memory 面板(全局 / 工作區 / 設置),可查看條目、引用、最近一次已提交快照與 token 估算(用於上下文預算,非 provider 精確 usage)。
  • 同一數據根下可多 Host 啓動,但僅一個持有寫鎖,其餘只讀;鎖有心跳與 stale 回收,寫操作帶 fencing 校驗。

安裝與啓用

任選一種安裝方式,然後重啓 Host 並刷新頁面。安裝前建議查看源碼與 MIT 許可證;插件以當前 dsh 進程權限運行,記憶數據落在本地 $DSH_HOME。

# 1) 從 npm 安裝
dsh plugin --profile web add dsh-snail-memory

# 2) 從 tarball 安裝
dsh plugin --profile web add .\dsh-snail-memory-0.1.0.tgz

# 3) 從解壓後的目錄安裝
dsh plugin --profile web add .\dsh-snail-memory

# 4) 從 Git 安裝(需要該 tag/commit 帶上構建產物)
dsh plugin --profile web add github:snaiheihei/dsh-snail-memory#v0.1.0

裝完確認組合層生效:

dsh --profile web --dump-config   # 應出現 "# == dsh-snail-memory"

卸載:

dsh plugin --profile web remove dsh-snail-memory

典型用法

  1. 打開 Session,點擊輸入框左側記憶按鈕,選擇 global 或 workspace 啓用。
  2. 啓用後當前記憶索引作爲快照注入;對話中可隨時 refresh 更新快照。
  3. 側欄 Memory 瀏覽條目、查看詳情、刪除、promote 到 global,並調整全局設置。
  4. 需要寫入時用 /memory remember workspace <text>,或由模型在對話中寫入;讀取與反饋由 snail_memory_read、snail_memory_feedback 完成。

配置

在 profile 的 cordis.patch.yml 中,按行 id snail-memory 覆蓋。patch 會整體替換該行的 config,需把要保留的鍵一併寫全:

- id: snail-memory
  config:
    provider: deepseek
    model: deepseek-chat
    reviewEveryUserTurns: 15
    idleDelayMinutes: 60
    consolidationCooldownHours: 20
    globalConsolidationCooldownDays: 7
    retentionSweepHours: 24
鍵 默認值 說明
dshHome 宿主解析值 數據根;默認跟隨 DSH_HOME
provider / model 未設置 輔助模型路由;留空時從當前 agent 列表選可用模型
reviewEveryUserTurns 15 每累計多少完成的用戶輪次觸發記憶蒸餾
idleDelayMinutes 60 會話空閒多久後觸發蒸餾
consolidationCooldownHours 20 workspace consolidation 冷卻
globalConsolidationCooldownDays 7 global consolidation 冷卻
retentionSweepHours 24 retention 清理間隔

默認數據目錄:$DSH_HOME/snail_memory/(config.dshHome 可改)。權威狀態在 state.v2.json;審計日誌 audit.v1.jsonl 只記 operation / revision / 時間,不記提示詞與記憶正文。

適用場景與注意

適合:希望在 DSH Web 里長期沉澱偏好與項目知識、又希望按 Session 控制「哪一層記憶進上下文」的單用戶開發者。

注意:

  • 記憶僅本地存儲,不採集遙測;蒸餾/合併走宿主 ctx.llm,憑據由你自己的 provider 配置決定。
  • RPC 掛在宿主 webServer 同源路由 /snail-memory/rpc/*。勿將 dsh Web 綁定到不受信任網絡(--host 默認本機)。
  • 社區目錄 SkillHub 與 DeepSeek / 幻方無官方從屬關係;安裝插件前請自行審閱倉庫代碼。

結尾

dsh-snail-memory 把 global / workspace 分層記憶、顯式注入、Web 管理與蒸餾整合收進一個 DSH 插件;需要細節時直接對照 README 與倉庫。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜