ResiliReplay:AI智能體與MCP服務器的混沌測試工具
ResiliReplay 是一個本地優先、與模型無關的 TypeScript 混沌測試工具,用於測試 AI 智能體和 MCP 服務器。它記錄版本化 TraceEvent、注入由種子控制的故障、根據聲明證據評估恢復能力,並將首個因果失敗編譯為可編輯場景與可執行 Node.js 迴歸測試。確定性流程無需 API 密鑰或 LLM 裁判,倉庫還提供演示、MCP 審計、多種報告格式和 GitHub Action。
ResiliReplay 是一個面向 AI 智能體(AI agent)與 MCP(Model Context Protocol)服務器的混沌測試與韌性驗證工具。它採用 TypeScript 實現,本地優先,且與具體模型無關。其工作流可以概括為:記錄版本化的 TraceEvent,注入由種子(seed)控制的故障,依據用户聲明的證據對恢復行為評分,再將首個因果失敗編譯為可編輯的場景和一個可執行的 Node.js 迴歸測試。該確定性路徑完全不需要 API 密鑰、付費模型、Docker、外部賬户、遙測或 LLM 裁判,因此可以離線和可復現地運行。
快速開始只需 Node.js 20 或 22 與 pnpm。克隆倉庫後依次執行 pnpm install --frozen-lockfile、pnpm build、pnpm demo 即可看到完整演示:demo 會在本地運行一個真實的確定性子進程,注入三個故障,同時輸出一次成功恢復和一次未恢復失敗的評分,生成所有報告格式,編譯失敗軌跡,並執行生成的迴歸測試。繼續運行 pnpm demo:mcp 和 pnpm exec resilireplay test scenarios 可以體驗 MCP 審計:它會檢查一個故意存在漏洞的玩具 stdio 服務器和一個具備韌性的服務器,前者有兩個預期的安全金絲雀(safe-canary)發現,後者沒有。
實際使用中,可以用 record 命令錄製內置的確定性 agent,並通過 replay 生成基線報告。真實 agent 框架的適配器會產生相同的版本化 TraceEvent。對於 MCP 審計,resilireplay mcp audit 默認只會讀取 tools/list 的 schema,並調用名為 reliability_probe 的工具;只有在審閲工具行為後才能使用 --call-tools,因為 MCP 調用可能產生服務器端副作用。非迴環的流式 HTTP 目標還需要顯式指定 --allow-remote。
故障注入既可以使用內置故障,也可以使用可審閲的 YAML 場景。相同軌跡、場景和種子會產生完全相同的變更,從而保證可復現性。覆蓋的故障包括有界延遲、超時、429/5xx、連接重置、截斷、畸形 JSON、重複響應與過期響應,以及工具/工作流層面的錯誤、權限、臨時文件缺失、結果損壞、副作用重複、交接丟失、錯誤接收者、過期狀態、衝突指令和循環等。將失敗軌跡升級為迴歸測試時,generate-test 命令會生成最小化 fixture、場景、manifest 和可執行的 node:test;manifest.json 會通過 SHA-256 哈希把源軌跡、fixture、場景和測試關聯起來。
每次運行可輸出終端、JSON、HTML、JUnit、SARIF 2.1.0、manifest 和 SVG 徽章等報告,便於本地檢查、CI 註解和代碼掃描集成。示例報告會顯示恢復評分 100/100、重試 1/3、安全性合規等信息。架構上,穩定邊界是嚴格且與供應商無關的 TraceEvent,而不是特定模型 SDK。倉庫按 @resilireplay/core、trace、reporters、mcp-chaos、proxy、CLI 和 GitHub Action 等包組織,分別負責事件與故障引擎、軌跡編譯、報告生成、MCP 混沌實驗、迴環代理、跨平台命令和 CI 集成。
安全方面,record 並不是操作系統沙箱,它只會執行用户提供的命令;因此應只審計自己擁有或已獲授權的 MCP 服務器,並在使用 --call-tools 前檢查工具 schema。憑據形狀的值和敏感鍵會在寫入軌跡前進行脱敏,但若源軌跡包含私有應用數據,相關報告仍應視為敏感測試證據。文件系統故障使用自有臨時目錄,輸出路徑會做包含檢查,子進程有超時和清理機制,監聽器默認只綁定迴環地址。倉庫的 SECURITY.md 和 THREAT_MODEL.md 提供了更完整的説明。
項目也坦誠列出了當前侷限:Streamable HTTP 的集成覆蓋不及 stdio;record 不是沙箱;MCP 工具調用可能有副作用;當適配器提供 parentId 和 causeId 時因果最小化效果最好;v0.1.0 會把流式輸出聚合為響應事件;報告哈希只證明鏈接和完整性而非真實性;包尚未發佈到 npm。CI 可以通過 pnpm quality 運行完整本地門禁,或直接使用 composite action(aliengineering-byte/[email protected])。項目採用 Apache-2.0 許可,並歡迎確定性、有界且由測試覆蓋的貢獻。該項目由 Ali 開發並維護。