mcpField
F
flakyguard

flakyguard

本地服务
github.com/CloudCorpRecords开发工具01 周前更新

关于 flakyguard

flakyguard 汇总多次 CI 运行中的逐测试结果,对测试分类、计算不稳定率,并在达到阈值时建议隔离。它通过命令行或本地 MCP 服务提供分析,只处理传入的运行数据。

主要功能

  1. 01逐测试通过、失败与跳过记录
  2. 02基于证据的测试分类
  3. 03不稳定率计算
  4. 04按阈值生成隔离列表
  5. 05输入校验与结论

适用场景

  1. 01评估多次 CI 运行中的测试
  2. 02找出结果不一致的测试
  3. 03筛选待评估的隔离测试

MCP 相关

向 MCP 客户端提供 `analyze_test_flakiness` 工具。该工具接收 CI 运行结果及可选的分类和隔离阈值,并返回测试记录、隔离列表和结论。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-flakyguard": {
"command": "npx",
"args": [
"-y",
"@reneturcios/flakyguard"
]
}
}
}
启动命令npx -y @reneturcios/flakyguard

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/flakyguard0.1.0
ocighcr.io/cloudcorprecords/flakyguard:0.1.0

工具

1

收录的工具列表 · 更新于 1 周前

参数类型必填说明
runsarray是要分析的 CI 运行(至少一项)
min_runsinteger否将测试分类为稳定或不稳定之前所需的最少证据运行次数(通过次数 + 失败次数,可选,默认值为 2)
quarantine_thresholdnumber否隔离列表的不稳定率阈值(可选,默认值为 0.5)

详细介绍

flakyguard

“这个测试不稳定”通常只是一种感觉。flakyguard 将其转化为证据。向它提供一组 CI 运行中每项测试的结果,它就会为每项测试建立记录:

  • 每项测试的历史记录 — 测试出现于多少次运行中,以及通过、失败或跳过了多少次
  • 证据运行 — 通过次数加失败次数;跳过会被记录,但永远不计为证据,因为测试没有运行,无法证明任何一方
  • 分类 — 测试需要达到最低证据数量(默认为两次证据运行)才能获得判定:从未失败时为 stable_pass,从未通过时为 stable_fail,既通过又失败时为 flaky,在达到最低数量前为 insufficient_data
  • 不稳定率 — 少数结果占证据运行的比例,因此结果平分的测试不稳定率为 0.5,而大多时候可靠的测试不稳定率接近 0
  • 隔离列表 — 不稳定率达到隔离阈值(默认为 0.5)的不稳定测试,按最严重程度从高到低排列,每项均附带该不稳定率对应的通过和失败次数
  • 判定 — 列表非空时为 quarantine_recommended,否则为 clean

不稳定率四舍五入到小数点后四位。所有计算均在本地根据你提供的运行结果完成:不联网、无需配置,也不会在调用之间保留历史记录。输入有误时——例如某次运行没有结果、状态不属于 passed / failed / skipped,或同一项测试在一次运行中出现两次——程序会报错并指出出错路径,不会生成部分分析结果。

CLI

npx @reneturcios/flakyguard analyze --input args.json
npx @reneturcios/flakyguard --version

args.json 包含完整的参数对象:

{
  "runs": [
    {
      "run_id": "run-101",
      "results": [
        { "test": "checkout totals", "status": "passed" },
        { "test": "search ranking", "status": "failed" }
      ]
    },
    {
      "run_id": "run-102",
      "results": [
        { "test": "checkout totals", "status": "failed" },
        { "test": "search ranking", "status": "failed" }
      ]
    }
  ],
  "min_runs": 2,
  "quarantine_threshold": 0.5
}

min_runs 和 quarantine_threshold 均为可选参数。分析结果将以 JSON 格式输出。

退出代码:成功时为 0;发生运行时错误时为 1(包括输入文件无法读取或无效,以及输入无效);用法错误时为 2。

MCP 服务

npx -y @reneturcios/flakyguard mcp

MCP 客户端配置:

{
  "mcpServers": {
    "flakyguard": {
      "command": "npx",
      "args": ["-y", "@reneturcios/flakyguard", "mcp"]
    }
  }
}
工具
  • analyze_test_flakiness — 分析 CI 运行中的测试不稳定情况。

    • runs(数组,必需,至少一个)— 运行记录,格式为 {run_id, results} 对象;每项结果的格式为 {test, status},其中 status 为 passed、failed 或 skipped 之一;同一项测试不得在一次运行中出现两次
    • min_runs(整数,可选,>= 1,默认值为 2)— 测试被分类为稳定或不稳定前所需的最少证据运行次数
    • quarantine_threshold(数字,可选,0 到 1,默认值为 0.5)— 隔离列表的不稳定率阈值

    返回 {run_count, test_count, tests, quarantine, summary, verdict}。

Docker

docker run -i ghcr.io/cloudcorprecords/flakyguard
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/flakyguard analyze --input /w/args.json

开发

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (pure local, no network)
npm run dev     # run the CLI from source

许可证

MIT — 版权所有 (c) 2026 Rene Turcios

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。