了解现代实时事件架构

举报
码乐 发表于 2025/12/03 13:10:54 2025/12/03
【摘要】 1 简介MCP架构的服务本质上是一个运行在服务器上的“前端代理大脑” + “实时事件总线” + “工具执行沙盒”,它彻底抛弃了传统 MVC 的“页面-请求-响应”范式。改为MCP:所有参与方(用户、Claude、前端页面、其他用户)都通过同一个 WebSocket 连接到这个“中央大脑”,大脑负责: • 协调 Claude 的思考与工具调用• 执行所有工具(保护 API Key)• 实时...

1 简介

MCP架构的服务本质上是一个运行在服务器上的“前端代理大脑” + “实时事件总线” + “工具执行沙盒”,它彻底抛弃了传统 MVC 的“页面-请求-响应”范式。

改为MCP:

所有参与方(用户、Claude、前端页面、其他用户)都通过同一个 WebSocket 连接到这个“中央大脑”,

大脑负责:

  • 协调 Claude 的思考与工具调用
• 执行所有工具(保护 API Key)
• 实时广播状态变更
• 维护会话与内存状态

这才是 2025 年真正的 Web 端实时 AI 应用架构范式,而传统 MVC 已经完全无法胜任这种交错、实时、多方协作的场景。

2 类比理解

  • 最直观的比喻

传统 MVC 应用 类似 邮局(你寄信 → 等回复)
AI的 MCP 架构服务 类似 微信群聊 + 群机器人
Claude 类似 群里一个超级智能的成员
tool_call 类似 @机器人 执行命令
broadcastChatMessage 类似 群消息自动推送
WebSocket 类似 所有人都在同一个群里

当你理解了MCP是“一个带工具调用能力的超级微信群服务器”,你就理解了它的全部精髓。

这就是为什么它看起来“乱”、没有 Controller、没有路由、满屏 channel 和 sync.Map,因为它根本不是 MVC,它是 实时协作式 AI 应用的新范式。

3 如何进行设计和实现

Go 语言实现一个生产级 MCP(Model Context Protocol)WebSocket 服务,专门服务于 Web 端实时应用(如在线聊天、AI 客服、文档协同编辑、AI 代理控制面板等),并完美支持 Claude 的交错思考(Interleaved Thinking),是当前最前沿的 AI-Native Web 架构之一。

WebSocket 服务是一个专为前端实时 AI 应用(特别是支持 Claude 交错思考 / Interleaved Thinking)设计的、轻量级、高性能的工具调用协议层,其核心目标是让 Web 前端通过一个单一 WebSocket 长连接,就能同时拥有:

实时聊天消息收发(类似传统即时聊天室)
与大模型(Claude)进行带工具调用的交错思考(tool use in streaming)
不暴露 Anthropic API Key 到前端
支持多会话、广播、状态同步

4 实现原理及对比

与传统 MVC 架构的区别与联系两个维度,深入剖析。

MCP 服务的核心实现原理(为什么能做到实时 + 工具交错)

    1. 协议层:MCP(Model Communication Protocol 自研协议)

基于 JSON 的轻量消息协议,类似 JSON-RPC 2.0 + LSP(Language Server Protocol)的混合体
核心消息类型:

initialize / initialize_response:握手,声明可用 tools
tool_call:前端或 Claude 请求调用工具
tool_result / tool_error:工具执行结果返回

自定义事件(如 chat_message)用于推送

    1. 架构核心:WebSocket 作为“双向 RPC + 事件总线”

传统 HTTP 是请求-响应,单向、短连接。而这里:
textWeb 前端 ← WebSocket (双向) → Go MCP Server ←→ Anthropic Claude (stream)

关键创新点在于:

角色传统做法MCP 服务做法(关键突破)Claude 调用工具前端直接调用 → 暴露 API KeyGo 服务端代理,所有工具都在服务端执行工具结果如何回到 Claude只能等整轮结束再发新请求通过 chan MCPMessage + stream.SendToolResult() 实现流中动态插队实时推送聊天消息轮询或 SSE直接通过 sessions.Range 广播到所有 WebSocket前端状态同步复杂的前后端状态管理所有状态(聊天记录、工具)集中在服务端,前端无状态

    1. “交错思考”实现的核心闭环(最精妙的部分)

Go 1. Claude 在流式响应中发出 tool_use

    case anthropic.ToolUseEvent:
        // 2. Go 服务器拦截,构造 MCP tool_call 消息
        // 3. 直接调用本地的 tool(如 send_message)
        session.handleToolCall(toolCallMsg)

        // 4. 工具执行完发 tool_result → handleClaudeToolResult 收到
        // 5. 通过 channel 把结果塞回 Anthropic 的 stream
        stream.SendToolResult(result.ID, result.Result, ...)

这形成了一个完美的闭环:Claude → Go → Tool → Go → Claude,整个过程在一次 stream 中完成,中间不需要断开重新发请求。

这就是真正的 Interleaved Thinking / Thinking with Tools in Streaming,而这个能力在 2025 年只有 Anthropic 最高级别 beta 才开放。

5 与层次架构的区别与联系

  维度  				 层次架构   							MCP架构服务     
  核心区别     通信协议HTTP REST/GraphQL,短连接WebSocket 	长连接从“请求-响应”到“事件驱动双向通信”
  会话状态     无状态(靠 JWT/Cookie)或服务器 Session 		有状态(sessions sync.Map 存活连接)服务端持有长连接对象,可随时 push
  控制器(Controller)	每个 URL 一个函数,处理完返回 没有传统 Controller,消息驱动无路由概念,按 msg.Type 和 msg.Method 分发业务逻辑位置
  Service 层 		tool_xxx 函数 + 全局广播函数 		业务被拆成“可被工具调用”的纯函数数据流向前端 → C → M → 响应 → 前端双向、交叉、并发Claude、用户、前端三方可同时发消息
  实时性 			靠轮询或 SSE 实现伪实时 				原生推送,延迟 <50ms质的飞跃 
  前端复杂度 		需要维护大量 API、状态、轮询 		逻辑只维护一个 WebSocket,逻辑极简前端代码量减少 70%+
  是否适合AI-Agent 	勉强(工具调用要多轮 HTTP) 		天生为 Agent + Tools 设计这是最大差异

因此MCP 服务是“后 MVC 时代”的实时 AI 应用架构

传统 MVC WebSocket 架构 Model(数据)- View(页面)- Controller(路由)Session(长连接)- Tool(能力)- Message(事件)适合 CRUD、表单提交
MCP架构适合实时协同、AI Agent、交错思考扩展性靠加 API扩展性靠“加一个 tool 函数”状态存在数据库状态可存在内存(chatHistory + sessions)。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。