前言¶
在 DeepSeek Harness(DSH)裏開新會話時,模型默認不記得你在別的會話裏說過什麼,也拿不到當時上傳的圖片或文檔路徑。社區裏已有 dsh-memory(事實記憶,SQLite FTS5)和 dsh-session-recall(基於官方 ctx.sessionQuery 的毫秒級會話檢索),但附件批量導出、以及「每個工作區一份 Markdown 每輪注入系統提示」這類能力需要單獨補位。下面介紹維護者 Ok541151 發佈的 dsh-session-media(GitHub 倉庫 Ok541151/dsh-session-media,SkillHub 目錄 dsh-session-media),分類爲「記憶」,當前版本 0.3.2,許可證 MIT。
這是什麼¶
一句話定位:DeepSeek Harness 的會話檔案層——在新會話裏讓模型知道本項目此前發生過什麼,包括歷史會話中的圖片與文檔(通過路徑與導出,而非解析圖片內容)。
與 README 中的對照關係:
| 插件 | 覆蓋 | dsh-session-media |
|---|---|---|
dsh-memory |
事實記憶 | 不做 |
dsh-session-recall |
高性能會話檢索 | 不替代;本插件檢索爲關鍵詞線性掃描,冷啓動約 12 秒 |
| 本插件 | 附件檢索 + 記憶自動注入 | 獨佔上述補位能力 |
若目標是高性能檢索,README 建議安裝 dsh-session-recall;若需要把會話裏的圖或文檔撈出來,用本插件。
核心功能¶
自動記憶¶
每個工作區維護一份 Markdown,每輪對話注入系統提示(段名 plugin:memory,默認 order 210)。改文件後下一輪生效,無需重啓 DSH(改插件源碼則另見安裝說明中的 HMR 限制)。
歷史檢索¶
跨所有會話搜索用戶與模型雙方說過的話:多關鍵詞用空格分隔表示 AND,可選時間範圍(工具參數 sinceDays)。僅關鍵詞匹配,無語義/向量能力。
附件取出¶
針對某個會話列出圖片/文檔,給出本地原始路徑;可通過 extractTo 把原始文件批量複製到指定目錄。不處理圖片內容本身,理解依賴模型自行讀取路徑上的文件。
提供的工具¶
| 工具 | 作用 |
|---|---|
session_search(keyword, limit?, sinceDays?) |
跨會話檢索 |
session_read(sessionId, maxChars?) |
讀取指定會話全文 |
session_media(sessionId?, kind?, sinceDays?, limit?, extractTo?) |
列出附件;extractTo 可複製原始文件到目錄 |
memory_doctor(top?, fix?) |
體檢索引版本、條數、體積、高頻會話、附件統計與告警;fix 可清理並重建 |
安裝與啓用¶
本插件未走市場,需與 dsh-agent-picker 相同的手工接入方式。插件在 DSH 進程權限下運行,接入前請自行審閱源碼與 MIT 許可證。
- 將插件目錄放到本機任意路徑,例如
C:\AgentTools\plugins\dsh-session-media。 - 在
profiles/web/package.json的dependencies中增加(路徑按本機實際修改):
"dsh-session-media": "file:C:/AgentTools/plugins/dsh-session-media"
- 在同一文件的
dsh.profile.bundles數組末尾追加:
"dsh-session-media"
- 在
profiles/web下執行:
pnpm install
- 重啓 DSH Desktop。
說明:file: 依賴是拷貝而非軟鏈;改完插件源碼需重新 pnpm install,或直接覆蓋 profiles/web/node_modules/dsh-session-media/index.js。HMR 不會替換已加載模塊,改插件代碼後必須重啓。
運行環境:package.json 要求 Node.js >= 22.15.0。
配置¶
全部可選,默認零配置可用。
| 鍵 | 默認 | 含義 |
|---|---|---|
memoryDir |
自動探測 | 記憶文件所在目錄 |
files |
[] |
顯式指定記憶文件;空則使用 candidateFiles |
candidateFiles |
['環境筆記.md','MEMORY.md','CLAUDE.md'] |
依次嘗試 |
order |
210 |
提示段順序 |
maxChars |
12000 |
注入上限;超出時保頭 60% + 保尾 40% 截斷 |
cacheMaxEntries |
5000 |
索引緩存條數上限 |
cacheMaxChars |
50000000 |
索引緩存字符上限 |
evictMinAgeDays |
90 |
淘汰起始年齡門檻 |
evictFloorDays |
14 |
門檻下限;降到此仍無解則不淘汰 |
saveIntervalMs |
60000 |
索引落盤節流間隔(毫秒) |
典型用法¶
在已啓用插件的 DSH 會話中,由模型調用上述工具即可,例如:
- 用
session_search傳入"部署 失敗"等空格分隔的關鍵詞,縮小到近期會話(sinceDays)。 - 用
session_read讀完某次排查會話後再繼續當前任務。 - 用
session_media指定sessionId,必要時設置extractTo將附件導出到工作目錄。 - 索引異常或體積過大時,先
memory_doctor查看統計,再視情況memory_doctor並fix重建。
倉庫內自測(供開發者驗證,非終端用戶必做步驟):
node cismoke.mjs # CI 冒煙,8 項,不依賴真實會話
node selftest.mjs # 本機完整 17 項,含淘汰策略與媒體路徑校驗
node selftest.mjs --no-evict # 跳過會臨時改寫索引的淘汰用例
selftest.mjs 需要本機已有會話存檔;cismoke.mjs 適合 CI。
適用場景與注意¶
適合誰:需要在多會話、多輪協作中保留工作區級 Markdown 記憶,並偶爾按關鍵詞翻舊對話、批量找回會話附件的 DSH 用戶。
請務必知曉的限制(摘自 README):
- 檢索僅爲關鍵詞,無向量語義檢索。
- 依賴會話存檔格式(
session.v3/v4.jsonl.zstd,多幀 zstd 拼接);未知版本會跳過並告警,不會自動適配。 - 不提供圖片內容理解,只提供路徑。
- 不做脫敏;索引存會話原文,請確認工作區無敏感信息再使用。
- 界面與提示以中文爲主。
DSH 生態理念是「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,本文所述安裝方式亦不代表官方應用商店一鍵安裝。
結尾¶
dsh-session-media 在 DSH 裏補的是會話檔案層:工作區記憶注入、跨會話關鍵詞檢索、附件路徑與批量導出。與 dsh-memory、dsh-session-recall 分工明確,可按需求組合安裝。