前言¶
在 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-memory 是 DeepSeek 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.enabled 爲 true 時,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-memory 與 dsh-memory-ui,並在記憶根目錄缺失時初始化爲私有本地 Git 倉庫。重啓 DSH host 後,在設置中打開「長期記憶」開關,下一次模型調用即可參與召回。
典型用法¶
啓用記憶並在設置中查看狀態
安裝並重啓後,保持 memory.enabled: true。在 DSH Settings 的「長期記憶」查看倉庫與最近同步狀態;需要停用召回時關閉開關即可,不必刪倉庫。
在智能體邏輯中檢索記憶
插件暴露的 host API 支持 bounded 檢索(具體調用方式以倉庫 README 與 DSH Cordis 文檔爲準)。典型模式是:會話開始前通過 memory.context() 拉取與當前任務相關的條目,或在工具鏈中調用 memory.search() 並按返回的 source citation 引用。
清空已學記憶
僅在確認要刪除 summary.md、handbook/、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