前言¶
Coding agents often forget what they just did, or vector-based “auto-memory” products remember too much—drafts, wrong turns, and guesses. dsh-memory-ga takes a different path. It follows the discipline “No Execution, No Memory”: it only stores long-term facts after tools (or the user) have confirmed reality. It provides a small, trustworthy index of facts and rules, a session notepad, and a “settlement ritual” to turn lessons into Skills without silently poisoning memory.
核心功能¶
根據已覈實的事實,該插件具備以下能力:
- Verified only:只有在工具(或用戶)確認現實後,纔會進行長期寫入。
- Hard-injected L1:每輪對話都會硬注入一個 ≤~30 行的索引 + RULES,而非一個可能永遠不會被打開的指針。
- Working notepad:當會話記事本
key_info非空時,會重新注入到上下文中。 - Gated settlement:
start_long_term_update會開啓一個協議,但不會自動編輯你的文件。 - Skills stay Skills:可複用的流程 → DSH Skills。記憶不是第二個 SOP 倉庫。
- Local & auditable:所有數據均爲
$DSH_HOME/memory下的純 UTF-8 文本,可 diff、備份、手動編輯。
目錄結構¶
插件在 $DSH_HOME/memory 下維護以下結構:
$DSH_HOME/memory/
L0_memory_management.md # 憲章(如何記憶)
global_mem_insight.txt # L1:導航 + RULES → 硬注入
global_mem.txt # L2:已驗證的事實 → 按需讀取(≤9 行的章節 + 指針)
l3/<topic>.md # L3:長篇事實檔案(L2 章節指向此處)
.working/<session>.txt # 可選的會話記事本轉儲
插件不包含筆記式的雜物抽屜,也沒有記憶樹 L4。l3/ 僅存放事實檔案,流程屬於 Skills(Skill = 怎麼做,L3 = 是什麼)。
提供的工具¶
| 工具名 | 功能 |
|---|---|
update_working_checkpoint |
替換會話記事本 (key_info) |
start_long_term_update |
返回 L0 + 結算協議(不自動寫入) |
memory_status |
顯示路徑、L1/L2 大小、L3 檔案數、記事本是否爲空、nudge 計數器 |
插件提供可選的軟提醒(默認開啓):在經過足夠步驟後,溫和地提醒進行 checkpoint 或 settlement。絕不強制工具調用,絕不自動寫入 L1/L2。
安裝與啓用¶
在 DSH 的 profile 目錄下(例如 $DSH_HOME/profiles/web),使用 pnpm 安裝:
pnpm add dsh-memory-ga@github:DiligenceLai/dsh-memory-ga
確保 profile 加載了該包(通常在 dsh.profile.bundles 中列出,或依賴包內的 cordis.patch.yml 自動插入)。
配置¶
在 Cordis 配置中添加 memory-ga 插件 ID:
- id: memory-ga
config:
# root: null # 默認:$DSH_HOME/memory
bootstrap: true
injectL1: true
injectWorking: true
l1MaxChars: 1200
workingMaxChars: 1200
persistWorkingFile: true
nudge:
enabled: true
workingEvery: 12
settleAfterSteps: 15
maxWorkingNudges: 3
maxSettleNudges: 2
硬依賴:插件聲明瞭 inject: ["tools", "systemPrompt", "llm"]。運行內存記事本和 nudge 注入需要 @deepseek-ai/dsh-llm(需具備 createUserMessage 能力)存在於宿主組合中。如果缺失,插件仍會加載,但 memory_status 會警告記事本/nudge 未注入。
注意:workingMaxChars 是存儲和注入會話記事本的單一上限,因此 memory_status.workingChars 始終反映模型實際看到的內容。
典型用法¶
- 檢查狀態:重啓 DSH 或重新加載 profile 後,在會話中運行
memory_status,應能看到$DSH_HOME/memory路徑及相關計數。 - 更新記事本:運行
update_working_checkpoint並附帶簡短備註,下一輪模型步驟應包含### [WORKING MEMORY]。 - 長期更新:運行
start_long_term_update查看協議及完整的 L0 內容。此時磁盤文件不會改變,直到你手動編輯。- 首次啓動會根據模板創建缺失的 L0/L1/L2,且不會覆蓋現有文件。
適用場景與注意¶
- 適用場景:你需要可控的結晶化過程和 Git 友好的真相存儲,而不是自動的向量檢索或自動保留。
- 注意 1:這不是一個向量數據庫、TEMPR 或自動 git 保留產品。
- 注意 2:這不是 DSH Skills 的替代品。
- 注意 3:這不是自動生成 Skills 的工具。
- 隱私:倉庫僅包含通用模板。你真實的 L1/L2 文件位於你機器上的
$DSH_HOME/memory中,永遠不會包含在此包中。不要將個人記憶文件或絕對路徑提交到 fork 中。
總結¶
dsh-memory-ga 爲 DeepSeek Harness 提供了一種基於文件系統的、有門控的層疊記憶方案。它通過硬注入索引、會話記事板和有門控的結算協議,幫助 Agent 在保留必要事實的同時,避免記憶污染。