现在的软件默认假设一件事:你的数据应该存在别人的服务器上。照片存云相册、笔记存云笔记、行程存云地图。方便确实方便,但我一直觉得这个默认设定哪里不对劲。

一个我觉得不对劲的默认设定

问题不在于「云不好」,而在于所有权被悄悄转移了:

这些都是我自己在整理照片、笔记、旅行足迹时真实遇到的问题。于是我开始按 local-first 的原则重做自己的工具。

local-first 到底意味着什么

local-first 不是「反对云」,而是把主副本放在你自己的设备上,云降级为备份与同步的一个节点。它通常有七条理想特性(Ink & Switch 那篇著名文章提出的):

特性通俗解释
快速读写都在本地,不等网络
多设备手机、电脑的数据能同步
离线可用没网照样能用
协作需要时也能多人一起改
长期保存服务商倒闭,数据还在你手里
隐私安全数据不离开你的设备也能用
用户拥有随时能完整导出

我的工具里,前三条是底线:打开就能用、多设备能同步、断网不掉链子。后面几条是努力方向。

它没有免费午餐:代价是什么

讲实话,local-first 要付代价,我不打算藏着:

冲突处理我采用的是「最后写入 + 保留历史版本」的务实策略:不追求无冲突的 CRDT 完美方案,而是让每次修改都留下可回溯的版本,冲突时让用户自己选。对个人数据来说,「能找回」比「永不冲突」更重要。

我的家庭数据管家是怎么搭的

我把这套原则落进了一个叫「哇哦.exe」的桌面应用,架构大概是:

一个具体细节:媒体库扫描几万张照片时,如果放在主进程做,界面直接假死。把它扔到子进程后,界面全程可操作 —— 这就是「本地」和「好用」不矛盾的关键。

什么人适合,什么人不适合

适合你,如果:

不适合你,如果:

这不是宗教,是取舍。我选择本地优先,是因为我做的工具是给「想长期拥有自己数据的人」用的。


如果你也在意数据主权,欢迎来聊聊你理想中的个人数据工具长什么样。具体项目可以看我的项目页,实践视频在 B站搜 codevtool、抖音搜 codevtool334。