dsh-hindsight-memory:讓 DeepSeek Harness 記住對話

前言

DeepSeek Harness(dsh)裏,AI 能記住上下文,但一換對話、一關窗口,就回到了「白紙一張」。這對做長期對話、知識庫、多輪任務的場景很不友好。dsh-hindsight-memory 在 dsh 裏引入本地 Hindsight 記憶庫,把每輪對話整理成可檢索的事實,讓 AI 在新的會話裏也能「想起」之前的聊天。

插件定位

  • 插件名:dsh-hindsight-memory
  • 維護者:snakejohn
  • 倉庫:snakejohn/dsh-hindsight-local
  • 定位:爲 dsh 提供長期記憶能力,通過本地 Hindsight 服務自動整理、索引對話,並按需召回。

核心功能

  • 長期記憶:對話寫入本地 Hindsight 記憶庫,關閉 dsh、重新打開對話後依然可用。
  • 時間感知:每條記憶帶有本地時間,支持「我早上 7 點幹了啥」這類時間類問題;對東八區凌晨到早上 8 點做了專門修正。
  • 自動寫入,舊對話手動導入:新會話自動寫入;首次安裝不會自動導入歷史,需在設置頁選擇工作區或單個對話導入(已歸檔對話除外)。
  • 內容選擇:默認只記「我說的話」和「AI 的回覆」,工具調用、思考過程、系統提示、歸檔對話等可在設置頁單獨控制。
  • 記憶庫隔離與共享:每個工作區可綁定一個記憶庫;也可讓多個工作區寫入同一記憶庫;記憶庫可起中文名。
  • 歸檔對話不記:在 dsh 中歸檔的對話不會被寫入。
  • 一鍵本地部署:無需命令行,沒有 Python 也能自動準備 uv 和 Python 3.12,並安裝 Hindsight(默認走國內鏡像)。
  • 狀態卡片與控制面板:左下角卡片顯示記憶狀態;點開可查看各記憶庫數量,瀏覽與搜索記憶。
  • 「現在就記住」按鈕:手動觸發當前工作區或全部對話寫入,避免重複。
  • 不阻塞聊天:記憶服務異常、超時或被限流時,聊天仍正常進行,僅暫時不帶記憶。

工作原理

  1. 寫入:每輪對話結束後,插件將這一輪(帶本地時間)發送給本地 Hindsight。Hindsight 後臺用 LLM 把對話整理成事實,並用 embedding 建索引。
  2. 召回:提問時,插件先在記憶庫中檢索相關記憶(支持按時間等條件),再用 reranker 排序,取最相關的若干條作爲背景注入上下文。
  3. 省上下文:只注入少量相關記憶,不把整段歷史塞進上下文。

安裝與啓用

在 dsh 左側點擊「Plugins」→ 右上角「+ Add plugin」:

方式 A:從 GitHub 安裝(推薦)

把下面這行復制粘貼,點「Install」:

https://github.com/snakejohn/dsh-hindsight-local

方式 B:下載 zip,從本地文件夾安裝

  1. 到 Releases 下載 zip 並解壓。
  2. 把解壓後文件夾的完整路徑填入插件安裝對話框,點「Install」。

安裝完成後,在「Installed plugins」裏找到 dsh-hindsight-memory,確認開關爲打開狀態。

三步快速上手

  1. 選擇部署方式:首次設置時選擇「還沒有 Hindsight」,插件會在本機部署;如已有 Hindsight,選擇「已經配置好了」並填地址。
  2. 粘貼密鑰:在「② 粘貼密鑰」處填入硅基流動的 API 密鑰。面板會自動檢查,顯示「密鑰可以用 ✓」後會自動獲取模型,「理解文字」「排序」兩個模型使用默認即可,點擊「一鍵開始」。準備時間約 3–10 分鐘。
  3. 確認狀態:左下角卡片變爲 🟢「記憶正常」即可。之後正常聊天,插件會自動記、自動回憶。
  4. (可選)導入歷史對話:設置頁會詢問「要導入以前的對話嗎?」,點擊「去選擇」可導入工作區或單個對話,會逐段整理且不會重複。

默認模型

用途 默認模型 說明
整理記憶(LLM) 跟隨 dsh 默認模型 可改爲自定義,如硅基流動的 XingChenAGI/Xing4.0-29B 或 DeepSeek(https://api.deepseek.com);選擇「不整理」時只保存原話
理解文字(Embedding) BAAI/bge-m3(硅基流動) 1024 維
排序(Reranker) BAAI/bge-reranker-v2-m3(硅基流動) 留空時退回到純排名融合(rrf),不調用模型

三者皆可在「高級設置」裏分別更換服務商與模型。一個硅基流動密鑰可同時用於三者。模型被限流時,內容會排隊重試,不會丟失。

常用設置

面板設置保存在 dsh 的插件配置中;本地 Hindsight 變量同步寫入插件根目錄的 .env。

設置(面板 / 配置名) 默認 作用
工作區 → 記憶庫 bank.workspace_bank_mapping 空(自動新建) 每個工作區綁定一個記憶庫,多工作區可指向同一庫
共享記憶庫 bank.default_bank 空 填上名字後,所有工作區寫入同一記憶庫
聊天時自動回憶 recall.enabled 開 關閉則不注入記憶
每次最多回憶幾條 recall.top_n 6 注入上下文的記憶條數上限
注入字數上限 recall.max_chars 4000 記憶塊的字符上限
自動記住對話 retain.enabled 開 關閉則不寫入
啓動時補錄舊對話 backfill.enabled 關 默認不自動導入,可在設置頁「現在就記住」手動導入
記住哪些內容 retain.include_* 我說的話 + AI 的回覆 其他內容(工具調用、思考過程、系統提示等)默認不記
時區 time.timezone 跟隨系統 用於時間解析
向量維度 embedding.expected_dim 1024 理解文字模型的輸出維度,換模型或遷移時需保持一致
端口 service.local.port 8888 本地 Hindsight 監聽端口
LLM 超時 service.local.llm_timeout 300 秒 超時時間
寫入分塊 service.local.retain_chunk_size 1500 字符 長消息切分大小
單次最大輸出 service.local.retain_max_completion_tokens 8000 必須大於分塊大小

更多配置項與環境變量(DSH_HINDSIGHT_*)見技術說明文檔。

性能實測(v0.1.1)

基於公開數據集 LoCoMo 的壓測結果:

指標 結果
寫入規模 992 輪對話 · 3 個記憶庫 · 48 次寫入,全部成功,0 次限流
花費 約 ¥2.37(按 DeepSeek 賬戶餘額前後差計算)
召回命中率 50 題中 94%,其中時間類問題 97.2%
上下文節省 與把整段歷史塞進上下文相比,約省 85%
召回延遲 P95 3.3–4.9 秒(記憶量 172–341 條)
長消息 約 1.2 萬 token 的長消息 7.6 秒寫完

常見問題

  • 服務啓動失敗:面板會說明原因,多數情況點「重試」即可;若仍失敗,可在狀態頁「檢查一下」「重新啓動」或「重新安裝」,並導出日誌求助。
  • 端口 8888 被佔用:可在高級設置裏修改端口,或關閉佔用該端口的程序(Windows 可用 netstat -ano | findstr :8888 查看)。
  • 卡片顯示「模型被限流」或「N 段沒整理好」:免費模型有頻率限制,v0.1.3 起默認一次整理 1 段,失敗會自動重試,也可在狀態頁「重試失敗項」。
  • 卡片顯示「模型地址連不上」:確認整理記憶用的本機模型地址(如 127.0.0.1:3425)已啓動,插件會暫停寫入並在恢復後補錄。
  • 反饋問題:在狀態頁「導出日誌」(密鑰自動隱藏),再點「去提問題」將日誌拖進 GitHub 問題表單。
  • 寫入卡在「處理中」:v0.1.1 已將長消息切分到 1500 字符、超時放寬到 300 秒,一般不再卡住。若仍卡住,可查看控制面板「沒記住的」區域與 hindsight.log。
  • 數據存在哪裏:記憶數據庫在 ~/.pg0/dsh-hindsight(Linux);Python 環境在 ~/.dsh-hindsight/venv;日誌在 ~/.dsh-hindsight/logs/;進度在 ~/.dsh-hindsight/state;配置(含密鑰)在插件根目錄的 .env。
  • 備份、遷移、獨立服務:詳見使用文檔「遷移和備份記憶」章節。
  • 已有 Hindsight 服務:設置裏選擇「已經配置好了」,填地址和密碼,插件只連接,不啓動/停止/修改該服務。
  • 卸載:在 dsh「Plugins」裏關閉或移除 dsh-hindsight-memory,重啓 dsh 即停止本地服務;想清數據則刪除 ~/.dsh-hindsight 文件夾和插件目錄;記憶數據庫在 ~/.pg0,若無其他程序使用可一併刪除。

適用場景與注意

  • 適合需要長期對話記憶、多輪任務、知識沉澱的場景。
  • 插件以當前 dsh 進程權限運行,安裝前建議檢查源碼與許可證(MIT)。
  • Linux 已完整實測,Windows/macOS 路徑已寫好但未真機驗證。
  • 記憶服務異常時聊天不受影響,僅暫時不帶記憶。

小結

dsh-hindsight-memory 通過本地 Hindsight 實現對話的整理、索引與按需召回,在不阻塞聊天的前提下,讓 AI 在新會話中也能「想起」之前的聊天。適合需要長期記憶、多輪對話和上下文壓縮的場景。更多細節見插件目錄頁與 GitHub 倉庫。

參考鏈接

  • 插件目錄頁:https://www.skillhub.cn/plugins/snakejohn/dsh-hindsight-local
  • GitHub:https://github.com/snakejohn/dsh-hindsight-local
羽毛球分组比赛记分
小程序二维码

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

小夜