dsh-git-session-vault:用私有 Git 倉庫備份與同步 DSH 會話

前言

DeepSeek Harness(DSH)把每條對話存成本地文件,路徑形如 DSH_HOME/sessions/<工作區>/<會話 id>/session.v4.jsonl.zstd。換電腦或磁盤故障時,這些記錄不會自動跟着你走;社區裏也沒有統一的「會話雲備份」方案。若你希望會話留在自己控制的存儲裏、又能在多臺機器上收斂到同一狀態,就需要把本地會話目錄和版本控制結合起來。dsh-git-session-vault(會話保險庫)就是面向這一需求的 DSH 插件:用你自己的私有 Git 倉庫做備份、恢復與多端同步,並在雙方同時改動同一會話時停下來等你決定,而不是靜默覆蓋。

這是什麼

dsh-git-session-vault 由維護者 XunWuJian 發佈,在 SkillHub 社區目錄中歸類爲「記憶」。插件把 DSH 會話原始文件原樣寫入 Git 倉庫,不做格式轉換;任何裝了 DSH 的機器在同步後都能直接讀取這些 .zstd 文件。

倉庫與文檔:

DSH 生態強調「一切皆插件」;SkillHub 是獨立的社區插件目錄,與 DeepSeek / 幻方無官方從屬關係。

它解決什麼問題

README 中的定位可以概括爲三點:

  • 換設備:新機器配置同一倉庫並同步一次,歷史會話回到本地。
  • 備份:每次同步產生帶信息的 Git 提交,可按提交回退。
  • 多端並存:兩臺設備都改過同一會話且內容不一致時,插件停止並提示衝突,不會悄悄用遠端覆蓋本地。

會話文件含完整對話、代碼片段與路徑。遠程倉庫必須是私有的;公開倉庫等於公開全部聊天記錄,插件無法阻止你推送到公開庫,需自行確認權限。

核心功能

三向合併

插件爲每條會話維護基線 base(上次雙方一致時的內容哈希),同步時比較 base、本地與遠端:

本地 遠端 動作
未變 未變 跳過
已改 未變 上傳
未變 已改 下載(覆蓋前先備份本地舊文件)
都改過且內容相同 跳過
都改過且內容不同 衝突:停止並等你決定
本地沒有 遠端有 下載
本地有 遠端沒有 上傳
首次同步同 id 不同內容 衝突

硬規則(README 原文要點):

  • 從不刪除本地文件;倉庫裏消失的會話仍留在本機。
  • 覆蓋前將舊文件複製到插件數據目錄 backups/<時間戳>/。
  • 不會靜默覆蓋本地改動;需顯式開啓「允許覆蓋」或在衝突面板選擇保留哪一邊。
  • 推送失敗時提交留在本地,錯誤如實報告,下次可重試。

倉庫佈局

manifest.json
metadata/schema.json
profiles/<工作區>/sessions/<會話 id>/*.zstd

manifest.json 爲備份索引;會話文件與 DSH 本地格式一致。

設置界面與自動同步

裝好後在 DSH 中打開 設置 → 會話保險庫,可配置倉庫地址、分支、設備名、認證方式,查看本地會話數、基線數、上次同步時間與最近錯誤;衝突面板可逐條選「保留本地」或「保留遠端」。支持同步、僅上傳、僅下載、查看歷史,以及子代理會話、上傳/下載開關、覆蓋保護、單會話大小上限等選項。自動同步可在啓動後執行一次,或在會話變化後防抖同步。

給 Agent 的工具

工具 作用
dsh_session_sync_status 讀取狀態與上次結果
dsh_session_sync_list 列出本地會話
dsh_session_sync_diff 只讀三向比較
dsh_session_sync_sync 雙向同步(需二次確認)
dsh_session_sync_backup 僅上傳
dsh_session_sync_restore 僅下載
dsh_session_sync_history 查看提交歷史

會寫數據的操作須先不帶 confirm 調用以獲取計劃,再帶 confirm: true 執行。

安裝與啓用

插件在 DSH 配置目錄安裝(README 給出的命令如下,二選一):

dsh plugin add dsh-git-session-vault

或指定 profile:

dsh plugin add dsh-git-session-vault --profile web

裝好後打開 設置 → 會話保險庫 完成倉庫與認證配置。

package.json 聲明運行環境:node >= 22.19.0,dsh >= 0.2.0-rc.1。插件以當前 DSH 進程權限運行;安裝前建議閱讀源碼與 MIT 許可證,確認倉庫地址與憑據策略符合你的安全要求。

從源碼安裝(需自行構建,README 步驟):

git clone https://github.com/XunWuJian/dsh-git-session-vault.git
cd dsh-git-session-vault
pnpm install
pnpm run build
dsh plugin add .

典型用法

下面步驟來自 README「快速開始」,可按順序復現。

  1. 在 GitHub、Gitee 或自建 Git 服務上新建空的私有倉庫。
  2. 打開 設置 → 會話保險庫,填入倉庫地址,例如 git@github.com:you/private-sessions.git。
  3. 點 測試連接 確認可訪問。
  4. 點 同步。首次同步會創建分支、寫入備份佈局並推送。

之後在新設備上:安裝同一插件 → 填同一倉庫 → 同步,歷史會話即可拉取到本地。

認證

方式 什麼時候用 怎麼配
系統憑據助手(推薦) 已配置 SSH 或 Git 憑據 無需額外填寫
環境變量令牌 HTTPS + PAT,不用憑據助手 填環境變量名,如 DSH_SYNC_TOKEN

令牌不會寫入配置文件,插件只保存變量名。含 https://user:token@host/repo 的地址會被剝掉憑據並拒絕保存。

適用場景與注意

適合:需要在多臺開發機之間遷移 DSH 對話、希望備份帶 Git 歷史、且能接受私有倉庫存儲敏感會話內容的用戶。

需要注意(README):

  • 倉庫體積會隨提交增長;會話很多時可考慮定期重建倉庫或淺克隆。
  • 首次同步會把本地會話全部上傳;請先確認遠程倉庫爲空,或你確實要合併進去。
  • 衝突是預期行爲,插件不會在兩端同時修改時替你猜一側結果。

結尾

dsh-git-session-vault 把 DSH 本地會話目錄與私有 Git 倉庫綁在一起:備份、換機恢復和多端同步都走同一套三向合併規則,衝突時由你拍板。若要在 Harness 裏啓用,可從社區目錄瞭解概況,並以 GitHub README 爲準完成安裝與配置。

羽毛球分组比赛记分
小程序二维码

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

小夜