dsh-memory:爲 DSH 提供本地 Git 長期記憶

前言

在 DSH(DeepSeek Harness)裏跑智能體,會話上下文會隨對話結束而消失。把偏好、項目約定、歷史結論寫進 prompt 可以續上一點,但每次手動維護成本高,也難以審計變更。雲端向量庫或託管記憶服務能解決持久化,但數據離開本機,恢復和回滾也不直觀。

dsh-memory(GitHub 倉庫 seriousz158/dsh-memory,bundle 名 dsh-git-memory)走另一條路:把長期記憶存進本地 Git 倉庫,由 DSH 插件在啓用時注入摘要,並提供設置頁開關、清空確認和可選的空閒會話同步。維護者爲 seriousz158,當前版本 v0.8.2,MIT 許可證;截至 2026-08-26,GitHub 約 67 stars、2 forks。

這是什麼

dsh-memoryDeepSeek Harness 的本地、Git 版本控制的長期記憶插件。它不依賴託管記憶服務或雲向量庫,記憶數據與插件源碼倉庫分離,默認落在 ~/.dsh/storages/memory(可通過環境變量 DSH_MEMORY_ROOT 指定其他本地絕對路徑)。

插件分 host 與 settings UI 兩半,以 bundle 形式一次安裝;註冊 memory 設置命名空間後,memory.enabled 在下次模型調用前即可生效,無需重啓 DSH 進程。

核心功能

本地 Git 存儲

記憶以 Markdown 寫入獨立 Git 倉庫,結構大致如下:

summary.md      # 短導航與偏好快照
handbook/       # 可複用知識
rollouts/       # 按會話提取的結果
archive/        # 已 supersede 的條目
scripts/        #  transcript 過濾輔助
.last-sync      # 可選同步器水位

summary.md 面向模型的是有界、顯式不信任的快照(上限 12 KiB);細節放在 handbook/rollouts/archive/。記錄支持 front matter、命名空間 id、來源、過期投影和確定性衝突處理。

讀取與檢索

memory.enabledtrue 時,host 向模型注入記憶指引。運行時還可調用:

  • memory.search():本地、有界檢索,帶引用
  • memory.context():按使用情況的確定性排序返回上下文

讀取用量寫入 .sync/usage.json 私有元數據;README 說明不會把 transcript、prompt、憑據或記憶正文寫入 journal。

設置頁與安全清空

DSH 設置中出現「長期記憶」行,可查看倉庫狀態、切換開關、預覽與回滾,以及經兩步確認的 Delete memory。清空前會在 Git 中保留恢復點:乾淨倉庫複用現有 HEAD,目標路徑有未提交變更時先打 checkpoint commit,再記錄清空後的狀態。插件會拒絕不安全的倉庫佈局、符號鏈接逃逸、非倉庫根目錄及清空過程中的路徑競態。

持久化設置僅一項:

memory:
  enabled: true

UI 通過固定 memory 遠程服務調用,例如 memory.getSettings()memory.setEnabled()memory.status()memory.clear({ confirmation: "DELETE_MEMORY" }) 等;設置頁不暴露文件系統根路徑,也不直接執行 Git。

可選空閒會話同步

可選的 headless 同步器只處理空閒的本地會話日誌,在每次運行的私有工作區中編輯隔離副本,由 host 校驗後寫入線上 Git 倉庫。默認權限爲 workspace-write,不會靜默安裝 DSH,且只轉發白名單環境變量。host 側提供 dry-run / preview / apply、操作鎖、健康檢查、有界批次、重試退避等;恢復、回滾、備份導入導出與 legacy 遷移可通過 CLI / host API 完成(遷移不在設置 UI 暴露)。

安裝與啓用

項目通過 GitHub 源碼安裝與 GitHub Releases 分發,未發佈到 npm。推薦用 DSH plugin bundle 一條命令安裝 host 與 UI:

dsh plugin --profile web add github:seriousz158/dsh-memory

安裝後重啓所選 DSH profile。bundle 不包含任何記憶數據、會話日誌、憑據或本地 .dsh 目錄。

本地開發或集成時,可 clone 倉庫後使用倉庫內安裝腳本(需 Node.js ≥ 22,並與 DSH 0.1.0-rc.7 對齊測試):

git clone https://github.com/seriousz158/dsh-memory.git
cd dsh-memory
npm install --global @deepseek-ai/dsh@0.1.0-rc.7
npm ci --ignore-scripts
./integrations/dsh/install.sh

非默認路徑示例:

export DSH_HOME="$HOME/.config/dsh"
export DSH_MEMORY_ROOT="$HOME/Documents/dsh-memory-data"
./integrations/dsh/install.sh

安裝腳本會在 profile 下鏈接 dsh-memorydsh-memory-ui,並在記憶根目錄缺失時初始化爲私有本地 Git 倉庫。重啓 DSH host 後,在設置中打開「長期記憶」開關,下一次模型調用即可參與召回。

典型用法

啓用記憶並在設置中查看狀態

安裝並重啓後,保持 memory.enabled: true。在 DSH Settings 的「長期記憶」查看倉庫與最近同步狀態;需要停用召回時關閉開關即可,不必刪倉庫。

在智能體邏輯中檢索記憶

插件暴露的 host API 支持 bounded 檢索(具體調用方式以倉庫 README 與 DSH Cordis 文檔爲準)。典型模式是:會話開始前通過 memory.context() 拉取與當前任務相關的條目,或在工具鏈中調用 memory.search() 並按返回的 source citation 引用。

清空已學記憶

僅在確認要刪除 summary.mdhandbook/rollouts/archive/ 內容時使用設置頁清空,並完成二次確認字符串 DELETE_MEMORY。操作前 Git 會留下可回滾的 commit,便於誤操作後恢復。

可選:空閒會話同步

若希望從本地空閒會話日誌增量提煉記憶,在配置好同步器與 DSH_MEMORY_ROOT 的環境中按項目文檔運行 headless 同步;同步在隔離工作區進行,apply 前可用 preview / dry-run。

兼容性與環境

組件 支持版本
DSH runtime peer @deepseek-ai/dsh@^0.1.0-rc.6(含 rc.7)
推薦測試 runtime 0.1.0-rc.7
Node.js 22.x
Python 3.11.x
Git 本地可執行文件在 PATH
操作系統 macOS 爲官方支持/集成測試目標

DSH rc.8 及更高版本尚未經本倉庫測試套件驗證。DSH_MEMORY_ROOT 須在安裝、每次 host 啓動、顯式初始化及同步器運行時一致設置;一次性安裝賦值不會自動作用於後續 LaunchAgent 等任務。

適用場景與注意

適合誰

  • 希望在單機、可審計的 Git 歷史裏維護 DSH 長期記憶,而不使用雲端記憶服務的開發者。
  • 需要設置頁開關、清空確認、回滾與可選會話同步的 DSH 用戶。
  • 已在 macOS 上使用 DSH 0.1.0-rc.6 / rc.7 圖譜的團隊(其他平臺需自行驗證)。

使用前注意

  • 插件以當前 DSH 進程權限讀寫本地倉庫與環境;安裝前應閱讀源碼與 MIT 許可證,確認記憶路徑與清空行爲可接受。
  • 記憶倉庫與插件源碼倉庫是兩套 Git;備份、遷移請針對 DSH_MEMORY_ROOT 指向的目錄操作。
  • SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;插件列表與星標數會變動,以 GitHub 倉庫爲準。

結尾

dsh-memory 把 DSH 的長期記憶落在本地 Git 裏:一條 bundle 安裝命令、一個 memory.enabled 開關,加上有界的 summary.md 注入與可選空閒同步,在不用託管服務的前提下提供可審計、可回滾的記憶工作流。

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

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

小夜