我们群里平时聊天的信息量极大,有时候想找半年前大家讨论某个建筑或者某次更新的聊天记录,翻手机 QQ 根本翻不动,所以才有了专门用来检索群服历史消息的 chat.igng.net(IGNGchat)。但早期的网页版做得太像一个干巴巴的数据库后台了,看着费劲,很多特殊的 QQ 消息格式也显示不出来。
嵌套合并转发一键展开与撤回消息脱敏
2026 年 10 月 28 日至 31 日(PR #381 等),我把 chat.igng.net 的会话列表和搜索界面从头到尾重做了一遍,目标很简单:让大家在网页上翻历史记录时,跟平时刷手机 QQ 一样顺手。
以前最头疼的就是群友经常发的“合并转发聊天记录”,网页上只能显示一行冷冰冰的 [合并转发] 占位符,点都点不开,里面的精华内容全丢了。这次我专门解析了协议层的多层嵌套转发结构,现在在网页上点一下合并转发卡片,就能像在 QQ 里一样一层层弹窗展开阅读,连里面夹带的历史图片也能正常加载出来。同时,群列表同步显示真实的群名称和群友当时的群名片,遇到已经被撤回的消息(is_recalled),系统会做合规脱敏标记,既保留时间线上下文,又不违规泄露撤回隐私。
同一 QQ 号发出的话,到底是真人还是 AI?
这次更新里我还做了一个很有意思的小功能,叫 QQ 消息来源证明(Message Provenance)。
起因是在我们的测试和运维过程里,云萤机器人或者一些自动化通知脚本,有时候会直接挂在某个真人的 QQ 号上往外发消息。日子一久,大家翻历史记录看到某句神回复或者某条通知时,经常分不清:“这句话到底是号主本人手敲的,还是当时挂着的云萤 AI 回的?”
为了不让大家替 AI 背锅(或者反过来把真人的话当成机器故障),我把消息入库链路和机器人发送账本做了交叉比对。现在在 IGNGchat 的消息气泡旁边,会清清楚楚地挂上来源角标——是号主本人敲的、AI 云萤回复的,还是后台自动化程序发的,一眼就能分辨明白。