多端同步 · 五道保险

家里的桌面在改第 41 章,路上的手机也在改第 41 章——断网、并发、晚到,两台设备只能有一个真相。跟着这份手稿走 24 小时,看五台状态机怎么裁决。

水尺增量游标
周六 18:02上次回执
名册远端 id 集
63 章上轮快照
便签脏集
1 张
墓碑删除标记
1 座
信筒同步队列
2 封
21:47书房 · 桌面离线
稿

第 41 章改了三百字——本地缓存先落袋,字先保住,再谈上云。

签

便签贴上第 41 章:「改过,未上云」——编辑即标脏,与时间戳无关。

碑

顺手删掉废稿第 7 章——先立碑再移除:「删过,未确认」,删除意图先落账。

信

上云重试三次无果——改稿、删稿两封信投进信筒,不再干等。

先记账,再寄信。断网时段写作不等人——网络的事,交给后台的装置。

五步 · 双设备 · 一份手稿时间与数字为演示口径;机制与客户端同步引擎一致

统一方法论 · 多端五问

本地只管写,回执说了算

五台装置合起来,是任何「多端同写一份文档」的系统都要回答的五个问题—— 每个问题对应一台装置、一条不变式、一起真实事故。五问答完,断网与并发就不再是事故,而是流程。

问1

我听到云端说到哪儿了?

水尺增量游标 · lastCloudSyncAt

游标只做加速,不做裁决——判脏可以快,下结论必须凭回执。

挡下的事故:跨端时钟偏快,把水尺推进未来:时间戳判脏漏传一章。这正是便签存在的理由。

问2

云端此刻真正有什么?

名册远端 id 集 · alive_ids

对账只信权威名册——缺席是线索,不是判决。

挡下的事故:客户端拿上一轮 id 集做算术推断删除,一次服务端波动让整批章节消失。此后名册由服务端签发。

问3

我哪些字还没送达?

便签脏集 · 未确认编辑集

未确认 > 已确认——没收到回执的稿子说了算。

挡下的事故:只凭水尺判脏的系统里,时钟偏快的一端永远「看起来已同步」,改动的字悄悄滞留本机。

问4

我删了什么、别处还不知道?

墓碑删除标记 · deleted_at

意图先于落账——先立碑再动数据,见碑不采纳、不回填。

挡下的事故:断网删除后一次全量拉取,把已删章节当「新章」复活:删除被静默回滚。

问5

晚到的信怎么送达?

信筒同步队列 · sync_queue

先试直送、失败入队、回放必回读——送达以读回为准。

挡下的事故:队列里的失败章被水尺越过,标题栏谎报「已全部同步」。指示器自此把队列并入统计。

搬去任何项目都可用的六条实践
  • 双态持久——内存求快、持久求存,双写同进退
  • 只前移不倒移——游标取 max;丢了就退回全量,不硬猜
  • 意图先于落账——先立碑、先贴条,再动数据
  • 缺席不作数——名册短了谁,先查证再动手
  • 回执才出清——ack 没到,便签不揭、墓碑不平
  • 送达以读回为准——写入成功 ≠ 内容落地

客户端能力 · 离线同步引擎

桌面、Web、移动,三端共用这五道保险

客户端为每个项目维护水尺、名册、便签、墓碑与信筒:断网照常写作,回网自动对账与回放, 服务端护栏与回读校验兜底。上面这场 24 小时,在你每次合上电脑、掏出手机的间隙里真实发生。

演示情节为官方虚构示例项目《雾城列车》,展示同步机制本身,不含任何用户作品内容。同系列教案: 救猫咪十五节拍图谱 、 体裁改编前后对照 、 伏笔埋收时间线 、 RAG 记忆检索 、 知识图谱 、 提示词自迭代 。