为什么我的工具都坚持能离线用

2026.11.05 约 2 分钟

做小工具这几年,我给自己立了一条看起来很笨的规矩:核心路径必须能断网跑完。

不是说联网不好。而是联网这件事,一旦被写进主流程,就会悄悄带进来一堆你没打算要的东西:账号、服务器、同步冲突、隐私政策、还有某天早上突然打不开的可能。

离线是一条约束,不是一个功能

功能可以加,约束不能破。

如果把”能不能离线”当成功能清单里的一行,那它迟早会因为某个”更好用”的需求被牺牲掉——云同步、在线词库、账号体系,每一个都足够合理,加起来就把主路径搬到了别人的服务器上。

把它当成约束就不一样了。约束的意思是:新功能必须在这个前提下成立,否则不做。

于是有些设计被迫变简单了:

  • 没有账号,就没有”登录失败”这个状态要处理;
  • 没有服务端,就没有”我们的数据库挂了”这条公告要写;
  • 数据都在本地,导出就是复制文件,不需要”申请导出”。

不上传,是一种克制

“我们不会看你的文件”这句话,说了也没人信。更可信的做法是让不上传成为架构事实:工具根本没有联网的代码路径,你想让它传也传不出去。

这对我也有好处——不需要为隐私政策写三页免责声明,不需要处理数据泄露的公关,不需要给服务器续费。

买断,是把关系说清楚

订阅制适合持续交付的东西:内容库、云存储、实时协作。一个本地去重工具不属于这类。

它装在你机器上,不消耗我的服务器,也不会因为我不更新就突然不能用。那么按年收钱就没有道理。买断看起来赚得少,但它把一件事说清楚了:我卖的是这个版本的工具,不是一个持续的关系。

所以这些工具长什么样

它们通常不好看,功能也不多。没有仪表盘,没有积分,没有”本月已为你节省 12.4 GB”这种数字。

它们只做一件事,做完就闭嘴。

如果你也在找这样的工具,这里有一份清单。