前言¶
DeepSeek Harness(DSH)社區裏常見的記憶插件,多半解決的是語義記憶:你是誰、偏好什麼、項目裏定了哪些約定。對話會被提煉成一條條事實,按人、項目或主題分層,在下次對話前注入。
但開發者和日常使用者還有另一類需求:不必背下某次聊天的每個論點,卻要能想起「上週三下午我們在改記憶插件,卡在摘要丟信息,最後決定用子代理」。這類記憶以天爲粒度、先粗後細、有時還要靠圖片喚起細節。現有方案如 meow-memory、dsh-memory-beta、Aurabot 等,分層軸都是語義或主題,一般不保留當天原始對話與圖片副本。dsh-day-memory(維護者 Tarolcraze,分類:記憶)補的是時間軸上的情節記憶,與事實類記憶可以並存。
這是什麼¶
一句話:dsh-day-memory 是給 DSH 的三級「日情節」長期記憶——一天一條索引,第二天由子代理蒸餾前一天內容,需要時再層層下鑽;不是「記住你是誰」,而是「上週三下午到底發生了什麼」。
數據在磁盤上大致分爲四層(README 中的佈局):
一級 l1/<日期>.json 日期 + 標題 + 關鍵事件 + 關鍵詞 ← 關鍵詞檢索
二級 l2/<日期>.md 當天完整概括 ← 命中後讀
三級 l3/<日期>.jsonl 當天原始對話 + 圖片副本 + 註釋 ← 需要細節時讀
常駐 pinned.json 「時刻記住」的極重要事實 ← 每輪注入
桌面 desk.md 人約 + 最近的事 + 記憶怎麼轉(≤4KB) ← 每輪注入
版本 0.2.0,MIT 許可證。社區目錄頁:https://www.skillhub.cn/plugins/Tarolcraze/dsh-day-memory;源碼:https://github.com/Tarolcraze/dsh-day-memory。
核心功能¶
從會話日誌回填,而不是另錄一份¶
插件監聽 session/event 做實時捕獲與兜底,但三級原文主要來自 DSH 自帶的 append-only 會話日誌:整理時用 sessionQuery.readSession() 回填當天會話,與 inbox 按 (sessionId, seq) 去重。晚裝幾天也可通過 backfillDays 補整理歷史日期。
次日離線整理與子代理蒸餾¶
每天第一次打開 DSH 時掃描水位線,對「今天以前、尚未整理」的每個日期啓動 one-shot 子代理(默認 subagentProvider: spawn),讀三級原文,產出嚴格 JSON(標題、200–500 字概括、3–8 條事件、關鍵詞、實體、常駐提議等)。長文分塊 map-reduce;失敗保留原文可重試,同一天重複整理冪等。
兩段式檢索¶
一級索引體量小(一年約 365 條),不依賴向量庫:先用中文二元切詞 + BM25 + 時間衰減做關鍵詞檢索;命中多條由模型看標題與事件判斷;一條未命中時返回最近 60 天標題,交給模型判斷——README 稱爲「腳本檢索轉爲 AI 檢索」。
常駐記憶需用戶確認¶
AI 只能通過 memory_propose 提議寫入 pinned.json,須在管理面板確認,避免聊天裏的隨口一句變成持久指令。
暴露的工具¶
| 工具 | 用途 |
|---|---|
memory_search |
關鍵詞/日期檢索一級;沒命中返回近期標題 |
memory_read |
按天讀一級/二級/三級,三級可返回圖片塊 |
memory_days |
列出有記錄的日期 |
memory_propose |
提議常駐記憶(需用戶確認) |
memory_annotate_image |
給某天圖片補註釋 |
memory_vote |
給某天投命中票,影響後續被想起的概率 |
memory_note |
把未發生在對話裏的事記進某天 |
memory_stats |
各層條數、桌面頁字節、上次整理時間等 |
問「上次那個…」時,典型路徑是 memory_search → memory_read 下鑽二級或三級。
安裝與啓用¶
桌面版使用 desktop profile,命令行 dsh plugin 按設計不能操作它。README 給出的方式是:
- 將整個
dsh-day-memory目錄放到本機,例如D:\dsh-plugins\dsh-day-memory; - 在 DSH 桌面客戶端任意會話中說:把
D:\dsh-plugins\dsh-day-memory作爲 bundle 安裝到當前 profile; - 安裝成功後重啓 DSH(宿主插件需新進程加載);
- 打開「設置 → 日記憶」。
Web 版(dsh web)示例:
dsh plugin --profile web add link:D:\dsh-plugins\dsh-day-memory
路徑按你的實際目錄替換。插件以當前 DSH 進程權限讀寫 dataDir,安裝前應自行查看源碼與 MIT 許可證。
配置¶
寫入 profile 的 cordis.patch.yml(或由 agent 改插件配置),README 示例:
- id: day-memory
name: 'dsh-day-memory'
config:
timeZone: Asia/Shanghai
dataDir: 'D:\dsh-data\day-memory'
backfillDays: 14
retentionDays: 90
deskBytes: 4096
deskItems: 8
includeToolResults: false
maxPinned: 30
recentDaysInPrompt: 3
maintenanceIntervalMinutes: 30
subagentProvider: spawn
常用字段含義:timeZone 切分「一天」;dataDir 記憶庫根目錄(默認 <DSH_HOME>/day-memory);retentionDays 控制三級保留天數,超出歸檔;deskBytes / deskItems 限制每輪注入的桌面頁;includeToolResults 是否在三級記錄工具返回(默認 false)。
完整數據目錄結構見 README 的「數據佈局」(state.json、inbox/、archive/、logs/ 等),寫入採用臨時文件 + rename。
適用場景與注意¶
適合:需要按日期回憶「那天做了什麼」、希望保留對話原文與圖片副本、願意次日讓子代理做摘要而不是即時向量檢索的場景。
README 列出的限制 worth 知曉:
- 整理需要至少一個活着的會話;剛啓動無會話時會延後,三級仍可從會話日誌重建。
- 插件未運行期間的超長會話,回填只掃「當天創建」的會話,可能漏採。
- 關鍵詞檢索對同義詞、代詞(如「上次那個」「他」)有限,需模型結合近期標題或換關鍵詞。
- 歸檔後讀不到三級原文,只保留一二級;面板在 Windows 真機上的渲染與 HTTP 鑑權尚待驗證(路線圖項)。
- 記憶內容在注入時會標註爲歷史數據,不等於可執行指令。
DSH 生態是「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-day-memory 用時間軸分層記「經歷」,與記「結論」的語義記憶插件互補:結論用來懂你,經歷用來回憶。進一步瞭解可打開 SkillHub 目錄頁 與 GitHub 倉庫。