离线回来,中间那段消息去哪了:飞享IM 会话断层的发现与补齐
手机关机一个晚上,第二天打开飞享IM,群里已经聊了几十条。最新的消息都在,往上翻,翻着翻着就从今天早上直接跳到了昨天晚上,中间那一大段没了。这不是某一端的偶发 bug,Android、iOS、Web、PC 全都会出现。本文讲清楚这个问题是怎么产生的,我们为什么最终选择"服务端标出缺口、客户端按需补齐"的方案,以及在改动协议和四个客户端的同时,怎样把对现有用户的影响降到最低。

手机关机一个晚上,第二天打开飞享IM,群里已经聊了几十条。最新的消息都在,往上翻,翻着翻着就从今天早上直接跳到了昨天晚上,中间那一大段没了。这不是某一端的偶发 bug,Android、iOS、Web、PC 全都会出现。本文讲清楚这个问题是怎么产生的,我们为什么最终选择"服务端标出缺口、客户端按需补齐"的方案,以及在改动协议和四个客户端的同时,怎样把对现有用户的影响降到最低。

不方便外放语音的时候,"转文字"几乎是刚需。飞享IM 的语音消息转文字现已在服务端、Android、iOS、PC 桌面端、Web 端全面上线。这次功能在协议层只做了三件事:枚举末尾追加 1 个子信令 ASR、proto 末尾追加 2 个 message、既有定义 0 处改动,旧版客户端完全无感。本文完整说明这个功能的设计、服务端链路与四端实现,并借此讲清楚飞享IM 服务端"只增不改"的可扩展性。

今天,飞享IM 正式宣布:Android、iOS、PC 桌面端、Web 端四个 Pro 版客户端全部开源。这个决定不是心血来潮。在 AI 的帮助下,逆向一个客户端的成本已经低到可以忽略,闭源客户端的护城河几乎不存在了;而这四个客户端本身也是在 AI 的深度参与下开发出来的,仅 AI 协作提交就有 470 次。既然取之于开源社区和 AI 工具,开源回馈社区也是顺势而为。

在 ios-chat-pro 的 Vibe Coding 复盘之后,过去一周(7 月 5 日 – 7 月 12 日)我继续用 Claude Code 迭代这个 iOS IM 客户端,交替使用了两套 skill:superpowers(brainstorming → writing-plans → subagent-driven-development 的全流程套件)和 grill-me(开工前对设计方案进行"逼问式"访谈的单点 skill)。

这是一篇关于「人不看代码、AI 全程执行」的真实工程记录。ios-chat-pro 是飞享 IM 的 iOS 原生客户端,用 Swift + UIKit 实现,对接自研 TCP 协议和 protobuf 二进制消息,功能覆盖单聊、群聊、音视频通话、好友管理、群组管理、消息撤回。
