SuperAPI AI 工具集

bug-bash

测试与质量

查看项目

更新于 10-31 05:32

技能介绍

bug-bash 是一个面向 Xum 网页界面的智能体缺陷大扫除工具,它通过 TesterArmy 的 e2e explore 任务(称为 charter)在隔离的 Docker 沙箱中运行 AI 探索器。每个 charter 都是一次独立的 e2e explore 运行:AI 探索器驱动 Chromium 访问其专属的、带有种子数据的 Xum 服务器,并报告发现。所有模型驱动的运行都发生在 bug-bash 沙箱中(每个任务一个 Docker 容器),主机上会拒绝此类进程(退出码 2),代理在沙箱外没有模型,agent.* 步骤会因 MODEL_UNAVAILABLE 失败,且没有覆盖选项。

主要能力

  • 在锁定式 Docker 容器中运行 AI 探索器:容器使用 --network none、--read-only、--cap-drop ALL、非 root 用户、4 GB 内存和 tmpfs 临时目录,仅读取 Git 列出的文件副本以及只读的 dist/ 和 node_modules/。
  • 沙箱镜像 ghcr.io/coder/xum-bugbash-sandbox(约 1.4 GB,linux/amd64)仅包含工具:Node 22、Bun、git、Chromium、Xvfb 等。镜像通过 inputs 键验证认证后按摘要拉取;若无法验证则本地构建并警告。
  • 每个任务一个提供商代理(运行在主机上)持有 API 密钥,容器仅通过只读 Unix 套接字访问,代理将模型调用限制为 POST /anthropic/v1/messages,限制 max_tokens,并从运行账本中预留最坏情况成本,每次调用记录到 <output>.proxy.jsonl。
  • 支持计划 charter(tests/bugbash/charters.txt,每行 slug|target|agent|charter),每个 charter 一个区域和一个人设;目标包括 web 1440x900 和 phone 390x844;人设包括 newcomer、keyboard、fuzzer、state、skeptic 或默认。
  • 支持预算控制(BUGBASH_BUDGET_USD)按标价限制整个运行;支持模型选择(默认 Sonnet 5.5,可选 Opus、Haiku 等有定价的模型);支持努力等级(low、medium、high、xhigh、max)。
  • 提供 make bug-bash、make mcp-apps-e2e、make test-stories 等启动器,每个任务一个容器。
  • 结果目录包含 findings.md(每个 charter 的退出码、结束方式、应用 AI 模式、成本和发现)、每个模型/任务的日志、代理记录、摘要、报告、应用日志和结果(截图、视频)。

使用方式

  1. 准备:主机需为 amd64 Linux 非 root,有本地 rootful Docker 套接字,需要 git、make 和 packageManager 指定的 Bun 版本;环境变量需 ANTHROPIC_API_KEY、ANTHROPIC_BASE_URL(可带或不带 /v1)和 BUGBASH_BUDGET_USD。首次检出运行 bun install。
  2. 规划 charter:编辑 tests/bugbash/charters.txt,每行一个 slug|target|agent|charter;可根据 git diff --stat origin/main...HEAD 或通过 --charters <file> 指定分支特定文件。
  3. 运行:例如 make bug-bash BUGBASH_BUDGET_USD=9 或 make bug-bash BUGBASH_BUDGET_USD=3 BUGBASH_ARGS="--only composer"。运行前会检查环境、Docker 和镜像,打印估算和推荐预算,拒绝较低预算。
  4. 读取结果:运行文件夹为 tests/bugbash/.e2e/bugbash/<run>/(git 忽略),包含 findings.md 和每个任务的结果文件。make bug-bash 的退出码:0 表示所有 charter 运行完成(有问题的 charter 在表格中退出码为 1);1 表示 charter 未运行任何步骤;2 表示拒绝;3 表示容器状态未知;4 表示证据不完整或内部错误;5 表示代理故障;6 表示 e2e 基础设施错误;130/143 表示停止。
  5. 分类与验证:遵循 e2e guide bug-bash 的“5. Triage”“6. Verify”“7. Report”章节,并遵守 Xum 规则。

适用场景

适用于对 Xum 网页界面(以及经启动器支持的 MCP Apps 和故事测试)进行 AI 驱动的探索性缺陷发现,特别适合在合并队列、PR 或夜间任务中自动运行。

限制

  • 主机必须为 amd64 Linux 非 root,且使用本地 rootful Docker;Docker Desktop、rootless Docker 和远程端点会被拒绝(退出码 2)。
  • 模型驱动任务会关闭终端,因此 charter 不能使用 Terminal 标签页;设置中可添加 stdio MCP 服务器和自定义编辑器命令,但需让探索器避开。
  • make bug-bash 拒绝 BUGBASH_MODEL(仅 make mcp-apps-e2e 和 make test-stories 读取);所有模型驱动任务拒绝 BUGBASH_SCENARIO。
  • 应用 AI 探针:BUGBASH_AI=auto(默认)通过代理探针 BUGBASH_APP_MODEL(默认 anthropic:claude-haiku-5-5);若上游繁忙(429 或 5xx)则使用 mock;被拒绝的密钥(401 或 403)或不可达基 URL 会在任何任务前拒绝;real 永不回退,mock 永不调用提供商。
  • 本地构建镜像会增加约 1.4 GB 本地镜像,需手动清理;SIGKILL 的启动器会留下临时文件夹,需手动删除。
  • Electron 故事目标需要主机先下载 Electron 二进制(make electron-binary,需要 Node.js);容器内为每个任务启动 Xvfb(:99,无 TCP);Electron 中种子项目默认折叠,且每次尝试共享同一个种子根,app.clearState()、额外头部和区域设置覆盖在该目标上无效。
  • 重放缓存(tests/bugbash/sandbox/cacheSeed.ts)记录已验证的 agent.act 步骤,但 agent.assert 和 agent.extract 始终调用模型。缓存文件夹受 git 忽略,启动器会拒绝非规则 <sha256>.json 文件、超过 1 MiB、超过 1000 个条目或总计超过 128 MiB 的种子。

暂未提供

官方文本未提供定价信息、正式发布状态、用户数量或平台兼容性(除上述 Linux/Docker 要求外)等细节。