前言¶
在 DeepSeek Harness(DSH)裏跑智能體,上下文是硬約束。若把每天的筆記、待辦和零碎結論都堆進同一份「全量記憶」,會話越長,模型每次能用的有效窗口越窄;若只保留最近幾條,舊項目背景和踩過的坑又容易丟。
常見做法是單文件日記或扁平目錄,要麼全讀要麼全不讀,很難在「最近幾天必看」和「偶爾要翻的舊事」之間自動取捨。dsh-memory-tide(潮汐記憶)把記憶拆成熱檔與冷檔兩層,按日期與訪問頻率每天歸納一次:近的在熱檔索引裏常駐上下文,遠的沉到冷檔,被查得多的再浮回熱檔並釘住。下面介紹它的目錄結構、升降規則、安裝方式與七個工具。
這是什麼¶
dsh-memory-tide 是維護者 XHszDHM 發佈的 DSH 記憶類插件(GitHub:XHszDHM/dsh-memory-tide,社區目錄:skillhub 插件頁)。簡介原文爲:Tide memory for DeepSeek Harness — a lightweight long-term memory: a hot tier always in context, a cold tier that sinks, rebalanced automatically every day.
插件不依賴 @deepseek-ai/* 包,只通過宿主公開的 ctx.tools.register() 註冊工具;記憶數據落在工作空間下的 memory/,不跟插件安裝目錄走。
目錄與兩層索引¶
第一次在某個工作空間調用任意記憶工具時,會在 <工作空間>/memory/ 自動創建目錄骨架(已有文件不會被覆蓋):
memory/
├── MEMORY.md 長期要點(不沉檔)
├── TODO.md 待辦
├── archive/
│ ├── hot/
│ │ ├── INDEX.md 熱檔索引,短,每次必讀
│ │ └── YYYY-MM-DD.md
│ └── cold/
│ ├── INDEX.md 冷檔索引,翻舊事纔讀
│ └── YYYY-MM-DD.md
├── .tide.json 配置
└── .usage.json 各日記憶被查詢次數(按天計)
MEMORY.md 只寫長期規矩與要點;冷檔不在此列日期,僅提示冷檔在 archive/cold/。熱檔、冷檔各有獨立索引,熱檔索引必須保持短小,以便常駐上下文。
若工作空間裏仍是舊結構(memory/ 下直接放 YYYY-MM-DD.md),第一次執行 memory_tend 會把這些文件搬進 archive/hot/,無需手改。
升降規則(概要)¶
歸納邏輯由 memory_tend 與每日定時任務執行;搬檔是移動文件,不刪改正文。
| 情況 | 結果 |
|---|---|
距今 ≤ hotKeepDays(默認 7)天 |
留在熱檔 |
更早,但被查 ≥ promoteHits(默認 3)次 |
留在熱檔並釘住 |
| 更早且無人查 | 沉到冷檔 |
冷檔被查 ≥ coldPromoteHits(默認 5)次 |
升回熱檔並釘住 |
釘住後 pinMaxDays(默認 90)天未再被查 |
解釘,重新參與流轉 |
冷檔文件數 > coldMaxFiles(默認 120) |
按日期從早到晚刪除 |
熱檔文件數 > hotMaxFiles(默認 0 表示不限) |
最老的沉到冷檔(釘住的不動) |
「被查」按自然日累計:同一天內多次命中只記一次。
七個工具¶
| 工具 | 作用 |
|---|---|
memory_search |
檢索;默認僅熱檔,scope=all 含冷檔 |
memory_read |
讀取某一天的整份日記(默認今天) |
memory_add |
向某一天追加內容 |
memory_index |
重建熱/冷索引 |
memory_lint |
檢查標題時間、重複小節、空小節、死鏈、索引過期等 |
memory_tend |
冷熱檔歸納;dryRun=true 只出報告 |
memory_stats |
查看天數與各日訪問統計 |
各工具支持 root 參數,可把記憶根目錄指到工作空間以外的路徑;默認使用當前會話工作目錄。
安裝與啓用¶
安裝後需重啓 DSH。Node 要求 ≥ 20(見 package.json engines)。
# 從 npm(上架後)
dsh plugin --profile desktop add dsh-memory-tide
# 從 GitHub
dsh plugin --profile desktop add github:XHszDHM/dsh-memory-tide
# 本地開發
dsh plugin --profile desktop add link:D:/path/to/dsh-memory-tide
桌面版若無 dsh CLI,可手改 profiles/<檔名>/package.json 的 dependencies,並將插件目錄放入 profiles/<檔名>/node_modules/。
插件還會註冊 tide-memory 技能(src/skill.js),說明模型何時讀記憶、如何寫帶時間的小節等;並在工作空間 AGENTS.md 中同步一段由 HTML 註釋標記的提示(可通過設置或 .tide.json 的 agentsHint: false 關閉)。設置頁入口爲「設置 → 潮汐記憶」,需重啓 DSH 後纔會出現在瀏覽器 bundle 中。
配置與自動歸納¶
默認配置寫在 memory/.tide.json,首次使用會自動生成:
{
"hotKeepDays": 7,
"promoteHits": 3,
"coldPromoteHits": 5,
"pinMaxDays": 90,
"coldMaxFiles": 120,
"hotMaxFiles": 0,
"sectionWarn": 30,
"searchLimit": 8,
"searchContext": 3,
"autoTend": true,
"agentsHint": true
}
定時器約每半小時檢查一次:對每個已有 memory/ 的工作空間,每天自動歸納一次。狀態保存在 $DSH_HOME/integrations/dsh-memory-tide/tend-state.json,避免同一天重複執行或漏跑。關閉自動歸納可將該工作空間 .tide.json 裏 autoTend 設爲 false,改用手動調用 memory_tend。
典型用法¶
- 新會話開始時,按插件寫入
AGENTS.md的說明先讀MEMORY.md與memory/archive/hot/INDEX.md。 - 當日記錄用
memory_add追加;小節標題建議帶時間,例如## 【14:30 幹了什麼】(便於memory_lint與檢索)。 - 查近期內容用
memory_search;需要舊日用scope=all或memory_read指定日期。 - 想預覽歸納結果而不改文件:
memory_tend且dryRun: true。 - 憑據與密鑰不要寫入記憶文件(插件在 AGENTS.md 提示中明確禁止)。
適用場景與注意¶
適合需要按天記日記、又要控制上下文體積的 DSH 桌面工作流:熱檔索引常駐、冷檔按需檢索,長期要點集中在 MEMORY.md。
DSH 生態是「一切皆插件」;skillhub.cn 上的插件目錄爲社區站點,與 DeepSeek / 幻方無官方從屬關係。安裝前請自行查看 倉庫源碼 與 MIT 許可證;插件以當前 DSH 進程權限讀寫工作空間與 $DSH_HOME 下的集成狀態,只應安裝你信任的來源。
結尾¶
dsh-memory-tide 用熱檔、冷檔與每日歸納,把「最近常看」和「偶爾要翻的舊賬」分開管理,並通過短索引控制默認進上下文的信息量。詳情與更新以 GitHub README 爲準:XHszDHM/dsh-memory-tide;安裝與分類說明見 SkillHub 目錄頁。