dsh-decay-memory:會淡忘的 DSH 智能體記憶

前言

在 DeepSeek Harness(DSH)裏給智能體掛記憶插件,常見做法是「能存、能刪」:要麼條目越積越多,擠佔系統提示詞;要麼按時間一刀切過期,重要信息和隨口一句一起被清掉。下面介紹社區插件 dsh-decay-memory(維護者 ZyxQl-Ala),用強度與半衰期模擬「被提起就亮、久不提就淡、極弱才刪」,並支持永久 pin,在條數上限內按最弱淘汰而非單純按時間。

這是什麼

dsh-decay-memory 是 DSH 生態下的「記憶」類插件:每條記憶有動態強度,對話或工具命中時會「點亮」加強,長期不被提起則按遺忘曲線衰減;正文可在漸淡階段縮短並標記,低於刪除閾值才真正移除。📌 固定條目強度恆爲 1,不參與淡忘。數據默認落在本地 $DSH_HOME/decay-memory/memory.json,無網絡、無遙測。

靈感在 README 中說明來自「小肥魚大腦」示意圖:重要記憶在中心、邊緣慢慢淡掉,200 天內被提起可再次喚醒(默認半衰期即 200 天)。

與普通記憶做法的差異

普通插件往往只有存和刪。本插件在中間增加「漸淡」層,並用公式統一描述強度隨時間的變化:

強度 = w × 0.5 ^ (距上次提起的天數 / 半衰期)
  • 提起 = 點亮:memory_search、memory_add 寫入相同內容、或手動 memory_touch 時,強度 +0.4(封頂 1)。
  • 不提 = 淡忘:強度低於 fadeBelow 時正文按比例縮短並標記「(記憶漸淡)」;低於 dropBelow 才刪除。
  • 📌 pin:永久記憶不參與衰減。
  • 條數上限:超過 maxEntries 時淘汰最弱的一條,而不是最舊的一條。

核心功能

注入與工具

每輪對話會把排序靠前的記憶注入系統提示詞,受 promptMaxEntries、promptMaxChars 等配置約束。

工具 作用
memory_add 記一件事;相同內容會重新點亮,可選 pinned:true 永久保留
memory_search 檢索記憶(強度 + 文字匹配),命中會點亮
memory_touch 手動點亮某條(對話裏再次提到時用)
memory_forget 真正刪除某條(📌 需先取消 pin)
memory_pin 設爲或取消 📌 永久記憶
memory_stats 查看條數、📌 數、最強/最弱幾條

配置項

可在配置或設置頁中調整(字段以 README 爲準):

{
  "halfLifeDays": 200,      // 半衰期(天);調小 = 忘得更快
  "fadeBelow": 0.5,         // 低於這個強度開始「漸淡」
  "dropBelow": 0.06,        // 低於這個強度真正刪除
  "maxEntries": 24,         // 最多保留多少條(按最弱淘汰)
  "promptMaxEntries": 12,   // 每輪最多注入幾條
  "promptMaxChars": 2000,   // 注入正文上限
  "promptEnabled": true,
  "stateFile": ""           // 默認 $DSH_HOME/decay-memory/memory.json
}

存儲與寫入

默認狀態文件爲 $DSH_HOME/decay-memory/memory.json。寫入採用「臨時文件 + rename」的原子替換,避免寫壞文件。

設置頁

插件提供零構建 Web 設置頁,由 DSH host 直接提供(不依賴 client 打包)。訪問路徑形如:

<你的 DSH 地址>/decay-memory

例如 http://127.0.0.1:19387/decay-memory(端口以 DSH 實際啓動提示爲準)。頁面可改半衰期與閾值、條數與注入上限,查看每條記憶的強度進度條、上次提起時間與提起次數,並支持一鍵點亮、📌、刪除或手動新增;改動即時寫回上述 JSON 文件。

package.json 說明還會在 DSH Settings 中注入客戶端 UI(@deepseek-ai/dsh-client-ui-settings)。同源 API(需 DSH 登錄態)包括:

GET  /decay-memory/api/state
POST /decay-memory/api/config   { halfLifeDays, fadeBelow, ... }
POST /decay-memory/api/action   { op: "add" | "touch" | "pin" | "forget", ... }

安裝與啓用

官方安裝命令如下(<profile> 換成你使用的 DSH profile):

dsh plugin --profile <profile> add dsh-decay-memory

本地開發時可從目錄加載:

dsh plugin --profile desktop add file:D:/path/to/dsh-decay-memory

package.json 聲明依賴 dsh >=0.2.1-rc.1 <0.3.0-0、Node >=20。安裝前請對照當前 DSH 版本與插件倉庫源碼、MIT 許可證。

典型用法

  1. 安裝並重啓或 reload 對應 profile 的 DSH 進程,確認記憶工具出現在智能體可用工具列表中。
  2. 用 memory_add 寫入需要長期跟蹤的事實;對必須保留的條目使用 pinned:true 或後續 memory_pin。
  3. 對話中讓模型通過 memory_search 檢索上下文;若用戶口頭再次提到某條但未命中檢索,可用 memory_touch 手動點亮。
  4. 打開 /decay-memory 設置頁觀察強度與漸淡狀態,按需調 halfLifeDays、fadeBelow、dropBelow、maxEntries。
  5. 用 memory_stats 快速查看當前池子裏最強、最弱條目,判斷是否需要 pin 或 forget。

適用場景與注意

適合希望控制提示詞佔用、又不願「全刪或全留」的 DSH 智能體開發者:項目偏好、用戶稱呼、階段性任務等可隨使用頻率自然升降權,核心事實可 pin。

務必注意:插件與 DSH 進程同權限運行,會讀寫 $DSH_HOME 下狀態文件;安裝前應自行審閱 GitHub 倉庫 源碼與 MIT 許可證。社區目錄 skillhub.cn 插件頁 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;DSH 本身遵循「一切皆插件」的擴展方式,本插件是社區記憶方案之一,並非官方內置能力。

結尾

dsh-decay-memory 用半衰期、漸淡與按弱淘汰,把「會淡忘的記憶」做成可配置、可觀測的本地狀態;配合工具 API 與 /decay-memory 設置頁,便於在 DSH 里長期跑 agent 時平衡上下文長度與信息保留。

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

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

小夜