dsh-hindsight-local:在本機跑 Hindsight,給 DSH 做長期記憶

前言

在 DSH 裏做多輪編碼或排查,上下文窗口會滿,換會話又容易丟「做到哪、結論是什麼」。有人靠導出整段會話再粘貼到新會話續寫,但導出裏工具輸出、鏈式思考佔很大篇幅,真正有用的往往是最後停在哪兒、下一步做什麼。官方也有面向 Hindsight 的 @vectorize-io/hindsight-coding-agents 插件,記憶走託管服務;若希望抽取、嵌入、檢索和知識頁都留在本機,只用自己已有的 LLM 密鑰,可以看社區插件 dsh-hindsight-local(維護者 dyrcjqlgcj,分類:記憶)。

下面介紹它是什麼、能做什麼,以及如何安裝與配置。

這是什麼

dsh-hindsight-local 在本機運行 Hindsight 記憶服務,並以 DeepSeek Harness 插件形式接入。心智模型與官方 coding-agents 插件相近:每個倉庫一個 bank、由 LLM 維護知識頁、按會話注入上下文;區別是自託管,除模型調用外不依賴託管記憶服務。

數據與推理密鑰留在本機;LLM 可使用 DeepSeek、OpenAI、Anthropic、Ollama 等已有配置。

核心功能

資料中明確的能力如下。

服務與 daemon

  • 查找 uv 已緩存的 hindsight-api 二進制,探測 /health;未運行時以 detached 方式啓動,默認最多輪詢 240 秒直至就緒。
  • 不隨插件打包 Python 環境,也不在會話內執行 uvx(首次安裝可能耗時數分鐘)。

會話注入與回寫

  • 注入:每個會話一次,寫入該倉庫知識頁索引及若干召回事實,總長度受 injectMaxChars 限制。
  • 回寫:某輪對話進入 idle 後,將最近的用戶/助手消息 retain 進 bank,並抽取爲結構化事實。

十個工具

模型可用以下 hindsight_local_* 工具:搜索與閱讀頁面、召回事實、remember、reflect、查看狀態/日誌、啓停服務等。完整名單:

hindsight_local_status、_start、_stop、_logs、_search、_read、_recall、_remember、_reflect、_pages。

Handoff 快照(替代整段導出粘貼)

DSH「交接文檔」標籤頁對應的是整會話導出(含鏈式思考、工具參數與原始輸出)。插件在會話結束(disposed)時寫入 handoff snapshot:項目路徑、會話 id、本會話每條用戶請求(各 400 字符)、最終助手結論(800 字符),總長默認不超過 snapshotMaxChars(1500)。

  • 同一會話的寫入共享 document_id = dsh-session:<session id>;快照標籤爲 dsh-session + dsh-session-handoff,逐輪片段爲 dsh-session + dsh-session-turn。
  • 下一會話注入塊會帶「上次停在哪」:最多 3 條召回,每條 220 字符,不是全文。
  • 可用 hindsight_local_recall("上次會話做到哪一步,下一步要做什麼") 查看。
  • 關閉:handoffSnapshot: false。

注入說明要求把快照當背景、使用前再覈對,避免舊結論覆蓋當前用戶意圖。

與官方插件的關係

默認 bank 名、profile 與官方插件對齊,兩者可讀到同一套記憶;若同時啓用會重複注入上下文,應只保留其一。官方插件在 Windows 上會跳過依賴 which claude 的 daemon 探測;本插件不依賴該探測。

安裝與啓用

添加插件

安裝命令來自項目 README(路徑改爲你本機 clone 或下載後的目錄):

dsh plugin --profile desktop add /path/to/dsh-hindsight-local

添加後需重啓 DSH,插件在進程啓動時讀取配置。

當前 package.json 標註版本 0.3.0,許可證 MIT;要求 dsh >= 0.1.0-rc.6、node >= 20。

一次性準備 Hindsight 服務

插件不負責創建 Python 環境。先在本機執行:

uvx --from hindsight-embed@latest hindsight-embed profile create coding-agent \
  --port 9077 \
  --env HINDSIGHT_API_LLM_PROVIDER=deepseek \
  --env HINDSIGHT_API_LLM_MODEL=deepseek-chat \
  --env HINDSIGHT_API_LLM_BASE_URL=https://api.deepseek.com

將密鑰寫入 ~/.hindsight/profiles/coding-agent.env:

HINDSIGHT_API_LLM_API_KEY=sk-...
HINDSIGHT_API_EMBEDDINGS_PROVIDER=local
HINDSIGHT_API_PORT=9077

插件配置

各字段有默認值,按需覆蓋。優先級:插件 config → 進程環境變量 → profile env 文件 → 內置默認。

- id: hindsight-local
  config:
    apiUrl: http://127.0.0.1:9077
    autoStart: true
    profile: coding-agent
    bankTemplate: 'coding-agent::{project}'
    injectPages: true
    recallLimit: 5
    retainOnIdle: true
    handoffSnapshot: true
    snapshotMaxChars: 1500
    dataDir: ''
    offlineModels: true

dataDir 非空時,插件在拉起服務前會導出 UV_CACHE_DIR、HF_HOME、SENTENCE_TRANSFORMERS_HOME,便於把緩存放到其他盤;已有 ~/.pg0 仍需用倉庫內 scripts/relocate.mjs 遷移(支持 --dry-run)。

典型用法

  1. 完成上述 profile 與插件配置,重啓 DSH,打開目標倉庫會話。
  2. 會話開始時自動注入知識頁索引與召回事實;空閒時自動 retain 並抽取事實。
  3. 需要主動查記憶時,讓模型調用 hindsight_local_search、hindsight_local_recall 等工具。
  4. 跨會話續作:依賴默認 handoff 注入,或顯式 recall 上次進度。
  5. 排查服務:hindsight_local_status、hindsight_local_logs;必要時 _start / _stop。

README 說明:不要用 hindsight-embed daemon start 作爲就緒依據——其 180 秒超時在冷啓動(約 450 MB 依賴與模型下載,實機約 3–5 分鐘)下易誤報失敗;本插件直接啓動 hindsight-api 並自行輪詢 /health。

適用場景與注意

適合:希望長期記憶與嵌入完全本地化、已自備 LLM API、在同一倉庫多會話協作且不想每次粘貼整段導出的 DSH 用戶。

注意:

  • 插件以當前 DSH 進程權限運行;安裝前請自行查看 GitHub 源碼 與 MIT 許可證,確認可接受的行爲與依賴。
  • Windows:插件會注入 PYTHONUTF8=1 等以規避 GBK 控制台問題;首次從 Hugging Face 拉模型若遇證書錯誤,需按 README 導出 Windows 根證書到 ~/.hindsight/winroot.pem。
  • DSH 生態是「一切皆插件」;社區目錄 SkillHub 插件頁 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-hindsight-local 把 Hindsight 記憶棧放在本機:daemon 管理、十項本地工具、會話注入與 idle 回寫,並用 handoff 快照銜接會話,減少整段導出粘貼的成本。詳情與腳本見 GitHub README;在 DSH 中通過本地路徑 dsh plugin add 啓用即可。

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

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

小夜