dsh-plugin-memory-four-books:分層長期記憶與 BM25 召回

前言

在 DeepSeek Harness(DSH)裏跑智能體時,常見做法是把整段對話歷史或一個大文件塞進每次請求的 system prompt。上下文一漲,成本和噪聲一起上去;真正該「永遠在場」的規則(例如紅線、當天安排)又容易被淹沒。

下面介紹社區插件 dsh-plugin-memory-four-books(維護者 wodexiaoling,分類:記憶)。它把長期記憶拆成五個有序層級,按預算注入 prompt;細節留在磁盤,需要時用 BM25 檢索。數據是本地 Markdown 與 JSONL,零依賴、無網絡、無後臺服務。

這是什麼

一句話:爲 DSH 提供分層長期記憶——紅線 / 當天 / 進行中 / 常識 / 檔案,配合 BM25 召回與自動歸納,不依賴外部數據庫。

插件僅通過 GitHub 分發(當前 package 版本 0.1.0,MIT 許可證),要求 DSH >= 0.2.0(使用 agent/pre-step 與 systemPrompt.section)。社區目錄頁:https://www.skillhub.cn/plugins/wodexiaoling/dsh-plugin-memory-four-books;源碼與說明:https://github.com/wodexiaoling/dsh-plugin-memory-four-books。

核心機制

數據流

you type
   ↓
agent/pre-step ──→ filtered and appended to 支線/對話.jsonl
   ↓
model runs
   ↓
every 10 min ──→ consolidate ──→ writes tiers only when something changed

自動採集:每條用戶輸入經過濾(問候、重複、注入的運行時上下文會丟棄)後追加到只增日誌。

自動歸納:默認每 10 分鐘把日誌歸納爲一行一條、去重並寫入各層;舊條目下移層級,不刪除。

分層注入:每次模型步進前從各層重建 prompt 塊;塊按文件 mtime 緩存,記憶未變則不重複計算。

層級 注入策略 上限
當天 / today 始終注入,不截斷 400 條
紅線 / red lines 始終注入,不截斷、不衰減 40 條
進行中 / in progress 最新 30 條 80 條
常識 / common sense 最新 70 條 260 條
檔案 / archive 按需 800 條

BM25 召回:工具 memory_recall 對各層及原始日誌建索引(中文 2-gram,k1=1.5,b=0.75),並對結果施加 120 天半衰期衰減,下限 0.4,使舊條目仍可搜到但不易擠佔近期內容。

工具

工具 用途
memory_recall 按關鍵詞檢索記憶
memory_remember 按標籤寫入一條
memory_consolidate 立即執行歸納
memory_status 各層條數、上限、文件大小、自動化狀態

典型用法:日常依賴自動採集與定時歸納;需要精確事實時讓模型調用 memory_recall;顯式沉澱用 memory_remember;排查容量與自動化是否開啓用 memory_status。

安裝與啓用

安裝命令(須替換 <your-profile> 爲你的 DSH profile 名):

dsh plugin --profile <your-profile> add github:wodexiaoling/dsh-plugin-memory-four-books

dsh 會把倉庫克隆到 profile 下並作爲 bundle 鏈接。插件不在 npm 發佈。

更新時先移除再添加:

dsh plugin --profile <your-profile> remove dsh-plugin-memory-four-books
dsh plugin --profile <your-profile> add github:wodexiaoling/dsh-plugin-memory-four-books

可選配置寫在插件行的 config 裏,字段均可省略:

字段 默認值 含義
dataDir $DSH_HOME/memory-four-books 記憶文件目錄
inject true 是否向 prompt 注入層級塊
injectBudget 15000 注入塊字符預算
sectionOrder 45 prompt 段落順序
autoRecord true 是否自動採集用戶消息
autoConsolidate true 是否定時歸納
consolidateMinutes 10 定時間隔(分鐘)
dayMaxChars 8000 「當天」層字節上限
indexMaxDocs 20000 搜索索引保留的日誌行數上限

若只希望手動 memory_remember、不記錄輸入,可設 "autoRecord": false。

數據落盤位置

默認在 $DSH_HOME/memory-four-books/:

$DSH_HOME/memory-four-books/
  支線/對話.jsonl            append-only journal
  四冊/記憶核心.md            the five tiers (this is what gets injected)
  四冊/MEMORY_INDEX.md       one line per topic
  四冊/檔案庫.md             archive
  四冊/memory_changelog.md   append-only change log
  歸納臺賬.jsonl             consolidation ledger

均爲 UTF-8 明文,可手動打開、編輯、備份或刪除;插件會從日誌重建衍生文件。

適用場景與注意

適合:同一 DSH profile 下需要跨會話、跨子智能體共享長期偏好與項目事實;希望紅線與「當天」始終進 prompt,其餘按需檢索或按層裁剪的場景。

隱私:插件在本地記錄你輸入的內容,不做網絡請求、不啓服務;dataDir 內數據未加密。安裝前建議閱讀源碼與 MIT 許可證,並確認你接受以當前 dsh 進程權限 讀寫上述目錄。

限制(README 原文):

  • 記憶按 profile 共享,不按 workspace 隔離。
  • 未加密;不屬於 session log,fork session 不會 fork 記憶。
  • 日/中/英文本支持較好;其他文字系回退爲單字 n-gram,召回質量會下降。

DSH 生態是「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-plugin-memory-four-books 用五層結構控制 prompt 注入量,用 BM25 與半衰期兼顧「找得到舊事實」和「近期優先」,並用 JSONL 日誌 + 定時歸納把運維成本壓在本地文件上。需要細節時見 GitHub README 與 SkillHub 目錄頁。

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

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

小夜