Skip to content

RobustMQ Test Agent 技术设计文档 ​

RobustMQ Test Agent 是一个专为 RobustMQ 定制的 AI 测试 Agent,用来解决 RobustMQ 自身的质量问题。通过 AI Agent 驱动混沌测试的完整闭环——自动部署集群、注入故障、执行多语言 SDK 测试、分析日志、生成报告——持续不间断地验证 RobustMQ 的稳定性和协议兼容性。


背景 ​

RobustMQ 是一个多协议消息中间件,目标是覆盖 MQTT、mq9 等主流协议,定位生产级使用。

消息中间件的质量门槛极高。用户评估一个消息中间件,第一个问题不是功能够不够,而是敢不敢用:消息会不会丢、节点挂了能不能恢复、客户端 SDK 换个版本还能不能正常连。这些问题靠单元测试和常规集成测试覆盖不到,必须在真实的混乱条件下持续验证。

对 RobustMQ 而言,协议兼容性是最大的风险,也是最大的竞争力。支持多协议意味着需要兼容各语言、各版本的客户端 SDK。任何一个 SDK 版本出现不兼容,用户就无法平滑接入,项目的可信度直接受损。如何低成本、系统化地保证协议兼容性,是 RobustMQ 能否存活和持续成长的核心命题。


现有测试的局限 ​

RobustMQ 目前有单元测试和基础集成测试,覆盖核心逻辑的正确性。但存在以下盲区:

协议兼容性未系统覆盖:不同语言、不同版本的客户端 SDK 与 broker 的兼容性没有持续验证机制,兼容问题只能靠用户踩坑后反馈。

故障场景未覆盖:broker 宕机、进程 kill、节点重启过程中的消息投递行为没有系统化测试。

长时间运行问题未覆盖:内存泄漏、连接池耗尽、消息积压后的行为,只有长时间运行才能暴露,当前缺乏这类验证机制。

组合场景未覆盖:单个异常容易测,多个异常同时发生时的系统行为几乎没有覆盖。

问题发现周期过长:传统开源社区依赖用户发现问题、提 issue、等待修复,这个流程往往以月计。对一个早期项目,这个节奏太慢,无法支撑快速迭代。


目标 ​

基于 AI 构建一套专为 RobustMQ 定制的全自动化混沌测试系统。有三个核心目标:

第一,自动发现问题,加速修复。 用 AI 替代人工完成测试执行、日志分析、问题定位的全流程,极大压缩从问题出现到被发现的时间。第一阶段聚焦代码 bug、逻辑错误、可优化空间;第二阶段深入挖掘安全问题;第三阶段引入 Claude Code 对源码进行深度静态分析,直接辅助修复。

第二,公开测试过程,建立社区信任。 所有测试记录、分析报告、问题修复状态完全公开,包括失败记录。我们不怕暴露问题,怕的是问题存在却没人看到、没人修复。完全透明的测试过程,是建立社区信任最直接的方式,比任何文档和声明都有说服力。

第三,系统化解决协议兼容性问题。 引入多语言、多版本 SDK 矩阵,由 AI Agent 自动执行覆盖,自动识别兼容问题并归因。用低成本的方式持续保证 RobustMQ 对各主流客户端的兼容性。

这套系统本身完全由 Claude Code 实现。它属于非核心系统,代码逻辑以工具函数为主,是 Claude Code 擅长的场景,不需要消耗核心开发精力。


系统设计 ​

核心思路 ​

本质上,这是混沌工程的思路,全流程 AI 自动化。

混沌工程的核心是:主动构造故障,观察系统行为,发现隐藏问题。传统混沌工程需要人工设计场景、人工分析结果、人工撰写报告,成本高,难以持续。这套系统用 AI Agent 替代人工完成这三个环节,让混沌测试可以不间断地持续运行。

系统由 AI Agent + 工具集 构成。AI Agent 是大脑,读取场景描述,自主决定执行顺序,根据中间结果动态调整策略,最终生成报告。工具集是手脚,执行具体的集群操作、故障注入、日志收集。没有 hardcode 的执行流程,没有 Python 调度逻辑,AI 驱动一切。

实现上极简:Claude API tool use + 若干 Python 工具函数。不引入 LangGraph、CrewAI 等 Agent 框架——这些框架解决多 agent 协作问题,本系统是单 agent + 固定工具集,直接用原生 tool use 更简单、更可控。

整体架构 ​

img

AI Agent 读取场景描述,调用工具集执行操作,观察返回结果,决定下一步动作,最终生成报告。整个过程无人工干预,持续不间断运行。

AI Agent ​

使用 Claude API tool use 实现。输入是场景的自然语言描述,Agent 据此自主完成:

  • 决定本轮部署几个节点、使用什么配置
  • 选择注入哪种故障、在什么时机注入
  • 选择使用哪个语言、哪个版本的 SDK 运行测试客户端
  • 判断消息投递结果是否符合预期
  • 收集日志、分析异常、定位可疑原因
  • 生成结构化测试报告

Agent 可以多轮调用工具,根据中间结果动态调整。例如发现某个指标异常时,Agent 可以自主决定是换 SDK 版本重跑以确认是兼容问题,还是深入分析日志定位 broker 端原因。

工具集 ​

工具功能
cluster_start(nodes, config)启动指定节点数的 RobustMQ 集群
cluster_stop()销毁当前集群,释放资源
inject_fault(type, target, params)注入故障:kill / 网络延迟 / 丢包 / 磁盘压力
run_client(protocol, sdk_lang, sdk_version, scenario)运行指定语言和版本的测试客户端,返回消息对账结果
get_logs(level, time_range)获取 broker 日志,按级别和时间过滤
get_metrics(node)获取集群指标:连接数、消息速率、内存使用等
push_report(report)将测试报告推送到 GitHub 公开仓库

工具函数只负责执行,不包含业务逻辑。所有判断和决策在 Agent 侧完成。

报告格式 ​

每次测试生成结构化报告,包含:

  • 测试时间、场景名称、协议、SDK 语言和版本、集群配置
  • 执行过程:Agent 的工具调用序列及每步结果
  • 验证结果:消息发送总数、接收总数、丢失数、重复数
  • 问题描述:发生了什么现象,在哪个阶段出现
  • 初步分析:可疑原因、需要排查的代码路径
  • 严重程度:P0 / P1 / P2
  • 原始日志:完整 broker 日志

报告以 JSON + Markdown 双格式输出,推送到 GitHub 公开仓库,作为 Dashboard 的数据源。


协议兼容性测试 ​

协议兼容性是本系统的核心关注点。RobustMQ 支持多协议,需要兼容各语言、各版本的客户端 SDK。任何一个兼容性问题都会直接影响用户接入体验。

多语言多版本 SDK 矩阵 ​

AI Agent 在执行测试时,系统化地覆盖不同语言和版本的 SDK 组合:

MQTT SDK 覆盖范围

语言SDK覆盖版本
Pythonpaho-mqtt1.x / 2.x
Goeclipse/paho.mqtt.golang1.x
Rustrumqttc0.2x
JavaEclipse Paho Java1.x
JavaScriptmqtt.js4.x / 5.x
CEclipse Paho C1.x

mq9 SDK 覆盖范围

随 mq9 协议实现推进,持续增加各语言官方 SDK 的覆盖。

兼容性问题归因 ​

同一场景在不同 SDK 语言和版本下执行,AI Agent 对比结果,自动识别三种问题模式:

现象归因
相同场景,不同 SDK 结果不一致协议实现问题,broker 端行为与协议规范存在偏差
特定 SDK 版本失败,其他版本正常SDK 版本兼容问题,需要针对该版本做适配
所有 SDK 均失败broker 端问题,与客户端实现无关

场景库设计 ​

场景用自然语言描述,AI Agent 读懂后自主执行,不需要脚本,不需要流程图。场景库随协议支持扩展持续增加。

MQTT ​

场景类型描述
QoS 0/1/2 正常收发基础验证各 QoS 级别消息投递正确性
大消息收发(1MB+)基础验证大包处理能力
高并发连接(1000+)基础验证连接管理稳定性
持久会话重连基础断开重连后离线消息是否正确补发
broker 节点 kill -9故障消息传输中途进程被强杀,验证消息完整性
broker 节点正常重启故障重启过程中消息投递行为
网络延迟注入故障高延迟下 QoS 1/2 重传逻辑是否正确
网络丢包注入故障丢包场景下消息可靠性
大量连接同时断开客户端异常1000 个连接同时断开对 broker 的冲击
重连风暴客户端异常断开后立即重连,反复循环
慢消费者客户端异常消费速率远低于生产速率,验证积压行为
发布中途 broker 宕机 + 重连组合宕机恢复后 QoS 1/2 消息是否补发
慢消费者 + broker 重启组合积压消息在重启后是否完整保留

mq9 ​

场景类型描述
基础 Mailbox 创建和销毁基础Mailbox 生命周期管理正确性
高/普通/低优先级消息收发基础三级优先级投递顺序验证
TTL 到期 Mailbox 自动清理基础过期 Mailbox 是否正确回收
多 Agent 并发写同一 Mailbox基础并发写入下消息完整性
PUBLIC.LIST 订阅发现基础系统 Mailbox 列表维护正确性
broker 节点 kill -9故障强杀后 Mailbox 数据是否保留
broker 节点正常重启故障重启后未消费消息是否完整
网络延迟注入故障高延迟下消息投递行为
大量 Mailbox 同时创建客户端异常高并发创建对 broker 的冲击
Agent 发送后立即销毁 Mailbox客户端异常未消费消息的处理行为
慢消费 Agent + 消息积压客户端异常积压场景下优先级队列行为
broker 重启 + 高优先级消息未消费组合重启后优先级顺序是否保持
多 Agent 并发写 + 网络抖动组合双重压力下消息完整性

Quality Dashboard ​

所有测试记录通过官网公开展示,不做任何过滤,包括失败记录和尚未修复的问题。

我们的态度是:不怕暴露问题,怕的是问题存在却没人看到、没人修复。公开失败记录,反而是质量认真对待的证明。一个已知问题从发现到修复的完整过程都在上面,这比任何质量声明都有说服力。

列表页:时间、场景名、协议、SDK 语言和版本、状态(pass/fail)、一句话摘要,支持按协议、状态、时间筛选。

详情页:完整测试背景、Agent 执行过程、消息投递验证结果、原始 broker 日志、AI 分析报告、问题修复状态(open / fixed in vX.X.X)。

数据存储在 GitHub 公开仓库,官网静态读取,零后端。


演进规划 ​

第一阶段:代码质量

聚焦发现代码 bug、逻辑错误、可优化空间。AI Agent 通过混沌测试触发问题,分析日志定位原因,生成可操作的修复建议。目标是快速建立 RobustMQ 的基础稳定性。

第二阶段:安全问题

在基础稳定性建立后,引入安全场景:异常输入、边界条件、协议攻击面。AI Agent 深入挖掘潜在安全问题。

第三阶段:代码深度分析

引入 Claude Code 对 RobustMQ 源码进行持续的静态分析,生成收敛的、不过度的分析报告,发现逻辑错误和可优化空间,并直接辅助修复。进一步压缩问题发现到修复的时间,让整个研发循环更快。


总结 ​

这套系统本质上是混沌工程的思路,全流程 AI 自动化。

在 AI 时代,基础设施项目的竞争不只是技术架构的竞争,也是谁能在合适的位置用好 AI 的竞争。RobustMQ 的协议兼容性挑战、质量验证挑战,恰好是 AI 能够低成本系统化解决的问题。

这个项目不是 RobustMQ 的核心引擎,但会是最重要的支撑系统。它解决的是 RobustMQ 能不能被信任、能不能被规模化采用的问题。

核心价值有两点:一是加速产品成长,传统开源社区问题发现到修复周期以月计,这套系统目标把它压缩到天级,AI 不间断地跑,不间断地发现问题,质量快速提升;二是建立社区信任,完全公开的测试记录和问题修复历史,让社区看到一个真正在认真对待质量的项目。


参考 ​

  • TiDB TiPocket:PingCAP 内部的自动化 chaos 测试框架,最接近本系统设计目标的开源实现,但无 AI 分析层,流程 hardcode,强依赖 Kubernetes。
  • Jepsen:分布式系统正确性验证工具,侧重一致性验证,不侧重持续自动化运行。
  • Chaos Mesh:K8s 原生故障注入平台,可作为工具集中故障注入的替代方案(待 RobustMQ 迁移到 K8s 部署时)。
🎉 既然都登录了 GitHub,不如顺手给我们点个 Star 吧!⭐ 你的支持是我们最大的动力 🚀