dsh-anywhere-sync:用私有 Git 倉庫在多機之間同步 Harness 配置

前言

在 DeepSeek Harness(DSH)裏開發智能體時,profile 往往不只一套 JSON:已裝插件、各插件的 cordis.patch.yml、pnpm 鎖文件、本地 link:/file: 插件源碼,以及可選的 skills 目錄,都會隨機器和環境變化。手工拷貝目錄容易漏項,也無法區分「哪臺機器改動了哪一份文件」。社區插件 dsh-anywhere-sync(維護者 j1kwen,分類:聯網工具)把上述內容投影到一個私有 Git 倉庫,每臺機器在下次 sync 時按策略合併,使多臺 DSH 環境收斂到同一套可版本化的配置。

這是什麼

dsh-anywhere-sync 通過一臺私有 Git 遠程倉庫,同步 Harness profile 中的插件清單、插件配置、依賴鎖、本地插件源碼、skills 及其他 profile 文件。六項同步內容各自獨立開關;在一臺機器上的變更會在其他機器執行 sync 時落地。插件當前版本爲 1.4.1(MIT 許可證),依賴 Node.js 20+ 與系統上的 git,並需要帶 Web UI 的 Harness。

核心功能

下面介紹 README 中已寫明、且與實現一致的能力。

六項可選同步項

項目 本地來源 倉庫路徑 默認
插件清單 <profile>/package.json profile/<profile>/package.json 開
本地插件源碼 link: / file: / 絕對路徑依賴對應目錄 local-plugins/<package>/… 開
插件配置 <profile>/cordis.patch.yml profile/<profile>/cordis.patch.yml 開
插件數據 設置頁列出的 $DSH_HOME 下路徑 plugin-data/<path> 開
依賴鎖 pnpm-lock.yaml、pnpm-workspace.yaml 同路徑結構 開
其他 profile 文件 presets、config.toml 等 profile/<profile>/… 關
Skills ~/.agents/skills/、.skill-lock.json skills/… 關

關閉某一項時,該項不會被讀取、寫入或刪除。即便開啓「其他 profile 文件」,形如 .env*、*credential*、id_rsa*、.npmrc 等疑似憑據的文件仍會被排除。

三路比較與衝突

同步時對每個文件比較 本地、遠程 與 上次 sync 的 base hash:只有兩側相對 base 都改過纔算衝突。衝突策略默認爲遠程優先,也可選本地優先,或在設置頁保留衝突並按文件選邊。

覆蓋前備份與自動同步

每次覆蓋本地文件前會備份,最近 10 次保存在 $DSH_HOME/anywhere-sync/backups/。可配置定時間隔 sync、啓動時 sync,以及在拉取變更後的插件清單後自動安裝依賴。

本地插件與路徑無關的倉庫

推送前會把 package.json 與鎖文件中的 link:、file:、workspace: 及絕對路徑依賴投影成可移植形式,倉庫裏不寫各機器的安裝路徑。其他本地插件源碼存放在 local-plugins/<package>/;pull 後寫回本機 link 目錄或 $DSH_HOME/anywhere-sync/local-plugins/。本插件默認不參與同步,避免開發版覆蓋另一臺機器上的 GitHub 安裝版;其設置保存在 $DSH_HOME/anywhere-sync,不會進共享倉庫。

Agent 工具與設置頁

Agent 工具 anywhere_sync 提供與 UI 一致的 status、sync、pull、push、install 操作;工具不能讀取 token、不能改倉庫 URL 或同步項開關。人類操作入口在 Settings → Config Sync:狀態、分項文件列表、衝突處理與安裝/同步控制。

安全要點

Token 僅存本機 $DSH_HOME/anywhere-sync/credentials.json(權限 0600),經 scoped GIT_ASKPASS 交給 git,不會寫入倉庫或日誌。也可使用環境變量 ANYWHERE_SYNC_TOKEN、GH_TOKEN、GITHUB_TOKEN。除配置的 Git 遠程外無遙測或額外出站請求。

安裝與啓用

環境要求:帶 Web UI 的 DeepSeek Harness、Node.js 20+、git。

從插件目錄安裝(社區常用方式):

dsh plugin --profile desktop add j1kwen/dsh-anywhere-sync

從本地 checkout 或 release 包安裝:

dsh plugin --profile desktop add /path/to/dsh-anywhere-sync

安裝後重啓 Harness,打開 Settings → Config Sync。若頁面空白,按文檔先重啓;客戶端 bundle 需在重啓後加載。

典型用法

下面步驟來自官方 Quick start,可在兩臺機器上覆現。

  1. 新建一個用於同步配置的 私有 Git 倉庫。
  2. 創建 Personal Access Token:classic 需 repo 權限;fine-grained 需對該倉庫 Contents 讀寫。
  3. 在 Settings → Config Sync 填寫倉庫 URL、分支與 token,選擇 Save and connect。
  4. 選擇 Sync now。在另一臺機器安裝同一插件、填寫相同倉庫與 token 後執行 sync。
  5. 按需開啓 Scheduled sync 或 Sync on startup,保持多機一致。

若 pull 改變了插件 manifest,需要先完成依賴安裝並重啓 Harness,新插件纔會加載。新機器仍需各安裝一次本插件以進入設置頁並完成首次 sync。

插件數據默認可同步 dsh-whale-widget 的部分 JSON(外觀、氣泡佈局、自定義模型註冊等);賬本與按輪次統計等整文件同步會混臺機器的數據,默認不包含,可在 UI 中按需添加其他相對 $DSH_HOME 的路徑。

適用場景與注意

適合:在臺式機、筆記本或多套開發環境中使用同一 DSH profile;需要版本化插件組合與 cordis.patch.yml;使用 link:/file: 本地插件並希望在倉庫中攜帶源碼而非每臺機器單獨 clone。

注意:

  • 插件以當前 DSH 進程權限運行,安裝前應閱讀 GitHub 源碼 與 MIT 許可證,自行評估私有倉庫與 token 的保管方式。
  • 共享倉庫應設爲私有;token 僅本機保存,勿提交進 Git。
  • DSH 社區插件目錄爲獨立站點 SkillHub 上的插件頁,與 DeepSeek / 幻方無官方從屬關係;生態理念是「一切皆插件」,本插件是其中的聯網類配置同步工具。

結尾

dsh-anywhere-sync 把 Harness profile、插件清單與配置、鎖文件和本地插件源碼收斂到一個私有 Git 倉庫,用分項開關與三路合併降低多機拷貝的配置漂移。查閱說明與 issue 可訪問 GitHub 倉庫,在目錄站查看條目:https://www.skillhub.cn/plugins/j1kwen/dsh-anywhere-sync。

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

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

小夜