前言¶
在 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 目錄頁。