轻量级 IM · 单机可跑 · 可平滑演进

熏弟 让每一次
连接都可靠抵达

覆盖单聊、群聊、通讯录三大场景的即时通讯应用。消息不丢、不重、有序,多端同步与消息漫游, 绿白主导、中性灰阶的克制设计,让海量聊天记录读起来始终舒适。

8+
消息类型
多端
同步 · 漫游
100%
送达可控
阿

产品设计群

4 人在线

L
熏弟的绿白配色看着真舒服 🌿
消息不丢不重,靠 seq + ACK 💪
Q
位置消息 / 语音 / 文件都支持
换设备也能拉回历史 ✨
已读
发送消息…

为真实聊天场景而生的核心能力

从消息、通讯录到群聊、发现,熏弟覆盖 IM 的关键一环,功能对齐真实 App。

单聊 · 群聊

消息、通讯录、群聊、发现四大 Tab 覆盖完整社交链路,单群消息统一时间线漫游。

多类型消息

文本、图片、语音、视频、文件、表情、名片、位置、系统消息,一应俱全。

可靠投递

持久化 + ACK + 幂等 + 序列号,保证消息不丢、不重、有序送达。

多端同步 · 漫游

用户级 sync_seq 单调游标,多设备一致;换机重装可增量拉取历史。

消息撤回

在可撤回时间窗内撤回消息,各端与会话摘要同步更新。

群管理与禁言

群主 / 管理员分级、成员禁言、转让与移除,群组秩序尽在掌握。

已读回执 · 在线状态

read_seq 支撑多端已读同步,presence 实时反映在线/离线。

好友与扫码

搜索添加、验证申请、二维码/扫码,快速建立联系人关系链。

深色模式 · 本地搜索

同名 token 覆盖的深灰质感;会话内本地关键词检索历史消息。

消息不丢、不重、有序

以序列号双轨与 ACK 确认构建可靠投递,配合用户收件箱实现多端增量同步。

1

序列号双轨

  • 会话级 seq:单会话消息严格有序,支撑排序与补洞。
  • 用户级 sync_seq:跨会话单调游标,保证多端增量同步。
  • Redis 原子 INCR 生成,二者正交不可互替。
2

ACK 与幂等

  • 发送即返回 msg.send.ack,下发要求 msg.ack 送达确认。
  • 消息 ID 幂等去重,重连后不重复入库。
  • 在线实时推送,离线写扩散待离线拉取。
3

混合扩散模型

  • 会话时间线读扩散:messages 按会话存一份。
  • 用户收件箱写扩散:user_inboxes 为接收者写一行。
  • 兼顾空间效率与漫游、未读重算能力。

上行发送 → 逻辑层处理 → 确认与推送

客户端
WS 帧 msg.send
Gateway
编解码 + 鉴权
Logic
INCR seq · 持久化
ACK + 推送
msg.send.ack

分层清晰、单机可跑、平滑演进

四层职责单一、边界明确;先交付单机版核心,预留分布式水平扩展能力。

接入层 Gateway

WebSocket 长连接 · 无业务、不碰数据库

coder/websocket 握手与连接生命周期、协议编解码、心跳保活、单机连接路由与上下行。

逻辑层 Logic

Gin HTTP API + gRPC 内部服务

鉴权、消息、会话、群组、关系、同步、在线等业务服务,扩散投递编排与序列号/ID 申请。

存储层 Storage

PostgreSQL 持久化 + Redis 缓存/序列/状态

PG 存消息、会话、用户、群组;Redis 提供原子 INCR、在线状态与分布式锁。

协调层 Coordination

etcd 服务发现/配置 + 雪花 ID

服务注册与发现、配置热更新、雪花 workerID 分配、分布式锁;单机可降级为静态配置。

技术栈

Go coder/websocket Gin gRPC PostgreSQL Redis etcd Snowflake pgx / sqlc zap

绿白主导 · 中性灰阶承托

90% 以上面积由页面底 + 白色卡片 + 灰阶文字构成,仅核心操作与品牌识别使用主色。

品牌与状态色

brand
#1FD79F

brand_dark
#14B583

success

warning

error

info

ink

mist

圆角与气泡颜色心理学

sm 6 · md 10 · card 16 · sheet 20 · pill 999

发送方 · 绿底白字 · 通行与连接
接收方 · 白底深字 · 平静易读

开始使用熏弟

跨端一致的轻量 IM,随时随地保持可靠连接。

Android 下载 iOS·开发中,敬请期待 HarmonyOS·开发中,敬请期待