QIM (Quick Instant Messaging) 是一款面向企业的即时通讯解决方案,基于 Vue 3 + Electron 构建,支持 macOS、Windows、Linux 多平台运行。
QIM 提供完整的即时通讯功能,包括单聊、群聊、讨论组、频道等,同时集成了任务管理、日历、笔记、文件管理等办公应用,并配备独立的管理后台系统,为企业团队协作提供一站式解决方案。
| 特性 | 说明 |
|---|---|
| 🔐 单聊 | 加密私聊,支持文本、图片、文件等多种消息类型 |
| 👥 群聊 | 支持创建群聊、邀请成员、设置管理员 |
| 💬 讨论组 | 扁平化讨论,所有成员平等参与 |
| 📢 频道 | 订阅制信息发布,适合公告、通知场景 |
| ✉️ 消息引用 | 回复指定消息,上下文清晰 |
| 🔄 消息撤回 | 2分钟内可撤回,误发无忧 |
| 🔍 消息搜索 | 支持关键词、日期、类型筛选 |
| ✅ 已读回执 | 群聊显示已读人数,单聊显示已读状态 |
- 📝 文本消息 - 支持 URL 自动识别和链接转换
- 🖼️ 图片消息 - 支持大图预览
- 📎 文件消息 - 支持下载、另存为
- 🔗 分享消息 - 分享笔记、便签、文件
- 📱 小程序卡片 - 小程序信息展示
- 📰 资讯卡片 - 新闻链接展示
| 应用 | 说明 |
|---|---|
| 📊 统计报表 | 消息趋势、文件分布、任务完成率可视化 |
| 📅 日历 | 月视图日历,事件管理,支持提醒 |
| 📝 笔记 | Markdown 编辑器,实时预览 |
| 📌 便签 | 快捷笔记,支持多色分类 |
| 📁 文件管理 | 文件上传、下载、分级管理 |
| ✅ 任务管理 | 看板视图,待办/进行中/已完成 |
| 🤖 AI 助手 | 智能对话机器人交互 |
| 🔗 短链接 | URL 缩短与管理 |
- 🏢 树形组织 - 多级部门展示
- 👤 员工信息 - 头像、姓名、职位、部门
- 🔍 快速搜索 - 搜索用户或部门
- 💬 一键私聊 - 双击用户直接发起私聊
- 🤖 AI 助手 - 支持多种大模型(OpenAI、Claude、通义千问、文心一言、腾讯混元等)
- 💬 群聊 AI - 智能群助手,支持 @ 触发和自动回复
- 🖼️ AI 分身 - AI 生成虚拟形象
- 📝 智能摘要 - AI 自动生成消息摘要
- 🔍 智能搜索 - AI 驱动的语义搜索
- 🔑 JWT 认证 - 无状态安全认证
- 🔐 双因素认证 - 额外安全保护(可选)
- 📝 登录日志 - 记录登录 IP、操作系统、版本
- 🚪 会话管理 - 置顶、免打扰、隐藏
- 🛡️ 黑名单管理 - 违规用户封禁与恢复
- 🚫 敏感词过滤 - 内容安全过滤
| 模块 | 功能说明 |
|---|---|
| 📊 仪表盘 | 系统运行概览、核心指标统计、最近注册 |
| 👥 用户管理 | 用户 CRUD、角色分配、状态管理 |
| 🏢 组织架构 | 部门树管理、员工分配、层级结构维护 |
| 💬 群组管理 | 群组查看、成员管理、删除群组 |
| 🗨️ 会话管理 | 会话列表查看、会话详情 |
| 📢 频道管理 | 频道增删改查、订阅管理 |
| 📦 应用管理 | 应用 CRUD、分类管理、状态控制 |
| 📱 小程序管理 | 小程序增删改查、配置管理 |
| 📨 系统消息 | 消息发送、历史记录查看 |
| 🔔 通知管理 | 通知推送、模板管理 |
| 🚫 黑名单管理 | 黑名单查看、移出黑名单 |
| 📈 数据统计 | 用户/群组/消息统计、趋势图表 |
现代化的登录界面,支持记住密码、服务器地址配置
左侧边栏:最近联系人、组织架构、群聊、应用中心 右侧主区域:聊天窗口,支持消息发送、群成员列表
支持多种消息类型:文本、图片、文件、分享、引用回复
集成了统计报表、日历、笔记、便签、文件管理、任务管理
| 技术 | 说明 |
|---|---|
| Vue 3 | 渐进式 JavaScript 框架 |
| TypeScript | 类型安全的 JavaScript 超集 |
| Element Plus | 桌面端 UI 组件库 |
| Vite | 下一代前端构建工具 |
| Electron | 跨平台桌面应用框架 |
| Axios | HTTP 请求库 |
| Font Awesome | 图标库 |
| 技术 | 说明 |
|---|---|
| Go | 高性能编译型语言 |
| Gin | 高性能 HTTP Web 框架 |
| GORM | Go 语言 ORM 库 |
| Gorilla WebSocket | WebSocket 实现 |
| SQLite / MySQL | 关系数据库,支持双数据库 |
| JWT | JSON Web Token 认证 |
┌─────────────────────────────────────────────────────────────┐
│ 客户端 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ macOS │ │Windows │ │ Linux │ │ Web │ │
│ │Electron │ │Electron │ │Electron │ │ Browser │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
└───────┼────────────┼────────────┼────────────┼──────────────┘
│ │ │ │
└────────────┴─────┬──────┴────────────┘
│
HTTP / WebSocket
│
┌───────────────────────────┼──────────────────────────────────┐
│ API Gateway │
│ localhost:8080 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Gin Router │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ Auth │ │ Message │ │ User │ │ │
│ │ │ Handler │ │ Handler │ │ Handler │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ Group │ │ File │ │ Note │ │ │
│ │ │ Handler │ │ Handler │ │ Handler │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ┌────────────────────────┼────────────────────────────────┐ │
│ │ WebSocket Hub │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ Register │ │ Broadcast│ │ SendTo │ │ │
│ │ │ Client │ │ Message │ │ User │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
└───────────────────────────┼──────────────────────────────────┘
│
┌─────────────┴─────────────┐
│ │
┌─────▼─────┐ ┌──────▼──────┐
│ SQLite │ │ MySQL │
│ Database │ │ Database │
└───────────┘ └─────────────┘
qim/
├── qim-client/ # 前端客户端项目
│ ├── src/
│ │ ├── components/ # Vue 组件
│ │ │ ├── apps/ # 应用组件
│ │ │ ├── chat/ # 聊天组件
│ │ │ ├── layout/ # 布局组件
│ │ │ └── shared/ # 共享组件
│ │ ├── composables/ # 组合式函数
│ │ ├── stores/ # 状态管理
│ │ ├── types/ # TypeScript 类型
│ │ ├── utils/ # 工具函数
│ │ ├── App.vue
│ │ └── main.ts
│ ├── electron/ # Electron 相关文件
│ ├── package.json
│ └── vite.config.ts
│
├── qim-admin/ # 管理后台项目
│ ├── src/
│ │ ├── api/ # API 接口
│ │ ├── components/ # 组件
│ │ ├── layouts/ # 布局组件
│ │ ├── router/ # 路由配置
│ │ ├── stores/ # 状态管理
│ │ ├── views/ # 页面视图
│ │ ├── App.vue
│ │ └── main.ts
│ ├── package.json
│ └── vite.config.ts
│
├── qim-server/ # 后端项目
│ ├── ai/ # AI 相关(多模型支持)
│ ├── config/ # 配置
│ ├── database/ # 数据库
│ │ ├── database.go # 数据库连接
│ │ ├── ddl_mysql.sql # MySQL 建表语句
│ │ └── ddl_sqlite.sql # SQLite 建表语句
│ ├── handler/ # 处理器
│ ├── middleware/ # 中间件
│ ├── model/ # 数据模型
│ ├── service/ # 业务服务
│ ├── ws/ # WebSocket
│ ├── uploads/ # 上传文件目录
│ ├── main.go
│ └── go.mod
│
├── docs/ # 文档目录
│ └── realtime-communication/
│ ├── data-migration-from-schema.md # 数据迁移方案
│ └── ...
│
├── README.md # 项目说明
├── schema.sql # 旧版数据库结构(参考)
└── 功能完善实施方案.md # 功能完善计划
- Node.js >= 16.x
- Go >= 1.18
- npm 或 yarn
- MySQL >= 8.0(可选,使用 SQLite 则不需要)
# 进入后端目录
cd qim-server
# 复制配置示例文件
cp config.yaml.example config.yaml
# 编辑配置(根据需要修改数据库配置)
# 默认使用 SQLite,如需使用 MySQL 修改 database.type 为 mysql# 下载依赖
go mod download
# 启动服务(自动创建数据库和表)
go run main.go服务将在 http://localhost:8080 启动。
数据库说明:
- 默认使用 SQLite,数据存储在
qim.db文件 - 如需使用 MySQL,修改
config.yaml中的database.type为mysql,并配置数据库连接信息
# 新开终端,进入前端目录
cd qim-client
# 安装依赖
npm install
# 启动开发服务器
npm run dev访问 http://localhost:5173 查看应用。
# 新开终端,进入管理后台目录
cd qim-admin
# 安装依赖
npm install
# 启动开发服务器
npm run dev访问 http://localhost:5174 查看管理后台。
cd qim-client
# 构建 Web 资源
npm run build
# 打包 Electron 应用
npm run electron:build构建完成后,应用包位于 qim-client/electron-dist/ 目录。
- 启动应用后,输入用户名和密码
- 可选:勾选"记住密码"下次自动登录
- 点击"登录"按钮进入主界面
发起单聊:
- 在左侧栏选择"组织架构"
- 找到目标用户,双击或点击"发起私聊"
- 在聊天窗口发送消息
创建群聊:
- 点击左侧栏的"+"按钮
- 选择"创建群聊"
- 输入群名称,添加群成员
- 点击"创建"
- 在左侧栏选择"应用"
- 选择要使用的应用(统计报表、日历、笔记等)
- 在右侧区域进行操作
- 在左侧栏选择"应用"
- 选择"AI 助手"应用
- 在机器人列表中选择一个机器人
- 在聊天窗口中输入消息,与机器人进行对话
- 点击"返回"按钮退出 AI 助手
- 在笔记、便签或文件中找到要分享的内容
- 点击"分享"按钮
- 选择分享到的用户或群聊
- 确认发送
编辑 qim-server/config.yaml:
database:
type: sqlite # 或 mysql
path: ./qim.db # SQLite 数据库路径
# MySQL 配置(当 type 为 mysql 时生效)
host: localhost
port: 3306
username: root
password: your_password
database: qim_serverai:
provider: openai # 可选:openai, anthropic, baidu, alibaba, tencent, bytedance
openai:
api_key: your_api_key
model: gpt-3.5-turbo
base_url: https://api.openai.com/v1前端默认连接 http://localhost:8080,可在登录界面点击"设置服务器地址"修改。
后端默认端口为 8080,如需修改请编辑 qim-server/config.yaml。
mysql -u root -p
CREATE DATABASE qim_server CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE qim_server;
SOURCE ddl_mysql.sql;SQLite 数据库会在首次运行时自动创建,无需手动执行建表语句。
如需从旧版 OIM 系统迁移数据,请参考:数据迁移方案
- 已读回执功能
- 群聊 AI 助手
- AI 多模型支持
- 深色模式支持
- 消息转发功能
- @提及功能
- 消息表情反应
- 语音/视频通话 (WebRTC)
- 消息漫游(多端同步)
- 离线消息推送
- 键盘快捷键
- 移动端适配
- 表情包商店
- 视频会议
- 企业微信/钉钉集成
- 双因素认证后端验证为模拟实现
欢迎提交 Issue 和 Pull Request!
MIT License
QIM - 让沟通更简单,让协作更高效



