dsh-semantic-recall:開新對話也能按語義找回舊會話原話

前言

在 DeepSeek Harness(DSH)裏開一場新對話,上下文不會自動帶上上一場聊過的內容。上下文壓縮插件解決的是「當前這場對話太長」的問題;換會話、換工作區之後,過去幾天裏具體說過什麼,往往只能靠人工翻目錄或憑記憶複述。

下面介紹社區插件 dsh-semantic-recall(維護者 zhaohualiuyuejun,分類:記憶)。它在本地只讀最近 N 天(默認 7 天,可調,硬上限 365 天)的會話歷史,建立語義索引,支持跨工作區檢索;你用模糊描述提問時,返回的是候選原話與會話錨點,相關度不夠時會給出候選菜單由 agent 反問,而不是硬編答案。需要說明的是:npm 上另有他人維護的 dsh-session-recall(字面式檢索),與本插件包名 dsh-semantic-recall 無關。

這是什麼

dsh-semantic-recall 是 DSH 插件:只讀 $DSH_HOME/sessions 下的 session.v4.jsonl.zstd,在 $DSH_HOME/session-recall/ 建索引,向 agent 暴露 4 個工具,並自帶 Web 設置頁(不依賴有問題的 settings.update() 寫入路徑)。當前版本 0.2.5,許可證 MIT;GitHub 倉庫見文末鏈接。

它不替代長期記憶插件(不參與人格注入、不自動「記住」用戶),只做索引窗口內的短期原話召回;與 topic 摘要類記憶插件搭配時,記憶給線索,本插件負責把「那天原話」找回來。

核心功能

會話語義檢索

檢索採用向量餘弦與 BM25 字面匹配,經 RRF 融合;返回以「那場對話」爲單位,而不是孤立一句。支持自然語言時間錨點(今天、昨天、上週、N 天前等)。默認 session_recall 只排除調用方當前這場會話,其他剛結束或剛歸檔的會話仍可搜。

嵌入能力可用時走語義檢索;不可用時降級爲字面匹配,只能給候選。判定上採用可調閾值:默認 minScore 0.70、midScore 0.55;最高相關度低於 0.55 時不裝懂,返回 fallback_menu(按天話題卡 + 最近會話)。

日摘要與話題卡

默認用 DSH 當前模型做每日 3~5 個話題摘要,也可在設置頁指定本機 Ollama(完全不出網)。Ollama 不可用時會跳過話題卡,不影響工具可用。

多源工作區隔離(設置頁)

可在「源工作區」中爲不同用途建隔離域:每個源獨立庫 scopes/<源>/index/,歸屬該源的工作區纔可建索引與檢索;未建源時保持老行爲,全部工作區共用一個 index/。橋接通道(QQ 等)需自行把 session_recall 加入工具白名單,且建議僅對管理員私聊放行(返回原文)。

與記憶插件的對接約定

返回 JSON 含 session、workspace、hits[].messageId、hits[].seq 等錨點。傳 session_recall({ session: "session-..." }) 可跳過語義檢索,直接拉該會話原文塊(受源隔離約束)。記憶插件可把 sourceSessionId 用於下鑽原文。

安裝與啓用

bundle 自帶 cordis patch,不需要 Node 依賴、不需要手改 profile。裝完後刷新頁面,左側「設置」裏出現「會話語義檢索」即成功。

方式 A(推薦給 DSH 內 AI):用 plugin_manager 執行 install_bundle,target 填 dsh-semantic-recall,裝完刷新頁面。

方式 B(創造模式):

action: install_bundle
target: dsh-semantic-recall

方式 C:將 clone 所得目錄的絕對路徑作爲 install_bundle 的 target(資料原文含 git clone 步驟;若你方環境禁止 clone,可用方式 A/B 或 Release tgz)。

網絡無法訪問 npm registry 時,target 可換爲 Release 地址(資料原文):

https://github.com/zhaohualiuyuejun/dsh-semantic-recall/releases/download/v0.2.5/dsh-semantic-recall-0.2.5.tgz

版本要求(package.json):Node >=22(依賴內置 zlib.zstdDecompressSync);DSH >=0.2.1-rc.5(插件在該版本實測通過)。

啓用後 ordinary 用戶只需打開 設置 → 會話語義檢索:配置索引天數、工作區勾選、雲端或本地嵌入、增量/全量重建等。剛聊完想立刻搜,可點「增量更新」(默認定時增量爲啓動後每 6 小時)。

典型用法

Agent 側主要工具如下(名稱與參數以 README 爲準):

工具 用途
session_recall 核心檢索:query / days / role / maxSessions / includeActive / session
session_recall_status 索引塊數、嵌入是否就緒、是否在構建等
session_recall_reindex 手動重建(force=true 全量重嵌)
session_recall_config 讀/改非密鑰設置(含 minScore / midScore)

語義檢索示例(由 agent 調用):

{
  "query": "前幾天說的 C 盤清理那個方案",
  "days": 7
}

已知會話 id 時直接下鑽:

session_recall({ session: "session-fe4c6d40-889b-411c-bbf6-9329dfbc8161" })

調整閾值示例:

session_recall_config({ "minScore": 0.65 })

資料建議:minScore 不建議低於 0.60(假命中區間與真命中在實測中有重疊)。

適用場景與注意

適合:經常在 DSH 裏開新對話、跨多個工作區協作,需要用自然語言找回幾天內聊過的原話;願意本地建索引,並可選擇雲端嵌入或純本地 Ollama / 字面降級。

務必知曉:

  • 只索引窗口內會話;排除的工作區不會進索引;被排除或超出窗口的內容搜不到。
  • 插件以當前 DSH 進程權限運行,安裝前應自行審閱源碼與 MIT 許可證。
  • 雲端嵌入時僅發送切好的文本塊到配置的 API;不出網可將 provider 設爲 local 或 none,或點設置頁「停用嵌入」(檢索能力下降)。
  • 索引與配置寫在 $DSH_HOME/session-recall/,絕不寫回 sessions 目錄。
  • 全量重建可能需數分鐘(資料實測約 10 塊/秒量級),屬正常現象。

DSH 生態強調「一切皆插件」;社區目錄 skillhub.cn 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-semantic-recall 解決的是「換對話、跨工作區之後還能不能把原話找回來」,與上下文壓縮、長期記憶插件互補:壓縮保當前場次的窗口,記憶給長期線索,本插件管索引窗口內的語義召回與原文錨點。

  • 目錄頁:https://www.skillhub.cn/plugins/zhaohualiuyuejun/dsh-semantic-recall
  • GitHub:https://github.com/zhaohualiuyuejun/dsh-semantic-recall
羽毛球分组比赛记分
小程序二维码

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

小夜