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 模式、成本和发现)、每个模型/任务的日志、代理记录、摘要、报告、应用日志和结果(截图、视频)。
使用方式
- 准备:主机需为 amd64 Linux 非 root,有本地 rootful Docker 套接字,需要 git、make 和
packageManager指定的 Bun 版本;环境变量需ANTHROPIC_API_KEY、ANTHROPIC_BASE_URL(可带或不带 /v1)和BUGBASH_BUDGET_USD。首次检出运行bun install。 - 规划 charter:编辑
tests/bugbash/charters.txt,每行一个slug|target|agent|charter;可根据git diff --stat origin/main...HEAD或通过--charters <file>指定分支特定文件。 - 运行:例如
make bug-bash BUGBASH_BUDGET_USD=9或make bug-bash BUGBASH_BUDGET_USD=3 BUGBASH_ARGS="--only composer"。运行前会检查环境、Docker 和镜像,打印估算和推荐预算,拒绝较低预算。 - 读取结果:运行文件夹为
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 表示停止。 - 分类与验证:遵循
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 要求外)等细节。