局域网同步
局域网同步让同一网络下的两台 Luker 实例保持同步——桌面和手机、两台电脑,任何局域网可达的设备都可以。只有变更的数据会通过网络传输,无需重新上传全量数据。
何时使用哪种方式
Luker 提供了两种在设备间搬运数据的方式:
- 迁移——一次性、全量的数据传输。适合在新设备上首次安装时使用。
- 局域网同步(本页)——重复、双向、增量。适合两台设备都经常使用的场景。
快速开始
配对两台设备
在第一台设备(称为 A)上,打开设置 → 局域网同步 → 配对新设备。给对端设备起一个标签,勾选要同步的类别,点击生成配对链接。

A 显示一个 URL,有效期为 10 分钟。

在第二台设备(B)上,打开同一面板,选择与已有设备配对。粘贴 URL,点击配对并同步。如果 A 启用了 basic-auth,在可选的凭据栏里填入 A 的账号密码。

B 下载 A 选择共享的数据并写入本地。当面板出现 Synced with <peer>. 横幅时,配对完成。

配对完成后,A 和 B 会记住彼此。之后的同步只需一次点击。
配对后同步
在任一设备上,打开局域网同步面板——已配对的设备会出现在我的设备下,每台都带有立即同步、撤销上次同步、忘记按钮。点击立即同步,两端交换变更并协调一致。完成时横幅显示 Sync complete.。

解决冲突
如果两台设备在两次同步之间都修改了同一个文件(例如:都重命名了同一张角色卡),局域网同步会停下并显示冲突面板。每个冲突有两张卡片:本地版本和远端版本。每个冲突挑选一张卡片——没有逐行合并。

冲突始终是按文件粒度处理的。在同一次同步中,给一个文件选"本地"、给另一个文件选"远端"是完全可以的。
特殊情况:设置文件
settings.json 文件保存着从"当前聊天"到"激活预设"再到 UI 布局的一切内容,且只是一个大文件。即便两台设备只做了很小的改动,也会被视为冲突,而唯一可用的解决方式是整个文件择一保留——不存在按字段合并。建议:尽量只在一台设备上修改配置,先同步,再去另一台改。
同步内容
默认会同步的内容:
- 角色卡、聊天记录、群聊、世界书
- CardApp 和技能(skills)
- 预设(OpenAI / NovelAI / KoboldAI / TextGen)、指令 / 上下文 / 系统提示词 / 推理 模板
- 主题、可拖动 UI 布局、快捷回复
- 背景、用户头像、上传文件、用户图片
- ComfyUI 工作流
- 素材(音效、背景音乐等)
- 图片元数据(与它描述的图片一同传输)
- 向量索引(节省 API 预算——两端复用同一份嵌入)
- 单角色统计数据
settings.json(默认开启,并附带警告——见上文"特殊情况")
默认关闭——如果需要请按设备分别开启:
- 密钥(API key)——默认关闭。除非传输通道加密,否则会以明文形式在局域网中传输密钥。仅在你信任所在网络时开启。
- 扩展——默认关闭。第三方插件可能存有设备相关的进行中变更;同步它们往往会让情况变糟。
从不同步(每台设备各自保留):
- 缩略图(首次查看时重新生成)
- 设备本地的聊天自动备份
- 存储迁移归档
- 运行时日志、当前同步状态本身、服务器的 cookie 密钥
恢复
如果一次同步覆盖了你想要保留的内容,打开局域网同步面板,点击撤销上次同步,会回退到那次同步发生前的状态。另一台设备不会受影响(撤销只作用在本地)。
如果在高风险同步前需要更强的兜底,使用 Luker 的完整 ZIP 备份(设置 → 备份与恢复)后再同步。
存储模式
LAN Sync 在所有存储后端下行为一致。聊天记录、预设、世界书等存放在数据库里的类别,在同步时会被还原为逐条记录,因此冲突始终落在文件粒度(一条聊天、一个预设、一本世界书),与数据存放在哪里无关。
- 文件存储(默认):数据本身就以文件形式存在磁盘上,直接进行协调。
- SQLite 存储:
luker-storage.sqlite中的行会按记录读出并写回。两台设备同时改动同一条聊天,只会针对那一条聊天出现一个冲突,而不是针对整个数据库。 - MySQL / Postgres 存储:与 SQLite 走同一套逐记录流程。只要两台设备处在同一网络,LAN Sync 就能完成同步;数据库服务器本身无需对对端可达。
性能
在成熟数据集上(几千个文件、约 100 MB),一次典型的同步在首次配对完成后通常在一秒内完成。只有自上次同步以来新增的对象会通过网络传输。首次配对拉取是最慢的操作;后续同步几乎是瞬间完成。