为什么我们要做本地优先:把创意和数据还给用户
本地优先软件,是一种把用户数据的主要副本放在本地设备上的软件架构。它可以同步到云端,也可以多人协作,但它不把服务器当成唯一的真相来源。
我们做本地优先,不只是为了“断网能用”。更深层的原因是:用户的创意、素材、草稿、任务和长期积累的知识,应该首先属于用户自己。
云端软件解决了协作问题,却带来了另一个问题:当数据只存在于服务器上,用户拥有的不是数据本身,而是访问权限。Martin Kleppmann 等人在 Local-first software 论文介绍中指出,云端应用虽然方便协作和跨设备访问,但集中式服务器会削弱用户对数据的所有权和控制权。
本地优先首先意味着速度
创意软件最怕等待。灵感出现时,用户需要的是立刻记录、立刻拖动、立刻整理,而不是加载、同步、刷新、重新登录。本地优先让软件先响应本地操作,再在后台完成同步。
这也是为什么本地优先不只是技术架构,而是创作体验。一个工具越接近“想法出现的速度”,越不容易打断思考。
本地优先意味着网络可选
断网能用,是本地优先最直观的价值。MDN 的 PWA 离线文档提到,离线操作可以让应用在设备没有网络连接时仍然提供良好体验;Service Worker 可以缓存页面、脚本、图片等资源,并在网络不可用时拦截请求、返回本地缓存。
但对创意工具来说,离线不是边缘场景。人在飞机、高铁、会议室、电梯、咖啡馆弱网环境里,仍然会产生想法。真正好的工具不应该让网络状态决定用户是否能继续思考。网络应该是同步通道,不应该是创作开关。
本地优先意味着长期保存
创意不是一次性内容。很多想法需要几个月甚至几年才会显现价值。今天保存的一段网页、一个截图、一条客户反馈,可能未来会变成一篇文章、一个产品功能、一次战略判断。
web.dev 的离线数据文档提到,PWA 可以使用 Cache Storage、IndexedDB 等机制保存离线数据,其中 IndexedDB 适合结构化数据和用户特定数据。这给创作软件一个重要启发:数据不应该只是“临时缓存”。如果素材对用户有长期价值,软件就应该认真对待它的保存、迁移和可访问性。
创意为什么需要本地优先?
因为创意不是凭空出现的。Ink & Switch 的 Capstone 项目研究了创意工作者如何发展想法。他们观察到一个常见过程:先收集素材,再进行思考。素材可能是网页、图片、草图、文字摘录、观察和其他想法;随后,创作者通过筛选、排序、重组和识别模式,形成新的洞见。
这正是本地优先和创意软件天然契合的地方。如果创意来自素材,那么软件首先要做的不是催促用户“产出”,而是帮助用户保存输入。它应该允许用户随手收集、自由整理、长期保留,并在未来重新发现这些材料之间的联系。
本地优先并不反对协作
很多人会误解:本地优先是不是意味着回到单机软件?不是。本地优先反对的不是云端,而是“只有云端才算数”。
Automerge 这类 CRDT 同步引擎的目标,就是让多人应用在离线时仍能工作,并在不同设备上的并发修改之间自动合并。也就是说,本地优先的理想不是“不要同步”,而是“先让用户拥有,再让云端协助”。
AI 时代更需要本地优先
AI 越强,越依赖上下文。真正有价值的上下文,不只是用户刚刚输入的一句话,而是长期积累的项目、任务、素材、偏好、草稿、失败尝试和历史判断。
如果这些上下文都锁在某个平台里,用户就会越来越依赖平台。本地优先可以让用户拥有自己的创作记忆。AI 可以在用户允许的范围内读取、整理、总结和生成,但数据的源头仍然掌握在用户手里。
Key Takeaways
- 本地优先不只是离线功能,而是一种产品价值观。
- 它代表速度、可靠、长期保存、数据所有权和用户控制权。
- 对于创意软件来说,这一点尤其重要,因为创意来自长期积累的素材和未完成的思考。
FAQ
本地优先和离线功能有什么区别?
离线功能通常是云端应用的补丁;本地优先则从架构上把本地数据作为核心。
本地优先会影响协作吗?
不一定。通过同步和 CRDT 等机制,本地优先软件仍然可以支持多人协作。
为什么创意软件特别需要本地优先?
因为创意依赖素材、草稿、上下文和长期积累。这些内容应该真正属于用户。