用途
build-review-loop 用于编排 N 轮「构建 → 审查 → 修复 → 再审查」的开发循环,通过构建与审查使用不同模型(跨模型多样性)来提升质量。编排器(Hermes)负责管理循环、独立验证,并输出结构化审查结论。
核心契约:必须委派构建,不得在循环中途手写代码。除简单的机械性修复(拼写错误、单行版本号变更)外,非平凡开发工作都应由编排器编写规格文件、Cursor 实现、编排器独立验证、再由 Codex/Claude/Cursor 审查并迭代。若不确定是否属于非平凡改动,就委派。
主要能力
- 多轮循环:用户说「review loop N times」「build then review」「fix and re-review」时执行对应轮次的完整循环。
- 跨模型分工:默认由 Cursor(cursor-grok-4.6-high)构建与修复,由 Codex(GPT-6 Sol,effort high)审查;用户可指定其它构建/审查模型组合。
- 独立验证:编排器不信任构建方自报结果,自行运行验证检查,并在调度审查前增加规格符合性预检。
- diff 作为审查输入:多文件轮次不把整个代码树交给审查方,而是导出精确增量(git diff)供审查方只读审查。
- 证据对:每个交付批次附带前后证据对(截图、测量数字或输出对),放入 PR 正文或交付消息。
- 持久化循环计划:多会话或多批次循环将状态写入 loop-*.md 文件而非记忆,可用 scripts/loop_plan_check.py 恢复、scripts/attest_file.py 校验任务说明。
- 多批次编排:阶段任务超过 3 个时按依赖与风险分批,每批 2-3 个任务、10-30 个新测试,最高风险批次优先,批次之间独立验证并提交。
- 收敛判断:每轮问题数应严格减少;若问题数增加,说明修复引入了回归,应停下排查。深度安全/正确性扫描中问题数可能阶段性增多,但特征是探测新区域而非重开旧问题。
- 推送闸门:未经 Codex 审查不得推送,流程为构建 → 提交 → Codex 审查 → 修复 → 推送。
- Bot 模式集成:可将构建发给 coder 机器人、审查发给 code_reviewer 机器人,获得跨轮次的持久上下文;也可让机器人之间直接交接。
- 最终轮多样性:最后一轮可选用第三个模型(如 claude-code)以最大化多样性。
使用方式
前提条件:安装 Cursor CLI(二进制名为 agent),在 ~/.hermes/.env 配置 CURSOR_API_KEY;安装 Codex CLI(npm install -g @openai/codex),配置 Codex OAuth 或 OPENAI_API_KEY;需要 pty=true 和 git 仓库;用 which agent && which codex 确认两者可用。
工作流骨架共 11 步:准备任务说明(BRIEF.md)→ 初始化 git → 识别集成边界 → Cursor 构建 → 编排器独立验证 → 规格符合性预检 → 提交构建 → Codex 审查 → 综合审查结论 → 有问题则修复并循环 → 推送并监控 CI。各步完整正文见 references/workflow-steps.md。
调度示例(审查 diff):
git diff <base-commit>..<round-commit> > /tmp/review-diff-<proj>.diff codex exec --sandbox danger-full-access "Read ONLY /tmp/review-diff-<proj>.diff(以及它涉及的当前文件)。验证每个发现已解决……仅审查,不做任何更改。"
调度机器人示例:
hermes -p coder chat --in ~ -c "Bot Chat" --create-if-missing -Q -q "Message from 🤖 hermes (@hermes): <任务描述>"
以 background=true、notify_on_complete=true 运行,回复在机器人完成后作为新消息到达。
恢复多批次循环:scripts/loop_plan_check.py loop-plan.md;交付前用 --gate 作为循环完成闸门。
适用场景
- 用户明确要求「review loop N times」「build then review with codex」「fix and re-review」。
- 用户希望一个模型构建、另一个模型审查的关注点分离式迭代质量闸门。
- 多批次、需跨会话恢复的中大型开发任务。
- 涉及集成边界变更、模块替换(任务说明需包含完整调用方清单)等需要严格验证的工作。
限制
不适用于:单次审查(应使用 council-code-review 或直接调用 codex/cursor-cli)、只审查不修复(应使用 codex exec --sandbox read-only)、简单的单文件修复(直接委派给 Cursor 或 Codex)。
其它注意事项:模型名固定项可能因上游 CLI 改名而过期,使用前应对照实时列表核实;审查方报告是快照,需针对当前 HEAD 重新裁定发现项;审查发现与派发规格冲突时应带理由驳回,不得静默忽略。