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 吧!⭐ 你的支持是我们最大的动力 🚀