前言¶
在 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,可在兩臺機器上覆現。
- 新建一個用於同步配置的 私有 Git 倉庫。
- 創建 Personal Access Token:classic 需
repo權限;fine-grained 需對該倉庫 Contents 讀寫。 - 在 Settings → Config Sync 填寫倉庫 URL、分支與 token,選擇 Save and connect。
- 選擇 Sync now。在另一臺機器安裝同一插件、填寫相同倉庫與 token 後執行 sync。
- 按需開啓 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。