AI辅助,两天实现一个IM系统?

AI辅助,两天实现一个IM系统?

前言

        最近写项目的时候,有个项目中需要实现聊天系统 ,所以打算周末两天借助AI辅助进行开发,此篇文章说一下自己使用AI辅助开发的一些心得;其中会把完整的使用过程介绍一下。

后端:Claude Code

前端:Gemini

一、 架构设计

        在设计 IM 系统时,要明确自己的核心目标,我们的核心目标是:实时性、可靠性、可扩展性。

        在架构设计的时候其实我也请教了一下AI,有一说一都挺不错的,以下是统一话术各个AI的个人使用总结:

1.GPT

设计的比较完善清晰但是具体细节略少,整体来说还是挺靠谱的;

2.deepseek

说实话deepseek也挺好,虽然但是,我要的是整体架构设计它却给我实现一个demo(同一话术),也是笑不活了,请看VCR

反正就是前后端代码都帮你实现了,表也贴心的帮你实现了虽然不能直接用,哈哈哈;有一说一确实挺难绷的

3.Gemini

        说实话,gemini确实有点东西,整体架构设计和技术上都挺好的,而且还会根据需求分析阶段性开发。

后面也试了其他AI我就不一一说明了。。。。。

我采用的是HTTP + WebSocket + Redis的混合架构。实现过程就是用文章开头说的那俩AI实现的,然后我就给他方向和部分代码修正

1.1 核心设计

  • WebSocket 模块:负责建立长连接,实现双向实时通信。
  • 消息中台 (ChatHub):负责所有连接的管理(注册/注销)、心跳检测、以及跨实例的消息分发。
  • 消息流转模型
  • 持久化消息:用户通过 HTTP 发送消息 -> 存入数据库 -> 推送至 Hub -> 转发给接收者。
  • 瞬时事件:如“正在输入(TYPING)”,不经过数据库,直接通过 WebSocket 广播转发(追求响应速度,哈哈哈)。
  • 分布式方案:利用 Redis Pub/Sub 实现跨服务器实例的消息分发。当用户连接在不同服务器上时,Redis 确保消息能够准确投递。

二、 技术选型

技术选型是我定的,毕竟不是做demo的要符合实际

维度选型理由
开发语言Go (Golang)并发性能强,原生支持 Goroutine,非常适合处理高并发长连接。
Web 框架Gin轻量、高效,路由性能卓越。
长连接库Gorilla WebSocketGo 社区最成熟、性能最稳定的 WebSocket 库。
存储层MySQL (GORM)消息的可靠持久化,支持复杂的关联查询(如会话列表、成员权限)。
缓存/发布订阅Redis实现用户在线状态追踪、分布式消息同步(Pub/Sub)。

三、 实施方案与核心代码落地

这块就是我告诉AI引导它一步一步实现的了

3.1 核心数据模型 (Model)

IM 系统的基础是会话(Conversation)和消息(Message),以下是部分数据模型设计

// Conversation 会话模型 type Conversation struct {     Base     Type      string               `gorm:"type:varchar(20);not null" json:"type"` // private, group     Name      string               `gorm:"type:varchar(100)" json:"name"`     Avatar    string               `gorm:"type:varchar(255)" json:"avatar"`     CreatorID uint                 `json:"creatorId"`     Members   []ConversationMember `json:"members,omitempty"`     // ... 更多字段 }
// Message 消息模型 type Message struct {     Base     ConversationID string `gorm:"type:char(36);index" json:"conversationId"`     SenderID       uint   `json:"senderId"`     Sender         User   `gorm:"foreignKey:SenderID" json:"sender"`     Type           string `gorm:"type:varchar(20)" json:"type"` // text, image, file, voice     Content        string `gorm:"type:text" json:"content"`     IsRead         bool   `gorm:"default:false" json:"isRead"` }

3.2 消息中台 (ChatHub) 的实现

这是是整个 IM 系统的“心脏”,它维护着所有在线的 Client 连接的;这部分很重要,基本上是AI实现后我再修修改改或者引导AI帮你修改

部分代码示例:

type ChatHub struct {     clients    map[uint]*Client     broadcast  chan []byte     register   chan *Client     unregister chan *Client     mu         sync.RWMutex     Redis      *redis.Client     ChatRepo   *repository.ChatRepository     ctx        context.Context } func NewChatHub(rdb *redis.Client, chatRepo *repository.ChatRepository) *ChatHub {     return &ChatHub{         broadcast:  make(chan []byte),         register:   make(chan *Client),         unregister: make(chan *Client),         clients:    make(map[uint]*Client),         Redis:      rdb,         ChatRepo:   chatRepo,         ctx:        context.Background(),     } }

3.3 分布式推送与在线状态

多实例部署,使用 Redis 进行消息分发:

代码示例:

// PushToUsers 通过 Redis Pub/Sub 将消息发送给指定用户(支持跨实例) func (h *ChatHub) PushToUsers(userIDs []uint, msg WSMessage) {     psMsg := PubSubMessage{         TargetUsers: userIDs,         Payload:     msg,     }     payload, _ := json.Marshal(psMsg)     h.Redis.Publish(h.ctx, "chat_channel", payload) } // pushToLocalUsers 仅将消息发送给连接到“当前实例”的客户端 func (h *ChatHub) pushToLocalUsers(userIDs []uint, msg WSMessage) {     // ... 锁定 h.clients 并通过 channel 发送消息 ... }

3.4 连接生命周期管理 (Read & Write Pumps)

每个 WebSocket 连接都会开启两个并发协程:一个负责读,一个负责写。

  • ReadPump:解析前端发来的控制指令(如正在输入)。
  • WritePump:处理心跳(Ping/Pong)和下发消息队列。

四、 关键功能实现细节

4.1 会话管理

支持 私聊 和 群聊。私聊会自动检查是否已存在会话,避免重复创建。群聊则包含角色权限管理(管理员、普通成员)。

4.2 消息实时性与持久化

当用户发送消息时,流程如下:

  1. API 调用:前端调用 /api/chat/conversations/:id/messages 发送消息。
  2. 后端落库:消息存入 MySQL,确保不丢失。
  3. 实时推送:后端调用 Hub.PushToUsers,Hub 将消息通过 WebSocket 实时推送到目标用户的客户端。
  4. 回执通知:支持消息已读/未读状态更新,并通过 WS 通知发送方。

4.3 瞬时状态处理 (Ephemeral Events)

对于不需要存库的状态(如 TYPING),系统直接在 Client.readPump 中解析并转发:

   // 处理正在输入状态 (TYPING)         if wsMsg.Type == "TYPING" {             data, ok := wsMsg.Data.(map[string]interface{})             if !ok {                 continue             }             convID, _ := data["conversationId"].(string)             if convID == "" {                 continue             }             // 获取该会话的其他成员并转发             c.Hub.HandleTransientEvent(c.UserID, convID, wsMsg)         }

五、 落地总结

本次 IM 系统的落地,几大技术挑战:

  1. 高性能:通过 Go 协程和 Channel 实现了异步非阻塞的消息分发。
  2. 分布式扩展:引入 Redis Pub/Sub 解决了单机连接上限问题,系统可水平扩展。
  3. 用户体验:引入心跳机制保证连接稳定性,引入在线状态实时通知和输入指示器,提升了产品的互动感。
  4. 安全性:在 WebSocket 升级阶段通过 JWT 进行身份校验,确保只有合法用户能建立连接。

该方案支撑了私聊、群聊、好友申请、实时状态更新等核心 IM 功能。

结语

整体来说,后端实现挺严谨的,也能实现闭环;前端用gemini确实很好,但是也不能百分百还原页面,细节还要手动调整,只要你描述详细代码逻辑实现的很好;不管前端还是后端如果用AI跑通整个项目是不可能的,但是独立功能或者小型项目或者是非业务类型的实现还是很好的;

当然,有时候也会犯病,东扯西扯的,还是需要手动调整;如果0基础用AI实现项目的话企业级的项目还是不行的,如果是demo还是可以的。

目前来说,AI还是不能完全代替程序员的,将来可能会;但是程序员配AI辅助开发确实能极大地提升效率,会轻松很多,0基础就算了,个人感觉0基础使用AI写项目的路还很长,如果是写demo,练手的项目那当我没说。

openAI创始人曾说过,AI不是代替某个岗位的,而是伙伴关系

所以,AI趋势下也不要过多在乎那些营销号,而是拥抱AI让AI成为伙伴!

等有时间了会把相关代码整理到仓库中。如果觉得不错麻烦给个赞吧,给大家拜个年磕一个

效果图:

Read more

手把手教程:通过扣子平台部署OpenClaw并接入飞书,开启AI自动办公

手把手教程:通过扣子平台部署OpenClaw并接入飞书,开启AI自动办公

一分钟搭建,让Openclaw帮你干活 一、什么是OpenClaw?能干什么? 如果你还没听说过OpenClaw,那可能真的错过了2026年AI圈最火的项目。简单来说,OpenClaw是一个能让AI真正替你操作电脑的开源“数字员工”,而不仅仅是一个聊天的机器人。 它的核心价值可以概括为:从“只会说话的嘴”进化成了“能干活的双手”。你通过日常聊天软件(比如飞书、微信)给它派活,它不仅能听懂,还能像真人一样在你的电脑上执行操作——移动文件、浏览网页、发送邮件、跑代码、做数据分析,甚至帮你砍价。 OpenClaw的架构可以通俗地拆解为四个部分: ○ 前台(渠道适配器):你与它对话的窗口,支持飞书、钉钉、Telegram等多种IM工具 ○ 大脑(大模型):负责理解指令、拆解任务,支持接入ChatGPT、Claude、Kimi等多种模型 ○ 双手(技能插件):真正干活的部分,能操控浏览器、文件系统、邮件等 ○ 档案柜(记忆系统)

多模态 AI 应用:图文音视频一体化开发实战教程

多模态 AI 应用:图文音视频一体化开发实战教程

什么是多模态AI 多模态AI是指能够同时处理文本、图像、音频、视频等多种不同类型数据的人工智能系统,它打破了单模态AI的信息壁垒,能更贴近人类理解世界的方式。比如我们日常使用的AI聊天机器人识图功能、视频自动字幕生成工具,都是多模态AI的典型应用。 开发前的核心准备 模型选型建议 模型类型推荐模型适用场景开源轻量模型Qwen-VL-Chat、MiniGPT-4本地部署、快速验证云端API模型GPT-4V、Gemini Pro生产级应用、复杂任务处理专业领域模型CLIP、Whisper图像检索、音频转写等细分场景 环境依赖安装 我们将基于Python生态实现实战项目,需要安装以下核心库: # 基础依赖 pip install torch torchvision transformers pillow # 音频处理依赖 pip install librosa soundfile # 视频处理依赖 pip install opencv-python moviepy # API调用依赖(可选,用于调用云端多模态模型) pip install openai anthropic

A / B测试太慢?AI帮你实时优化实验策略

A / B测试太慢?AI帮你实时优化实验策略

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕AI这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * A/B测试太慢?AI帮你实时优化实验策略 🚀 * 为什么传统A/B测试成了效率黑洞? * AI驱动的实时优化:从“被动等待”到“主动决策” * 贝叶斯优化:AI决策的数学引擎 * 代理模型:预测点击率 * 采集函数:决定下一步策略 * 代码实战:用Python实现AI优化A/B测试 * 代码执行结果示例 * 实时决策流程:AI如何动态调整实验? * 实际业务场景:电商大促的AI优化案例 * 贝叶斯优化 vs 其他AI方法 * 如何在你的系统中落地AI优化? * 步骤1:构建基础数据层 * 步骤2:集成AI优化引擎 * 步骤3:设置停止条件 * 为什么AI优化能避免“实验陷阱”?

AI股票分析师daily_stock_analysis一键部署教程:Python爬虫数据采集实战

AI股票分析师daily_stock_analysis一键部署教程:Python爬虫数据采集实战 你是不是也厌倦了每天手动盯盘,在几十个股票软件和财经新闻网站之间来回切换?想不想拥有一个24小时在线的AI分析师,帮你自动抓取数据、分析行情,还能把分析报告直接推送到你的手机上? 今天,我就带你手把手搭建一个属于自己的AI股票分析系统。这个系统叫daily_stock_analysis,是一个在GitHub上非常火的开源项目。它最大的特点就是“全自动”和“零成本”——利用免费的云端资源和AI大模型,帮你把繁琐的复盘工作自动化。 听起来有点复杂?别担心,这篇教程就是写给新手看的。我会用最直白的话,一步步教你如何在星图GPU平台上把它跑起来,并且重点讲解如何用Python爬虫技术,为这个系统注入“活水”——也就是自动采集股票数据。 整个过程就像搭积木,跟着我做,你也能拥有一个专属的智能投研助理。 1. 准备工作:认识你的AI分析师 在动手之前,我们先花几分钟了解一下我们要部署的这个“家伙”到底能干什么。这样你才知道自己即将拥有一个什么样的工具。 daily_stock_anal