当 Notion、Figma、Google Docs 成为生产力标配,一个被忽视的事实是:你的数据并不真正属于你——它们躺在厂商的服务器里,一旦断网就是一具"正在加载"的骨架,一旦公司倒闭,几年的笔记可能瞬间蒸发。本地优先软件(Local-First Software) 与 CRDT(Conflict-free Replicated Data Type,无冲突复制数据类型) 正是应对这一困境的工程答案:让应用优先读写本地数据,把"云端"降级为可选的中继,同时仍能支持多人实时协作和离线编辑。
2026 年这个方向热度飙升:Automerge 用 Rust 重写后性能跨越式提升、Loro 带着 WASM 杀入前端生态、Local-First Conf 2026 于 7 月在柏林开幕,连 SQLite/Postgres 之上的同步层(PowerSync、ElectricSQL)都成为融资热点。本期从 YouTube 海量内容中精选 7 个最具代表性的演讲与实战视频,覆盖理论愿景 → 算法取舍 → 现代库实现 → 手写内核 → 落地教程的完整链路,帮你系统建立"为什么离线也能协作"的心智模型。
| 视频/频道 | 讲者 | 定位 | 核心亮点 | 难度 |
|---|---|---|---|---|
| The past, present, and future of local-first | Martin Kleppmann | 愿景奠基 | 本地优先七原则回顾与演进 | ★★★ |
| Practical Local-First Software with Automerge | Peter van Hardenberg | 实验室实践 | Ink&Switch 的真实产品教训 | ★★★ |
| From Google Docs to Figma: OT vs CRDT | (系统设计向) | 算法对比 | OT 与 CRDT 的工程权衡 | ★★★ |
| Loro Is Local-First State With CRDT | (深度评测向) | 现代库 | Rust+WASM、时间旅行、undo | ★★★★ |
| Text CRDTs from scratch, in code! | (手写实现向) | 内核拆解 | 从零实现一个文本 CRDT | ★★★★ |
| CRDT & Collaborative Editing on the Web | Andrey Sitnik | 前端生态 | 浏览器侧的选型与陷阱 | ★★★ |
| Instant Multi-User Text Editing with Yjs | (教程向) | 落地教程 | Yjs + WebSocket 一步步协作 | ★★ |
链接:https://www.youtube.com/watch?v=NMq0vncHJvU
剑桥大学副教授、分布式系统圣经《Designing Data-Intensive Applications》作者 Martin Kleppmann,正是 2019 年那篇开创性论文《Local-First Software: You Own Your Data, in Spite of the Cloud》的第一作者。这场在 Local-First Conf 的演讲是对该理念最权威的回顾与展望。
核心洞察:他重新阐释了"本地优先七原则"——① 无加载转圈(本地即时响应);② 多设备多平台;③ 离线可用;④ 仍能协作;⑤ 数据长寿(数据应比应用和公司活得更久);⑥ 隐私(端到端加密,服务器无需看到明文);⑦ 用户主权。他指出,过去几年的关键突破不在于新算法,而在于CRDT 从"学术玩具"走向"工业可用":Automerge 的 Rust 重写让移动端也能流畅运行、Yjs 把性能压到可支撑 Notion 级负载。展望部分他强调下一战是访问控制与拜占庭容错——当数据在 P2P 节点间流动,如何用 CRDT 本身描述权限、并抵御恶意篡改。
实用价值:理解这 7 条原则,等于拿到一把评估"伪本地优先"产品的尺子(很多 SaaS 只是离线缓存而非真正本地优先)。适合架构师、产品负责人做技术选型与立项论证。
链接:https://www.youtube.com/watch?v=5nTVTIE15zA
Ink & Switch 研究实验室主任 Peter van Hardenberg(圈内称 pvh),是本地优先理念的核心布道者。这场 J On The Beach 演讲罕见的"不谈理论、只谈踩坑"。
核心洞察:他用实验室真实项目(Tondo、PushPin 等)说明本地优先最难的不是算法,而是"墨菲定律级"的工程细节。比如 undo/redo 在多人协作下不再是本地栈那么简单——你撤销的可能是别人已经基于它继续编辑的状态;再比如"乐观 UI"在弱网下会让用户困惑"我到底保存了没有"。他给出务实建议:先用 Automerge 这类成熟库,别自己造 CRDT;把同步状态显式化(用小图标告诉用户"本地已存/正在同步");接受"最终一致"而非追求强一致。
实用价值:这是把论文翻译成 PRD 的一课,特别适合正在评估是否给产品加协作/离线功能的技术 leader,能帮你提前规避 90% 的 UX 地雷。
链接:https://www.youtube.com/watch?v=dAE-Zr62JFA
这道视频把业界两大协作流派正面拆给你看:Google Docs 用的是 OT(Operational Transformation,操作变换),而 Figma、Notion 新栈、Linear 多倾向于 CRDT。
核心洞察:OT 的本质是"操作不满足交换律,所以要靠中央服务器对操作做变换再下发"——它的优势是内存占用小、适合纯文本,劣势是强依赖中心化协调,P2P 几乎不可能。CRDT 则通过设计让操作在数学上满足交换律与结合律,副本可以任意顺序合并且结果一致,天然去中心化、天然支持离线;代价是元数据膨胀(每个字符可能要记录时钟向量)和 GC 复杂。视频用 Figma 的多光标场景说明:当你的数据是树/图(设计稿、白板)而非线性文本,CRDT 的优势会迅速放大。结论很清醒:没有银弹,文本协作 OT 仍香,富结构协作 CRDT 更香。
实用价值:选型决策必看。面试系统设计"设计一个协作编辑器"也是高频题,这一对比能让你答得有深度。
链接:https://www.youtube.com/watch?v=NB7HRfyufLk
Loro 是 2024–2026 年最受关注的新一代 CRDT 库:核心用 Rust 编写、编译到 WASM 供前端调用,主打"高性能 + 时间旅行 + 完善的 undo/redo"。
核心洞察:评测者深入剖析了 Loro 相对 Yjs/Automerge 的差异化——它原生支持 movable tree(可移动树,对思维导图、看板类应用是刚需)、rich text、undo/redo with collaborators(多人协作下正确的撤销)、以及 ephemeral history(可任意回放历史状态而不永久膨胀)。Rust 内核让它在百万节点规模下仍保持毫秒级合并。视频也诚实指出其生态尚不如 Yjs 成熟、与 ProseMirror/TipTap 的适配仍在完善。
实用价值:如果你要做白板、思维导图、复杂结构化文档这类"树状"协作产品,Loro 几乎是目前最优解。适合中高级前端/Rust 开发者。
链接:https://www.youtube.com/watch?v=_lQ2Q4Kzi1I
理解 CRDT 最快的方式不是看论文,而是亲手写一个。这道视频正是从零用代码实现一个文本 CRDT(通常基于 RGA 或 LWW-Element 风格)。
核心洞察:作者一步步演示了三个关键机制:① 唯一字符 ID(客户端 + 逻辑时钟,让并发插入可排序);② 墓碑机制(tombstone)——删除不是真删,而是标记,因为别的副本可能还在引用它;③ merge 函数的交换律保证(先按 ID 排序再合并,结果与顺序无关)。跟着敲完一遍,你会彻底明白为什么 CRDT 能"数学上保证无冲突"——它把"冲突"这个概念从协议层消灭了,代价是把复杂性压进了数据结构本身。
实用价值:这是把"看过"变成"真懂"的临门一脚。适合想深入内核、或准备相关岗位面试的开发者。
链接:https://www.youtube.com/watch?v=OGJxKQP7TIo
Andrey Sitnik 是 PostCSS、Autoprefixer、Nano Stores 等明星开源项目的作者,在前端工程界极具影响力。他这场 NEJSCONF 演讲从纯前端工程师视角讲 CRDT 落地。
核心洞察:他强调浏览器侧的三个现实约束——① 传输成本:WebSocket 长连接 + 增量 delta 同步远优于整文档轮询;② 存储成本:用 IndexedDB 持久化 CRDT 副本,让 PWA 真正离线可用;③ 心智成本:CRDT 的"最终一致"会颠覆团队对"保存"的直觉,需要配套 UI 语言。他还给出务实选型:轻量协作选 Yjs(生态最全)、需要强结构化数据选 Automerge、追求极致性能且接受新生态选 Loro。
实用价值:前端团队引入协作功能的最短路径指南,适合 Web/PWA 开发者与技术负责人。
链接:https://www.youtube.com/watch?v=Kp-rRZttw6s
理论看够了,这道视频直接带你搭一个能跑的多人实时编辑器:Yjs(CRDT 库)+ y-websocket(同步协议)+ 前端编辑器。
核心洞察:视频清晰拆解了 Yjs 的"解耦设计"——数据层(Y.Doc) / 传输层(Provider,如 y-websocket、y-webrtc)/ 视图层(通过绑定 ProseMirror/TipTap/CodeMirror)三者正交,可以自由组合。跟着操作约 30 分钟,你就能得到一个多人光标、断线重连、离线编辑的全功能 demo。关键收获是理解 Yjs 的 awareness 协议(专门传输光标、在线状态这类 ephemeral 数据,与文档数据分开)。
实用价值:最佳的"周末项目"级入门,零基础也能快速获得成就感,适合想快速产出 demo 的全栈开发者。
flowchart TD
A[本地优先软件 Local-First] --> B[七原则: 即时/多端/离线/协作/长寿/隐私/主权]
A --> C[核心技术: CRDT 无冲突复制数据类型]
C --> D{两大族系}
D --> E[CvRDT 基于状态<br/>收敛 合并状态]
D --> F[CmRDT 基于操作<br/>可交换 操作广播]
C --> G[经典类型]
G --> G1[G-Counter / PN-Counter]
G --> G2[LWW-Register / OR-Set]
G --> G3[RGA / Treedoc 文本]
C --> H{对比 OT}
H -->|优势| H1[去中心化 / 可离线 / P2P]
H -->|代价| H2[元数据膨胀 / GC复杂]
C --> I[主流库]
I --> I1[Yjs 生态最全 文本协作]
I --> I2[Automerge Rust重写 JSON结构]
I --> I3[Loro Rust+WASM 树/富文本/时间旅行]
I --> I4[同步基础设施: Replicache/PowerSync/ElectricSQL]
I --> J[落地场景: 协作文档 / 白板设计 / 离线移动端 / P2P应用]
mindmap
root((协作编辑内核))
数据层
唯一字符ID 客户端+逻辑时钟
墓碑机制 Tombstone 软删除
merge函数 满足交换律
传输层
WebSocket 长连接增量同步
WebRTC P2P点对点
awareness协议 光标在线状态
持久化
IndexedDB 浏览器离线
SQLite 移动端本地库
时间旅行 任意历史回放
挑战
元数据膨胀与GC压缩
多人undo/redo语义
访问控制与拜占庭容错
最终一致的UI语言
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
