海狸IM 2.0 正式发布:六端齐发,开源 IM 迈入新阶段

海狸IM 2.0 发版记录:六端工程拆分与主要变更说明

最近在维护的开源 IM 项目海狸(Beaver IM)完成了 2.0 大版本发布。本文记录本次发版的工程结构、各端版本号以及主要功能变更,供正在调研或二次开发的同学参考。下文以事实说明为主,不涉及商业推广。


1. 发版背景

1.x 阶段,项目以「服务端 + 客户端」为主。2.0 将产品链路拆成 六个可独立部署的仓库 ,分别对应服务端、移动端、PC 端、运营后台、开放平台门户、OAuth 授权页,版本号与发版策略在各仓库根目录 VERSION 文件中统一维护。

本次发版的核心目标可以概括为三点:

  1. 客户端消息能力补全(回复、编辑、撤回、语音、多媒体统一等)
  2. 运营与监控能力下沉到独立后台工程
  3. 开放能力以 OAuth2 为主落地,群通知走 PC 端推送机器人(单向 Webhook)

2. 六端版本对照

序号 工程 仓库名 版本 主要技术栈
服务端 beaver-server 2.0.1 Go、go-zero、gRPC、WebSocket
移动端 beaver-flutter 2.0.1 Flutter 3.x、Drift、BLoC
PC 端 beaver-desktop 2.0.0 Electron 31、Vue 3、Vite、TypeScript
运营后台 beaver-manager 2.0.1 Vue 3、Element Plus、Vite
开放平台门户 beaver-open 2.0 OAuth2 应用管理前端
OAuth 授权页 beaver-oauth 2.0 授权确认、扫码登录页

说明:移动端主线为 Flutter 工程;早期 Uniapp 版本已不再维护。


3. 工程关系示意

六个仓库在部署上的依赖关系大致如下(非代码结构,仅说明职责边界):

复制代码
                    ┌──────────────────────────────┐
                    │  ⑤ beaver-open               │
                    │  OAuth2 应用 / 回调 / Scope  │
                    └──────────────┬───────────────┘
                                   │
     ┌─────────────┐  ┌────────────┴───┐  ┌─────────────┐
     │② beaver-    │  │ ③ beaver-      │  │④ beaver-    │
     │  flutter    │  │  desktop       │  │  manager    │
     └──────┬──────┘  └───────┬────────┘  └──────┬──────┘
            │                 │                  │
            └─────────────────┼──────────────────┘
                              │
                    ┌─────────▼─────────┐
                    │ ① beaver-server   │
                    │ 微服务 + open 模块 │
                    └─────────┬─────────┘
                              │
                    ┌─────────▼─────────┐
                    │ ⑥ beaver-oauth    │
                    │ 用户授权确认 UI   │
                    └───────────────────┘
  • ②③:面向终端用户的聊天客户端
  • ④:面向运营人员的后台管理
  • ⑤⑥:面向第三方系统 OAuth2 接入;与 ① 中的 auth、open 服务配合
  • ③ 另承担 群推送机器人 的配置入口(见后文)

4. 跨端共性变更

以下改动在多个客户端或服务端同时出现,属于 2.0 的「底座级」调整。

4.1 消息与媒体

  • 私聊、群聊支持消息回复、转发、撤回、编辑
  • 文本消息支持 Markdown 渲染
  • 语音消息在移动端与 PC 端均可收发;「未听」状态通过消息媒体同步接口跨端对齐(2.0.1 修复了跨库查询导致的同步问题)
  • 图片、视频、语音、文件等资源统一使用 fileUrl,避免各端展示逻辑不一致

4.2 音视频

  • 移动端增加来电横幅组件(IncomingCallBanner)
  • 音视频通话基于 LiveKit 实现

4.3 配置与设备

  • 各仓库引入 VERSION 文件,与包管理配置中的版本号对齐
  • 用户设置(如 PC 快捷键)支持写入服务端,跨设备同步
  • 登录设备记录 UA 信息,支持在线状态查询与踢设备下线

5. 各端变更摘要

5.1 服务端(beaver-server 2.0.1)

工程与接口规范

  • REST API 路径对齐 v1 规范
  • 引入统一日志模块与鉴权锁(authlock),用于多实例场景下的并发安全
  • 发版版本号与客户端 VERSION 策略统一

业务接口

  • 用户设置读写 API
  • 消息媒体同步(含语音未听标记)
  • OAuth2:扫码登录、Authorization Code、H5 授权码等流程
  • 群推送机器人:对外提供 bot_public 推送接口,供外部系统向群内发送通知消息

运营支撑

  • 在线用户统计、连接监控及设备详情查询
  • 内容审核、用户管控等 RPC 能力拆分,供运营后台调用

5.2 移动端(beaver-flutter 2.0.1)

  • 会话内消息搜索
  • 底部回复栏(ReplyBar)、编辑栏(EditBar)
  • 动态(Moment)评论、点赞列表与输入区域
  • 群聊 / 私聊会话设置完善
  • 本地 Drift 数据库 + 增量同步策略延续并优化

5.3 PC 端(beaver-desktop 2.0.0)

独立设置中心

  • 账号安全:修改密码、已登录设备列表、远程踢下线
  • 快捷键自定义,配置同步至服务端
  • 关于页与版本更新入口

群推送机器人(PC 端配置入口)

群详情 → 群助手 → 添加「通知机器人」:

  • 群主或管理员可创建自定义推送机器人
  • 创建后获得带 Token 的 Webhook 推送 URL
  • 外部系统 POST 该地址即可向群内推送通知类消息
  • 当前类型为「通知机器人 / 自定义机器人」;不支持 群内 @机器人 触发自动回复

其他

  • 语音消息播放 UI 重构
  • 消息编辑栏、文件消息独立展示组件
  • 动态相关通知接入
  • 登录页与 OAuth 扫码流程对齐

5.4 运营后台(beaver-manager 2.0.1)

  • 用户 360 视图:基本信息、关系、会话、操作记录聚合展示
  • 用户批量状态变更、批量删除
  • 内容安全与举报审核流程
  • 会话审计
  • 在线监控大盘、用户在线设备详情
  • 应用版本与发版策略管理

5.5 开放平台门户(beaver-open 2.0)

2.0 阶段,门户侧 仅覆盖 OAuth2 应用管理,主要包括:

  • 创建 OAuth2 应用,获取 AppId、AppSecret
  • 配置 redirect_uri 与 Scope
  • 密钥管理与 Token 吊销

当前门户未提供:IM 事件订阅 Webhook 配置、群内 @机器人 交互管理。这两类能力与 OAuth2 门户无关,需与下文「能力边界」区分。

5.6 OAuth 授权页(beaver-oauth 2.0)

面向终端用户的授权确认界面,与 ⑤ 门户、① 服务端 open/auth 模块配合:

  • 扫码登录确认
  • OAuth2 标准授权页
  • H5 授权场景

授权页独立部署,避免与开发者门户混在同一前端工程。


6. 开放相关能力边界(2.0 实测结论)

接入前建议先确认边界,避免按「全功能开放平台」预期开发:

能力 2.0 状态 说明
OAuth2 第三方登录 已支持 ⑤ 门户 + ⑥ 授权页 + ① open/auth
群通知单向推送 已支持 ③ PC 群助手创建机器人,拿 Webhook URL
开放平台配置 IM 事件 Webhook 未在门户开放 ---
群内 @机器人 交互 未支持 ---
机器人与用户双向对话 未支持 ---

OAuth2 解决身份接入;群推送机器人解决「系统 → 群聊」通知。二者入口与协议不同,不宜混为一谈。


7. 部署依赖建议

按常见私有化部署顺序:

  1. 部署 beaver-server(必选)
  2. 按需部署 beaver-flutterbeaver-desktopbeaver-manager
  3. 若需 OAuth2 接入,再部署 beaver-openbeaver-oauth,并确保 open 相关微服务已启动
  4. 群推送机器人无需在门户配置,在 PC 客户端群助手中创建即可

文档与部署说明见项目文档站;本地与服务器部署亦有视频教程可供对照。


8. 小结

海狸 IM 2.0 的主要变化不在单一功能点,而在 工程拆分能力边界清晰化

  • 六个仓库分别承担聊天、运营、OAuth2、授权 UI 等职责
  • 客户端消息与媒体能力在 2.0 集中补全
  • 开放能力现阶段以 OAuth2 为主;群机器人为 PC 端配置的单向推送,非交互式 @机器人

后续版本计划在事件订阅、交互式机器人等方向继续迭代;具体以仓库 CHANGELOG 与文档为准。


参考链接

工程 地址
beaver-server https://github.com/wsrh8888/beaver-server
beaver-flutter https://github.com/wsrh8888/beaver-flutter
beaver-desktop https://github.com/wsrh8888/beaver-desktop
beaver-manager https://github.com/wsrh8888/beaver-manager
beaver-open https://github.com/wsrh8888/beaver-open
beaver-oauth https://github.com/wsrh8888/beaver-oauth
文档 https://wsrh8888.github.io/beaver-docs/
相关推荐
JOJO数据科学4 小时前
JupyterLab Electron 鸿蒙 PC 适配全记录:从 Python 原生崩溃到 node-static 本地工作台
python·electron·harmonyos
小碗细面5 小时前
ego lite:让 AI Agent 操作浏览器快 3 倍的秘密 ⭐
浏览器·ai编程
名不经传的养虾人6 小时前
从0到1:企业级AI项目迭代日记 Vol.47|从“能说”到“能上手”
大数据·人工智能·ai编程·企业ai·多agent协作
JIngles1236 小时前
flutter避免对widget图片作重复刷新(含实际图片发生变化或不发生变化)
flutter
lulu12165440786 小时前
OpenRouter Fusion 多模型融合架构深度拆解:预算级模型组团打平 Fable 5,多模型协作才是 AGI 的正确打开方式?
java·人工智能·架构·ai编程·agi
恋猫de小郭6 小时前
Redis 作者反驳「中国模型之所以强,是因为通过 API 蒸馏了美国模型」
前端·人工智能·ai编程
OpenTiny社区7 小时前
这次更新太良心!GenUI SDK v1.2.0 轻量化 + 稳流式 + 超强 Playground
前端·vue.js·ai编程
程序员黑豆7 小时前
AI全栈开发系列开篇:从Java全栈到AI应用实战
前端·ai编程·全栈
程序员鱼皮7 小时前
提示词工程已死,Loop Engineering 称王!保姆级教程 + 项目实战
前端·后端·ai编程