前言¶
在多臺電腦或手機上都跑 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。
通道與遠程佈局¶
支持兩種通道:
- 本地同步文件夾:同步盤、U 盤等本機可見路徑。
- 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 / 幻方,本插件亦非官方出品。使用前請自行評估通道安全與加密口令管理。