前言¶
在 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 許可證。
典型用法¶
- 安裝並重啓或 reload 對應 profile 的 DSH 進程,確認記憶工具出現在智能體可用工具列表中。
- 用
memory_add寫入需要長期跟蹤的事實;對必須保留的條目使用pinned:true或後續memory_pin。 - 對話中讓模型通過
memory_search檢索上下文;若用戶口頭再次提到某條但未命中檢索,可用memory_touch手動點亮。 - 打開
/decay-memory設置頁觀察強度與漸淡狀態,按需調halfLifeDays、fadeBelow、dropBelow、maxEntries。 - 用
memory_stats快速查看當前池子裏最強、最弱條目,判斷是否需要 pin 或 forget。
適用場景與注意¶
適合希望控制提示詞佔用、又不願「全刪或全留」的 DSH 智能體開發者:項目偏好、用戶稱呼、階段性任務等可隨使用頻率自然升降權,核心事實可 pin。
務必注意:插件與 DSH 進程同權限運行,會讀寫 $DSH_HOME 下狀態文件;安裝前應自行審閱 GitHub 倉庫 源碼與 MIT 許可證。社區目錄 skillhub.cn 插件頁 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;DSH 本身遵循「一切皆插件」的擴展方式,本插件是社區記憶方案之一,並非官方內置能力。
結尾¶
dsh-decay-memory 用半衰期、漸淡與按弱淘汰,把「會淡忘的記憶」做成可配置、可觀測的本地狀態;配合工具 API 與 /decay-memory 設置頁,便於在 DSH 里長期跑 agent 時平衡上下文長度與信息保留。