前言¶
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(默認走國內鏡像)。
- 狀態卡片與控制面板:左下角卡片顯示記憶狀態;點開可查看各記憶庫數量,瀏覽與搜索記憶。
- 「現在就記住」按鈕:手動觸發當前工作區或全部對話寫入,避免重複。
- 不阻塞聊天:記憶服務異常、超時或被限流時,聊天仍正常進行,僅暫時不帶記憶。
工作原理¶
- 寫入:每輪對話結束後,插件將這一輪(帶本地時間)發送給本地 Hindsight。Hindsight 後臺用 LLM 把對話整理成事實,並用 embedding 建索引。
- 召回:提問時,插件先在記憶庫中檢索相關記憶(支持按時間等條件),再用 reranker 排序,取最相關的若干條作爲背景注入上下文。
- 省上下文:只注入少量相關記憶,不把整段歷史塞進上下文。
安裝與啓用¶
在 dsh 左側點擊「Plugins」→ 右上角「+ Add plugin」:
方式 A:從 GitHub 安裝(推薦)
把下面這行復制粘貼,點「Install」:
https://github.com/snakejohn/dsh-hindsight-local
方式 B:下載 zip,從本地文件夾安裝
- 到 Releases 下載 zip 並解壓。
- 把解壓後文件夾的完整路徑填入插件安裝對話框,點「Install」。
安裝完成後,在「Installed plugins」裏找到 dsh-hindsight-memory,確認開關爲打開狀態。
三步快速上手¶
- 選擇部署方式:首次設置時選擇「還沒有 Hindsight」,插件會在本機部署;如已有 Hindsight,選擇「已經配置好了」並填地址。
- 粘貼密鑰:在「② 粘貼密鑰」處填入硅基流動的 API 密鑰。面板會自動檢查,顯示「密鑰可以用 ✓」後會自動獲取模型,「理解文字」「排序」兩個模型使用默認即可,點擊「一鍵開始」。準備時間約 3–10 分鐘。
- 確認狀態:左下角卡片變爲 🟢「記憶正常」即可。之後正常聊天,插件會自動記、自動回憶。
- (可選)導入歷史對話:設置頁會詢問「要導入以前的對話嗎?」,點擊「去選擇」可導入工作區或單個對話,會逐段整理且不會重複。
默認模型¶
| 用途 | 默認模型 | 說明 |
|---|---|---|
| 整理記憶(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