前言¶
DeepSeek Harness(DSH)把項目工作區、多會話聊天和附件都落在本機數據目錄裏。換電腦或重裝之後,這些「記憶」不會跟着走;若把整份數據目錄拷來拷去,又容易把憑據、插件配置和項目代碼一併帶上。社區裏也有面向 GitHub、Gitee 等託管平臺的同步插件,更適合自動同步和多分支場景。
下面介紹 dsh-ownsync(維護者 Shengyis,npm 包名 dsh-ownsync):把自己控制的 Git 裸倉庫 當作傳輸通道,只做 手動上傳 / 下載,把 DSH 的工作區登記、會話日誌和聊天裏引用的附件同步過去,在另一臺機器上接着聊。設計上沒有自動同步、沒有分支合併;文檔要求同一時間只在一臺電腦上改內容。
這是什麼¶
dsh-ownsync 是 DSH 生態中的「記憶」類插件:同步範圍收窄爲 DSH 自身需要的三類數據,不碰項目倉庫裏的代碼、settings.yaml、插件清單和憑據等。服務器上的 main 分支始終是當前內容的一份快照式提交,倉庫體積不會隨上傳次數無限膨脹。
同步什麼、不同步什麼¶
上傳時會掃描本機數據目錄,寫入本地同步倉庫 .ownsync/repo.git,再向遠端 main 推送只含當前內容的根提交。
| 類別 | 內容 |
|---|---|
| 工作區 | storages/workspace.json:工作區列表、標題、順序、會話歸屬、歸檔狀態 |
| 會話 | sessions/** 下各會話的最高代際日誌 |
| 聊天附件 | attachments/** 中被上述會話日誌引用到的文件 |
不參與同步的包括:項目文件夾裏的代碼與文檔、settings.yaml、cordis.patch.yml、插件清單、憑據、緩存、日誌、AGENTS.md、skills/。只有 header、沒有任何事件的空白會話也不同步。
權威來源是服務器:服務器上有什麼,本機下載後就變成什麼。
核心機制¶
服務器側¶
在自有機器上準備一個普通裸倉庫即可,例如:
git init --bare /srv/git/dsh-sync.git
README 說明不要設置 receive.denyNonFastForwards,因爲每次上傳可能對應強制推送。
上傳¶
- 掃描本機三類同步內容;
- 寫入
.ownsync/repo.git; - 生成只含當前內容的根提交併推到
main。
下載¶
- 取回
main; - 按文件寫回本機(覆蓋前把原件存到
.ownsync/backup/); - 記錄本機基線版本;
- 若寫回了會話,會自動重啓 DSH 以便重新讀盤;會話被佔用時會先切到空白會話再重啓。
插件調用系統 PATH 裏的 git(Windows 上爲 Git for Windows)。若提示找不到 git 命令,安裝後需完全退出並重新打開 DSH。
界面與狀態¶
側欄左下角(頭像上方)有同步卡片:顯示本機 / 服務器版本號、上次同步時間,以及 上傳、下載、檢查更新 按鈕;齒輪打開設置(倉庫地址、分支、兩個刷新間隔)。
本機狀態刷新默認每 5 秒、僅本地掃描;服務器自動檢查默認每 10 秒,執行 git fetch。這些間隔存在本機瀏覽器裏,不參與同步。
常見狀態包括:未配置地址、尚未檢查服務器、無法連接、服務器空倉庫建議上傳、本機尚未下載、本機有未上傳改動、服務器版本較新建議下載、已同步等。按鈕會根據狀態自動啓用或禁用,禁用時懸停可看原因。
「同步」按鈕目前爲佔位,點擊不執行操作。「重啓」需確認,並受運行中任務、插件安裝、剛重啓 5 秒內等條件限制;自動重啓能力以 Windows 桌面版爲主,Web 或其他環境可能只提示手動退出。
安裝與啓用¶
插件通過 npm(或團隊私有 registry)安裝,當前 package 版本爲 1.1.0,許可證 MIT,要求 Node >= 24。
在 DSH 內:
- 打開 DSH → 設置 → 插件;
- 輸入包名
dsh-ownsync,點安裝; - 完全退出 DSH 再打開。
等價命令行:
# Web 端
dsh plugin --profile web add dsh-ownsync
# Windows 桌面端
& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add dsh-ownsync
升級可指定版本,例如 dsh-ownsync@1.1.0,裝完同樣要完全退出再打開。若不用公共 npm,需在 profile 的 .npmrc 配置 registry,或在安裝命令後加 --registry <地址>。
插件以當前 DSH 進程權限運行;安裝前建議閱讀 GitHub 倉庫 源碼與許可證,自行判斷是否適合你的環境。
典型用法¶
1. 準備服務器與憑據¶
git init --bare /srv/git/dsh-sync.git
插件不彈登錄窗。需先在本機打通 git 訪問:
- SSH:
ssh-keygen,公鑰加到服務器,ssh -T user@host能通; - HTTPS:在終端執行一次
git ls-remote <倉庫地址>,按提示輸入賬號與令牌,由系統憑據管理器保存。
2. 配置倉庫地址¶
在 DSH 側欄點設置齒輪,填入地址(示例:ssh://git@backup.example.com:2222/srv/git/dsh-sync.git),保存。
3. 首臺電腦(已有內容)¶
點 檢查更新。空倉庫時狀態爲「服務器上還沒有內容, 建議上傳」,點 上傳 即可在服務器上產生 v1。
4. 新電腦¶
安裝插件、填同一地址,檢查更新 → 下載。覆蓋前會備份到 .ownsync/backup/;寫回會話後會自動重啓。之後換機流程固定爲:舊機 上傳 → 新機 檢查更新 → 下載。
安全邊界與限制¶
- 下載會覆蓋本機,原件在
<數據目錄>/.ownsync/backup/<時間>/files/...可手工恢復。 - 一次刪掉過多已同步文件時上傳會要求確認,並可能把服務器舊版本備份到本機。
- 本機有未上傳改動時下載需確認;上傳若在服務器已被另一端改過之後進行會被拒絕,提示先下載(
session/end-seed標記不算改動)。 - 服務器只是傳輸通道,不是完整備份方案;長期備份仍要依賴本機數據目錄與
.ownsync/backup。 - 會話正在生成時上傳會被拒絕;單文件上限 256 MiB,超限附件會跳過並出現在上傳結果裏。
- 下載寫回會話、佔用會話切空白等場景會觸發自動重啓(Windows 桌面版由外部助手拉起);其他平臺需按提示手動重啓。
本插件基於 dsh-chatsync 修改,去掉託管平臺 API、分支合併和自動同步,面向自建 Git;若需要 GitHub / Gitee 上的自動同步與多分支,文檔建議優先使用 chatsync。
結尾¶
dsh-ownsync 把 DSH 的工作區、會話和引用附件收斂到一條你可控的 Git 通道上,用明確的上傳 / 下載節奏換電腦接着聊,避免把無關配置和項目代碼一併同步。插件目錄見 SkillHub 條目,源碼與變更說明見 GitHub:Shengyis/dsh-ownsync。