Token导航 LogoToken导航TokenDH.com
Whyme Qa logo
开发工具stdio官方级别未说明来源级核验

Whyme Qa

MCP Server

whyme-qa

一个可重用的QA平台,用于评估代码生成MCP服务器,通过可执行证明验证生成的代码。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
代码生成TypeScriptClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Whyme-Labs

提供方

Whyme-Labs

最后核验

2026/5/17 20:19

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx whyme-qa list -d scenarios/

详细介绍

为什么我QA

用于代码生成MCP服务器的可重用QA平台。使用以下命令评估生成的代码 可执行证明:如果它编译并通过测试,那么它在客观上是可用的。

快速开始

# Install
pnpm install
pnpm build

# Configure environment (copy and edit with your values)
cp .env.example .env

# List available scenarios
npx whyme-qa list -d scenarios/

# Run a scenario against an MCP server
npx whyme-qa run -s scenarios/counter.yaml

# Run with workspace preserved for debugging
npx whyme-qa run -s scenarios/counter.yaml --keep-workspace

运作原理

  1. 场景YAML 定义MCP服务器、工具调用、预期输出和验证门
  2. 跑者 连接到MCP服务器,执行工具调用,实现生成的代码
  3. 关卡脚本 验证代码:编译、lint、测试、WASM构建、激活检查
  4. 代理循环 (可选)--如果门失败,LLM会检查错误并修复代码,重新运行门最多N次迭代
  5. 记者 生成带有迭代历史的分数、JUnitXML和Markdown报告

建筑

whyme-qa/
├── packages/
│   ├── runner/      # CLI + scenario orchestrator + agent loop
│   ├── adapters/    # MCP client + gate execution + LLM client
│   ├── reporter/    # Scoring, JUnit, Markdown reports
│   └── schemas/     # TypeScript type definitions
├── gates/
│   └── stylus/      # Shell scripts for Stylus verification
├── scenarios/       # YAML scenario definitions
├── .gitlab/
│   └── duo/flows/   # GitLab Duo flow definitions
└── .gitlab-ci.yml   # CI pipeline configuration

数据流

MCP Server → File Extraction → Workspace → Gates → [Agent Loop] → Score → Report
                                                        │
                                              LLM (via OpenRouter)
                                              Read files + gate errors
                                              Return fixed files
                                              Re-run all gates
                                              Repeat until pass or max iterations

验证门(触控笔)

命令
格式cargo fmt --check5
Clippycargo clippy -- -D warnings10
编译cargo build --release10
单元测试cargo test --all30
WASM构建cargo build --target wasm32-unknown-unknown10
触控笔检查cargo stylus check20
安全cargo audit15

MCP响应格式

跑步者的 extractFilesFromResponse 支持三种响应格式:

  1. 通用的 {files: {path: content}} --一个JSON对象 files 将文件路径映射到内容字符串的键
  2. ARBuilder风格 --带顶级键的JSON code, cargo_toml, main_rs, stylus_toml, rust_toolchain_toml 映射到Stylus项目文件。还处理a tests 附加到的密钥 src/lib.rs (或放置在 tests/mod.rs 如果不 code 密钥存在)
  3. --- FILE: path --- 分隔块 --带有文件边界标记的纯文本 `--- FILE:

---` 标头

ARBuilder密钥映射文件
codesrc/lib.rs
cargo_tomlCargo.toml
main_rssrc/main.rs
stylus_tomlStylus.toml
rust_toolchain_tomlrust-toolchain.toml

写作场景

scenarios/counter.yaml 举个例子。关键字段:

  • sut.mcp_server --如何启动被测MCP服务器
  • plan.steps --要执行的有序工具调用(使用ARBuilder的 prompt 参数,不是 description)
  • workspace.required_files --生成后必须存在的文件
  • gates --运行哪些验证门
  • agent --(可选)代理循环配置:模型、max_iteractions、api_key_env

环境变量替换

场景YAML文件支持 ${VAR}${VAR:-default} 从以下位置解析的占位符 process.env 在加载时。这使得机密和特定于机器的路径不会出现在已提交的文件中:

sut:
  mcp_server:
    command: "${ARBBUILDER_PYTHON:-python3}"
    cwd: "${ARBBUILDER_DIR}"
    env:
      OPENROUTER_API_KEY: "${OPENROUTER_API_KEY}"

代理循环

配置后,代理循环使用LLM迭代修复验证门失败的代码。在测试了初始MCP生成的代码后,如果任何门失败,则代理:

  1. 读取所有工作区文件和门错误输出
  2. 将它们发送到LLM(通过OpenRouter),要求其解决问题
  3. 将LLM返回的文件更改应用于工作区
  4. 重新运行所有启用的门
  5. 重复直到所有门都通过或 max_iterations 已达到

在YAML中按场景配置:

agent:
  enabled: true
  model: "anthropic/claude-sonnet-4"
  max_iterations: 5
  api_key_env: OPENROUTER_API_KEY
  temperature: 0.2

CLI参考

# Run a scenario
whyme-qa run -s  [-o ] [-g ] [--keep-workspace]

# Run without agent loop (even if configured in scenario)
whyme-qa run -s  --no-agent

# Override agent model and iterations
whyme-qa run -s  --agent-model "anthropic/claude-sonnet-4" --max-iterations 10

# List scenarios
whyme-qa list [-d ]

CI/CD管道

.gitlab-ci.yml 定义了四个阶段:

阶段职位描述
lintlint构建所有包并运行类型检查
testunit_tests运行单元测试,将报告作为工件上传
verifye2e_counter端到端运行计数器场景(手动触发)
report_(保留)_未来的报告工作

e2e_counter 工作是手动的(when: manual)以及 allow_failure: true,因此不会堵塞管道。JUnitXML报告作为GitLab测试报告工件收集。

GitLab Duo流定义也提供在 .gitlab/duo/flows/whyme_qa.yaml 与GitLab Duo工作流自动化一起使用。

许可证

阿帕奇-2.0

目录标签

目录标签

代码生成TypeScriptClaude代码验证本地部署质量保证MCP服务器自动化测试

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

whyme-qa

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP