ResiliReplay:为 AI Agent 与 MCP 服务器提供确定性混沌测试
一款本地优先、模型无关的 TypeScript 工具,可注入可控故障并把失败链路转化为回归测试。
ResiliReplay 是一款面向 AI Agent 和 MCP(Model Context Protocol)服务器的混沌测试工具,已在 GitHub 开源。它采用 TypeScript 编写,主打「模型无关、本地优先、确定性回放」:开发者可以录制带版本号的事件流、注入基于种子的故障、对恢复路径打分,并把首次因果性失败自动编译为可编辑的场景与可执行的 Node 测试。整个回放路径无需 API Key、付费模型、Docker、外部账号或 LLM 评判器。
核心能力一览
- 记录(Record):以 JSONL 格式捕获 agent 或 MCP 调用的 TraceEvent 事件,并在记录前对凭证类字段做脱敏。
- 故障注入(Inject):支持 YAML 自定义场景,相同 trace + scenario + seed 必然产生相同变异,覆盖延迟、超时、429/5xx、连接重置、截断、畸形 JSON、重复包、过期响应、权限错误、副作用重复、循环等多种故障。
- 确定性回放(Replay):在本地子进程中复现故障链路,输出包含恢复评分、完成度、安全性、重试次数等指标的恢复报告。
- 失败归因(Minimize):自动定位因果失败链路,生成最小化的 fixture、scenario、manifest(带 SHA-256 哈希)以及一个可直接运行的 node:test 回归用例。
五分钟快速上手
环境要求为 Node.js 20 或 22 加 pnpm。克隆仓库后依次执行 pnpm install --frozen-lockfile、pnpm build、pnpm demo,即可看到确定性本地子进程跑通:注入 3 个故障、其中 1 个恢复成功、1 个未恢复,并写出全部报告格式与回归测试。后续可运行 pnpm demo:mcp 与 pnpm exec resilireplay test scenarios 进入 MCP 审计和场景测试模式。
MCP 服务器审计示例
针对 stdio 上的 MCP 服务器,常用命令为 pnpm exec resilireplay mcp audit --command "node examples/resilient-mcp-server/dist/index.js" --output runs/mcp-audit。默认仅调用名为 reliability_probe 的工具,避免误触带副作用的接口;需要调用其它工具时需显式加 --call-tools,对非 loopback 的 Streamable HTTP 目标则必须加 --allow-remote。内置 demo 同时给出一个「故意脆弱」的玩具 stdio 服务器和一个「具备韧性」的对照组,方便对照验证。
报告与生态集成
每次运行可同时输出多种格式,便于本地排障与 CI 接入:
- 终端文本:本地与 CI 日志
- JSON:自动化与仪表盘
- HTML:独立可读的复盘页
- JUnit XML:测试运行器与 CI 注解
- SARIF 2.1.0:代码扫描平台摄取
- run-manifest.json:制品与指标哈希
- badge.svg:限定本次套件与版本的可视化徽章
项目以多个包拆分职责:@resilireplay/core 负责事件、脱敏、故障引擎与确定性评分;@resilireplay/trace 负责规范 JSONL 与失败链路编译;@resilireplay/reporters 负责多格式报告;@resilireplay/mcp-chaos 负责 MCP 发现与可控调用;@resilireplay/proxy 提供 loopback 的 provider/transport 变异代理;另有跨平台 CLI resilireplay 与 @resilireplay/github-action。
安全边界与适用场景
官方在 README 中明确划定了使用红线:record 命令会原样执行用户提供的命令,并不充当操作系统级沙箱;MCP 审计仅限用户自有或已获授权的目标;调用 --call-tools 前必须先人工核对工具 schema,因为 MCP 调用可能产生服务端副作用。报告或徽章只是对「某一已声明测试套件与版本」的证据,并非通用安全认证。整体来看,ResiliReplay 适合在做 CI 改造的 agent 团队、需要对 MCP 集成做回归保障的开发者,以及关注故障可复现性的 AI 平台工程团队纳入日常质量门禁。
