不会消失的录音

我自己丢过录音,所以做了 Shadow Recording:让程序崩溃、甚至整机内核崩溃,也带不走想法。

Building

我以前丢过录音。应用崩溃、电池没电、系统卡死——啪,没了。

那种“我刚花 10 分钟讲清一件重要的事,结果全没了”的下坠感,非常难受。

所以在开始做 Reso 时,我给自己立了一个约束:这件事绝不能再发生。

传统做法(以及它为什么会失败)

大多数录音应用的流程是:
1. 开始录音 -> 音频先缓存在内存
2. 停止录音 -> 再写文件到磁盘
3. 返回文件路径

问题:如果在步骤 1 和 2 之间崩溃,录音会永久丢失。

macOS 应用会崩。电源线会被拔。Kernel panic 也会发生(虽然不常见)。

解决方案:增量写盘

如果我们在录音过程中就持续写盘,而不是结束后一次性写呢?

Shadow Recording 的做法是:
1. 录音开始 -> 立刻创建带时间戳的 M4A 文件
2. 每当音频 chunk 到达,就追加到磁盘文件
3. 即使应用崩溃,文件也已经存在

结果:哪怕 Reso 在你说到一半时炸掉,录音仍能保住。

实现细节

听起来简单,但 M4A 格式并不简单。不能把原始音频字节直接拼接,否则文件会损坏。

我需要:
1. 使用支持增量写入的流式编码器
2. 确保即使中断写入,M4A 容器也保持“可读有效”
3. 处理文件清理(旧 shadow 录音不能无限堆积)

我们把 shadow 录音保留 7 天,之后自动删除。既提供安全兜底,也避免存储无限增长。

我学到的

最好的功能,往往是使用者注意不到的功能。

Shadow Recording 已经从崩溃里救回了很多录音。但使用者不会说“这个 shadow recording 真棒”,他们只会说“Reso 很可靠”。

这正是我想要的结果。

可靠性不花哨,演示时也不抢眼,但它是信任的地基。

当你知道自己的想法是安全的,你会更敢去记录半成品想法、实验和错误。

那时工具就不再只是工具,而会成为你思考过程的一部分。

这不是营销,是我们自己踩过的坑。

下载 macOS 版 Reso

阅读更多 Reso 构建日志