大肥魚 CyberRelic:跨設備同步 DSH 的魚記憶與配置

前言

在多臺電腦或手機上都跑 DeepSeek Harness(DSH)時,魚記憶默認按會話分庫,會話 id 各機不同,習慣、插件設置和任務也難以保持一致。手工拷貝 ~/.dsh 容易漏項、沖掉新數據,也無法在堅果雲、同步盤這類通道上安全合併。下面介紹的 dsh-CyberRelic(社區名「大肥魚 CyberRelic」)由 cyy0906 維護,分類爲「記憶」,用本地文件夾或 WebDAV 在設備間同步魚記憶、技能目錄、插件設置、任務與工作區列表,並可選 AES-256-GCM 加密;純 JavaScript 實現,無原生依賴,可在 Node 20+ 或安卓 PRoot 環境中運行。

這是什麼

dsh-CyberRelic 是 DSH 的非官方擴展插件,只通過宿主自帶的擴展點工作,不包含 DSH 本體。它解決的核心問題是:讓不同設備上的 DSH Go 共享同一套「魚記得的事」以及可選的配置與任務,而不同步體積大、易串上下文的會話歷史。

同步範圍與合併規則

插件按分類開關控制同步內容,默認值如下(工作區列表默認關閉)。

分類 位置 默認
記憶 ~/.dsh/fish-memory/*.json → 全局庫 ~/.dsh/sync-fish/memory/global.json 開
習慣(技能) ~/.dsh/skills/** 開
插件設置 ~/.dsh/*-config.json、~/.dsh/tts-bridge.json 開
插件配置 各插件在 cordis 裏的設置(按 entry + key 三方合併) 開
任務 ~/.dsh/storages/schedule.json 開
工作區 ~/.dsh/storages/workspace.json(只合並列表,不帶會話) 關

.credentials.yaml 等憑據文件永不同步;插件配置中的機器相關或機密鍵(如 pythonPath、adbPath、password、apiKey 等)也不會跨機搬運。

記憶合併按 id 逐條進行,更新時間新的勝出;刪除通過墓碑傳播,避免已刪記錄被「復活」。因 dsh-fish-memory 默認一會話一庫,插件會先將本機會話庫合併爲全局庫,再與其它設備快照按 id 合併,並注回各會話庫;注入時保留每個庫的 purgeEpoch。文件衝突採用三方合併:僅一邊修改則用修改側;兩邊都改則保留本地,遠端內容另存爲衝突副本。

觸發方式包括:啓動後約 8 秒、默認定時 30 分鐘(intervalMinutes 可改,0 表示僅手動)、新會話創建後去抖 120 秒,以及工具 sync_now。

通道與遠程佈局

支持兩種通道:

  1. 本地同步文件夾:同步盤、U 盤等本機可見路徑。
  2. WebDAV:堅果雲、Nextcloud、羣暉、AList 等。

遠程目錄名默認爲 dsh-sync-fish(配置項 remotePrefix),便於老設備續用已有快照。典型結構爲:

<通道根>/dsh-sync-fish/
  manifest.json
  devices/<deviceId>.json

僅傳輸文本文件;單個文件超過 2MB 或總量超過 20MB 會跳過並記入 warnings。可選端到端加密使用 AES-256-GCM 與 scrypt,口令不落盤;設加密後,未配置同一口令的設備無法讀取已加密快照。

安裝與啓用

從 GitHub 安裝(資料原文命令):

dsh plugin add github:cyy0906/dsh-CyberRelic

也可將發佈包 dsh-CyberRelic-0.2.4.zip 解壓後,通過 plugin_manager 的 install_bundle 指向該目錄。安裝完成後需重啓 DSH,客戶端設置頁需等宿主重新加載 bundle 後纔會出現。

運行環境:node >= 20,dsh >= 0.2.1-rc.2。當前包版本爲 0.3.4,許可證 MIT。插件以當前 DSH 進程權限讀寫本機數據,安裝前宜查閱源碼與許可證。

設置頁與配置

重啓後打開 設置 → 大肥魚CyberRelic,可在單頁完成通道、同步範圍、節奏、加密與手機一鍵部署等配置。頁面數據經本機接口 /api/sync-fish/*,僅接受同源請求;密碼與加密口令只寫不回讀。

主配置文件路徑:$DSH_HOME/sync-fish/config.json。示例結構如下:

{
  "version": 2,
  "enabled": true,
  "deviceName": "書房電腦",
  "channel": {
    "type": "webdav",
    "url": "https://dav.jianguoyun.com/dav/",
    "username": "you@example.com",
    "password": "應用密碼",
    "prefix": ""
  },
  "passphrase": "",
  "intervalMinutes": 30,
  "syncOnStart": true,
  "debounceSeconds": 120,
  "remotePrefix": "dsh-sync-fish",
  "scopes": { "memory": true, "skills": true, "plugins": true, "tasks": true, "workspaces": false },
  "memory": { "injectExisting": true, "maxRecords": 5000 },
  "extraTargets": [],
  "phone": { "adbPath": "", "deviceName": "手機" }
}

cordis.patch.yml 中的 config 可覆蓋文件配置,但不會寫回文件。

典型用法

第一次配置通道

每臺設備各配一次:WebDAV 使用同一地址與憑據;文件夾通道可填各機各自的同步盤路徑。也可通過 agent 工具寫入,例如:

sync_setup channel=webdav url="https://dav.jianguoyun.com/dav/" username="you@example.com" password="應用密碼" deviceName="書房電腦"
sync_setup channel=folder root="D:\\Sync\\dsh" deviceName="手機"

堅果雲需使用 https://dav.jianguoyun.com/dav/,密碼爲「設置 → 安全選項 → 第三方應用管理」中的應用密碼,而非登錄密碼。

常用工具

  • sync_now:立即同步(dryRun=true 僅演練)
  • sync_status:通道、上次同步、衝突數、記憶條數、分類開關
  • sync_conflicts:查看衝突(clear=true 清隊列,磁盤副本不刪)
  • sync_setup:寫入配置(支持 scopes、phoneName、adbPath、targets 等)
  • sync_phone:USB 連接時一鍵裝到 DSH Go

手機本機模式

DSH Go 遠程模式插件裝在電腦側即可;若要讓手機脫離電腦獨立運行,需在本機模式下通過 USB 一鍵安裝。前提爲電腦側通道爲 WebDAV(folder 對手機無意義),且 adb 可用。成功時雲端 manifest.json 中會出現對應設備(默認名「手機」)。安卓後臺易被回收,定時同步不可靠,實務上多在打開 DSH 後手動 sync_now 或縮短 intervalMinutes。

從 0.3.0 起,手機一鍵裝可順帶部署朗讀相關能力(Azure 或免費百度女聲兜底),每次朗讀需用戶點按,符合 dsh-go 插件協議限制。

適用場景與注意

適合在 PC、筆記本與手機等多端使用 DSH,且已通過同步盤或 WebDAV 擁有可寫中轉空間的用戶。不適合指望同步完整會話歷史或憑據的場景——插件明確不同步 ~/.dsh/sessions,也不合並 agent 預設或插件安裝清單。

DSH 生態奉行「一切皆插件」;社區目錄站點獨立於 DeepSeek / 幻方,本插件亦非官方出品。使用前請自行評估通道安全與加密口令管理。

鏈接

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

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

小夜