記憶管理(DSH 版) 是做什麼的?
跨會話長期記憶:L1 索引注入(每輪可見)+ L2 環境事實 + L3 任務經驗。
觸發時機
讀取(什麼時候查記憶)
- 新任務開始時:若任務涉及本機環境、工具配置、特定技術棧、以前做過的類似事 → 先
memory_list看有什麼,再memory_read取相關條目 - 遇到困難/踩坑時:
memory_read查是否有相關 SOP(關鍵詞匹配 sops/ 檔名或 facts section) - 模型提示詞中的記憶索引(memory:index):每輪可見的 L1 存在性索引——看到相關觸發詞就應主動
memory_read/memory_list取細節
寫入(什麼時候沉澱記憶)
任務完成(或階段完成)且存在行動驗證成功的資訊時,呼叫 memory_write:
可以寫的(必須帶 evidence 證據):
- 環境特異性事實:路徑、配置、實測參數、工具行為(→
entry_type: fact) - 複雜任務經驗:多次重試才成功的坑點、隱藏前置條件、穩定步驟(→
entry_type: sop) - 通用紅線規律(→ 也可透過 memory_write sop 或直接建議維護 [RULES])
禁止寫的(寫了就是污染):
- ❌ 沒有驗證證據的資訊(無行動,不記憶)
- ❌ 模型固有知識、推理猜測、未驗證假設
- ❌ 易變狀態:時間戳、PID、臨時路徑、一次性 ID
- ❌ 通用常識、日誌記錄、推理過程細節
索引同步
memory_write已自動同步 L1 索引,通常無需手動操作- 手動改動過 facts.md / sops/ 檔案後 →
memory_index重建索引 - 索引超 30 行時:精簡 [RULES](詞級修改,禁 overwrite 全文)
儲存佈局
<home>/.dsh/memory/
├── memory_management_sop.md L0 元規則(怎麼管記憶)
├── index.txt L1 索引(≤30 行:L2/L3 存在性列表 + RULES)
├── facts.md L2 環境事實(## SECTION)
├── sops/*.md L3 任務經驗
└── file_access_stats.json 讀取熱度統計
工具
| 工具 | 用途 |
|---|---|
memory_list | 列出全部記憶(facts + sops + 索引行數) |
memory_read | 讀取指定記憶(index / fact 主題 / sop 檔名) |
memory_write | 寫入記憶(fact/sop,evidence 必填) |
memory_index | 重建 L1 索引自動段 |
原則
- 行動驗證:No Execution, No Memory. 只寫成功驗證過的資訊。
- 最小充分:內容盡可能短;只記「遺忘會導致高成本重試」的資訊。
- 不刪改驗證事實:可以壓縮、遷移,嚴禁丟棄。
- 主動寫入:記憶寫入永遠由模型/使用者主動發起,不會自動修改配置或安裝插件。