<!-- title: 本地优先与CRDT七强精读 -->
<!-- domain: programming -->

# 本地优先与CRDT七强精读：让"协作"摆脱对云端的依赖

## 概述

当 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 一步步协作 | ★★ |

---

## 一、Martin Kleppmann — The past, present, and future of local-first

**链接**：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 只是离线缓存而非真正本地优先）。适合架构师、产品负责人做技术选型与立项论证。

## 二、Peter van Hardenberg — Practical Local-First Software with Automerge

**链接**：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 地雷。

## 三、From Google Docs to Figma: OT vs CRDT Trade-offs

**链接**：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 更香。

**实用价值**：选型决策必看。面试系统设计"设计一个协作编辑器"也是高频题，这一对比能让你答得有深度。

## 四、Loro Is Local-First State With 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 开发者。

## 五、Text CRDTs from scratch, in code!

**链接**：https://www.youtube.com/watch?v=_lQ2Q4Kzi1I

理解 CRDT 最快的方式不是看论文，而是**亲手写一个**。这道视频正是从零用代码实现一个文本 CRDT（通常基于 RGA 或 LWW-Element 风格）。

**核心洞察**：作者一步步演示了三个关键机制：① **唯一字符 ID**（客户端 + 逻辑时钟，让并发插入可排序）；② **墓碑机制（tombstone）**——删除不是真删，而是标记，因为别的副本可能还在引用它；③ **merge 函数的交换律保证**（先按 ID 排序再合并，结果与顺序无关）。跟着敲完一遍，你会彻底明白为什么 CRDT 能"数学上保证无冲突"——它把"冲突"这个概念从协议层消灭了，代价是把复杂性压进了数据结构本身。

**实用价值**：这是把"看过"变成"真懂"的临门一脚。适合想深入内核、或准备相关岗位面试的开发者。

## 六、Andrey Sitnik — CRDT & Collaborative Editing on the Web (NEJSCONF)

**链接**：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 开发者与技术负责人。

## 七、Instant Multi-User Text Editing with Yjs - Step by Step

**链接**：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 的全栈开发者。

---

## 知识图谱：CRDT 与本地优先的全景

```mermaid
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应用]
```

```mermaid
mindmap
  root((协作编辑内核))
    数据层
      唯一字符ID 客户端+逻辑时钟
      墓碑机制 Tombstone 软删除
      merge函数 满足交换律
    传输层
      WebSocket 长连接增量同步
      WebRTC P2P点对点
      awareness协议 光标在线状态
    持久化
      IndexedDB 浏览器离线
      SQLite 移动端本地库
      时间旅行 任意历史回放
    挑战
      元数据膨胀与GC压缩
      多人undo/redo语义
      访问控制与拜占庭容错
      最终一致的UI语言
```

## 延伸推荐

- **Automerge 官方频道**（@automerge-org）—— 库的更新、社区例会、最佳实践，跟进最新 API。
- **Local-First Conf 2025 播放列表**—— 一整届大会的高质量演讲合集，含"CRDTs as a Temporal Data Structure"等前沿话题。
- **SE Radio Ep.716: Martin Kleppmann — Local-First Software**（youtube.com/watch?v=iP5Tm3361hY）—— 一小时的深度播客访谈，比演讲更细。
- **Mr. 4th Programming**（@Mr4thProgramming）—— "Local First Software and the Automerge CRDT with Peter van Hardenberg" 等长访谈，适合喜欢音频深度内容者。
- **Theo / t3.gg 类深度评测频道**—— 跟进 Replicache、PowerSync、ElectricSQL 等同步基础设施的新动态。

## 学习路径建议

1. **先看愿景**（视频一、二）建立"为什么"，避免陷入算法细节而丢掉产品判断；
2. **再明算法**（视频三、六）搞清 OT vs CRDT 与前端落地约束；
3. **动手实现**（视频五）亲手写一遍内核，打通"理论→代码"；
4. **选库产出**（视频四、七）挑一个库，周末搭出可运行 demo，完成闭环。

## 参考来源

1. [Local-First Software: You Own Your Data, in spite of the Cloud（论文 PDF）](https://martin.kleppmann.com/papers/local-first.pdf) — 奠基论文，定义七原则。
2. [The past, present, and future of local-first — Martin Kleppmann](https://www.youtube.com/watch?v=NMq0vncHJvU) — 愿景演进综述演讲。
3. [Automerge 官网与博客](https://automerge.org/) — CRDT 库文档与 2.0 版本说明。
4. [crdt.tech — CRDT 资源总站](https://crdt.tech/implementations) — 各类 CRDT 实现与类型汇总。
5. [Local-First Conf 2026 官网](https://www.localfirstconf.com/) — 大会议程与历届演讲索引。

---
> 本文由「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 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
