前言¶
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 文件。
倉庫與文檔:
- 目錄頁:https://www.skillhub.cn/plugins/XunWuJian/dsh-git-session-vault
- 源碼:https://github.com/XunWuJian/dsh-git-session-vault
- 許可證:MIT(見 README)
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「快速開始」,可按順序復現。
- 在 GitHub、Gitee 或自建 Git 服務上新建空的私有倉庫。
- 打開 設置 → 會話保險庫,填入倉庫地址,例如
git@github.com:you/private-sessions.git。 - 點 測試連接 確認可訪問。
- 點 同步。首次同步會創建分支、寫入備份佈局並推送。
之後在新設備上:安裝同一插件 → 填同一倉庫 → 同步,歷史會話即可拉取到本地。
認證¶
| 方式 | 什麼時候用 | 怎麼配 |
|---|---|---|
| 系統憑據助手(推薦) | 已配置 SSH 或 Git 憑據 | 無需額外填寫 |
| 環境變量令牌 | HTTPS + PAT,不用憑據助手 | 填環境變量名,如 DSH_SYNC_TOKEN |
令牌不會寫入配置文件,插件只保存變量名。含 https://user:token@host/repo 的地址會被剝掉憑據並拒絕保存。
適用場景與注意¶
適合:需要在多臺開發機之間遷移 DSH 對話、希望備份帶 Git 歷史、且能接受私有倉庫存儲敏感會話內容的用戶。
需要注意(README):
- 倉庫體積會隨提交增長;會話很多時可考慮定期重建倉庫或淺克隆。
- 首次同步會把本地會話全部上傳;請先確認遠程倉庫爲空,或你確實要合併進去。
- 衝突是預期行爲,插件不會在兩端同時修改時替你猜一側結果。
結尾¶
dsh-git-session-vault 把 DSH 本地會話目錄與私有 Git 倉庫綁在一起:備份、換機恢復和多端同步都走同一套三向合併規則,衝突時由你拍板。若要在 Harness 裏啓用,可從社區目錄瞭解概況,並以 GitHub README 爲準完成安裝與配置。