大肥鱼 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 / 幻方,本插件亦非官方出品。使用前请自行评估通道安全与加密口令管理。

链接

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

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

Xiaoye