SuperAPI AI 工具集

dogfood

测试与质量

查看项目

更新于 10-26 18:53

技能介绍

用途

dogfood 是 bro 的场景驱动端到端(e2e)自测技能,把“自测”做成命令行中的正式流程。一个场景就是一个已提交的 markdown runbook(dogfood/<name>.md),用散文式步骤描述要执行的 bro/bd 命令与 $skill 调用,不包含链接。

主要能力

  • 场景隔离运行:bro self dogfood run <name> 会在 $XDG_DATA_HOME/bro/dogfood/ 下创建临时仓库(位于宿主目录树之外,因为 bd init 会向上查找祖先,嵌套的临时仓库会继承宿主的 beads remote),并在临时 store 中创建步骤 bead,避免 runner 的 claim 污染宿主。
  • 派生 agent:通过 spawnStepAgent 启动全新的 runner agent,并返回 run id。
  • 点检式管线推进:bro self dogfood status 既是状态点检,也是惰性推进管线——当发现 runner 处于终态(exited/lost/stopped)时,会在此处派生分析 agent,而不是依赖后台 tick。
  • 判定报告:bro self dogfood report 输出分析 agent 的 verdict.md(含 verdict: PASS|ISSUES、失败行与 findings)。
  • 场景列举:bro self dogfood scenarios 列出已提交的 dogfood/*.md 场景名。

使用方式

前置条件:bro 在 PATH 中,或使用 npx -y @broject/bro@0;至少配置一个 agents.<backend> 通道(runner 与分析 agent 都是普通的 fleet 注册表 agent,可用 bro fleet agents 查看)。

命令示例:

  • bro self dogfood scenarios
  • bro self dogfood run <name> [--backend <c>] [--analyst <c|same|none>] [--provider <p>] [--keep]
  • bro self dogfood status [run-id] [--json]
  • bro self dogfood report <run-id>

run 的选项说明:--analyst 默认为 same(沿用 runner 的后端),none 跳过判定环节,<c> 指定不同的连接器;--provider 为 runner 与分析者同时固定 worker 引擎(providers.<name> 条目,例如 devin-acp)。

策略与限制

  • 仅限编排者(orchestrator)使用:BRO_AGENT_ID 无法执行 run,worker 不能派生 worker;status 以读为主(可能为终态 runner 惰性派生分析者,同样仅限编排者);report 完全只读。
  • 隔离是核心:临时仓库拥有自己的 git store 与 stealth beads store,宿主 bro/ 状态、claims 与 watch 标记均不被触碰。
  • 通过点检监控:在轮次之间调用 status,而非阻塞等待;verdict.md 一旦存在即视为本次 run 关闭,即使分析进程尚未退出。
  • run 是记录:state.json、prompts 与 verdict 保存在 <git-common>/bro/dogfood/<run-id>/ 下并可跨重启保留;仅在 verdict 被消费后清理 run 目录。run 记录是唯一的宿主侧写入。