dsh-session-media:DSH 會話檔案層——記憶注入、跨會話檢索與附件恢復

前言

在 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 許可證。

  1. 將插件目錄放到本機任意路徑,例如 C:\AgentTools\plugins\dsh-session-media。
  2. 在 profiles/web/package.json 的 dependencies 中增加(路徑按本機實際修改):
"dsh-session-media": "file:C:/AgentTools/plugins/dsh-session-media"
  1. 在同一文件的 dsh.profile.bundles 數組末尾追加:
"dsh-session-media"
  1. 在 profiles/web 下執行:
pnpm install
  1. 重啓 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):

  1. 檢索僅爲關鍵詞,無向量語義檢索。
  2. 依賴會話存檔格式(session.v3/v4.jsonl.zstd,多幀 zstd 拼接);未知版本會跳過並告警,不會自動適配。
  3. 不提供圖片內容理解,只提供路徑。
  4. 不做脫敏;索引存會話原文,請確認工作區無敏感信息再使用。
  5. 界面與提示以中文爲主。

DSH 生態理念是「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,本文所述安裝方式亦不代表官方應用商店一鍵安裝。

結尾

dsh-session-media 在 DSH 裏補的是會話檔案層:工作區記憶注入、跨會話關鍵詞檢索、附件路徑與批量導出。與 dsh-memory、dsh-session-recall 分工明確,可按需求組合安裝。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜