SuperAPI AI 工具集

loop

智能体与模型

查看项目

更新于 10-26 20:53

技能介绍

loop(bro)是一个策略型技能,全部执行机制位于 bro CLI 中。它的用途是让智能体无人值守地把 backlog 从头到尾处理完,适用触发场景包括“run the backlog”“bro flow loop”,以及对开放的 beads 执行 hands-off 的 /goal。与 /next 只调度一个 bead 不同,bro flow loop 会运行队列直至耗尽,流程为:claim → worktree → agent → 推入 gate stack → 重复,不再逐项询问“是否继续”,即 backlog 的存在本身就是批准。

主要能力

  • 智能体配置:可通过 providers 注册表配置,例如 type 为 acp、command 为 kilo --acp 的条目,并以 loop.provider 指定;acp 条目会生成 bro acp-worker(由协议驱动的 stdio ACP 服务器,天然无头)。cli 条目则用其命令替代模板。选择优先级为:--provider/--agent <name> 标志 → fleet.profiles 预设(--profile、loop.profile)→ loop.provider → agents.native.provider;--model 与 --auto-approve 用于调节该通道。
  • 按 bead 路由:声明 fleet.routing 后,每个被领取 bead 的类别会选择各自的 provider 链;class:<name> 标签优先,无类别走 default,--class <name> 可把整轮固定到某一类别。解析出的类别会作为来源记录在 BRO_AGENT_CLASS。解析出的类别若不在表中属于配置错误;default 会在首次 claim 前预检,错误的 class: 标签会将该 bead 挂起而非静默降级。fleet.router(shadow/enforce)按判定结果给无类别 bead 分类。
  • 原始模板:loop.agent(或未命名任何 provider 的 --agent 值)是逃生口,例如 devin --prompt-file {promptFile} -p;{promptFile} 会替换为 bro 写入新 worktree 的工单文件路径,无占位符则把路径追加为最后一个参数。进程环境会携带 BRO_BEAD_ID、BRO_BEAD_TITLE、BRO_PROMPT_FILE(provider 通道还会固定 BRO_AGENT_PROVIDER、BRO_AGENT_MODEL)。模板 --agent 优先于配置的 loop.provider,且完全绕过 fleet.routing(会有警告行)。
  • 其他 loop 键:bootstrap(每个 worktree 运行一次)、stallMin(检查点输出静默的提示标志,绝不作为 kill)、mergeTimeoutMin、fixRounds、maxItems、maxOpen(gate stack 的开放 PR 上限,默认 3)、worktreeMb / diskMinSlots(磁盘下限)、batch / batchMinPriority(批量参数)。

使用方式

常用命令包括:bro flow loop(运行队列直到空闲或受门禁阻塞)、--max N(本轮最多 N 个 bead)、--max-open N(限制开放 PR 数)、--disk-min-slots N(磁盘下限,默认 2,0 禁用)、--dry-run(只打印顶部条目计划,不做改动)、--agent '<tpl>'(一次性覆盖)、--provider <name>、--class <name>、--label a,b(限定可领取范围)、--batch N(批量领取同亲和 bead)、--merge-timeout MIN、--interval SEC。

每个 bead 的处理过程:claim 取 bd ready 顶部条目(HUMAN GATE bead、epic、molecule 步骤不会被自动领取);在 origin/main 上建立分支 loop/<id> 的兄弟 worktree <repo>--<bead-id>,并执行一次 bootstrap;把工单提示写入 worktree 后运行智能体至完成(无逐智能体墙钟,stdout/stderr 追加到 <git-common>/bro/loop/<slug>.log,<slug>.json 记录固定 pid);PR 通过 gh pr list --head 发现并加入 gate stack,不阻塞队列;每个 tick 从最旧的 gate 开始处理,再在 loop.maxOpen 有空位时推入下一个 bead。绿了则 bro review act merge,有讨论线程则带线程列表重启智能体,CONFLICTING 则对 PR base 发起 rebase,BEHIND 作为唯一阻塞则 update-branch。合并后 bd close <id> --reason "landed via PR #N",删除 worktree 和分支。

适用场景与限制

适用于在可信机器和仓库上无人值守地批量处理 bd 就绪任务,支持限定标签范围(如“只跑债务 bead”)、批量聚合、按类别路由。限制与注意事项:自由权限标志(如 devin 的 --permission-mode dangerous --respect-workspace-trust false)会跳过人工确认并赋予智能体完全自主权,应仅在信任环境使用;每个仓库只应运行一个 bro flow loop,否则会竞争同一批顶部 bead(claim 原子,输者只取下一个,属浪费);开放 PR 集合受 loop.maxOpen 限制,独立分支在共享文件上漂移快,建议保持上限紧凑或使用 --stack;推送还受磁盘下限限制,低于阈值时暂停;同一轮内不会重复领取已尝试的 bead;loop 在 idle、gated 或达到 --max N 时结束并报告原因;失败会以 loop: 注记可见呈现,停滞的 PR 会把 bead 挂起并进入 deferred snooze(默认 2 小时,0 表示直到 bd undefer),worktree 保留作恢复缓存;每次退出(idle、gated、error)会自审并列出所有遗留尾部(开放 PR、保留的 worktree 与分支、仍为 in_progress 的 bead、清理失败),干净运行会打印 clean。在新仓库上建议先 --dry-run 验证智能体模板与 worktree 路径。