dsh-memory:DSH 本地記憶與壓縮流水線

前言

在 DeepSeek Harness(DSH)裏做長期任務時,模型默認只看見當前會話上下文。把偏好、踩坑記錄、工具說明拆成零散筆記,要麼每次手動粘貼,要麼讓模型自己 grep 全文——前者費手,後者容易漏讀索引、誤改正文。社區插件 dsh-memory(維護者 mounta1n-18,分類:記憶)把「跨對話記憶」落成本機 Markdown 加一張索引表,再配管理界面和仿軌跡的記憶日誌;日常只在系統提示詞裏佔一行分類大綱,壓縮時才按需調用模型。

這是什麼

dsh-memory 是 DSH 的零依賴、無構建插件(Host 半 index.js + Client 半 client.js)。數據在 ~/.dsh/memory/,不上傳、不埋點;除壓縮流水線外,不會把記憶正文批量發給模型。npm 包名爲 @local/dsh-memory,當前版本 1.1.1,許可證 MIT。

核心功能

一行大綱進系統提示詞

插件向系統提示詞注入 memory:outline(order 9890):按 【教訓】/【資料】/【說明書】/【項目記憶】/【其它】 分組,教訓永遠排第一。索引來自 MEMORY.md;停用條目不出現。關鍵詞口徑是「以後什麼場景該想起它」,不是摘要。存在啓用的教訓時,大綱末尾會追加一句:動手前先過一遍【教訓】,命中場景就先 memory_read 再開工。

另有 memory:tidy-status(order 9900):平時無輸出,有待審批改稿或上次整理失敗時才一行告警。

四個記憶工具

模型可用:

  • memory_read:按名稱 / 關鍵詞 / 描述命中,只返回正文
  • memory_write / memory_update / memory_delete:對鎖定條目一律拒絕

首關鍵詞必須是 資料、教訓、說明書、其它 之一;項目記憶只能經設置頁或 /remember 人工通道創建。宿主對記憶正文路徑做閘門:grep / glob 不能直接掃正文,須走 memory_read。

教訓三段式

寫教訓時強制結構:① 場景;② 錯誤鏈條;③ 繞開與修復。關鍵詞應寫「犯錯前正在做的任務」,不宜只寫 HTTP 狀態碼之類事後症狀。

設置頁「記憶管理」

Client 注入設置區:搜索(去抖 250 ms)、分類摺疊、新建/刪除、啓用與鎖定、待審批改稿的雙欄 diff、沙漏觸發壓縮、回憶率與「待刪除」候選(窗口內未回憶且複覈日超 14 天等規則,由插件現算,不寫進索引表)。

記憶日誌頁

會話頂部增加「記憶」頁籤(conversation.view,與對話、軌跡並列):按會話列出 memory_* 調用與 /remember 歸納,操作分色、右側詳情含完整正文;帶 callId 時可跳回軌跡裏對應工具調用。DSH 軌跡行類型是固定枚舉,第三方不能插新行類型,故做成獨立視圖。

回憶統計與壓縮流水線

  • 一輪 = 用戶按一次回車(user/message 且 source.kind === 'user');工具調用、子代理等不計數。
  • 壓縮觸發:全局用戶輪每滿 100 輪,或設置頁點沙漏。按窗口內回憶次數與複覈間隔決定輕調整 / 中刪減 / 僅標待刪除;鎖定與已有待審改稿不送模型。壓縮使用 deepseek-flash,顯式 thinking: { type: 'disabled' },response_format: json_object。

/remember 命令

客戶端註冊斜槓命令(大腦圖標):向 POST /dsh-memory/remember 提交 sessionId,優先借 DSH 的 llm 服務,在上下文末尾加隱藏指令並附帶 memory_write 工具聲明,把當前對話歸納成一條記憶;狀態顯示在輸入框右側控件行。

數據面(本機目錄)

路徑:~/.dsh/memory/

路徑 作用
MEMORY.md 7 列索引表(文件、關鍵詞、啓用、類型、何時讀、複覈、受保護),唯一索引
*.md 單條記憶,YAML 頭 + 正文
.tidy/status.json 上次整理/壓縮相關記錄(不含待審批份數的事實源)
.tidy/proposed/*.md 待審批改稿(僅正文)
.tidy/turns.json / recall.json 用戶輪計數與回憶流水
.tidy/compress.json 壓縮流水線狀態
.tidy/calls.json 記憶工具調用流水(供「記憶」頁籤,最多 400 條)

改 Host 後需重啓 DSH;改 Client 刷新頁面即可。

安裝與啓用

官方唯一支持路徑是 DSH 的 plugin_manager,安裝目標爲本倉庫在磁盤上的絕對路徑(不是 git clone 後憑名稱拼接的快捷命令):

plugin_manager { "action": "install_bundle", "target": "<本倉庫的絕對路徑>" }

卸載:

plugin_manager { "action": "remove_bundle", "target": "@local/dsh-memory" }

維護者提供的自檢(不碰真實記憶庫):在插件目錄執行 node tools/selfcheck.mjs,改 Host 邏輯後建議先跑再重啓。

典型用法

  1. 安裝並重啓 DSH,打開設置 →「記憶管理」,按分類新建或導入記憶;教訓類按三段式填寫,關鍵詞寫場景觸發詞。
  2. 新會話裏模型系統提示詞已含大綱;需要細節時讓模型調用 memory_read(名稱或關鍵詞),勿讓其直接 read/grep 記憶正文文件。
  3. 長任務結束後在對話裏執行 /remember,或等每 100 輪自動壓縮判定;有待審 diff 時在設置頁批准或拒絕。
  4. 在會話「記憶」頁籤查看本輪及歷史 memory_* 與歸納記錄,必要時「在軌跡中定位」覈對工具調用。

適用場景與注意

適合:需要在本機沉澱分類記憶、控制提示詞 token、用回憶率驅動整理,且願意配合 DSH 插件生態的開發者。

注意:

  • 插件以當前 DSH 進程權限運行,安裝前應閱讀 GitHub 源碼 與 MIT 許可證,確認可接受數據落盤位置與壓縮時向所配模型發送的正文。
  • 依賴宿主私有槽位(settings.section、conversation.view、commandUi.register 等),DSH 大版本升級後需複覈。
  • 設置頁導航圖標借用了外殼 section id archived-sessions 以匹配歸檔圖標樣式。
  • README 標明星標爲社區倉庫狀態;目錄頁與 GitHub 以維護者文檔爲準。

結尾

dsh-memory 把跨會話記憶收斂成「索引一行 + 工具讀寫 + 人工審閱 + 可選壓縮」,並在 UI 裏補齊管理與可追溯日誌。進一步瞭解可訪問社區目錄頁與倉庫:

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

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

小夜